Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(806)

Side by Side Diff: src/gpu/GrOvalRenderer.cpp

Issue 1121463002: Move bounds to GrBatch (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: tweaks Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "GrBatch.h" 10 #include "GrBatch.h"
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 instanceCount -= drawInfo.instanceCount(); 828 instanceCount -= drawInfo.instanceCount();
829 } 829 }
830 } 830 }
831 831
832 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 832 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
833 833
834 private: 834 private:
835 CircleBatch(const Geometry& geometry) { 835 CircleBatch(const Geometry& geometry) {
836 this->initClassID<CircleBatch>(); 836 this->initClassID<CircleBatch>();
837 fGeoData.push_back(geometry); 837 fGeoData.push_back(geometry);
838
839 this->setBounds(geometry.fDevBounds);
838 } 840 }
839 841
840 bool onCombineIfPossible(GrBatch* t) override { 842 bool onCombineIfPossible(GrBatch* t) override {
841 CircleBatch* that = t->cast<CircleBatch>(); 843 CircleBatch* that = t->cast<CircleBatch>();
842 844
843 // TODO use vertex color to avoid breaking batches 845 // TODO use vertex color to avoid breaking batches
844 if (this->color() != that->color()) { 846 if (this->color() != that->color()) {
845 return false; 847 return false;
846 } 848 }
847 849
848 if (this->stroke() != that->stroke()) { 850 if (this->stroke() != that->stroke()) {
849 return false; 851 return false;
850 } 852 }
851 853
852 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 854 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
853 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 855 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
854 return false; 856 return false;
855 } 857 }
856 858
857 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 859 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
860 this->joinBounds(that->bounds());
858 return true; 861 return true;
859 } 862 }
860 863
861 GrColor color() const { return fBatch.fColor; } 864 GrColor color() const { return fBatch.fColor; }
862 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 865 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
863 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 866 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
864 bool stroke() const { return fBatch.fStroke; } 867 bool stroke() const { return fBatch.fStroke; }
865 868
866 struct BatchTracker { 869 struct BatchTracker {
867 GrColor fColor; 870 GrColor fColor;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 930
928 CircleBatch::Geometry geometry; 931 CircleBatch::Geometry geometry;
929 geometry.fViewMatrix = viewMatrix; 932 geometry.fViewMatrix = viewMatrix;
930 geometry.fColor = color; 933 geometry.fColor = color;
931 geometry.fInnerRadius = innerRadius; 934 geometry.fInnerRadius = innerRadius;
932 geometry.fOuterRadius = outerRadius; 935 geometry.fOuterRadius = outerRadius;
933 geometry.fStroke = isStrokeOnly && innerRadius > 0; 936 geometry.fStroke = isStrokeOnly && innerRadius > 0;
934 geometry.fDevBounds = bounds; 937 geometry.fDevBounds = bounds;
935 938
936 SkAutoTUnref<GrBatch> batch(CircleBatch::Create(geometry)); 939 SkAutoTUnref<GrBatch> batch(CircleBatch::Create(geometry));
937 target->drawBatch(pipelineBuilder, batch, &bounds); 940 target->drawBatch(pipelineBuilder, batch);
938 } 941 }
939 942
940 /////////////////////////////////////////////////////////////////////////////// 943 ///////////////////////////////////////////////////////////////////////////////
941 944
942 class EllipseBatch : public GrBatch { 945 class EllipseBatch : public GrBatch {
943 public: 946 public:
944 struct Geometry { 947 struct Geometry {
945 GrColor fColor; 948 GrColor fColor;
946 SkMatrix fViewMatrix; 949 SkMatrix fViewMatrix;
947 SkScalar fXRadius; 950 SkScalar fXRadius;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1088 instanceCount -= drawInfo.instanceCount(); 1091 instanceCount -= drawInfo.instanceCount();
1089 } 1092 }
1090 } 1093 }
1091 1094
1092 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1095 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1093 1096
1094 private: 1097 private:
1095 EllipseBatch(const Geometry& geometry) { 1098 EllipseBatch(const Geometry& geometry) {
1096 this->initClassID<EllipseBatch>(); 1099 this->initClassID<EllipseBatch>();
1097 fGeoData.push_back(geometry); 1100 fGeoData.push_back(geometry);
1101
1102 this->setBounds(geometry.fDevBounds);
1098 } 1103 }
1099 1104
1100 bool onCombineIfPossible(GrBatch* t) override { 1105 bool onCombineIfPossible(GrBatch* t) override {
1101 EllipseBatch* that = t->cast<EllipseBatch>(); 1106 EllipseBatch* that = t->cast<EllipseBatch>();
1102 1107
1103 // TODO use vertex color to avoid breaking batches 1108 // TODO use vertex color to avoid breaking batches
1104 if (this->color() != that->color()) { 1109 if (this->color() != that->color()) {
1105 return false; 1110 return false;
1106 } 1111 }
1107 1112
1108 if (this->stroke() != that->stroke()) { 1113 if (this->stroke() != that->stroke()) {
1109 return false; 1114 return false;
1110 } 1115 }
1111 1116
1112 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1117 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1113 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1118 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1114 return false; 1119 return false;
1115 } 1120 }
1116 1121
1117 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1122 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1123 this->joinBounds(that->bounds());
1118 return true; 1124 return true;
1119 } 1125 }
1120 1126
1121 GrColor color() const { return fBatch.fColor; } 1127 GrColor color() const { return fBatch.fColor; }
1122 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1128 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1123 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1129 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1124 bool stroke() const { return fBatch.fStroke; } 1130 bool stroke() const { return fBatch.fStroke; }
1125 1131
1126 struct BatchTracker { 1132 struct BatchTracker {
1127 GrColor fColor; 1133 GrColor fColor;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 geometry.fViewMatrix = viewMatrix; 1230 geometry.fViewMatrix = viewMatrix;
1225 geometry.fColor = color; 1231 geometry.fColor = color;
1226 geometry.fXRadius = xRadius; 1232 geometry.fXRadius = xRadius;
1227 geometry.fYRadius = yRadius; 1233 geometry.fYRadius = yRadius;
1228 geometry.fInnerXRadius = innerXRadius; 1234 geometry.fInnerXRadius = innerXRadius;
1229 geometry.fInnerYRadius = innerYRadius; 1235 geometry.fInnerYRadius = innerYRadius;
1230 geometry.fStroke = isStrokeOnly && innerXRadius > 0 && innerYRadius > 0; 1236 geometry.fStroke = isStrokeOnly && innerXRadius > 0 && innerYRadius > 0;
1231 geometry.fDevBounds = bounds; 1237 geometry.fDevBounds = bounds;
1232 1238
1233 SkAutoTUnref<GrBatch> batch(EllipseBatch::Create(geometry)); 1239 SkAutoTUnref<GrBatch> batch(EllipseBatch::Create(geometry));
1234 target->drawBatch(pipelineBuilder, batch, &bounds); 1240 target->drawBatch(pipelineBuilder, batch);
1235 1241
1236 return true; 1242 return true;
1237 } 1243 }
1238 1244
1239 //////////////////////////////////////////////////////////////////////////////// ///////////////// 1245 //////////////////////////////////////////////////////////////////////////////// /////////////////
1240 1246
1241 class DIEllipseBatch : public GrBatch { 1247 class DIEllipseBatch : public GrBatch {
1242 public: 1248 public:
1243 struct Geometry { 1249 struct Geometry {
1244 GrColor fColor; 1250 GrColor fColor;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 instanceCount -= drawInfo.instanceCount(); 1386 instanceCount -= drawInfo.instanceCount();
1381 } 1387 }
1382 } 1388 }
1383 1389
1384 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1390 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1385 1391
1386 private: 1392 private:
1387 DIEllipseBatch(const Geometry& geometry) { 1393 DIEllipseBatch(const Geometry& geometry) {
1388 this->initClassID<DIEllipseBatch>(); 1394 this->initClassID<DIEllipseBatch>();
1389 fGeoData.push_back(geometry); 1395 fGeoData.push_back(geometry);
1396
1397 this->setBounds(geometry.fBounds);
1398 geometry.fViewMatrix.mapRect(this->getBounds());
1390 } 1399 }
1391 1400
1392 bool onCombineIfPossible(GrBatch* t) override { 1401 bool onCombineIfPossible(GrBatch* t) override {
1393 DIEllipseBatch* that = t->cast<DIEllipseBatch>(); 1402 DIEllipseBatch* that = t->cast<DIEllipseBatch>();
1394 1403
1395 // TODO use vertex color to avoid breaking batches 1404 // TODO use vertex color to avoid breaking batches
1396 if (this->color() != that->color()) { 1405 if (this->color() != that->color()) {
1397 return false; 1406 return false;
1398 } 1407 }
1399 1408
1400 if (this->mode() != that->mode()) { 1409 if (this->mode() != that->mode()) {
1401 return false; 1410 return false;
1402 } 1411 }
1403 1412
1404 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1413 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1405 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1414 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1406 return false; 1415 return false;
1407 } 1416 }
1408 1417
1409 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1418 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1419 this->joinBounds(that->bounds());
1410 return true; 1420 return true;
1411 } 1421 }
1412 1422
1413 GrColor color() const { return fBatch.fColor; } 1423 GrColor color() const { return fBatch.fColor; }
1414 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1424 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1415 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1425 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1416 DIEllipseEdgeEffect::Mode mode() const { return fBatch.fMode; } 1426 DIEllipseEdgeEffect::Mode mode() const { return fBatch.fMode; }
1417 1427
1418 struct BatchTracker { 1428 struct BatchTracker {
1419 GrColor fColor; 1429 GrColor fColor;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
1504 geometry.fColor = color; 1514 geometry.fColor = color;
1505 geometry.fXRadius = xRadius; 1515 geometry.fXRadius = xRadius;
1506 geometry.fYRadius = yRadius; 1516 geometry.fYRadius = yRadius;
1507 geometry.fInnerXRadius = innerXRadius; 1517 geometry.fInnerXRadius = innerXRadius;
1508 geometry.fInnerYRadius = innerYRadius; 1518 geometry.fInnerYRadius = innerYRadius;
1509 geometry.fGeoDx = geoDx; 1519 geometry.fGeoDx = geoDx;
1510 geometry.fGeoDy = geoDy; 1520 geometry.fGeoDy = geoDy;
1511 geometry.fMode = mode; 1521 geometry.fMode = mode;
1512 geometry.fBounds = bounds; 1522 geometry.fBounds = bounds;
1513 1523
1514 viewMatrix.mapRect(&bounds);
1515
1516 SkAutoTUnref<GrBatch> batch(DIEllipseBatch::Create(geometry)); 1524 SkAutoTUnref<GrBatch> batch(DIEllipseBatch::Create(geometry));
1517 target->drawBatch(pipelineBuilder, batch, &bounds); 1525 target->drawBatch(pipelineBuilder, batch);
1518 1526
1519 return true; 1527 return true;
1520 } 1528 }
1521 1529
1522 /////////////////////////////////////////////////////////////////////////////// 1530 ///////////////////////////////////////////////////////////////////////////////
1523 1531
1524 static const uint16_t gRRectIndices[] = { 1532 static const uint16_t gRRectIndices[] = {
1525 // corners 1533 // corners
1526 0, 1, 5, 0, 5, 4, 1534 0, 1, 5, 0, 5, 4,
1527 2, 3, 7, 2, 7, 6, 1535 2, 3, 7, 2, 7, 6,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
1790 } 1798 }
1791 } 1799 }
1792 1800
1793 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 1801 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
1794 1802
1795 private: 1803 private:
1796 RRectCircleRendererBatch(const Geometry& geometry, const GrIndexBuffer* inde xBuffer) 1804 RRectCircleRendererBatch(const Geometry& geometry, const GrIndexBuffer* inde xBuffer)
1797 : fIndexBuffer(indexBuffer) { 1805 : fIndexBuffer(indexBuffer) {
1798 this->initClassID<RRectCircleRendererBatch>(); 1806 this->initClassID<RRectCircleRendererBatch>();
1799 fGeoData.push_back(geometry); 1807 fGeoData.push_back(geometry);
1808
1809 this->setBounds(geometry.fDevBounds);
1800 } 1810 }
1801 1811
1802 bool onCombineIfPossible(GrBatch* t) override { 1812 bool onCombineIfPossible(GrBatch* t) override {
1803 RRectCircleRendererBatch* that = t->cast<RRectCircleRendererBatch>(); 1813 RRectCircleRendererBatch* that = t->cast<RRectCircleRendererBatch>();
1804 1814
1805 // TODO use vertex color to avoid breaking batches 1815 // TODO use vertex color to avoid breaking batches
1806 if (this->color() != that->color()) { 1816 if (this->color() != that->color()) {
1807 return false; 1817 return false;
1808 } 1818 }
1809 1819
1810 if (this->stroke() != that->stroke()) { 1820 if (this->stroke() != that->stroke()) {
1811 return false; 1821 return false;
1812 } 1822 }
1813 1823
1814 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 1824 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
1815 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 1825 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
1816 return false; 1826 return false;
1817 } 1827 }
1818 1828
1819 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 1829 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
1830 this->joinBounds(that->bounds());
1820 return true; 1831 return true;
1821 } 1832 }
1822 1833
1823 GrColor color() const { return fBatch.fColor; } 1834 GrColor color() const { return fBatch.fColor; }
1824 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 1835 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
1825 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 1836 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
1826 bool stroke() const { return fBatch.fStroke; } 1837 bool stroke() const { return fBatch.fStroke; }
1827 1838
1828 struct BatchTracker { 1839 struct BatchTracker {
1829 GrColor fColor; 1840 GrColor fColor;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
2009 } 2020 }
2010 } 2021 }
2011 2022
2012 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; } 2023 SkSTArray<1, Geometry, true>* geoData() { return &fGeoData; }
2013 2024
2014 private: 2025 private:
2015 RRectEllipseRendererBatch(const Geometry& geometry, const GrIndexBuffer* ind exBuffer) 2026 RRectEllipseRendererBatch(const Geometry& geometry, const GrIndexBuffer* ind exBuffer)
2016 : fIndexBuffer(indexBuffer) { 2027 : fIndexBuffer(indexBuffer) {
2017 this->initClassID<RRectEllipseRendererBatch>(); 2028 this->initClassID<RRectEllipseRendererBatch>();
2018 fGeoData.push_back(geometry); 2029 fGeoData.push_back(geometry);
2030
2031 this->setBounds(geometry.fDevBounds);
2019 } 2032 }
2020 2033
2021 bool onCombineIfPossible(GrBatch* t) override { 2034 bool onCombineIfPossible(GrBatch* t) override {
2022 RRectEllipseRendererBatch* that = t->cast<RRectEllipseRendererBatch>(); 2035 RRectEllipseRendererBatch* that = t->cast<RRectEllipseRendererBatch>();
2023 2036
2024 // TODO use vertex color to avoid breaking batches 2037 // TODO use vertex color to avoid breaking batches
2025 if (this->color() != that->color()) { 2038 if (this->color() != that->color()) {
2026 return false; 2039 return false;
2027 } 2040 }
2028 2041
2029 if (this->stroke() != that->stroke()) { 2042 if (this->stroke() != that->stroke()) {
2030 return false; 2043 return false;
2031 } 2044 }
2032 2045
2033 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords()); 2046 SkASSERT(this->usesLocalCoords() == that->usesLocalCoords());
2034 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) { 2047 if (this->usesLocalCoords() && !this->viewMatrix().cheapEqualTo(that->vi ewMatrix())) {
2035 return false; 2048 return false;
2036 } 2049 }
2037 2050
2038 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ; 2051 fGeoData.push_back_n(that->geoData()->count(), that->geoData()->begin()) ;
2052 this->joinBounds(that->bounds());
2039 return true; 2053 return true;
2040 } 2054 }
2041 2055
2042 GrColor color() const { return fBatch.fColor; } 2056 GrColor color() const { return fBatch.fColor; }
2043 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; } 2057 bool usesLocalCoords() const { return fBatch.fUsesLocalCoords; }
2044 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; } 2058 const SkMatrix& viewMatrix() const { return fGeoData[0].fViewMatrix; }
2045 bool stroke() const { return fBatch.fStroke; } 2059 bool stroke() const { return fBatch.fStroke; }
2046 2060
2047 struct BatchTracker { 2061 struct BatchTracker {
2048 GrColor fColor; 2062 GrColor fColor;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 2181
2168 RRectCircleRendererBatch::Geometry geometry; 2182 RRectCircleRendererBatch::Geometry geometry;
2169 geometry.fViewMatrix = viewMatrix; 2183 geometry.fViewMatrix = viewMatrix;
2170 geometry.fColor = color; 2184 geometry.fColor = color;
2171 geometry.fInnerRadius = innerRadius; 2185 geometry.fInnerRadius = innerRadius;
2172 geometry.fOuterRadius = outerRadius; 2186 geometry.fOuterRadius = outerRadius;
2173 geometry.fStroke = isStrokeOnly; 2187 geometry.fStroke = isStrokeOnly;
2174 geometry.fDevBounds = bounds; 2188 geometry.fDevBounds = bounds;
2175 2189
2176 SkAutoTUnref<GrBatch> batch(RRectCircleRendererBatch::Create(geometry, i ndexBuffer)); 2190 SkAutoTUnref<GrBatch> batch(RRectCircleRendererBatch::Create(geometry, i ndexBuffer));
2177 target->drawBatch(pipelineBuilder, batch, &bounds); 2191 target->drawBatch(pipelineBuilder, batch);
2178 2192
2179 // otherwise we use the ellipse renderer 2193 // otherwise we use the ellipse renderer
2180 } else { 2194 } else {
2181 SkScalar innerXRadius = 0.0f; 2195 SkScalar innerXRadius = 0.0f;
2182 SkScalar innerYRadius = 0.0f; 2196 SkScalar innerYRadius = 0.0f;
2183 if (hasStroke) { 2197 if (hasStroke) {
2184 if (SkScalarNearlyZero(scaledStroke.length())) { 2198 if (SkScalarNearlyZero(scaledStroke.length())) {
2185 scaledStroke.set(SK_ScalarHalf, SK_ScalarHalf); 2199 scaledStroke.set(SK_ScalarHalf, SK_ScalarHalf);
2186 } else { 2200 } else {
2187 scaledStroke.scale(SK_ScalarHalf); 2201 scaledStroke.scale(SK_ScalarHalf);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2219 geometry.fViewMatrix = viewMatrix; 2233 geometry.fViewMatrix = viewMatrix;
2220 geometry.fColor = color; 2234 geometry.fColor = color;
2221 geometry.fXRadius = xRadius; 2235 geometry.fXRadius = xRadius;
2222 geometry.fYRadius = yRadius; 2236 geometry.fYRadius = yRadius;
2223 geometry.fInnerXRadius = innerXRadius; 2237 geometry.fInnerXRadius = innerXRadius;
2224 geometry.fInnerYRadius = innerYRadius; 2238 geometry.fInnerYRadius = innerYRadius;
2225 geometry.fStroke = isStrokeOnly; 2239 geometry.fStroke = isStrokeOnly;
2226 geometry.fDevBounds = bounds; 2240 geometry.fDevBounds = bounds;
2227 2241
2228 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer)); 2242 SkAutoTUnref<GrBatch> batch(RRectEllipseRendererBatch::Create(geometry, indexBuffer));
2229 target->drawBatch(pipelineBuilder, batch, &bounds); 2243 target->drawBatch(pipelineBuilder, batch);
2230 } 2244 }
2231 return true; 2245 return true;
2232 } 2246 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698