| 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 "GrBatchFlushState.h" | 10 #include "GrBatchFlushState.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 * vec4f : (p.xy, outerRad, innerRad) | 65 * vec4f : (p.xy, outerRad, innerRad) |
| 66 * p is the position in the normalized space. | 66 * p is the position in the normalized space. |
| 67 * outerRad is the outerRadius in device space. | 67 * outerRad is the outerRadius in device space. |
| 68 * innerRad is the innerRadius in normalized space (ignored if not s
troking). | 68 * innerRad is the innerRadius in normalized space (ignored if not s
troking). |
| 69 */ | 69 */ |
| 70 | 70 |
| 71 class CircleEdgeEffect : public GrGeometryProcessor { | 71 class CircleEdgeEffect : public GrGeometryProcessor { |
| 72 public: | 72 public: |
| 73 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix, | 73 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix, |
| 74 bool usesLocalCoords) { | 74 bool usesLocalCoords) { |
| 75 return SkNEW_ARGS(CircleEdgeEffect, (color, stroke, localMatrix, usesLoc
alCoords)); | 75 return new CircleEdgeEffect(color, stroke, localMatrix, usesLocalCoords)
; |
| 76 } | 76 } |
| 77 | 77 |
| 78 const Attribute* inPosition() const { return fInPosition; } | 78 const Attribute* inPosition() const { return fInPosition; } |
| 79 const Attribute* inCircleEdge() const { return fInCircleEdge; } | 79 const Attribute* inCircleEdge() const { return fInCircleEdge; } |
| 80 GrColor color() const { return fColor; } | 80 GrColor color() const { return fColor; } |
| 81 bool colorIgnored() const { return GrColor_ILLEGAL == fColor; } | 81 bool colorIgnored() const { return GrColor_ILLEGAL == fColor; } |
| 82 const SkMatrix& localMatrix() const { return fLocalMatrix; } | 82 const SkMatrix& localMatrix() const { return fLocalMatrix; } |
| 83 bool usesLocalCoords() const { return fUsesLocalCoords; } | 83 bool usesLocalCoords() const { return fUsesLocalCoords; } |
| 84 virtual ~CircleEdgeEffect() {} | 84 virtual ~CircleEdgeEffect() {} |
| 85 | 85 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 168 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 169 const GrGLSLCaps& caps, | 169 const GrGLSLCaps& caps, |
| 170 GrProcessorKeyBuilder* b) const override { | 170 GrProcessorKeyBuilder* b) const override { |
| 171 GLProcessor::GenKey(*this, bt, caps, b); | 171 GLProcessor::GenKey(*this, bt, caps, b); |
| 172 } | 172 } |
| 173 | 173 |
| 174 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 174 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 175 const GrGLSLCaps&) const ov
erride { | 175 const GrGLSLCaps&) const ov
erride { |
| 176 return SkNEW_ARGS(GLProcessor, (*this, bt)); | 176 return new GLProcessor(*this, bt); |
| 177 } | 177 } |
| 178 | 178 |
| 179 private: | 179 private: |
| 180 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix, bo
ol usesLocalCoords) | 180 CircleEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix, bo
ol usesLocalCoords) |
| 181 : fColor(color) | 181 : fColor(color) |
| 182 , fLocalMatrix(localMatrix) | 182 , fLocalMatrix(localMatrix) |
| 183 , fUsesLocalCoords(usesLocalCoords) { | 183 , fUsesLocalCoords(usesLocalCoords) { |
| 184 this->initClassID<CircleEdgeEffect>(); | 184 this->initClassID<CircleEdgeEffect>(); |
| 185 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType, | 185 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType, |
| 186 kHigh_GrSLPrecision)); | 186 kHigh_GrSLPrecision)); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 217 * ellipse, specified as a 2D offset from center, and the reciprocals of the out
er and inner radii, | 217 * ellipse, specified as a 2D offset from center, and the reciprocals of the out
er and inner radii, |
| 218 * in both x and y directions. | 218 * in both x and y directions. |
| 219 * | 219 * |
| 220 * We are using an implicit function of x^2/a^2 + y^2/b^2 - 1 = 0. | 220 * We are using an implicit function of x^2/a^2 + y^2/b^2 - 1 = 0. |
| 221 */ | 221 */ |
| 222 | 222 |
| 223 class EllipseEdgeEffect : public GrGeometryProcessor { | 223 class EllipseEdgeEffect : public GrGeometryProcessor { |
| 224 public: | 224 public: |
| 225 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix, | 225 static GrGeometryProcessor* Create(GrColor color, bool stroke, const SkMatri
x& localMatrix, |
| 226 bool usesLocalCoords) { | 226 bool usesLocalCoords) { |
| 227 return SkNEW_ARGS(EllipseEdgeEffect, (color, stroke, localMatrix, usesLo
calCoords)); | 227 return new EllipseEdgeEffect(color, stroke, localMatrix, usesLocalCoords
); |
| 228 } | 228 } |
| 229 | 229 |
| 230 virtual ~EllipseEdgeEffect() {} | 230 virtual ~EllipseEdgeEffect() {} |
| 231 | 231 |
| 232 const char* name() const override { return "EllipseEdge"; } | 232 const char* name() const override { return "EllipseEdge"; } |
| 233 | 233 |
| 234 const Attribute* inPosition() const { return fInPosition; } | 234 const Attribute* inPosition() const { return fInPosition; } |
| 235 const Attribute* inEllipseOffset() const { return fInEllipseOffset; } | 235 const Attribute* inEllipseOffset() const { return fInEllipseOffset; } |
| 236 const Attribute* inEllipseRadii() const { return fInEllipseRadii; } | 236 const Attribute* inEllipseRadii() const { return fInEllipseRadii; } |
| 237 GrColor color() const { return fColor; } | 237 GrColor color() const { return fColor; } |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 }; | 342 }; |
| 343 | 343 |
| 344 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 344 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 345 const GrGLSLCaps& caps, | 345 const GrGLSLCaps& caps, |
| 346 GrProcessorKeyBuilder* b) const override { | 346 GrProcessorKeyBuilder* b) const override { |
| 347 GLProcessor::GenKey(*this, bt, caps, b); | 347 GLProcessor::GenKey(*this, bt, caps, b); |
| 348 } | 348 } |
| 349 | 349 |
| 350 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 350 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 351 const GrGLSLCaps&) const ov
erride { | 351 const GrGLSLCaps&) const ov
erride { |
| 352 return SkNEW_ARGS(GLProcessor, (*this, bt)); | 352 return new GLProcessor(*this, bt); |
| 353 } | 353 } |
| 354 | 354 |
| 355 private: | 355 private: |
| 356 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix, | 356 EllipseEdgeEffect(GrColor color, bool stroke, const SkMatrix& localMatrix, |
| 357 bool usesLocalCoords) | 357 bool usesLocalCoords) |
| 358 : fColor(color) | 358 : fColor(color) |
| 359 , fLocalMatrix(localMatrix) | 359 , fLocalMatrix(localMatrix) |
| 360 , fUsesLocalCoords(usesLocalCoords) { | 360 , fUsesLocalCoords(usesLocalCoords) { |
| 361 this->initClassID<EllipseEdgeEffect>(); | 361 this->initClassID<EllipseEdgeEffect>(); |
| 362 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); | 362 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType)); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 * | 399 * |
| 400 * The result is device-independent and can be used with any affine matrix. | 400 * The result is device-independent and can be used with any affine matrix. |
| 401 */ | 401 */ |
| 402 | 402 |
| 403 class DIEllipseEdgeEffect : public GrGeometryProcessor { | 403 class DIEllipseEdgeEffect : public GrGeometryProcessor { |
| 404 public: | 404 public: |
| 405 enum Mode { kStroke = 0, kHairline, kFill }; | 405 enum Mode { kStroke = 0, kHairline, kFill }; |
| 406 | 406 |
| 407 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix
, Mode mode, | 407 static GrGeometryProcessor* Create(GrColor color, const SkMatrix& viewMatrix
, Mode mode, |
| 408 bool usesLocalCoords) { | 408 bool usesLocalCoords) { |
| 409 return SkNEW_ARGS(DIEllipseEdgeEffect, (color, viewMatrix, mode, usesLoc
alCoords)); | 409 return new DIEllipseEdgeEffect(color, viewMatrix, mode, usesLocalCoords)
; |
| 410 } | 410 } |
| 411 | 411 |
| 412 virtual ~DIEllipseEdgeEffect() {} | 412 virtual ~DIEllipseEdgeEffect() {} |
| 413 | 413 |
| 414 const char* name() const override { return "DIEllipseEdge"; } | 414 const char* name() const override { return "DIEllipseEdge"; } |
| 415 | 415 |
| 416 const Attribute* inPosition() const { return fInPosition; } | 416 const Attribute* inPosition() const { return fInPosition; } |
| 417 const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } | 417 const Attribute* inEllipseOffsets0() const { return fInEllipseOffsets0; } |
| 418 const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } | 418 const Attribute* inEllipseOffsets1() const { return fInEllipseOffsets1; } |
| 419 GrColor color() const { return fColor; } | 419 GrColor color() const { return fColor; } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 }; | 542 }; |
| 543 | 543 |
| 544 virtual void getGLProcessorKey(const GrBatchTracker& bt, | 544 virtual void getGLProcessorKey(const GrBatchTracker& bt, |
| 545 const GrGLSLCaps& caps, | 545 const GrGLSLCaps& caps, |
| 546 GrProcessorKeyBuilder* b) const override { | 546 GrProcessorKeyBuilder* b) const override { |
| 547 GLProcessor::GenKey(*this, bt, caps, b); | 547 GLProcessor::GenKey(*this, bt, caps, b); |
| 548 } | 548 } |
| 549 | 549 |
| 550 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, | 550 virtual GrGLPrimitiveProcessor* createGLInstance(const GrBatchTracker& bt, |
| 551 const GrGLSLCaps&) const ov
erride { | 551 const GrGLSLCaps&) const ov
erride { |
| 552 return SkNEW_ARGS(GLProcessor, (*this, bt)); | 552 return new GLProcessor(*this, bt); |
| 553 } | 553 } |
| 554 | 554 |
| 555 private: | 555 private: |
| 556 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode, | 556 DIEllipseEdgeEffect(GrColor color, const SkMatrix& viewMatrix, Mode mode, |
| 557 bool usesLocalCoords) | 557 bool usesLocalCoords) |
| 558 : fColor(color) | 558 : fColor(color) |
| 559 , fViewMatrix(viewMatrix) | 559 , fViewMatrix(viewMatrix) |
| 560 , fUsesLocalCoords(usesLocalCoords) { | 560 , fUsesLocalCoords(usesLocalCoords) { |
| 561 this->initClassID<DIEllipseEdgeEffect>(); | 561 this->initClassID<DIEllipseEdgeEffect>(); |
| 562 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType, | 562 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe
rtexAttribType, |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 629 public: | 629 public: |
| 630 struct Geometry { | 630 struct Geometry { |
| 631 GrColor fColor; | 631 GrColor fColor; |
| 632 SkMatrix fViewMatrix; | 632 SkMatrix fViewMatrix; |
| 633 SkScalar fInnerRadius; | 633 SkScalar fInnerRadius; |
| 634 SkScalar fOuterRadius; | 634 SkScalar fOuterRadius; |
| 635 bool fStroke; | 635 bool fStroke; |
| 636 SkRect fDevBounds; | 636 SkRect fDevBounds; |
| 637 }; | 637 }; |
| 638 | 638 |
| 639 static GrDrawBatch* Create(const Geometry& geometry) { | 639 static GrDrawBatch* Create(const Geometry& geometry) { return new CircleBatc
h(geometry); } |
| 640 return SkNEW_ARGS(CircleBatch, (geometry)); | |
| 641 } | |
| 642 | 640 |
| 643 const char* name() const override { return "CircleBatch"; } | 641 const char* name() const override { return "CircleBatch"; } |
| 644 | 642 |
| 645 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 643 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
| 646 // When this is called on a batch, there is only one geometry bundle | 644 // When this is called on a batch, there is only one geometry bundle |
| 647 out->setKnownFourComponents(fGeoData[0].fColor); | 645 out->setKnownFourComponents(fGeoData[0].fColor); |
| 648 } | 646 } |
| 649 | 647 |
| 650 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 648 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
| 651 out->setUnknownSingleComponent(); | 649 out->setUnknownSingleComponent(); |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 GrColor fColor; | 846 GrColor fColor; |
| 849 SkMatrix fViewMatrix; | 847 SkMatrix fViewMatrix; |
| 850 SkScalar fXRadius; | 848 SkScalar fXRadius; |
| 851 SkScalar fYRadius; | 849 SkScalar fYRadius; |
| 852 SkScalar fInnerXRadius; | 850 SkScalar fInnerXRadius; |
| 853 SkScalar fInnerYRadius; | 851 SkScalar fInnerYRadius; |
| 854 bool fStroke; | 852 bool fStroke; |
| 855 SkRect fDevBounds; | 853 SkRect fDevBounds; |
| 856 }; | 854 }; |
| 857 | 855 |
| 858 static GrDrawBatch* Create(const Geometry& geometry) { | 856 static GrDrawBatch* Create(const Geometry& geometry) { return new EllipseBat
ch(geometry); } |
| 859 return SkNEW_ARGS(EllipseBatch, (geometry)); | |
| 860 } | |
| 861 | 857 |
| 862 const char* name() const override { return "EllipseBatch"; } | 858 const char* name() const override { return "EllipseBatch"; } |
| 863 | 859 |
| 864 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 860 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
| 865 // When this is called on a batch, there is only one geometry bundle | 861 // When this is called on a batch, there is only one geometry bundle |
| 866 out->setKnownFourComponents(fGeoData[0].fColor); | 862 out->setKnownFourComponents(fGeoData[0].fColor); |
| 867 } | 863 } |
| 868 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 864 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
| 869 out->setUnknownSingleComponent(); | 865 out->setUnknownSingleComponent(); |
| 870 } | 866 } |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 SkScalar fYRadius; | 1113 SkScalar fYRadius; |
| 1118 SkScalar fInnerXRadius; | 1114 SkScalar fInnerXRadius; |
| 1119 SkScalar fInnerYRadius; | 1115 SkScalar fInnerYRadius; |
| 1120 SkScalar fGeoDx; | 1116 SkScalar fGeoDx; |
| 1121 SkScalar fGeoDy; | 1117 SkScalar fGeoDy; |
| 1122 DIEllipseEdgeEffect::Mode fMode; | 1118 DIEllipseEdgeEffect::Mode fMode; |
| 1123 SkRect fBounds; | 1119 SkRect fBounds; |
| 1124 }; | 1120 }; |
| 1125 | 1121 |
| 1126 static GrDrawBatch* Create(const Geometry& geometry, const SkRect& bounds) { | 1122 static GrDrawBatch* Create(const Geometry& geometry, const SkRect& bounds) { |
| 1127 return SkNEW_ARGS(DIEllipseBatch, (geometry, bounds)); | 1123 return new DIEllipseBatch(geometry, bounds); |
| 1128 } | 1124 } |
| 1129 | 1125 |
| 1130 const char* name() const override { return "DIEllipseBatch"; } | 1126 const char* name() const override { return "DIEllipseBatch"; } |
| 1131 | 1127 |
| 1132 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 1128 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
| 1133 // When this is called on a batch, there is only one geometry bundle | 1129 // When this is called on a batch, there is only one geometry bundle |
| 1134 out->setKnownFourComponents(fGeoData[0].fColor); | 1130 out->setKnownFourComponents(fGeoData[0].fColor); |
| 1135 } | 1131 } |
| 1136 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 1132 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
| 1137 out->setUnknownSingleComponent(); | 1133 out->setUnknownSingleComponent(); |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1469 struct Geometry { | 1465 struct Geometry { |
| 1470 GrColor fColor; | 1466 GrColor fColor; |
| 1471 SkMatrix fViewMatrix; | 1467 SkMatrix fViewMatrix; |
| 1472 SkScalar fInnerRadius; | 1468 SkScalar fInnerRadius; |
| 1473 SkScalar fOuterRadius; | 1469 SkScalar fOuterRadius; |
| 1474 bool fStroke; | 1470 bool fStroke; |
| 1475 SkRect fDevBounds; | 1471 SkRect fDevBounds; |
| 1476 }; | 1472 }; |
| 1477 | 1473 |
| 1478 static GrDrawBatch* Create(const Geometry& geometry) { | 1474 static GrDrawBatch* Create(const Geometry& geometry) { |
| 1479 return SkNEW_ARGS(RRectCircleRendererBatch, (geometry)); | 1475 return new RRectCircleRendererBatch(geometry); |
| 1480 } | 1476 } |
| 1481 | 1477 |
| 1482 const char* name() const override { return "RRectCircleBatch"; } | 1478 const char* name() const override { return "RRectCircleBatch"; } |
| 1483 | 1479 |
| 1484 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 1480 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
| 1485 // When this is called on a batch, there is only one geometry bundle | 1481 // When this is called on a batch, there is only one geometry bundle |
| 1486 out->setKnownFourComponents(fGeoData[0].fColor); | 1482 out->setKnownFourComponents(fGeoData[0].fColor); |
| 1487 } | 1483 } |
| 1488 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 1484 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
| 1489 out->setUnknownSingleComponent(); | 1485 out->setUnknownSingleComponent(); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1645 SkMatrix fViewMatrix; | 1641 SkMatrix fViewMatrix; |
| 1646 SkScalar fXRadius; | 1642 SkScalar fXRadius; |
| 1647 SkScalar fYRadius; | 1643 SkScalar fYRadius; |
| 1648 SkScalar fInnerXRadius; | 1644 SkScalar fInnerXRadius; |
| 1649 SkScalar fInnerYRadius; | 1645 SkScalar fInnerYRadius; |
| 1650 bool fStroke; | 1646 bool fStroke; |
| 1651 SkRect fDevBounds; | 1647 SkRect fDevBounds; |
| 1652 }; | 1648 }; |
| 1653 | 1649 |
| 1654 static GrDrawBatch* Create(const Geometry& geometry) { | 1650 static GrDrawBatch* Create(const Geometry& geometry) { |
| 1655 return SkNEW_ARGS(RRectEllipseRendererBatch, (geometry)); | 1651 return new RRectEllipseRendererBatch(geometry); |
| 1656 } | 1652 } |
| 1657 | 1653 |
| 1658 const char* name() const override { return "RRectEllipseRendererBatch"; } | 1654 const char* name() const override { return "RRectEllipseRendererBatch"; } |
| 1659 | 1655 |
| 1660 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { | 1656 void getInvariantOutputColor(GrInitInvariantOutput* out) const override { |
| 1661 // When this is called on a batch, there is only one geometry bundle | 1657 // When this is called on a batch, there is only one geometry bundle |
| 1662 out->setKnownFourComponents(fGeoData[0].fColor); | 1658 out->setKnownFourComponents(fGeoData[0].fColor); |
| 1663 } | 1659 } |
| 1664 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { | 1660 void getInvariantOutputCoverage(GrInitInvariantOutput* out) const override { |
| 1665 out->setUnknownSingleComponent(); | 1661 out->setUnknownSingleComponent(); |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2037 } | 2033 } |
| 2038 | 2034 |
| 2039 DRAW_BATCH_TEST_DEFINE(RRectBatch) { | 2035 DRAW_BATCH_TEST_DEFINE(RRectBatch) { |
| 2040 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); | 2036 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); |
| 2041 GrColor color = GrRandomColor(random); | 2037 GrColor color = GrRandomColor(random); |
| 2042 const SkRRect& rrect = GrTest::TestRRectSimple(random); | 2038 const SkRRect& rrect = GrTest::TestRRectSimple(random); |
| 2043 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra
ndom)); | 2039 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra
ndom)); |
| 2044 } | 2040 } |
| 2045 | 2041 |
| 2046 #endif | 2042 #endif |
| OLD | NEW |