| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrOvalRenderer.h" | 8 #include "GrOvalRenderer.h" |
| 9 | 9 |
| 10 #include "GrEffect.h" | 10 #include "GrEffect.h" |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 return EllipseEdgeEffect::Create(random->nextBool()); | 284 return EllipseEdgeEffect::Create(random->nextBool()); |
| 285 } | 285 } |
| 286 | 286 |
| 287 /////////////////////////////////////////////////////////////////////////////// | 287 /////////////////////////////////////////////////////////////////////////////// |
| 288 | 288 |
| 289 void GrOvalRenderer::reset() { | 289 void GrOvalRenderer::reset() { |
| 290 GrSafeSetNull(fRRectIndexBuffer); | 290 GrSafeSetNull(fRRectIndexBuffer); |
| 291 } | 291 } |
| 292 | 292 |
| 293 bool GrOvalRenderer::drawOval(GrDrawTarget* target, const GrContext* context, bo
ol useAA, | 293 bool GrOvalRenderer::drawOval(GrDrawTarget* target, const GrContext* context, bo
ol useAA, |
| 294 const GrRect& oval, const SkStrokeRec& stroke) | 294 const SkRect& oval, const SkStrokeRec& stroke) |
| 295 { | 295 { |
| 296 if (!useAA) { | 296 if (!useAA) { |
| 297 return false; | 297 return false; |
| 298 } | 298 } |
| 299 | 299 |
| 300 const SkMatrix& vm = context->getMatrix(); | 300 const SkMatrix& vm = context->getMatrix(); |
| 301 | 301 |
| 302 // we can draw circles | 302 // we can draw circles |
| 303 if (SkScalarNearlyEqual(oval.width(), oval.height()) | 303 if (SkScalarNearlyEqual(oval.width(), oval.height()) |
| 304 && circle_stays_circle(vm)) { | 304 && circle_stays_circle(vm)) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 322 // position + edge | 322 // position + edge |
| 323 extern const GrVertexAttrib gCircleVertexAttribs[] = { | 323 extern const GrVertexAttrib gCircleVertexAttribs[] = { |
| 324 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding
}, | 324 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBinding
}, |
| 325 {kVec4f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBinding} | 325 {kVec4f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBinding} |
| 326 }; | 326 }; |
| 327 | 327 |
| 328 }; | 328 }; |
| 329 | 329 |
| 330 void GrOvalRenderer::drawCircle(GrDrawTarget* target, | 330 void GrOvalRenderer::drawCircle(GrDrawTarget* target, |
| 331 bool useAA, | 331 bool useAA, |
| 332 const GrRect& circle, | 332 const SkRect& circle, |
| 333 const SkStrokeRec& stroke) | 333 const SkStrokeRec& stroke) |
| 334 { | 334 { |
| 335 GrDrawState* drawState = target->drawState(); | 335 GrDrawState* drawState = target->drawState(); |
| 336 | 336 |
| 337 const SkMatrix& vm = drawState->getViewMatrix(); | 337 const SkMatrix& vm = drawState->getViewMatrix(); |
| 338 GrPoint center = GrPoint::Make(circle.centerX(), circle.centerY()); | 338 GrPoint center = GrPoint::Make(circle.centerX(), circle.centerY()); |
| 339 vm.mapPoints(¢er, 1); | 339 vm.mapPoints(¢er, 1); |
| 340 SkScalar radius = vm.mapRadius(SkScalarHalf(circle.width())); | 340 SkScalar radius = vm.mapRadius(SkScalarHalf(circle.width())); |
| 341 SkScalar strokeWidth = vm.mapRadius(stroke.getWidth()); | 341 SkScalar strokeWidth = vm.mapRadius(stroke.getWidth()); |
| 342 | 342 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 extern const GrVertexAttrib gEllipseVertexAttribs[] = { | 425 extern const GrVertexAttrib gEllipseVertexAttribs[] = { |
| 426 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBindi
ng}, | 426 {kVec2f_GrVertexAttribType, 0, kPosition_GrVertexAttribBindi
ng}, |
| 427 {kVec2f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBinding
}, | 427 {kVec2f_GrVertexAttribType, sizeof(GrPoint), kEffect_GrVertexAttribBinding
}, |
| 428 {kVec4f_GrVertexAttribType, 2*sizeof(GrPoint), kEffect_GrVertexAttribBinding
} | 428 {kVec4f_GrVertexAttribType, 2*sizeof(GrPoint), kEffect_GrVertexAttribBinding
} |
| 429 }; | 429 }; |
| 430 | 430 |
| 431 }; | 431 }; |
| 432 | 432 |
| 433 bool GrOvalRenderer::drawEllipse(GrDrawTarget* target, | 433 bool GrOvalRenderer::drawEllipse(GrDrawTarget* target, |
| 434 bool useAA, | 434 bool useAA, |
| 435 const GrRect& ellipse, | 435 const SkRect& ellipse, |
| 436 const SkStrokeRec& stroke) | 436 const SkStrokeRec& stroke) |
| 437 { | 437 { |
| 438 GrDrawState* drawState = target->drawState(); | 438 GrDrawState* drawState = target->drawState(); |
| 439 #ifdef SK_DEBUG | 439 #ifdef SK_DEBUG |
| 440 { | 440 { |
| 441 // we should have checked for this previously | 441 // we should have checked for this previously |
| 442 bool isAxisAlignedEllipse = drawState->getViewMatrix().rectStaysRect(); | 442 bool isAxisAlignedEllipse = drawState->getViewMatrix().rectStaysRect(); |
| 443 SkASSERT(useAA && isAxisAlignedEllipse); | 443 SkASSERT(useAA && isAxisAlignedEllipse); |
| 444 } | 444 } |
| 445 #endif | 445 #endif |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 } | 850 } |
| 851 | 851 |
| 852 // drop out the middle quad if we're stroked | 852 // drop out the middle quad if we're stroked |
| 853 int indexCnt = isStroked ? GR_ARRAY_COUNT(gRRectIndices)-6 : GR_ARRAY_CO
UNT(gRRectIndices); | 853 int indexCnt = isStroked ? GR_ARRAY_COUNT(gRRectIndices)-6 : GR_ARRAY_CO
UNT(gRRectIndices); |
| 854 target->setIndexSourceToBuffer(indexBuffer); | 854 target->setIndexSourceToBuffer(indexBuffer); |
| 855 target->drawIndexed(kTriangles_GrPrimitiveType, 0, 0, 16, indexCnt, &bou
nds); | 855 target->drawIndexed(kTriangles_GrPrimitiveType, 0, 0, 16, indexCnt, &bou
nds); |
| 856 } | 856 } |
| 857 | 857 |
| 858 return true; | 858 return true; |
| 859 } | 859 } |
| OLD | NEW |