#include "SkApplication.h"
#import "SkCanvas.h"
#import "SkPaint.h"
#import "SkWindow.h"
#include "SkGraphics.h"
#include "SkCGUtils.h"

void dummy_main(int , char *[]) {
}

class SkSampleView : public SkView {
public:
    SkSampleView() {
        this->setVisibleP(true);
        this->setClipToBounds(false);
    };
protected:
    virtual void onDraw(SkCanvas* canvas) {
        canvas->drawColor(0xFFFFFFFF);
        SkPaint p;
        p.setTextSize(20);
        p.setAntiAlias(true);
        canvas->drawText("finished", 13, 50, 30, p);
        SkRect r = {50, 50, 80, 80};
        p.setColor(0xAA11EEAA);
        canvas->drawRect(r, p);
    }
private:
    typedef SkView INHERITED; 
};

void application_init() {
    SkGraphics::Init();
    SkEvent::Init();
}

void application_term() {
    SkGraphics::Term();
    SkEvent::Term();
}

int saved_argc;
char** saved_argv;

IOS_launch_type set_cmd_line_args(int argc, char *argv[], const char* ) {
    saved_argc = argc;
    saved_argv = argv;
    return kTool_iOSLaunchType;
}

class FillLayout : public SkView::Layout {
protected:
    virtual void onLayoutChildren(SkView* parent) {
        SkView* view = SkView::F2BIter(parent).next();
        view->setSize(parent->width(), parent->height());
    }
};

#import "SimpleApp.h"
@implementation SimpleApp

- (id)initWithDefaults {
    dummy_main(saved_argc, saved_argv);
    if (self = [super initWithDefaults]) {
        fWind = new SkOSWindow(self);
        fWind->setLayout(new FillLayout, false);
        fWind->attachChildToFront(new SkSampleView)->unref();
    }
    return self;
}

@end