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

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

Issue 677463002: Set temporary paths volatile so we don't cache them. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Init fIsVolatile Created 6 years, 1 month 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 | « expectations/gm/ignored-tests.txt ('k') | src/core/SkDraw.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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 178
179 /** 179 /**
180 * Returns true if all of the points in this path are finite, meaning there 180 * Returns true if all of the points in this path are finite, meaning there
181 * are no infinities and no NaNs. 181 * are no infinities and no NaNs.
182 */ 182 */
183 bool isFinite() const { 183 bool isFinite() const {
184 SkDEBUGCODE(this->validate();) 184 SkDEBUGCODE(this->validate();)
185 return fPathRef->isFinite(); 185 return fPathRef->isFinite();
186 } 186 }
187 187
188 /** Returns true if the path is volatile (i.e. should not be cached by devic es.)
189 */
190 bool isVolatile() const {
191 return SkToBool(fIsVolatile);
192 }
193
194 /** Specify whether this path is volatile. Paths are not volatile by
195 default. Temporary paths that are discarded or modified after use should be
196 marked as volatile. This provides a hint to the device that the path
197 should not be cached. Providing this hint when appropriate can
198 improve performance by avoiding unnecessary overhead and resource
199 consumption on the device.
200 */
201 void setIsVolatile(bool isVolatile) {
202 fIsVolatile = isVolatile;
203 }
204
188 /** Test a line for zero length 205 /** Test a line for zero length
189 206
190 @return true if the line is of zero length; otherwise false. 207 @return true if the line is of zero length; otherwise false.
191 */ 208 */
192 static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2) { 209 static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2) {
193 return p1.equalsWithinTolerance(p2); 210 return p1.equalsWithinTolerance(p2);
194 } 211 }
195 212
196 /** Test a quad for zero length 213 /** Test a quad for zero length
197 214
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 static const int kPathRefGenIDBitCnt = 32; 981 static const int kPathRefGenIDBitCnt = 32;
965 #endif 982 #endif
966 983
967 SkDEBUGCODE(void validate() const;) 984 SkDEBUGCODE(void validate() const;)
968 985
969 private: 986 private:
970 enum SerializationOffsets { 987 enum SerializationOffsets {
971 // 1 free bit at 29 988 // 1 free bit at 29
972 kUnused1_SerializationShift = 28, // 1 free bit 989 kUnused1_SerializationShift = 28, // 1 free bit
973 kDirection_SerializationShift = 26, // requires 2 bits 990 kDirection_SerializationShift = 26, // requires 2 bits
974 kUnused2_SerializationShift = 25, // 1 free bit 991 kIsVolatile_SerializationShift = 25, // requires 1 bit
975 // 1 free bit at 24 992 // 1 free bit at 24
976 kConvexity_SerializationShift = 16, // requires 8 bits 993 kConvexity_SerializationShift = 16, // requires 8 bits
977 kFillType_SerializationShift = 8, // requires 8 bits 994 kFillType_SerializationShift = 8, // requires 8 bits
978 // 8 free bits at 0 995 // 8 free bits at 0
979 }; 996 };
980 997
981 SkAutoTUnref<SkPathRef> fPathRef; 998 SkAutoTUnref<SkPathRef> fPathRef;
982 999
983 int fLastMoveToIndex; 1000 int fLastMoveToIndex;
984 uint8_t fFillType; 1001 uint8_t fFillType;
985 mutable uint8_t fConvexity; 1002 mutable uint8_t fConvexity;
986 mutable uint8_t fDirection; 1003 mutable uint8_t fDirection;
1004 mutable SkBool8 fIsVolatile;
987 #ifdef SK_BUILD_FOR_ANDROID 1005 #ifdef SK_BUILD_FOR_ANDROID
988 const SkPath* fSourcePath; 1006 const SkPath* fSourcePath;
989 #endif 1007 #endif
990 1008
991 /** Resets all fields other than fPathRef to their initial 'empty' values. 1009 /** Resets all fields other than fPathRef to their initial 'empty' values.
992 * Assumes the caller has already emptied fPathRef. 1010 * Assumes the caller has already emptied fPathRef.
993 * On Android increments fGenerationID without reseting it. 1011 * On Android increments fGenerationID without reseting it.
994 */ 1012 */
995 void resetFields(); 1013 void resetFields();
996 1014
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 } 1060 }
1043 1061
1044 friend class SkAutoPathBoundsUpdate; 1062 friend class SkAutoPathBoundsUpdate;
1045 friend class SkAutoDisableOvalCheck; 1063 friend class SkAutoDisableOvalCheck;
1046 friend class SkAutoDisableDirectionCheck; 1064 friend class SkAutoDisableDirectionCheck;
1047 friend class SkBench_AddPathTest; // perf test reversePathTo 1065 friend class SkBench_AddPathTest; // perf test reversePathTo
1048 friend class PathTest_Private; // unit test reversePathTo 1066 friend class PathTest_Private; // unit test reversePathTo
1049 }; 1067 };
1050 1068
1051 #endif 1069 #endif
OLDNEW
« no previous file with comments | « expectations/gm/ignored-tests.txt ('k') | src/core/SkDraw.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698