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 #include "SkRandom.h" | 9 #include "SkRandom.h" |
10 #include "SkTArray.h" | 10 #include "SkTArray.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 30 * SK_Scalar1, SK_Scalar1, | 169 30 * SK_Scalar1, SK_Scalar1, |
170 20 * SK_Scalar1, 0); | 170 20 * SK_Scalar1, 0); |
171 | 171 |
172 // flat cubic where initial tangent is out, end tangent in | 172 // flat cubic where initial tangent is out, end tangent in |
173 fPaths.push_back().moveTo(10 * SK_Scalar1, 0); | 173 fPaths.push_back().moveTo(10 * SK_Scalar1, 0); |
174 fPaths.back().cubicTo(0, SK_Scalar1, | 174 fPaths.back().cubicTo(0, SK_Scalar1, |
175 20 * SK_Scalar1, SK_Scalar1, | 175 20 * SK_Scalar1, SK_Scalar1, |
176 30 * SK_Scalar1, 0); | 176 30 * SK_Scalar1, 0); |
177 | 177 |
178 // triangle where one edge is a degenerate quad | 178 // triangle where one edge is a degenerate quad |
179 fPaths.push_back().moveTo(SkFloatToScalar(8.59375f), 45 * SK_Scalar1); | 179 fPaths.push_back().moveTo(8.59375f, 45 * SK_Scalar1); |
180 fPaths.back().quadTo(SkFloatToScalar(16.9921875f), 45 * SK_Scalar1, | 180 fPaths.back().quadTo(16.9921875f, 45 * SK_Scalar1, |
181 SkFloatToScalar(31.25f), 45 * SK_Scalar1); | 181 31.25f, 45 * SK_Scalar1); |
182 fPaths.back().lineTo(100 * SK_Scalar1, 100 * SK_Scalar1); | 182 fPaths.back().lineTo(100 * SK_Scalar1, 100 * SK_Scalar1); |
183 fPaths.back().lineTo(SkFloatToScalar(8.59375f), 45 * SK_Scalar1); | 183 fPaths.back().lineTo(8.59375f, 45 * SK_Scalar1); |
184 | 184 |
185 // triangle where one edge is a quad with a repeated point | 185 // triangle where one edge is a quad with a repeated point |
186 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); | 186 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); |
187 fPaths.back().lineTo(50 * SK_Scalar1, 0); | 187 fPaths.back().lineTo(50 * SK_Scalar1, 0); |
188 fPaths.back().quadTo(50 * SK_Scalar1, 50 * SK_Scalar1, 50 * SK_Scalar1,
50 * SK_Scalar1); | 188 fPaths.back().quadTo(50 * SK_Scalar1, 50 * SK_Scalar1, 50 * SK_Scalar1,
50 * SK_Scalar1); |
189 | 189 |
190 // triangle where one edge is a cubic with a 2x repeated point | 190 // triangle where one edge is a cubic with a 2x repeated point |
191 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); | 191 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); |
192 fPaths.back().lineTo(50 * SK_Scalar1, 0); | 192 fPaths.back().lineTo(50 * SK_Scalar1, 0); |
193 fPaths.back().cubicTo(50 * SK_Scalar1, 0, | 193 fPaths.back().cubicTo(50 * SK_Scalar1, 0, |
194 50 * SK_Scalar1, 50 * SK_Scalar1, | 194 50 * SK_Scalar1, 50 * SK_Scalar1, |
195 50 * SK_Scalar1, 50 * SK_Scalar1); | 195 50 * SK_Scalar1, 50 * SK_Scalar1); |
196 | 196 |
197 // triangle where one edge is a quad with a nearly repeated point | 197 // triangle where one edge is a quad with a nearly repeated point |
198 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); | 198 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); |
199 fPaths.back().lineTo(50 * SK_Scalar1, 0); | 199 fPaths.back().lineTo(50 * SK_Scalar1, 0); |
200 fPaths.back().quadTo(50 * SK_Scalar1, SkFloatToScalar(49.95f), | 200 fPaths.back().quadTo(50 * SK_Scalar1, 49.95f, |
201 50 * SK_Scalar1, 50 * SK_Scalar1); | 201 50 * SK_Scalar1, 50 * SK_Scalar1); |
202 | 202 |
203 // triangle where one edge is a cubic with a 3x nearly repeated point | 203 // triangle where one edge is a cubic with a 3x nearly repeated point |
204 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); | 204 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); |
205 fPaths.back().lineTo(50 * SK_Scalar1, 0); | 205 fPaths.back().lineTo(50 * SK_Scalar1, 0); |
206 fPaths.back().cubicTo(50 * SK_Scalar1, SkFloatToScalar(49.95f), | 206 fPaths.back().cubicTo(50 * SK_Scalar1, 49.95f, |
207 50 * SK_Scalar1, SkFloatToScalar(49.97f), | 207 50 * SK_Scalar1, 49.97f, |
208 50 * SK_Scalar1, 50 * SK_Scalar1); | 208 50 * SK_Scalar1, 50 * SK_Scalar1); |
209 | 209 |
210 // triangle where there is a point degenerate cubic at one corner | 210 // triangle where there is a point degenerate cubic at one corner |
211 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); | 211 fPaths.push_back().moveTo(0, 25 * SK_Scalar1); |
212 fPaths.back().lineTo(50 * SK_Scalar1, 0); | 212 fPaths.back().lineTo(50 * SK_Scalar1, 0); |
213 fPaths.back().lineTo(50 * SK_Scalar1, 50 * SK_Scalar1); | 213 fPaths.back().lineTo(50 * SK_Scalar1, 50 * SK_Scalar1); |
214 fPaths.back().cubicTo(50 * SK_Scalar1, 50 * SK_Scalar1, | 214 fPaths.back().cubicTo(50 * SK_Scalar1, 50 * SK_Scalar1, |
215 50 * SK_Scalar1, 50 * SK_Scalar1, | 215 50 * SK_Scalar1, 50 * SK_Scalar1, |
216 50 * SK_Scalar1, 50 * SK_Scalar1); | 216 50 * SK_Scalar1, 50 * SK_Scalar1); |
217 | 217 |
(...skipping 28 matching lines...) Expand all Loading... |
246 fPaths.push_back().quadTo(100 * SK_Scalar1, 100 * SK_Scalar1, | 246 fPaths.push_back().quadTo(100 * SK_Scalar1, 100 * SK_Scalar1, |
247 50 * SK_Scalar1, 50 * SK_Scalar1); | 247 50 * SK_Scalar1, 50 * SK_Scalar1); |
248 fPaths.push_back().quadTo(50 * SK_Scalar1, 50 * SK_Scalar1, | 248 fPaths.push_back().quadTo(50 * SK_Scalar1, 50 * SK_Scalar1, |
249 100 * SK_Scalar1, 100 * SK_Scalar1); | 249 100 * SK_Scalar1, 100 * SK_Scalar1); |
250 fPaths.push_back().cubicTo(0, 0, | 250 fPaths.push_back().cubicTo(0, 0, |
251 0, 0, | 251 0, 0, |
252 100 * SK_Scalar1, 100 * SK_Scalar1); | 252 100 * SK_Scalar1, 100 * SK_Scalar1); |
253 | 253 |
254 // small circle. This is listed last so that it has device coords far | 254 // small circle. This is listed last so that it has device coords far |
255 // from the origin (small area relative to x,y values). | 255 // from the origin (small area relative to x,y values). |
256 fPaths.push_back().addCircle(0, 0, SkFloatToScalar(1.2f)); | 256 fPaths.push_back().addCircle(0, 0, 1.2f); |
257 } | 257 } |
258 | 258 |
259 virtual void onDraw(SkCanvas* canvas) { | 259 virtual void onDraw(SkCanvas* canvas) { |
260 this->makePaths(); | 260 this->makePaths(); |
261 | 261 |
262 SkPaint paint; | 262 SkPaint paint; |
263 paint.setAntiAlias(true); | 263 paint.setAntiAlias(true); |
264 SkLCGRandom rand; | 264 SkLCGRandom rand; |
265 canvas->translate(20 * SK_Scalar1, 20 * SK_Scalar1); | 265 canvas->translate(20 * SK_Scalar1, 20 * SK_Scalar1); |
266 | 266 |
(...skipping 21 matching lines...) Expand all Loading... |
288 typedef GM INHERITED; | 288 typedef GM INHERITED; |
289 SkTArray<SkPath> fPaths; | 289 SkTArray<SkPath> fPaths; |
290 }; | 290 }; |
291 | 291 |
292 ////////////////////////////////////////////////////////////////////////////// | 292 ////////////////////////////////////////////////////////////////////////////// |
293 | 293 |
294 static GM* MyFactory(void*) { return new ConvexPathsGM; } | 294 static GM* MyFactory(void*) { return new ConvexPathsGM; } |
295 static GMRegistry reg(MyFactory); | 295 static GMRegistry reg(MyFactory); |
296 | 296 |
297 } | 297 } |
OLD | NEW |