1#include "SampleCode.h"
2#include "SkView.h"
3#include "SkCanvas.h"
4#include "SkGradientShader.h"
5#include "SkGraphics.h"
6#include "SkImageDecoder.h"
7#include "SkPath.h"
8#include "SkRegion.h"
9#include "SkShader.h"
10#include "SkUtils.h"
11#include "SkXfermode.h"
12#include "SkColorPriv.h"
13#include "SkColorFilter.h"
14#include "SkTime.h"
15#include "SkTypeface.h"
16
17class PathClipView : public SampleView {
18public:
19    SkRect fOval;
20    SkPoint fCenter;
21
22	PathClipView() {
23        fOval.set(0, 0, SkIntToScalar(200), SkIntToScalar(50));
24        fCenter.set(SkIntToScalar(250), SkIntToScalar(250));
25
26//        test_ats();
27    }
28
29    virtual ~PathClipView() {}
30
31protected:
32    // overrides from SkEventSink
33    virtual bool onQuery(SkEvent* evt) {
34        if (SampleCode::TitleQ(*evt)) {
35            SampleCode::TitleR(evt, "PathClip");
36            return true;
37        }
38        return this->INHERITED::onQuery(evt);
39    }
40
41    virtual void onDrawContent(SkCanvas* canvas) {
42        SkRect oval = fOval;
43        oval.offset(fCenter.fX - oval.centerX(), fCenter.fY - oval.centerY());
44
45        SkPaint p;
46        p.setAntiAlias(true);
47
48        p.setStyle(SkPaint::kStroke_Style);
49        canvas->drawOval(oval, p);
50
51        SkRect r;
52        r.set(SkIntToScalar(200), SkIntToScalar(200),
53              SkIntToScalar(300), SkIntToScalar(300));
54        canvas->clipRect(r);
55
56        p.setStyle(SkPaint::kFill_Style);
57        p.setColor(SK_ColorRED);
58        canvas->drawRect(r, p);
59
60        p.setColor(0x800000FF);
61        r.set(SkIntToScalar(150), SkIntToScalar(10),
62              SkIntToScalar(250), SkIntToScalar(400));
63        canvas->drawOval(oval, p);
64    }
65
66    virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
67        return new Click(this);
68    }
69
70    virtual bool onClick(Click* click) {
71        fCenter.set(click->fCurr.fX, click->fCurr.fY);
72        this->inval(NULL);
73        return NULL;
74    }
75
76private:
77    typedef SampleView INHERITED;
78};
79
80//////////////////////////////////////////////////////////////////////////////
81
82static SkView* MyFactory() { return new PathClipView; }
83static SkViewRegister reg(MyFactory);
84
85