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