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 |