Chromium Code Reviews| Index: src/gpu/GrAADistanceFieldPathRenderer.h |
| diff --git a/src/gpu/GrAADistanceFieldPathRenderer.h b/src/gpu/GrAADistanceFieldPathRenderer.h |
| index 40430bbd2ff47a403eda93881f2dd8c380d19748..65d261390bafb5b0bf9d67f2311144a46c9df33a 100755 |
| --- a/src/gpu/GrAADistanceFieldPathRenderer.h |
| +++ b/src/gpu/GrAADistanceFieldPathRenderer.h |
| @@ -41,18 +41,26 @@ protected: |
| private: |
| struct PathData { |
| - uint32_t fGenID; |
| + struct Key { |
| + uint32_t fGenID; |
|
robertphillips
2014/10/29 19:55:02
// fMipLevel is the scaling applied to this path w
jvanverth1
2014/10/30 12:48:28
Done.
|
| + uint32_t fMipLevel; |
| + bool operator==(const Key& other) const { |
| + return other.fGenID == fGenID && other.fMipLevel == fMipLevel; |
| + } |
| + }; |
| + Key fKey; |
| + SkScalar fScale; |
| GrPlot* fPlot; |
| SkRect fBounds; |
| SkIPoint16 fAtlasLocation; |
| SK_DECLARE_INTERNAL_LLIST_INTERFACE(PathData); |
| - static inline const uint32_t& GetKey(const PathData& data) { |
| - return data.fGenID; |
| + static inline const Key& GetKey(const PathData& data) { |
| + return data.fKey; |
| } |
| - static inline uint32_t Hash(uint32_t key) { |
| - return SkChecksum::Murmur3(&key, sizeof(key)); |
| + static inline uint32_t Hash(Key key) { |
| + return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(&key), sizeof(key)); |
| } |
| }; |
| typedef SkTInternalLList<PathData> PathDataList; |
| @@ -63,11 +71,12 @@ private: |
| // current set of flags used to create the cached geometry processor |
| uint32_t fEffectFlags; |
| GrAtlas::ClientPlotUsage fPlotUsage; |
| - SkTDynamicHash<PathData, uint32_t> fPathCache; |
| + SkTDynamicHash<PathData, PathData::Key> fPathCache; |
| PathDataList fPathList; |
| bool internalDrawPath(const SkPath& path, const PathData* pathData, GrDrawTarget* target); |
| - PathData* addPathToAtlas(const SkPath& path, const SkStrokeRec& stroke, bool antiAlias); |
| + PathData* addPathToAtlas(const SkPath& path, const SkStrokeRec& stroke, bool antiAlias, |
| + uint32_t mipLevel, SkScalar scale); |
| bool freeUnusedPlot(); |
| typedef GrPathRenderer INHERITED; |