1#include "EdgeDemo.h"
2#import "SkCanvas.h"
3#import "SkWindow.h"
4#include "SkGraphics.h"
5#include "SkCGUtils.h"
6
7#include <time.h>
8#include <sys/time.h>
9
10class SkSampleView : public SkView {
11public:
12    SkSampleView() {
13        this->setVisibleP(true);
14        this->setClipToBounds(false);
15        useOld = false;
16    };
17protected:
18    virtual void onDraw(SkCanvas* canvas) {
19        static int step = 0; // 17907 drawLetters first error
20                             // drawStars triggers error at 33348
21                             // drawStars error not easy to debug last time I checked
22        static double seconds;
23        if (step == -1) {
24            timeval t;
25            gettimeofday(&t, NULL);
26            seconds = t.tv_sec+t.tv_usec/1000000.0;
27            step = 0;
28        }
29        canvas->drawColor(SK_ColorWHITE);
30        if (DrawEdgeDemo(canvas, step, useOld)) {
31            ++step;
32            if (step == -1) {
33                timeval t;
34                gettimeofday(&t, NULL);
35                double last = seconds;
36                seconds = t.tv_sec+t.tv_usec/1000000.0;
37                SkDebugf("old=%d seconds=%g\n", useOld, seconds - last);
38                useOld ^= true;
39                step = 0;
40            }
41            inval(NULL);
42        }
43    }
44    
45    virtual Click* onFindClickHandler(SkScalar , SkScalar ) {
46        useOld ^= true;
47        return NULL;
48    }
49
50private:
51    bool useOld;
52    typedef SkView INHERITED; 
53};
54
55void application_init();
56void application_term();
57
58void application_init() {
59    SkGraphics::Init();
60    SkEvent::Init();
61}
62
63void application_term() {
64    SkGraphics::Term();
65    SkEvent::Term();
66}
67
68class FillLayout : public SkView::Layout {
69protected:
70    virtual void onLayoutChildren(SkView* parent) {
71        SkView* view = SkView::F2BIter(parent).next();
72        view->setSize(parent->width(), parent->height());
73    }
74};
75
76#import "SimpleApp.h"
77
78@implementation SimpleNSView
79
80- (id)initWithDefaults {
81    if ((self = [super initWithDefaults])) {
82        fWind = new SkOSWindow(self); 
83        fWind->setLayout(new FillLayout, false);
84        fWind->attachChildToFront(new SkSampleView)->unref();
85    }
86    return self;
87}
88
89- (void)drawRect:(NSRect)dirtyRect {
90    CGContextRef ctx = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
91    SkCGDrawBitmap(ctx, fWind->getBitmap(), 0, 0);
92}
93
94@end
95