OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "gm.h" | 8 #include "gm.h" |
9 | 9 |
10 typedef SkScalar (*MakePathProc)(SkPath*); | 10 typedef SkScalar (*MakePathProc)(SkPath*); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 SkPath fPath[N]; | 118 SkPath fPath[N]; |
119 SkScalar fDY[N]; | 119 SkScalar fDY[N]; |
120 public: | 120 public: |
121 PathFillGM() { | 121 PathFillGM() { |
122 for (size_t i = 0; i < N; i++) { | 122 for (size_t i = 0; i < N; i++) { |
123 fDY[i] = gProcs[i](&fPath[i]); | 123 fDY[i] = gProcs[i](&fPath[i]); |
124 } | 124 } |
125 } | 125 } |
126 | 126 |
127 protected: | 127 protected: |
128 virtual uint32_t onGetFlags() const SK_OVERRIDE { | 128 uint32_t onGetFlags() const SK_OVERRIDE { |
129 return kSkipTiled_Flag; | 129 return kSkipTiled_Flag; |
130 } | 130 } |
131 | 131 |
132 virtual SkString onShortName() SK_OVERRIDE { | 132 SkString onShortName() SK_OVERRIDE { |
133 return SkString("pathfill"); | 133 return SkString("pathfill"); |
134 } | 134 } |
135 | 135 |
136 virtual SkISize onISize() SK_OVERRIDE { | 136 SkISize onISize() SK_OVERRIDE { |
137 return SkISize::Make(640, 480); | 137 return SkISize::Make(640, 480); |
138 } | 138 } |
139 | 139 |
140 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 140 void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
141 SkPaint paint; | 141 SkPaint paint; |
142 paint.setAntiAlias(true); | 142 paint.setAntiAlias(true); |
143 | 143 |
144 for (size_t i = 0; i < N; i++) { | 144 for (size_t i = 0; i < N; i++) { |
145 canvas->drawPath(fPath[i], paint); | 145 canvas->drawPath(fPath[i], paint); |
146 canvas->translate(SkIntToScalar(0), fDY[i]); | 146 canvas->translate(SkIntToScalar(0), fDY[i]); |
147 } | 147 } |
148 } | 148 } |
149 | 149 |
150 private: | 150 private: |
151 typedef skiagm::GM INHERITED; | 151 typedef skiagm::GM INHERITED; |
152 }; | 152 }; |
153 | 153 |
154 // test inverse-fill w/ a clip that completely excludes the geometry | 154 // test inverse-fill w/ a clip that completely excludes the geometry |
155 class PathInverseFillGM : public skiagm::GM { | 155 class PathInverseFillGM : public skiagm::GM { |
156 SkPath fPath[N]; | 156 SkPath fPath[N]; |
157 SkScalar fDY[N]; | 157 SkScalar fDY[N]; |
158 public: | 158 public: |
159 PathInverseFillGM() { | 159 PathInverseFillGM() { |
160 for (size_t i = 0; i < N; i++) { | 160 for (size_t i = 0; i < N; i++) { |
161 fDY[i] = gProcs[i](&fPath[i]); | 161 fDY[i] = gProcs[i](&fPath[i]); |
162 } | 162 } |
163 } | 163 } |
164 | 164 |
165 protected: | 165 protected: |
166 virtual uint32_t onGetFlags() const SK_OVERRIDE { | 166 uint32_t onGetFlags() const SK_OVERRIDE { |
167 return kSkipTiled_Flag; | 167 return kSkipTiled_Flag; |
168 } | 168 } |
169 | 169 |
170 virtual SkString onShortName() SK_OVERRIDE { | 170 SkString onShortName() SK_OVERRIDE { |
171 return SkString("pathinvfill"); | 171 return SkString("pathinvfill"); |
172 } | 172 } |
173 | 173 |
174 virtual SkISize onISize() SK_OVERRIDE { | 174 SkISize onISize() SK_OVERRIDE { |
175 return SkISize::Make(450, 220); | 175 return SkISize::Make(450, 220); |
176 } | 176 } |
177 | 177 |
178 static void show(SkCanvas* canvas, const SkPath& path, const SkPaint& paint, | 178 static void show(SkCanvas* canvas, const SkPath& path, const SkPaint& paint, |
179 const SkRect* clip, SkScalar top, const SkScalar bottom) { | 179 const SkRect* clip, SkScalar top, const SkScalar bottom) { |
180 canvas->save(); | 180 canvas->save(); |
181 if (clip) { | 181 if (clip) { |
182 SkRect r = *clip; | 182 SkRect r = *clip; |
183 r.fTop = top; | 183 r.fTop = top; |
184 r.fBottom = bottom; | 184 r.fBottom = bottom; |
185 canvas->clipRect(r); | 185 canvas->clipRect(r); |
186 } | 186 } |
187 canvas->drawPath(path, paint); | 187 canvas->drawPath(path, paint); |
188 canvas->restore(); | 188 canvas->restore(); |
189 } | 189 } |
190 | 190 |
191 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { | 191 void onDraw(SkCanvas* canvas) SK_OVERRIDE { |
192 SkPath path; | 192 SkPath path; |
193 | 193 |
194 path.addCircle(SkIntToScalar(50), SkIntToScalar(50), SkIntToScalar(40)); | 194 path.addCircle(SkIntToScalar(50), SkIntToScalar(50), SkIntToScalar(40)); |
195 path.toggleInverseFillType(); | 195 path.toggleInverseFillType(); |
196 | 196 |
197 SkRect clipR = { 0, 0, SkIntToScalar(100), SkIntToScalar(200) }; | 197 SkRect clipR = { 0, 0, SkIntToScalar(100), SkIntToScalar(200) }; |
198 | 198 |
199 canvas->translate(SkIntToScalar(10), SkIntToScalar(10)); | 199 canvas->translate(SkIntToScalar(10), SkIntToScalar(10)); |
200 | 200 |
201 for (int doclip = 0; doclip <= 1; ++doclip) { | 201 for (int doclip = 0; doclip <= 1; ++doclip) { |
(...skipping 19 matching lines...) Expand all Loading... |
221 typedef skiagm::GM INHERITED; | 221 typedef skiagm::GM INHERITED; |
222 }; | 222 }; |
223 | 223 |
224 /////////////////////////////////////////////////////////////////////////////// | 224 /////////////////////////////////////////////////////////////////////////////// |
225 | 225 |
226 static skiagm::GM* MyFactory(void*) { return new PathFillGM; } | 226 static skiagm::GM* MyFactory(void*) { return new PathFillGM; } |
227 static skiagm::GMRegistry reg(MyFactory); | 227 static skiagm::GMRegistry reg(MyFactory); |
228 | 228 |
229 static skiagm::GM* F1(void*) { return new PathInverseFillGM; } | 229 static skiagm::GM* F1(void*) { return new PathInverseFillGM; } |
230 static skiagm::GMRegistry gR1(F1); | 230 static skiagm::GMRegistry gR1(F1); |
OLD | NEW |