| 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 "GrDefaultPathRenderer.h" | 9 #include "GrDefaultPathRenderer.h" |
| 10 | 10 |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 GrPoint* vert = base; | 246 GrPoint* vert = base; |
| 247 | 247 |
| 248 GrPoint pts[4]; | 248 GrPoint pts[4]; |
| 249 | 249 |
| 250 bool first = true; | 250 bool first = true; |
| 251 int subpath = 0; | 251 int subpath = 0; |
| 252 | 252 |
| 253 SkPath::Iter iter(path, false); | 253 SkPath::Iter iter(path, false); |
| 254 | 254 |
| 255 for (;;) { | 255 for (;;) { |
| 256 GrPathCmd cmd = (GrPathCmd)iter.next(pts); | 256 SkPath::Verb verb = iter.next(pts); |
| 257 switch (cmd) { | 257 switch (verb) { |
| 258 case kMove_PathCmd: | 258 case SkPath::kMove_Verb: |
| 259 if (!first) { | 259 if (!first) { |
| 260 uint16_t currIdx = (uint16_t) (vert - base); | 260 uint16_t currIdx = (uint16_t) (vert - base); |
| 261 subpathIdxStart = currIdx; | 261 subpathIdxStart = currIdx; |
| 262 ++subpath; | 262 ++subpath; |
| 263 } | 263 } |
| 264 *vert = pts[0]; | 264 *vert = pts[0]; |
| 265 vert++; | 265 vert++; |
| 266 break; | 266 break; |
| 267 case kLine_PathCmd: | 267 case SkPath::kLine_Verb: |
| 268 if (indexed) { | 268 if (indexed) { |
| 269 uint16_t prevIdx = (uint16_t)(vert - base) - 1; | 269 uint16_t prevIdx = (uint16_t)(vert - base) - 1; |
| 270 append_countour_edge_indices(isHairline, subpathIdxStart, | 270 append_countour_edge_indices(isHairline, subpathIdxStart, |
| 271 prevIdx, &idx); | 271 prevIdx, &idx); |
| 272 } | 272 } |
| 273 *(vert++) = pts[1]; | 273 *(vert++) = pts[1]; |
| 274 break; | 274 break; |
| 275 case kQuadratic_PathCmd: { | 275 case SkPath::kQuad_Verb: { |
| 276 // first pt of quad is the pt we ended on in previous step | 276 // first pt of quad is the pt we ended on in previous step |
| 277 uint16_t firstQPtIdx = (uint16_t)(vert - base) - 1; | 277 uint16_t firstQPtIdx = (uint16_t)(vert - base) - 1; |
| 278 uint16_t numPts = (uint16_t) | 278 uint16_t numPts = (uint16_t) |
| 279 GrPathUtils::generateQuadraticPoints( | 279 GrPathUtils::generateQuadraticPoints( |
| 280 pts[0], pts[1], pts[2], | 280 pts[0], pts[1], pts[2], |
| 281 srcSpaceTolSqd, &vert, | 281 srcSpaceTolSqd, &vert, |
| 282 GrPathUtils::quadraticPointCount(pts, srcSpaceTol)); | 282 GrPathUtils::quadraticPointCount(pts, srcSpaceTol)); |
| 283 if (indexed) { | 283 if (indexed) { |
| 284 for (uint16_t i = 0; i < numPts; ++i) { | 284 for (uint16_t i = 0; i < numPts; ++i) { |
| 285 append_countour_edge_indices(isHairline, subpathIdxStart
, | 285 append_countour_edge_indices(isHairline, subpathIdxStart
, |
| 286 firstQPtIdx + i, &idx); | 286 firstQPtIdx + i, &idx); |
| 287 } | 287 } |
| 288 } | 288 } |
| 289 break; | 289 break; |
| 290 } | 290 } |
| 291 case kCubic_PathCmd: { | 291 case SkPath::kCubic_Verb: { |
| 292 // first pt of cubic is the pt we ended on in previous step | 292 // first pt of cubic is the pt we ended on in previous step |
| 293 uint16_t firstCPtIdx = (uint16_t)(vert - base) - 1; | 293 uint16_t firstCPtIdx = (uint16_t)(vert - base) - 1; |
| 294 uint16_t numPts = (uint16_t) GrPathUtils::generateCubicPoints( | 294 uint16_t numPts = (uint16_t) GrPathUtils::generateCubicPoints( |
| 295 pts[0], pts[1], pts[2], pts[3], | 295 pts[0], pts[1], pts[2], pts[3], |
| 296 srcSpaceTolSqd, &vert, | 296 srcSpaceTolSqd, &vert, |
| 297 GrPathUtils::cubicPointCount(pts, srcSpaceTol)); | 297 GrPathUtils::cubicPointCount(pts, srcSpaceTol)); |
| 298 if (indexed) { | 298 if (indexed) { |
| 299 for (uint16_t i = 0; i < numPts; ++i) { | 299 for (uint16_t i = 0; i < numPts; ++i) { |
| 300 append_countour_edge_indices(isHairline, subpathIdxStart
, | 300 append_countour_edge_indices(isHairline, subpathIdxStart
, |
| 301 firstCPtIdx + i, &idx); | 301 firstCPtIdx + i, &idx); |
| 302 } | 302 } |
| 303 } | 303 } |
| 304 break; | 304 break; |
| 305 } | 305 } |
| 306 case kClose_PathCmd: | 306 case SkPath::kClose_Verb: |
| 307 break; | 307 break; |
| 308 case kEnd_PathCmd: | 308 case SkPath::kDone_Verb: |
| 309 // uint16_t currIdx = (uint16_t) (vert - base); | 309 // uint16_t currIdx = (uint16_t) (vert - base); |
| 310 goto FINISHED; | 310 goto FINISHED; |
| 311 } | 311 } |
| 312 first = false; | 312 first = false; |
| 313 } | 313 } |
| 314 FINISHED: | 314 FINISHED: |
| 315 GrAssert((vert - base) <= maxPts); | 315 GrAssert((vert - base) <= maxPts); |
| 316 GrAssert((idx - idxBase) <= maxIdxs); | 316 GrAssert((idx - idxBase) <= maxIdxs); |
| 317 | 317 |
| 318 *vertexCnt = vert - base; | 318 *vertexCnt = vert - base; |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 false); | 511 false); |
| 512 } | 512 } |
| 513 | 513 |
| 514 void GrDefaultPathRenderer::onStencilPath(const SkPath& path, | 514 void GrDefaultPathRenderer::onStencilPath(const SkPath& path, |
| 515 const SkStrokeRec& stroke, | 515 const SkStrokeRec& stroke, |
| 516 GrDrawTarget* target) { | 516 GrDrawTarget* target) { |
| 517 GrAssert(SkPath::kInverseEvenOdd_FillType != path.getFillType()); | 517 GrAssert(SkPath::kInverseEvenOdd_FillType != path.getFillType()); |
| 518 GrAssert(SkPath::kInverseWinding_FillType != path.getFillType()); | 518 GrAssert(SkPath::kInverseWinding_FillType != path.getFillType()); |
| 519 this->internalDrawPath(path, stroke, target, true); | 519 this->internalDrawPath(path, stroke, target, true); |
| 520 } | 520 } |
| OLD | NEW |