Chromium Code Reviews| Index: src/pdf/SkPDFCanon.h |
| diff --git a/src/pdf/SkPDFCanon.h b/src/pdf/SkPDFCanon.h |
| index d0bef27ed6ecb1ae99310fdaaca1f9557a564cb0..730d5f22fa8fbc625c92b083583039ef2cb61231 100644 |
| --- a/src/pdf/SkPDFCanon.h |
| +++ b/src/pdf/SkPDFCanon.h |
| @@ -7,12 +7,13 @@ |
| #ifndef SkPDFCanon_DEFINED |
| #define SkPDFCanon_DEFINED |
| +#include "SkPDFGraphicState.h" |
| #include "SkPDFShader.h" |
| #include "SkTDArray.h" |
| +#include "SkTHash.h" |
| class SkBitmap; |
| class SkPDFFont; |
| -class SkPDFGraphicState; |
| class SkPDFBitmap; |
| class SkPaint; |
| @@ -56,7 +57,7 @@ public: |
| SkPDFImageShader* findImageShader(const SkPDFShader::State&) const; |
| void addImageShader(SkPDFImageShader*); |
| - SkPDFGraphicState* findGraphicState(const SkPaint&) const; |
| + SkPDFGraphicState* findGraphicState(SkPDFGraphicState&) const; |
|
mtklein
2015/04/01 20:05:39
It's unusual for us to have non-const refs as func
|
| void addGraphicState(SkPDFGraphicState*); |
| SkPDFBitmap* findBitmap(const SkBitmap&) const; |
| @@ -76,7 +77,22 @@ private: |
| SkTDArray<SkPDFImageShader*> fImageShaderRecords; |
| - SkTDArray<SkPDFGraphicState*> fGraphicStateRecords; |
| + template <typename T> |
|
mtklein
2015/04/01 20:05:39
This doesn't really need to be templated, does it?
|
| + struct Wrap { |
|
mtklein
2015/04/01 20:05:39
// Wrap lets us store pointers in the hash set, bu
|
| + explicit Wrap(T* ptr = NULL) : fPtr(ptr) {} |
|
mtklein
2015/04/01 20:05:39
Do we do anything with these pointers that isn't c
|
| + T* fPtr; |
| + bool operator==(const Wrap<T>& rhs) const { |
| + SkASSERT(fPtr); |
| + SkASSERT(rhs.fPtr); |
| + return *fPtr == *rhs.fPtr; |
| + } |
| + static uint32_t Hash(const Wrap<T>& w) { |
| + SkASSERT(w.fPtr); |
| + return SkGoodHash(w.fPtr->hash()); |
|
mtklein
2015/04/01 20:05:39
Seems like overkill to rehash a hash?
|
| + } |
| + }; |
| + SkTHashSet<Wrap<SkPDFGraphicState>, Wrap<SkPDFGraphicState>::Hash> |
| + fGraphicStateRecords; |
| SkTDArray<SkPDFBitmap*> fBitmapRecords; |
| }; |