Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 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 "GrAAConvexPathRenderer.h" | 9 #include "GrAAConvexPathRenderer.h" |
| 10 | 10 |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 418 verts[*v + 2].fUV.set(0, 0); | 418 verts[*v + 2].fUV.set(0, 0); |
| 419 verts[*v + 3].fUV.set(0, -SK_Scalar1); | 419 verts[*v + 3].fUV.set(0, -SK_Scalar1); |
| 420 verts[*v + 4].fUV.set(0, -SK_Scalar1); | 420 verts[*v + 4].fUV.set(0, -SK_Scalar1); |
| 421 | 421 |
| 422 verts[*v + 0].fD0 = verts[*v + 0].fD1 = -SK_Scalar1; | 422 verts[*v + 0].fD0 = verts[*v + 0].fD1 = -SK_Scalar1; |
| 423 verts[*v + 1].fD0 = verts[*v + 1].fD1 = -SK_Scalar1; | 423 verts[*v + 1].fD0 = verts[*v + 1].fD1 = -SK_Scalar1; |
| 424 verts[*v + 2].fD0 = verts[*v + 2].fD1 = -SK_Scalar1; | 424 verts[*v + 2].fD0 = verts[*v + 2].fD1 = -SK_Scalar1; |
| 425 verts[*v + 3].fD0 = verts[*v + 3].fD1 = -SK_Scalar1; | 425 verts[*v + 3].fD0 = verts[*v + 3].fD1 = -SK_Scalar1; |
| 426 verts[*v + 4].fD0 = verts[*v + 4].fD1 = -SK_Scalar1; | 426 verts[*v + 4].fD0 = verts[*v + 4].fD1 = -SK_Scalar1; |
| 427 | 427 |
| 428 idxs[*i + 0] = *v + 0; | 428 idxs[*i + 0] = *v + 3; |
| 429 idxs[*i + 1] = *v + 2; | 429 idxs[*i + 1] = *v + 1; |
| 430 idxs[*i + 2] = *v + 1; | 430 idxs[*i + 2] = *v + 2; |
| 431 | 431 |
| 432 idxs[*i + 3] = *v + 3; | 432 idxs[*i + 3] = *v + 4; |
| 433 idxs[*i + 4] = *v + 1; | 433 idxs[*i + 4] = *v + 3; |
| 434 idxs[*i + 5] = *v + 2; | 434 idxs[*i + 5] = *v + 2; |
| 435 | 435 |
| 436 idxs[*i + 6] = *v + 4; | 436 *i += 6; |
| 437 idxs[*i + 7] = *v + 3; | 437 |
| 438 idxs[*i + 8] = *v + 2; | 438 // Fill the interior, if any. |
| 439 if (count > 2) { | |
|
Chris Dalton
2015/04/21 11:49:05
Do we need to worry about the case where two colin
bsalomon
2015/04/21 15:50:07
SkPath won't notice colinear lines when constructi
| |
| 440 idxs[*i + 0] = *v + 0; | |
| 441 idxs[*i + 1] = *v + 2; | |
| 442 idxs[*i + 2] = *v + 1; | |
| 443 | |
| 444 *i += 3; | |
| 445 } | |
| 439 | 446 |
| 440 *v += 5; | 447 *v += 5; |
| 441 *i += 9; | |
| 442 } else { | 448 } else { |
| 443 SkPoint qpts[] = {sega.endPt(), segb.fPts[0], segb.fPts[1]}; | 449 SkPoint qpts[] = {sega.endPt(), segb.fPts[0], segb.fPts[1]}; |
| 444 | 450 |
| 445 SkVector midVec = segb.fNorms[0] + segb.fNorms[1]; | 451 SkVector midVec = segb.fNorms[0] + segb.fNorms[1]; |
| 446 midVec.normalize(); | 452 midVec.normalize(); |
| 447 | 453 |
| 448 verts[*v + 0].fPos = fanPt; | 454 verts[*v + 0].fPos = fanPt; |
| 449 verts[*v + 1].fPos = qpts[0]; | 455 verts[*v + 1].fPos = qpts[0]; |
| 450 verts[*v + 2].fPos = qpts[2]; | 456 verts[*v + 2].fPos = qpts[2]; |
| 451 verts[*v + 3].fPos = qpts[0] + segb.fNorms[0]; | 457 verts[*v + 3].fPos = qpts[0] + segb.fNorms[0]; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 475 idxs[*i + 1] = *v + 1; | 481 idxs[*i + 1] = *v + 1; |
| 476 idxs[*i + 2] = *v + 2; | 482 idxs[*i + 2] = *v + 2; |
| 477 idxs[*i + 3] = *v + 4; | 483 idxs[*i + 3] = *v + 4; |
| 478 idxs[*i + 4] = *v + 3; | 484 idxs[*i + 4] = *v + 3; |
| 479 idxs[*i + 5] = *v + 2; | 485 idxs[*i + 5] = *v + 2; |
| 480 | 486 |
| 481 idxs[*i + 6] = *v + 5; | 487 idxs[*i + 6] = *v + 5; |
| 482 idxs[*i + 7] = *v + 3; | 488 idxs[*i + 7] = *v + 3; |
| 483 idxs[*i + 8] = *v + 4; | 489 idxs[*i + 8] = *v + 4; |
| 484 | 490 |
| 485 idxs[*i + 9] = *v + 0; | 491 *i += 9; |
| 486 idxs[*i + 10] = *v + 2; | 492 |
| 487 idxs[*i + 11] = *v + 1; | 493 // Fill the interior, if any. |
| 494 if (count > 2) { | |
|
Chris Dalton
2015/04/21 11:41:59
I decided to err on the side of minimal change, bu
| |
| 495 idxs[*i + 0] = *v + 0; | |
| 496 idxs[*i + 1] = *v + 2; | |
| 497 idxs[*i + 2] = *v + 1; | |
| 498 | |
| 499 *i += 3; | |
| 500 } | |
| 488 | 501 |
| 489 *v += 6; | 502 *v += 6; |
| 490 *i += 12; | |
| 491 } | 503 } |
| 492 } | 504 } |
| 493 } | 505 } |
| 494 | 506 |
| 495 /////////////////////////////////////////////////////////////////////////////// | 507 /////////////////////////////////////////////////////////////////////////////// |
| 496 | 508 |
| 497 /* | 509 /* |
| 498 * Quadratic specified by 0=u^2-v canonical coords. u and v are the first | 510 * Quadratic specified by 0=u^2-v canonical coords. u and v are the first |
| 499 * two components of the vertex attribute. Coverage is based on signed | 511 * two components of the vertex attribute. Coverage is based on signed |
| 500 * distance with negative being inside, positive outside. The edge is specified in | 512 * distance with negative being inside, positive outside. The edge is specified in |
| (...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 885 geometry.fColor = color; | 897 geometry.fColor = color; |
| 886 geometry.fViewMatrix = vm; | 898 geometry.fViewMatrix = vm; |
| 887 geometry.fPath = path; | 899 geometry.fPath = path; |
| 888 | 900 |
| 889 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); | 901 SkAutoTUnref<GrBatch> batch(AAConvexPathBatch::Create(geometry)); |
| 890 target->drawBatch(pipelineBuilder, batch, &devRect); | 902 target->drawBatch(pipelineBuilder, batch, &devRect); |
| 891 | 903 |
| 892 return true; | 904 return true; |
| 893 | 905 |
| 894 } | 906 } |
| OLD | NEW |