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

Side by Side Diff: src/gpu/batches/GrAAConvexTessellator.h

Issue 1842753002: Style bikeshed - remove extraneous whitespace (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 8 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/batches/GrAAConvexPathRenderer.cpp ('k') | src/gpu/batches/GrAAConvexTessellator.cpp » ('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 2015 Google Inc. 2 * Copyright 2015 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 #ifndef GrAAConvexTessellator_DEFINED 8 #ifndef GrAAConvexTessellator_DEFINED
9 #define GrAAConvexTessellator_DEFINED 9 #define GrAAConvexTessellator_DEFINED
10 10
(...skipping 13 matching lines...) Expand all
24 static const SkScalar kAntialiasingRadius = 0.5f; 24 static const SkScalar kAntialiasingRadius = 0.5f;
25 25
26 class GrAAConvexTessellator; 26 class GrAAConvexTessellator;
27 27
28 // The AAConvexTessellator holds the global pool of points and the triangulation 28 // The AAConvexTessellator holds the global pool of points and the triangulation
29 // that connects them. It also drives the tessellation process. 29 // that connects them. It also drives the tessellation process.
30 // The outward facing normals of the original polygon are stored (in 'fNorms') t o service 30 // The outward facing normals of the original polygon are stored (in 'fNorms') t o service
31 // computeDepthFromEdge requests. 31 // computeDepthFromEdge requests.
32 class GrAAConvexTessellator { 32 class GrAAConvexTessellator {
33 public: 33 public:
34 GrAAConvexTessellator(SkScalar strokeWidth = -1.0f, 34 GrAAConvexTessellator(SkScalar strokeWidth = -1.0f,
35 SkPaint::Join join = SkPaint::Join::kBevel_Join, 35 SkPaint::Join join = SkPaint::Join::kBevel_Join,
36 SkScalar miterLimit = 0.0f) 36 SkScalar miterLimit = 0.0f)
37 : fSide(SkPoint::kOn_Side) 37 : fSide(SkPoint::kOn_Side)
38 , fStrokeWidth(strokeWidth) 38 , fStrokeWidth(strokeWidth)
39 , fJoin(join) 39 , fJoin(join)
40 , fMiterLimit(miterLimit) { 40 , fMiterLimit(miterLimit) {
41 } 41 }
42 42
43 SkPoint::Side side() const { return fSide; } 43 SkPoint::Side side() const { return fSide; }
44 44
45 bool tessellate(const SkMatrix& m, const SkPath& path); 45 bool tessellate(const SkMatrix& m, const SkPath& path);
46 46
47 // The next five should only be called after tessellate to extract the resul t 47 // The next five should only be called after tessellate to extract the resul t
48 int numPts() const { return fPts.count(); } 48 int numPts() const { return fPts.count(); }
49 int numIndices() const { return fIndices.count(); } 49 int numIndices() const { return fIndices.count(); }
50 50
51 const SkPoint& lastPoint() const { return fPts.top(); } 51 const SkPoint& lastPoint() const { return fPts.top(); }
52 const SkPoint& point(int index) const { return fPts[index]; } 52 const SkPoint& point(int index) const { return fPts[index]; }
53 int index(int index) const { return fIndices[index]; } 53 int index(int index) const { return fIndices[index]; }
54 SkScalar coverage(int index) const { return fCoverages[index]; } 54 SkScalar coverage(int index) const { return fCoverages[index]; }
55 55
56 #if GR_AA_CONVEX_TESSELLATOR_VIZ 56 #if GR_AA_CONVEX_TESSELLATOR_VIZ
57 void draw(SkCanvas* canvas) const; 57 void draw(SkCanvas* canvas) const;
58 #endif 58 #endif
59 59
60 // The tessellator can be reused for multiple paths by rewinding in between 60 // The tessellator can be reused for multiple paths by rewinding in between
61 void rewind(); 61 void rewind();
62 62
63 private: 63 private:
64 // CandidateVerts holds the vertices for the next ring while they are 64 // CandidateVerts holds the vertices for the next ring while they are
65 // being generated. Its main function is to de-dup the points. 65 // being generated. Its main function is to de-dup the points.
66 class CandidateVerts { 66 class CandidateVerts {
67 public: 67 public:
68 void setReserve(int numPts) { fPts.setReserve(numPts); } 68 void setReserve(int numPts) { fPts.setReserve(numPts); }
69 void rewind() { fPts.rewind(); } 69 void rewind() { fPts.rewind(); }
70 70
71 int numPts() const { return fPts.count(); } 71 int numPts() const { return fPts.count(); }
72 72
73 const SkPoint& lastPoint() const { return fPts.top().fPt; } 73 const SkPoint& lastPoint() const { return fPts.top().fPt; }
74 const SkPoint& firstPoint() const { return fPts[0].fPt; } 74 const SkPoint& firstPoint() const { return fPts[0].fPt; }
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 void terminate(const Ring& lastRing); 206 void terminate(const Ring& lastRing);
207 207
208 // return false on failure/degenerate path 208 // return false on failure/degenerate path
209 bool extractFromPath(const SkMatrix& m, const SkPath& path); 209 bool extractFromPath(const SkMatrix& m, const SkPath& path);
210 void computeBisectors(); 210 void computeBisectors();
211 211
212 void fanRing(const Ring& ring); 212 void fanRing(const Ring& ring);
213 213
214 Ring* getNextRing(Ring* lastRing); 214 Ring* getNextRing(Ring* lastRing);
215 215
216 void createOuterRing(const Ring& previousRing, SkScalar outset, SkScalar cov erage, 216 void createOuterRing(const Ring& previousRing, SkScalar outset, SkScalar cov erage,
217 Ring* nextRing); 217 Ring* nextRing);
218 218
219 bool createInsetRings(Ring& previousRing, SkScalar initialDepth, SkScalar in itialCoverage, 219 bool createInsetRings(Ring& previousRing, SkScalar initialDepth, SkScalar in itialCoverage,
220 SkScalar targetDepth, SkScalar targetCoverage, Ring** finalRing); 220 SkScalar targetDepth, SkScalar targetCoverage, Ring** finalRing);
221 221
222 bool createInsetRing(const Ring& lastRing, Ring* nextRing, 222 bool createInsetRing(const Ring& lastRing, Ring* nextRing,
223 SkScalar initialDepth, SkScalar initialCoverage, SkScal ar targetDepth, 223 SkScalar initialDepth, SkScalar initialCoverage, SkScal ar targetDepth,
224 SkScalar targetCoverage, bool forceNew); 224 SkScalar targetCoverage, bool forceNew);
225 225
226 void validate() const; 226 void validate() const;
227 227
228 // fPts, fCoverages & fMovable should always have the same # of elements 228 // fPts, fCoverages & fMovable should always have the same # of elements
229 SkTDArray<SkPoint> fPts; 229 SkTDArray<SkPoint> fPts;
230 SkTDArray<SkScalar> fCoverages; 230 SkTDArray<SkScalar> fCoverages;
231 // movable points are those that can be slid further along their bisector 231 // movable points are those that can be slid further along their bisector
232 SkTDArray<bool> fMovable; 232 SkTDArray<bool> fMovable;
233 233
234 // The outward facing normals for the original polygon 234 // The outward facing normals for the original polygon
235 SkTDArray<SkVector> fNorms; 235 SkTDArray<SkVector> fNorms;
236 // The inward facing bisector at each point in the original polygon. Only 236 // The inward facing bisector at each point in the original polygon. Only
237 // needed for exterior ring creation and then handed off to the initial ring . 237 // needed for exterior ring creation and then handed off to the initial ring .
238 SkTDArray<SkVector> fBisectors; 238 SkTDArray<SkVector> fBisectors;
239 239
240 // Tracks whether a given point is interior to a curve. Such points are 240 // Tracks whether a given point is interior to a curve. Such points are
241 // assumed to have shallow curvature. 241 // assumed to have shallow curvature.
242 SkTDArray<bool> fIsCurve; 242 SkTDArray<bool> fIsCurve;
243 243
244 SkPoint::Side fSide; // winding of the original polygon 244 SkPoint::Side fSide; // winding of the original polygon
245 245
246 // The triangulation of the points 246 // The triangulation of the points
247 SkTDArray<int> fIndices; 247 SkTDArray<int> fIndices;
248 248
249 Ring fInitialRing; 249 Ring fInitialRing;
250 #if GR_AA_CONVEX_TESSELLATOR_VIZ 250 #if GR_AA_CONVEX_TESSELLATOR_VIZ
251 // When visualizing save all the rings 251 // When visualizing save all the rings
252 SkTDArray<Ring*> fRings; 252 SkTDArray<Ring*> fRings;
253 #else 253 #else
254 Ring fRings[2]; 254 Ring fRings[2];
255 #endif 255 #endif
256 CandidateVerts fCandidateVerts; 256 CandidateVerts fCandidateVerts;
257 257
258 // < 0 means filling rather than stroking 258 // < 0 means filling rather than stroking
259 SkScalar fStrokeWidth; 259 SkScalar fStrokeWidth;
260 260
261 SkPaint::Join fJoin; 261 SkPaint::Join fJoin;
262 262
263 SkScalar fMiterLimit; 263 SkScalar fMiterLimit;
264 264
265 SkTDArray<SkPoint> fPointBuffer; 265 SkTDArray<SkPoint> fPointBuffer;
266 }; 266 };
267 267
268 268
269 #endif 269 #endif
270
OLDNEW
« no previous file with comments | « src/gpu/batches/GrAAConvexPathRenderer.cpp ('k') | src/gpu/batches/GrAAConvexTessellator.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698