• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "gm.h"
2 
3 namespace skiagm {
4 
5 class FillTypeGM : public GM {
6     SkPath fPath;
7 public:
FillTypeGM()8 	FillTypeGM() {
9         const SkScalar radius = SkIntToScalar(45);
10         fPath.addCircle(SkIntToScalar(50), SkIntToScalar(50), radius);
11         fPath.addCircle(SkIntToScalar(100), SkIntToScalar(100), radius);
12     }
13 
14 protected:
onShortName()15     virtual SkString onShortName() {
16         return SkString("filltypes");
17     }
18 
onISize()19 	virtual SkISize onISize() {
20         return make_isize(835, 840);
21     }
22 
showPath(SkCanvas * canvas,int x,int y,SkPath::FillType ft,SkScalar scale,const SkPaint & paint)23     void showPath(SkCanvas* canvas, int x, int y, SkPath::FillType ft,
24                   SkScalar scale, const SkPaint& paint) {
25 
26         const SkRect r = { 0, 0, SkIntToScalar(150), SkIntToScalar(150) };
27 
28         canvas->save();
29         canvas->translate(SkIntToScalar(x), SkIntToScalar(y));
30         canvas->clipRect(r);
31         canvas->drawColor(SK_ColorWHITE);
32         fPath.setFillType(ft);
33         canvas->translate(r.centerX(), r.centerY());
34         canvas->scale(scale, scale);
35         canvas->translate(-r.centerX(), -r.centerY());
36         canvas->drawPath(fPath, paint);
37         canvas->restore();
38     }
39 
showFour(SkCanvas * canvas,SkScalar scale,const SkPaint & paint)40     void showFour(SkCanvas* canvas, SkScalar scale, const SkPaint& paint) {
41         showPath(canvas,   0,   0, SkPath::kWinding_FillType,
42                  scale, paint);
43         showPath(canvas, 200,   0, SkPath::kEvenOdd_FillType,
44                  scale, paint);
45         showPath(canvas,  00, 200, SkPath::kInverseWinding_FillType,
46                  scale, paint);
47         showPath(canvas, 200, 200, SkPath::kInverseEvenOdd_FillType,
48                  scale, paint);
49     }
50 
onDraw(SkCanvas * canvas)51     virtual void onDraw(SkCanvas* canvas) {
52         canvas->drawColor(0xFFDDDDDD);
53 
54         canvas->translate(SkIntToScalar(20), SkIntToScalar(20));
55 
56         SkPaint paint;
57         const SkScalar scale = SkIntToScalar(5)/4;
58 
59         paint.setAntiAlias(false);
60 
61         showFour(canvas, SK_Scalar1, paint);
62         canvas->translate(SkIntToScalar(450), 0);
63         showFour(canvas, scale, paint);
64 
65         paint.setAntiAlias(true);
66 
67         canvas->translate(SkIntToScalar(-450), SkIntToScalar(450));
68         showFour(canvas, SK_Scalar1, paint);
69         canvas->translate(SkIntToScalar(450), 0);
70         showFour(canvas, scale, paint);
71     }
72 
73 private:
74     typedef GM INHERITED;
75 };
76 
77 //////////////////////////////////////////////////////////////////////////////
78 
MyFactory(void *)79 static GM* MyFactory(void*) { return new FillTypeGM; }
80 static GMRegistry reg(MyFactory);
81 
82 }
83 
84