diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-10-30 18:57:55 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-10-30 18:57:55 +0000 |
commit | 1ab9f737f000e530f0c7713c8fad282f39e26efe (patch) | |
tree | 97b4537e4c08344e14bfaaf291ece064201b941d /include | |
parent | b38d4e1584036b6e9316562b89c80080e08452b2 (diff) |
Use SkPathRef gen id for SkPath::getGenerationID
R=mtklein@google.com, robertphillips@google.com
Author: bsalomon@google.com
Review URL: https://codereview.chromium.org/49693002
git-svn-id: http://skia.googlecode.com/svn/trunk@12029 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkPath.h | 26 | ||||
-rw-r--r-- | include/core/SkPathRef.h | 17 |
2 files changed, 20 insertions, 23 deletions
diff --git a/include/core/SkPath.h b/include/core/SkPath.h index a6674d9afb..9b5dc4bf65 100644 --- a/include/core/SkPath.h +++ b/include/core/SkPath.h @@ -16,14 +16,6 @@ #include "SkTDArray.h" #include "SkRefCnt.h" -#ifdef SK_BUILD_FOR_ANDROID -#define GEN_ID_INC fGenerationID++ -#define GEN_ID_PTR_INC(ptr) (ptr)->fGenerationID++ -#else -#define GEN_ID_INC -#define GEN_ID_PTR_INC(ptr) -#endif - class SkReader32; class SkWriter32; class SkAutoPathBoundsUpdate; @@ -40,10 +32,10 @@ public: SK_DECLARE_INST_COUNT_ROOT(SkPath); SkPath(); - SkPath(const SkPath&); // Copies fGenerationID on Android. + SkPath(const SkPath&); ~SkPath(); - SkPath& operator=(const SkPath&); // Increments fGenerationID on Android. + SkPath& operator=(const SkPath&); friend SK_API bool operator==(const SkPath&, const SkPath&); friend bool operator!=(const SkPath& a, const SkPath& b) { return !(a == b); @@ -80,7 +72,6 @@ public: */ void setFillType(FillType ft) { fFillType = SkToU8(ft); - GEN_ID_INC; } /** Returns true if the filltype is one of the Inverse variants */ @@ -92,7 +83,6 @@ public: */ void toggleInverseFillType() { fFillType ^= 2; - GEN_ID_INC; } enum Convexity { @@ -914,16 +904,25 @@ public: * If buffer is NULL, it still returns the number of bytes. */ uint32_t writeToMemory(void* buffer) const; + /** * Initialized the region from the buffer, returning the number * of bytes actually read. */ uint32_t readFromMemory(const void* buffer); -#ifdef SK_BUILD_FOR_ANDROID + /** Returns a non-zero, globally unique value corresponding to the set of verbs + and points in the path (but not the fill type [except on Android skbug.com/1762]). + Each time the path is modified, a different generation ID will be returned. + */ uint32_t getGenerationID() const; + +#ifdef SK_BUILD_FOR_ANDROID + static const int kPathRefGenIDBitCnt = 30; // leave room for the fill type (skbug.com/1762) const SkPath* getSourcePath() const; void setSourcePath(const SkPath* path); +#else + static const int kPathRefGenIDBitCnt = 32; #endif SkDEBUGCODE(void validate() const;) @@ -953,7 +952,6 @@ private: mutable uint8_t fDirection; mutable SkBool8 fIsOval; #ifdef SK_BUILD_FOR_ANDROID - uint32_t fGenerationID; const SkPath* fSourcePath; #endif diff --git a/include/core/SkPathRef.h b/include/core/SkPathRef.h index d832944ec3..aea0a91275 100644 --- a/include/core/SkPathRef.h +++ b/include/core/SkPathRef.h @@ -227,6 +227,13 @@ public: */ uint32_t writeSize(); + /** + * Gets an ID that uniquely identifies the contents of the path ref. If two path refs have the + * same ID then they have the same verbs and points. However, two path refs may have the same + * contents but different genIDs. + */ + uint32_t genID() const; + private: enum SerializationOffsets { kIsFinite_SerializationShift = 25, // requires 1 bit @@ -380,14 +387,6 @@ private: return reinterpret_cast<intptr_t>(fVerbs) - reinterpret_cast<intptr_t>(fPoints); } - /** - * Gets an ID that uniquely identifies the contents of the path ref. If two path refs have the - * same ID then they have the same verbs and points. However, two path refs may have the same - * contents but different genIDs. Zero is reserved and means an ID has not yet been determined - * for the path ref. - */ - int32_t genID() const; - SkDEBUGCODE(void validate() const;) /** @@ -413,7 +412,7 @@ private: enum { kEmptyGenID = 1, // GenID reserved for path ref with zero points and zero verbs. }; - mutable int32_t fGenerationID; + mutable uint32_t fGenerationID; SkDEBUGCODE(int32_t fEditorsAttached;) // assert that only one editor in use at any time. typedef SkRefCnt INHERITED; |