Chromium Code Reviews| 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 | 8 |
| 9 #include "SampleCode.h" | 9 #include "SampleCode.h" |
| 10 #include "SkView.h" | 10 #include "SkView.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 48 // Concave test | 48 // Concave test |
| 49 if (1) { | 49 if (1) { |
| 50 SkPath path; | 50 SkPath path; |
| 51 canvas->translate(0, 0); | 51 canvas->translate(0, 0); |
| 52 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | 52 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); |
| 53 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | 53 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); |
| 54 path.lineTo(SkIntToScalar(30), SkIntToScalar(30)); | 54 path.lineTo(SkIntToScalar(30), SkIntToScalar(30)); |
| 55 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | 55 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); |
| 56 canvas->drawPath(path, paint); | 56 canvas->drawPath(path, paint); |
| 57 } | 57 } |
| 58 | |
| 58 // Reverse concave test | 59 // Reverse concave test |
| 59 if (1) { | 60 if (1) { |
| 60 SkPath path; | 61 SkPath path; |
| 61 canvas->save(); | 62 canvas->save(); |
| 62 canvas->translate(100, 0); | 63 canvas->translate(100, 0); |
| 63 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | 64 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); |
| 64 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | 65 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); |
| 65 path.lineTo(SkIntToScalar(30), SkIntToScalar(30)); | 66 path.lineTo(SkIntToScalar(30), SkIntToScalar(30)); |
| 66 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | 67 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); |
| 67 canvas->drawPath(path, paint); | 68 canvas->drawPath(path, paint); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 128 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | 129 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); |
| 129 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | 130 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); |
| 130 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | 131 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); |
| 131 path.moveTo(SkIntToScalar(30), SkIntToScalar(30)); | 132 path.moveTo(SkIntToScalar(30), SkIntToScalar(30)); |
| 132 path.lineTo(SkIntToScalar(30), SkIntToScalar(70)); | 133 path.lineTo(SkIntToScalar(30), SkIntToScalar(70)); |
| 133 path.lineTo(SkIntToScalar(70), SkIntToScalar(70)); | 134 path.lineTo(SkIntToScalar(70), SkIntToScalar(70)); |
| 134 path.lineTo(SkIntToScalar(70), SkIntToScalar(30)); | 135 path.lineTo(SkIntToScalar(70), SkIntToScalar(30)); |
| 135 canvas->drawPath(path, paint); | 136 canvas->drawPath(path, paint); |
| 136 canvas->restore(); | 137 canvas->restore(); |
| 137 } | 138 } |
| 139 // Star test (self-intersecting) | |
|
bsalomon
2015/01/20 15:12:24
should we make this guy a GM instead of a Sample?
Stephen White
2015/01/20 18:54:15
Done.
| |
| 140 if (1) { | |
| 141 SkPath path; | |
| 142 canvas->save(); | |
| 143 canvas->translate(300, 100); | |
| 144 path.moveTo(30, 20); | |
| 145 path.lineTo(50, 80); | |
| 146 path.lineTo(70, 20); | |
| 147 path.lineTo(20, 57); | |
| 148 path.lineTo(80, 57); | |
| 149 path.close(); | |
| 150 canvas->drawPath(path, paint); | |
| 151 canvas->restore(); | |
| 152 } | |
| 153 // Stairstep with repeated vert (intersection) | |
| 154 if (1) { | |
| 155 SkPath path; | |
| 156 canvas->save(); | |
| 157 canvas->translate(0, 200); | |
| 158 path.moveTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 159 path.lineTo(SkIntToScalar(50), SkIntToScalar(20)); | |
| 160 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 161 path.lineTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 162 path.lineTo(SkIntToScalar(20), SkIntToScalar(50)); | |
| 163 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 164 canvas->drawPath(path, paint); | |
| 165 canvas->restore(); | |
| 166 } | |
| 167 // Stairstep intersection without repeated vert. | |
| 168 if (1) { | |
| 169 SkPath path; | |
| 170 canvas->save(); | |
| 171 canvas->translate(100, 200); | |
| 172 path.moveTo(20, 60); | |
| 173 path.lineTo(35, 80); | |
| 174 path.lineTo(50, 60); | |
| 175 path.lineTo(65, 80); | |
| 176 path.lineTo(80, 60); | |
| 177 canvas->drawPath(path, paint); | |
| 178 canvas->restore(); | |
| 179 } | |
| 180 // Overlapping segments | |
| 181 if (1) { | |
| 182 SkPath path; | |
| 183 canvas->save(); | |
| 184 canvas->translate(200, 200); | |
| 185 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 186 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | |
| 187 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 188 path.lineTo(SkIntToScalar(80), SkIntToScalar(30)); | |
| 189 canvas->drawPath(path, paint); | |
| 190 canvas->restore(); | |
| 191 } | |
| 192 // Monotone test 1 (point in the middle) | |
| 193 if (1) { | |
| 194 SkPath path; | |
| 195 canvas->save(); | |
| 196 canvas->translate(0, 300); | |
| 197 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 198 path.quadTo(SkIntToScalar(20), SkIntToScalar(50), | |
| 199 SkIntToScalar(80), SkIntToScalar(50)); | |
| 200 path.quadTo(SkIntToScalar(20), SkIntToScalar(50), | |
| 201 SkIntToScalar(20), SkIntToScalar(80)); | |
| 202 canvas->drawPath(path, paint); | |
| 203 canvas->restore(); | |
| 204 } | |
| 205 // Monotone test 2 (point at the top) | |
| 206 if (1) { | |
| 207 SkPath path; | |
| 208 canvas->save(); | |
| 209 canvas->translate(100, 300); | |
| 210 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 211 path.lineTo(SkIntToScalar(80), SkIntToScalar(30)); | |
| 212 path.quadTo(SkIntToScalar(20), SkIntToScalar(20), | |
| 213 SkIntToScalar(20), SkIntToScalar(80)); | |
| 214 canvas->drawPath(path, paint); | |
| 215 canvas->restore(); | |
| 216 } | |
| 217 // Monotone test 3 (point at the bottom) | |
| 218 if (1) { | |
| 219 SkPath path; | |
| 220 canvas->save(); | |
| 221 canvas->translate(200, 300); | |
| 222 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 223 path.lineTo(SkIntToScalar(80), SkIntToScalar(70)); | |
| 224 path.quadTo(SkIntToScalar(20), SkIntToScalar(80), | |
| 225 SkIntToScalar(20), SkIntToScalar(20)); | |
| 226 canvas->drawPath(path, paint); | |
| 227 canvas->restore(); | |
| 228 } | |
| 229 // Monotone test 4 (merging of two monotones) | |
| 230 if (1) { | |
| 231 SkPath path; | |
| 232 canvas->save(); | |
| 233 canvas->translate(300, 300); | |
| 234 path.moveTo(80, 25); | |
| 235 path.lineTo(50, 39); | |
| 236 path.lineTo(20, 25); | |
| 237 path.lineTo(40, 45); | |
| 238 path.lineTo(70, 50); | |
| 239 path.lineTo(80, 80); | |
| 240 canvas->drawPath(path, paint); | |
| 241 canvas->restore(); | |
| 242 } | |
| 243 // Monotone test 5 (aborted merging of two monotones) | |
| 244 if (1) { | |
| 245 SkPath path; | |
| 246 canvas->save(); | |
| 247 canvas->translate(0, 400); | |
| 248 path.moveTo(50, 20); | |
| 249 path.lineTo(80, 80); | |
| 250 path.lineTo(50, 50); | |
| 251 path.lineTo(20, 80); | |
| 252 canvas->drawPath(path, paint); | |
| 253 canvas->restore(); | |
| 254 } | |
| 255 // Degenerate intersection test | |
| 256 if (1) { | |
| 257 SkPath path; | |
| 258 canvas->save(); | |
| 259 canvas->translate(100, 400); | |
| 260 path.moveTo(50, 20); | |
| 261 path.lineTo(70, 30); | |
| 262 path.lineTo(20, 50); | |
| 263 path.moveTo(50, 20); | |
| 264 path.lineTo(80, 80); | |
| 265 path.lineTo(50, 80); | |
| 266 canvas->drawPath(path, paint); | |
| 267 canvas->restore(); | |
| 268 } | |
| 269 // Two triangles with a coincident edge. | |
| 270 if (1) { | |
| 271 SkPath path; | |
| 272 canvas->save(); | |
| 273 canvas->translate(200, 400); | |
| 274 | |
| 275 path.moveTo(80, 20); | |
| 276 path.lineTo(80, 80); | |
| 277 path.lineTo(20, 80); | |
| 278 | |
| 279 path.moveTo(20, 20); | |
| 280 path.lineTo(80, 80); | |
| 281 path.lineTo(20, 80); | |
| 282 | |
| 283 canvas->drawPath(path, paint); | |
| 284 canvas->restore(); | |
| 285 } | |
| 286 // Bowtie with a coincident vertex. | |
| 287 if (1) { | |
| 288 SkPath path; | |
| 289 canvas->save(); | |
| 290 canvas->translate(300, 400); | |
| 291 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 292 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | |
| 293 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 294 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 295 path.moveTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 296 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 297 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | |
| 298 canvas->drawPath(path, paint); | |
| 299 canvas->restore(); | |
| 300 } | |
| 301 // Coincident edges (big ones first, coincident vert on top). | |
| 302 if (1) { | |
| 303 SkPath path; | |
| 304 canvas->save(); | |
| 305 canvas->translate(0, 500); | |
| 306 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 307 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | |
| 308 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 309 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 310 path.lineTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 311 path.lineTo(SkIntToScalar(20), SkIntToScalar(50)); | |
| 312 canvas->drawPath(path, paint); | |
| 313 canvas->restore(); | |
| 314 } | |
| 315 // Coincident edges (small ones first, coincident vert on top). | |
| 316 if (1) { | |
| 317 SkPath path; | |
| 318 canvas->save(); | |
| 319 canvas->translate(100, 500); | |
| 320 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 321 path.lineTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 322 path.lineTo(SkIntToScalar(20), SkIntToScalar(50)); | |
| 323 path.moveTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 324 path.lineTo(SkIntToScalar(80), SkIntToScalar(80)); | |
| 325 path.lineTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 326 canvas->drawPath(path, paint); | |
| 327 canvas->restore(); | |
| 328 } | |
| 329 // Coincident edges (small ones first, coincident vert on bottom). | |
| 330 if (1) { | |
| 331 SkPath path; | |
| 332 canvas->save(); | |
| 333 canvas->translate(200, 500); | |
| 334 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 335 path.lineTo(SkIntToScalar(20), SkIntToScalar(50)); | |
| 336 path.lineTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 337 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 338 path.lineTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 339 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 340 canvas->drawPath(path, paint); | |
| 341 canvas->restore(); | |
| 342 } | |
| 343 // Coincident edges (big ones first, coincident vert on bottom). | |
| 344 if (1) { | |
| 345 SkPath path; | |
| 346 canvas->save(); | |
| 347 canvas->translate(300, 500); | |
| 348 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 349 path.lineTo(SkIntToScalar(20), SkIntToScalar(20)); | |
| 350 path.lineTo(SkIntToScalar(80), SkIntToScalar(20)); | |
| 351 path.moveTo(SkIntToScalar(20), SkIntToScalar(80)); | |
| 352 path.lineTo(SkIntToScalar(20), SkIntToScalar(50)); | |
| 353 path.lineTo(SkIntToScalar(50), SkIntToScalar(50)); | |
| 354 canvas->drawPath(path, paint); | |
| 355 canvas->restore(); | |
| 356 } | |
| 138 } | 357 } |
| 139 | 358 |
| 140 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, | 359 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, |
| 141 unsigned modi) { | 360 unsigned modi) { |
| 142 this->inval(NULL); | 361 this->inval(NULL); |
| 143 return this->INHERITED::onFindClickHandler(x, y, modi); | 362 return this->INHERITED::onFindClickHandler(x, y, modi); |
| 144 } | 363 } |
| 145 | 364 |
| 146 private: | 365 private: |
| 147 typedef SampleView INHERITED; | 366 typedef SampleView INHERITED; |
| 148 }; | 367 }; |
| 149 | 368 |
| 150 ////////////////////////////////////////////////////////////////////////////// | 369 ////////////////////////////////////////////////////////////////////////////// |
| 151 | 370 |
| 152 static SkView* MyFactory() { return new ConcavePathView; } | 371 static SkView* MyFactory() { return new ConcavePathView; } |
| 153 static SkViewRegister reg(MyFactory); | 372 static SkViewRegister reg(MyFactory); |
| OLD | NEW |