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

Side by Side Diff: src/pathops/SkPathWriter.h

Issue 2426173002: fix fuzzers (Closed)
Patch Set: fix dm Created 4 years, 2 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/pathops/SkPathOpsTypes.h ('k') | src/pathops/SkPathWriter.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 2012 Google Inc. 2 * Copyright 2012 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 #ifndef SkPathWriter_DEFINED 7 #ifndef SkPathWriter_DEFINED
8 #define SkPathWriter_DEFINED 8 #define SkPathWriter_DEFINED
9 9
10 #include "SkPath.h" 10 #include "SkPath.h"
11 #include "SkTArray.h" 11 #include "SkTArray.h"
12 #include "SkTDArray.h" 12 #include "SkTDArray.h"
13 13
14 class SkOpPtT; 14 class SkOpPtT;
15 15
16 // Construct the path one contour at a time. 16 // Construct the path one contour at a time.
17 // If the contour is closed, copy it to the final output. 17 // If the contour is closed, copy it to the final output.
18 // Otherwise, keep the partial contour for later assembly. 18 // Otherwise, keep the partial contour for later assembly.
19 19
20 class SkPathWriter { 20 class SkPathWriter {
21 public: 21 public:
22 SkPathWriter(SkPath& path); 22 SkPathWriter(SkPath& path);
23 void assemble(); 23 void assemble();
24 void conicTo(const SkPoint& pt1, const SkOpPtT* pt2, SkScalar weight); 24 void conicTo(const SkPoint& pt1, const SkOpPtT* pt2, SkScalar weight);
25 void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkOpPtT* pt3); 25 void cubicTo(const SkPoint& pt1, const SkPoint& pt2, const SkOpPtT* pt3);
26 void deferredLine(const SkOpPtT* pt); 26 bool deferredLine(const SkOpPtT* pt);
27 void deferredMove(const SkOpPtT* pt); 27 void deferredMove(const SkOpPtT* pt);
28 void finishContour(); 28 void finishContour();
29 bool hasMove() const { return !fFirstPtT; } 29 bool hasMove() const { return !fFirstPtT; }
30 void init(); 30 void init();
31 bool isClosed() const; 31 bool isClosed() const;
32 const SkPath* nativePath() const { return fPathPtr; } 32 const SkPath* nativePath() const { return fPathPtr; }
33 void quadTo(const SkPoint& pt1, const SkOpPtT* pt2); 33 void quadTo(const SkPoint& pt1, const SkOpPtT* pt2);
34 34
35 private: 35 private:
36 bool changedSlopes(const SkOpPtT* pt) const; 36 bool changedSlopes(const SkOpPtT* pt) const;
37 void close(); 37 void close();
38 const SkTDArray<const SkOpPtT*>& endPtTs() const { return fEndPtTs; } 38 const SkTDArray<const SkOpPtT*>& endPtTs() const { return fEndPtTs; }
39 void lineTo(); 39 void lineTo();
40 bool matchedLast(const SkOpPtT*) const; 40 bool matchedLast(const SkOpPtT*) const;
41 void moveTo(); 41 void moveTo();
42 const SkTArray<SkPath>& partials() const { return fPartials; } 42 const SkTArray<SkPath>& partials() const { return fPartials; }
43 bool someAssemblyRequired(); 43 bool someAssemblyRequired();
44 void update(const SkOpPtT* pt); 44 void update(const SkOpPtT* pt);
45 45
46 SkPath fCurrent; // contour under construction 46 SkPath fCurrent; // contour under construction
47 SkTArray<SkPath> fPartials; // contours with mismatched starts and ends 47 SkTArray<SkPath> fPartials; // contours with mismatched starts and ends
48 SkTDArray<const SkOpPtT*> fEndPtTs; // possible pt values for partial start s and ends 48 SkTDArray<const SkOpPtT*> fEndPtTs; // possible pt values for partial start s and ends
49 SkPath* fPathPtr; // closed contours are written here 49 SkPath* fPathPtr; // closed contours are written here
50 const SkOpPtT* fDefer[2]; // [0] deferred move, [1] deferred line 50 const SkOpPtT* fDefer[2]; // [0] deferred move, [1] deferred line
51 const SkOpPtT* fFirstPtT; // first in current contour 51 const SkOpPtT* fFirstPtT; // first in current contour
52 }; 52 };
53 53
54 #endif /* defined(__PathOps__SkPathWriter__) */ 54 #endif /* defined(__PathOps__SkPathWriter__) */
OLDNEW
« no previous file with comments | « src/pathops/SkPathOpsTypes.h ('k') | src/pathops/SkPathWriter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698