Chromium Code Reviews| 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 "GrProcessor.h" | 10 #include "GrProcessor.h" |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 117 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); | 117 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); |
| 118 } | 118 } |
| 119 | 119 |
| 120 static void GenKey(const GrGeometryProcessor& processor, | 120 static void GenKey(const GrGeometryProcessor& processor, |
| 121 const GrBatchTracker& bt, | 121 const GrBatchTracker& bt, |
| 122 const GrGLCaps&, | 122 const GrGLCaps&, |
| 123 GrProcessorKeyBuilder* b) { | 123 GrProcessorKeyBuilder* b) { |
| 124 const BatchTracker& local = bt.cast<BatchTracker>(); | 124 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 125 const CircleEdgeEffect& circleEffect = processor.cast<CircleEdgeEffe ct>(); | 125 const CircleEdgeEffect& circleEffect = processor.cast<CircleEdgeEffe ct>(); |
| 126 b->add32(circleEffect.isStroked() << 16 | local.fInputColorType); | 126 b->add32(circleEffect.isStroked() << 16 | local.fInputColorType); |
| 127 b->add32(local.fUsesLocalCoords && processor.localMatrix().hasPerspe ctive()); | |
|
bsalomon
2014/12/22 21:13:55
here and the others below, can't we just use a bit
| |
| 127 } | 128 } |
| 128 | 129 |
| 129 virtual void setData(const GrGLProgramDataManager& pdman, | 130 virtual void setData(const GrGLProgramDataManager& pdman, |
| 130 const GrPrimitiveProcessor& gp, | 131 const GrPrimitiveProcessor& gp, |
| 131 const GrBatchTracker& bt) SK_OVERRIDE { | 132 const GrBatchTracker& bt) SK_OVERRIDE { |
| 132 const BatchTracker& local = bt.cast<BatchTracker>(); | 133 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 133 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { | 134 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { |
| 134 GrGLfloat c[4]; | 135 GrGLfloat c[4]; |
| 135 GrColorToRGBAFloat(local.fColor, c); | 136 GrColorToRGBAFloat(local.fColor, c); |
| 136 pdman.set4fv(fColorUniform, 1, c); | 137 pdman.set4fv(fColorUniform, 1, c); |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 300 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); | 301 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); |
| 301 } | 302 } |
| 302 | 303 |
| 303 static void GenKey(const GrGeometryProcessor& processor, | 304 static void GenKey(const GrGeometryProcessor& processor, |
| 304 const GrBatchTracker& bt, | 305 const GrBatchTracker& bt, |
| 305 const GrGLCaps&, | 306 const GrGLCaps&, |
| 306 GrProcessorKeyBuilder* b) { | 307 GrProcessorKeyBuilder* b) { |
| 307 const BatchTracker& local = bt.cast<BatchTracker>(); | 308 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 308 const EllipseEdgeEffect& ellipseEffect = processor.cast<EllipseEdgeE ffect>(); | 309 const EllipseEdgeEffect& ellipseEffect = processor.cast<EllipseEdgeE ffect>(); |
| 309 b->add32(ellipseEffect.isStroked() << 16 | local.fInputColorType); | 310 b->add32(ellipseEffect.isStroked() << 16 | local.fInputColorType); |
| 311 b->add32(local.fUsesLocalCoords && processor.localMatrix().hasPerspe ctive()); | |
| 310 } | 312 } |
| 311 | 313 |
| 312 virtual void setData(const GrGLProgramDataManager& pdman, | 314 virtual void setData(const GrGLProgramDataManager& pdman, |
| 313 const GrPrimitiveProcessor& gp, | 315 const GrPrimitiveProcessor& gp, |
| 314 const GrBatchTracker& bt) SK_OVERRIDE { | 316 const GrBatchTracker& bt) SK_OVERRIDE { |
| 315 const BatchTracker& local = bt.cast<BatchTracker>(); | 317 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 316 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { | 318 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { |
| 317 GrGLfloat c[4]; | 319 GrGLfloat c[4]; |
| 318 GrColorToRGBAFloat(local.fColor, c); | 320 GrColorToRGBAFloat(local.fColor, c); |
| 319 pdman.set4fv(fColorUniform, 1, c); | 321 pdman.set4fv(fColorUniform, 1, c); |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 504 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); | 506 fsBuilder->codeAppendf("%s = vec4(edgeAlpha);", args.fOutputCoverage ); |
| 505 } | 507 } |
| 506 | 508 |
| 507 static void GenKey(const GrGeometryProcessor& processor, | 509 static void GenKey(const GrGeometryProcessor& processor, |
| 508 const GrBatchTracker& bt, | 510 const GrBatchTracker& bt, |
| 509 const GrGLCaps&, | 511 const GrGLCaps&, |
| 510 GrProcessorKeyBuilder* b) { | 512 GrProcessorKeyBuilder* b) { |
| 511 const BatchTracker& local = bt.cast<BatchTracker>(); | 513 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 512 const DIEllipseEdgeEffect& ellipseEffect = processor.cast<DIEllipseE dgeEffect>(); | 514 const DIEllipseEdgeEffect& ellipseEffect = processor.cast<DIEllipseE dgeEffect>(); |
| 513 b->add32(ellipseEffect.getMode() << 16 | local.fInputColorType); | 515 b->add32(ellipseEffect.getMode() << 16 | local.fInputColorType); |
| 516 b->add32(local.fUsesLocalCoords && processor.localMatrix().hasPerspe ctive()); | |
| 514 } | 517 } |
| 515 | 518 |
| 516 virtual void setData(const GrGLProgramDataManager& pdman, | 519 virtual void setData(const GrGLProgramDataManager& pdman, |
| 517 const GrPrimitiveProcessor& gp, | 520 const GrPrimitiveProcessor& gp, |
| 518 const GrBatchTracker& bt) SK_OVERRIDE { | 521 const GrBatchTracker& bt) SK_OVERRIDE { |
| 519 const BatchTracker& local = bt.cast<BatchTracker>(); | 522 const BatchTracker& local = bt.cast<BatchTracker>(); |
| 520 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { | 523 if (kUniform_GrGPInput == local.fInputColorType && local.fColor != f Color) { |
| 521 GrGLfloat c[4]; | 524 GrGLfloat c[4]; |
| 522 GrColorToRGBAFloat(local.fColor, c); | 525 GrColorToRGBAFloat(local.fColor, c); |
| 523 pdman.set4fv(fColorUniform, 1, c); | 526 pdman.set4fv(fColorUniform, 1, c); |
| (...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1079 } | 1082 } |
| 1080 GrDrawState::AutoViewMatrixRestore avmr; | 1083 GrDrawState::AutoViewMatrixRestore avmr; |
| 1081 if (!avmr.setIdentity(drawState)) { | 1084 if (!avmr.setIdentity(drawState)) { |
| 1082 return false; | 1085 return false; |
| 1083 } | 1086 } |
| 1084 drawState->addCoverageProcessor(effect)->unref(); | 1087 drawState->addCoverageProcessor(effect)->unref(); |
| 1085 SkRect bounds = outer->getBounds(); | 1088 SkRect bounds = outer->getBounds(); |
| 1086 if (applyAA) { | 1089 if (applyAA) { |
| 1087 bounds.outset(SK_ScalarHalf, SK_ScalarHalf); | 1090 bounds.outset(SK_ScalarHalf, SK_ScalarHalf); |
| 1088 } | 1091 } |
| 1089 target->drawRect(drawState, color, bounds, NULL, NULL); | 1092 target->drawSimpleRect(drawState, color, bounds); |
| 1090 return true; | 1093 return true; |
| 1091 } | 1094 } |
| 1092 | 1095 |
| 1093 bool GrOvalRenderer::drawRRect(GrDrawTarget* target, | 1096 bool GrOvalRenderer::drawRRect(GrDrawTarget* target, |
| 1094 GrDrawState* drawState, | 1097 GrDrawState* drawState, |
| 1095 GrColor color, | 1098 GrColor color, |
| 1096 bool useAA, | 1099 bool useAA, |
| 1097 const SkRRect& rrect, | 1100 const SkRRect& rrect, |
| 1098 const SkStrokeRec& stroke) { | 1101 const SkStrokeRec& stroke) { |
| 1099 if (rrect.isOval()) { | 1102 if (rrect.isOval()) { |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1360 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : | 1363 int indexCnt = isStrokeOnly ? SK_ARRAY_COUNT(gRRectIndices) - 6 : |
| 1361 SK_ARRAY_COUNT(gRRectIndices); | 1364 SK_ARRAY_COUNT(gRRectIndices); |
| 1362 target->setIndexSourceToBuffer(indexBuffer); | 1365 target->setIndexSourceToBuffer(indexBuffer); |
| 1363 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt, | 1366 target->drawIndexedInstances(drawState, effect, kTriangles_GrPrimitiveTy pe, 1, 16, indexCnt, |
| 1364 &bounds); | 1367 &bounds); |
| 1365 } | 1368 } |
| 1366 | 1369 |
| 1367 target->resetIndexSource(); | 1370 target->resetIndexSource(); |
| 1368 return true; | 1371 return true; |
| 1369 } | 1372 } |
| OLD | NEW |