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

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

Issue 2248323003: Simplify adding attributes to GrGeometryProcessor (Closed) Base URL: https://chromium.googlesource.com/skia.git@xformhelper
Patch Set: Revert removal of fAttribNames Created 4 years, 4 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
« no previous file with comments | « src/gpu/GrGeometryProcessor.h ('k') | src/gpu/GrPrimitiveProcessor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "GrBatchFlushState.h" 10 #include "GrBatchFlushState.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 * vec4f : (p.xy, outerRad, innerRad) 68 * vec4f : (p.xy, outerRad, innerRad)
69 * p is the position in the normalized space. 69 * p is the position in the normalized space.
70 * outerRad is the outerRadius in device space. 70 * outerRad is the outerRadius in device space.
71 * innerRad is the innerRadius in normalized space (ignored if not s troking). 71 * innerRad is the innerRadius in normalized space (ignored if not s troking).
72 */ 72 */
73 73
74 class CircleGeometryProcessor : public GrGeometryProcessor { 74 class CircleGeometryProcessor : public GrGeometryProcessor {
75 public: 75 public:
76 CircleGeometryProcessor(bool stroke, const SkMatrix& localMatrix) : fLocalMa trix(localMatrix){ 76 CircleGeometryProcessor(bool stroke, const SkMatrix& localMatrix) : fLocalMa trix(localMatrix){
77 this->initClassID<CircleGeometryProcessor>(); 77 this->initClassID<CircleGeometryProcessor>();
78 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType, 78 fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttrib Type,
79 kHigh_GrSLPrecision)); 79 kHigh_GrSLPrecision);
80 fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVertexA ttribType)); 80 fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType) ;
81 fInCircleEdge = &this->addVertexAttrib(Attribute("inCircleEdge", 81 fInCircleEdge = &this->addVertexAttrib("inCircleEdge", kVec4f_GrVertexAt tribType);
82 kVec4f_GrVertexAttribTy pe));
83 fStroke = stroke; 82 fStroke = stroke;
84 } 83 }
85 84
86 bool implementsDistanceVector() const override { return true; }; 85 bool implementsDistanceVector() const override { return true; };
87 86
88 virtual ~CircleGeometryProcessor() {} 87 virtual ~CircleGeometryProcessor() {}
89 88
90 const char* name() const override { return "CircleEdge"; } 89 const char* name() const override { return "CircleEdge"; }
91 90
92 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override { 91 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 * in both x and y directions. 204 * in both x and y directions.
206 * 205 *
207 * We are using an implicit function of x^2/a^2 + y^2/b^2 - 1 = 0. 206 * We are using an implicit function of x^2/a^2 + y^2/b^2 - 1 = 0.
208 */ 207 */
209 208
210 class EllipseGeometryProcessor : public GrGeometryProcessor { 209 class EllipseGeometryProcessor : public GrGeometryProcessor {
211 public: 210 public:
212 EllipseGeometryProcessor(bool stroke, const SkMatrix& localMatrix) 211 EllipseGeometryProcessor(bool stroke, const SkMatrix& localMatrix)
213 : fLocalMatrix(localMatrix) { 212 : fLocalMatrix(localMatrix) {
214 this->initClassID<EllipseGeometryProcessor>(); 213 this->initClassID<EllipseGeometryProcessor>();
215 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType)); 214 fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttrib Type);
216 fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVertexA ttribType)); 215 fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType) ;
217 fInEllipseOffset = &this->addVertexAttrib(Attribute("inEllipseOffset", 216 fInEllipseOffset = &this->addVertexAttrib("inEllipseOffset", kVec2f_GrVe rtexAttribType);
218 kVec2f_GrVertexAttri bType)); 217 fInEllipseRadii = &this->addVertexAttrib("inEllipseRadii", kVec4f_GrVert exAttribType);
219 fInEllipseRadii = &this->addVertexAttrib(Attribute("inEllipseRadii",
220 kVec4f_GrVertexAttrib Type));
221 fStroke = stroke; 218 fStroke = stroke;
222 } 219 }
223 220
224 virtual ~EllipseGeometryProcessor() {} 221 virtual ~EllipseGeometryProcessor() {}
225 222
226 const char* name() const override { return "EllipseEdge"; } 223 const char* name() const override { return "EllipseEdge"; }
227 224
228 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override { 225 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override {
229 GLSLProcessor::GenKey(*this, caps, b); 226 GLSLProcessor::GenKey(*this, caps, b);
230 } 227 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 * The result is device-independent and can be used with any affine matrix. 351 * The result is device-independent and can be used with any affine matrix.
355 */ 352 */
356 353
357 enum class DIEllipseStyle { kStroke = 0, kHairline, kFill }; 354 enum class DIEllipseStyle { kStroke = 0, kHairline, kFill };
358 355
359 class DIEllipseGeometryProcessor : public GrGeometryProcessor { 356 class DIEllipseGeometryProcessor : public GrGeometryProcessor {
360 public: 357 public:
361 DIEllipseGeometryProcessor(const SkMatrix& viewMatrix, DIEllipseStyle style) 358 DIEllipseGeometryProcessor(const SkMatrix& viewMatrix, DIEllipseStyle style)
362 : fViewMatrix(viewMatrix) { 359 : fViewMatrix(viewMatrix) {
363 this->initClassID<DIEllipseGeometryProcessor>(); 360 this->initClassID<DIEllipseGeometryProcessor>();
364 fInPosition = &this->addVertexAttrib(Attribute("inPosition", kVec2f_GrVe rtexAttribType, 361 fInPosition = &this->addVertexAttrib("inPosition", kVec2f_GrVertexAttrib Type,
365 kHigh_GrSLPrecision)); 362 kHigh_GrSLPrecision);
366 fInColor = &this->addVertexAttrib(Attribute("inColor", kVec4ub_GrVertexA ttribType)); 363 fInColor = &this->addVertexAttrib("inColor", kVec4ub_GrVertexAttribType) ;
367 fInEllipseOffsets0 = &this->addVertexAttrib(Attribute("inEllipseOffsets0 ", 364 fInEllipseOffsets0 = &this->addVertexAttrib("inEllipseOffsets0", kVec2f_ GrVertexAttribType);
368 kVec2f_GrVertexAtt ribType)); 365 fInEllipseOffsets1 = &this->addVertexAttrib("inEllipseOffsets1", kVec2f_ GrVertexAttribType);
369 fInEllipseOffsets1 = &this->addVertexAttrib(Attribute("inEllipseOffsets1 ",
370 kVec2f_GrVertexAtt ribType));
371 fStyle = style; 366 fStyle = style;
372 } 367 }
373 368
374 369
375 virtual ~DIEllipseGeometryProcessor() {} 370 virtual ~DIEllipseGeometryProcessor() {}
376 371
377 const char* name() const override { return "DIEllipseEdge"; } 372 const char* name() const override { return "DIEllipseEdge"; }
378 373
379 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override { 374 void getGLSLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) c onst override {
380 GLSLProcessor::GenKey(*this, caps, b); 375 GLSLProcessor::GenKey(*this, caps, b);
(...skipping 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1689 } 1684 }
1690 1685
1691 DRAW_BATCH_TEST_DEFINE(RRectBatch) { 1686 DRAW_BATCH_TEST_DEFINE(RRectBatch) {
1692 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random); 1687 SkMatrix viewMatrix = GrTest::TestMatrixRectStaysRect(random);
1693 GrColor color = GrRandomColor(random); 1688 GrColor color = GrRandomColor(random);
1694 const SkRRect& rrect = GrTest::TestRRectSimple(random); 1689 const SkRRect& rrect = GrTest::TestRRectSimple(random);
1695 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom)); 1690 return create_rrect_batch(color, viewMatrix, rrect, GrTest::TestStrokeRec(ra ndom));
1696 } 1691 }
1697 1692
1698 #endif 1693 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrGeometryProcessor.h ('k') | src/gpu/GrPrimitiveProcessor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698