| Index: src/core/SkPathHeap.h
|
| ===================================================================
|
| --- src/core/SkPathHeap.h (revision 13690)
|
| +++ src/core/SkPathHeap.h (working copy)
|
| @@ -30,6 +30,11 @@
|
| */
|
| int append(const SkPath&);
|
|
|
| + /** Add the specified path to the heap using its gen ID to de-duplicate.
|
| + Returns the path's index in the heap + 1.
|
| + */
|
| + int insert(const SkPath&);
|
| +
|
| // called during picture-playback
|
| int count() const { return fPaths.count(); }
|
| const SkPath& operator[](int index) const {
|
| @@ -44,6 +49,27 @@
|
| // we just store ptrs into fHeap here
|
| SkTDArray<SkPath*> fPaths;
|
|
|
| + class LookupEntry {
|
| + public:
|
| + LookupEntry(const SkPath& path);
|
| +
|
| + int storageSlot() const { return fStorageSlot; }
|
| + void setStorageSlot(int storageSlot) { fStorageSlot = storageSlot; }
|
| +
|
| + static bool Less(const LookupEntry& a, const LookupEntry& b) {
|
| + return a.fGenerationID < b.fGenerationID;
|
| + }
|
| +
|
| + private:
|
| + uint32_t fGenerationID; // the SkPath's generation ID
|
| + // the path's index in the heap + 1. It is 0 if the path is not yet in the heap.
|
| + int fStorageSlot;
|
| + };
|
| +
|
| + SkTDArray<LookupEntry> fLookupTable;
|
| +
|
| + SkPathHeap::LookupEntry* addIfNotPresent(const SkPath& path);
|
| +
|
| typedef SkRefCnt INHERITED;
|
| };
|
|
|
|
|