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