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

Side by Side Diff: include/core/SkPath.h

Issue 22471002: Restore SkPath(const SkPath&) to copy the generation ID on Android. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: comments Created 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/core/SkPath.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 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkPath_DEFINED 10 #ifndef SkPath_DEFINED
(...skipping 22 matching lines...) Expand all
33 /** \class SkPath 33 /** \class SkPath
34 34
35 The SkPath class encapsulates compound (multiple contour) geometric paths 35 The SkPath class encapsulates compound (multiple contour) geometric paths
36 consisting of straight line segments, quadratic curves, and cubic curves. 36 consisting of straight line segments, quadratic curves, and cubic curves.
37 */ 37 */
38 class SK_API SkPath { 38 class SK_API SkPath {
39 public: 39 public:
40 SK_DECLARE_INST_COUNT_ROOT(SkPath); 40 SK_DECLARE_INST_COUNT_ROOT(SkPath);
41 41
42 SkPath(); 42 SkPath();
43 SkPath(const SkPath&); 43 SkPath(const SkPath&); // Copies fGenerationID on Android.
44 SkPath& operator=(const SkPath&); // Increments fGenerationID on Android.
reed1 2013/08/06 21:15:09 :( nit: Skia mostly likes only constructors/destru
mtklein 2013/08/06 21:18:47 Done.
44 ~SkPath(); 45 ~SkPath();
45 46
46 SkPath& operator=(const SkPath&);
47
48 friend SK_API bool operator==(const SkPath&, const SkPath&); 47 friend SK_API bool operator==(const SkPath&, const SkPath&);
49 friend bool operator!=(const SkPath& a, const SkPath& b) { 48 friend bool operator!=(const SkPath& a, const SkPath& b) {
50 return !(a == b); 49 return !(a == b);
51 } 50 }
52 51
53 enum FillType { 52 enum FillType {
54 /** Specifies that "inside" is computed by a non-zero sum of signed 53 /** Specifies that "inside" is computed by a non-zero sum of signed
55 edge crossings 54 edge crossings
56 */ 55 */
57 kWinding_FillType, 56 kWinding_FillType,
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 * 159 *
161 * @return true if this path is an oval. 160 * @return true if this path is an oval.
162 * Tracking whether a path is an oval is considered an 161 * Tracking whether a path is an oval is considered an
163 * optimization for performance and so some paths that are in 162 * optimization for performance and so some paths that are in
164 * fact ovals can report false. 163 * fact ovals can report false.
165 */ 164 */
166 bool isOval(SkRect* rect) const; 165 bool isOval(SkRect* rect) const;
167 166
168 /** Clear any lines and curves from the path, making it empty. This frees up 167 /** Clear any lines and curves from the path, making it empty. This frees up
169 internal storage associated with those segments. 168 internal storage associated with those segments.
170 This does NOT change the fill-type setting nor isConvex
reed1 2013/08/06 21:15:09 Were these comments wrong or misleading?
mtklein 2013/08/06 21:18:47 Yes, wrong. The same CL that caused the bug chang
171 */ 169 */
172 void reset(); 170 void reset();
173 171
174 /** Similar to reset(), in that all lines and curves are removed from the 172 /** Similar to reset(), in that all lines and curves are removed from the
175 path. However, any internal storage for those lines/curves is retained, 173 path. However, any internal storage for those lines/curves is retained,
176 making reuse of the path potentially faster. 174 making reuse of the path potentially faster.
177 This does NOT change the fill-type setting nor isConvex
178 */ 175 */
179 void rewind(); 176 void rewind();
180 177
181 /** Returns true if the path is empty (contains no lines or curves) 178 /** Returns true if the path is empty (contains no lines or curves)
182 179
183 @return true if the path is empty (contains no lines or curves) 180 @return true if the path is empty (contains no lines or curves)
184 */ 181 */
185 bool isEmpty() const; 182 bool isEmpty() const;
186 183
187 /** 184 /**
(...skipping 770 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 #endif 955 #endif
959 956
960 /** Resets all fields other than fPathRef to their initial 'empty' values. 957 /** Resets all fields other than fPathRef to their initial 'empty' values.
961 * Assumes the caller has already emptied fPathRef. 958 * Assumes the caller has already emptied fPathRef.
962 * On Android increments fGenerationID without reseting it. 959 * On Android increments fGenerationID without reseting it.
963 */ 960 */
964 void resetFields(); 961 void resetFields();
965 962
966 /** Sets all fields other than fPathRef to the values in 'that'. 963 /** Sets all fields other than fPathRef to the values in 'that'.
967 * Assumes the caller has already set fPathRef. 964 * Assumes the caller has already set fPathRef.
968 * On Android increments fGenerationID without copying it. 965 * Doesn't change fGenerationID or fSourcePath on Android.
969 * On Android sets fSourcePath to NULL.
970 */ 966 */
971 void copyFields(const SkPath& that); 967 void copyFields(const SkPath& that);
972 968
973 // called, if dirty, by getBounds() 969 // called, if dirty, by getBounds()
974 void computeBounds() const; 970 void computeBounds() const;
975 971
976 friend class Iter; 972 friend class Iter;
977 973
978 friend class SkPathStroker; 974 friend class SkPathStroker;
979 /* Append the first contour of path, ignoring path's initial point. If no 975 /* Append the first contour of path, ignoring path's initial point. If no
(...skipping 23 matching lines...) Expand all
1003 bool isRectContour(bool allowPartial, int* currVerb, const SkPoint** pts, 999 bool isRectContour(bool allowPartial, int* currVerb, const SkPoint** pts,
1004 bool* isClosed, Direction* direction) const; 1000 bool* isClosed, Direction* direction) const;
1005 1001
1006 friend class SkAutoPathBoundsUpdate; 1002 friend class SkAutoPathBoundsUpdate;
1007 friend class SkAutoDisableOvalCheck; 1003 friend class SkAutoDisableOvalCheck;
1008 friend class SkAutoDisableDirectionCheck; 1004 friend class SkAutoDisableDirectionCheck;
1009 friend class SkBench_AddPathTest; // perf test pathTo/reversePathTo 1005 friend class SkBench_AddPathTest; // perf test pathTo/reversePathTo
1010 }; 1006 };
1011 1007
1012 #endif 1008 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPath.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698