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