diff options
Diffstat (limited to 'include/core/SkPicture.h')
-rw-r--r-- | include/core/SkPicture.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h index 8fa89656c9..f5d53c5592 100644 --- a/include/core/SkPicture.h +++ b/include/core/SkPicture.h @@ -365,6 +365,67 @@ private: SkAutoTUnref<SkPathHeap> fPathHeap; // reference counted + // ContentInfo is not serialized! It is intended solely for use + // with suitableForGpuRasterization. + class ContentInfo { + public: + ContentInfo() { this->reset(); } + + ContentInfo(const ContentInfo& src) { this->set(src); } + + void set(const ContentInfo& src) { + fNumPaintWithPathEffectUses = src.fNumPaintWithPathEffectUses; + fNumAAConcavePaths = src.fNumAAConcavePaths; + fNumAAHairlineConcavePaths = src.fNumAAHairlineConcavePaths; + } + + void reset() { + fNumPaintWithPathEffectUses = 0; + fNumAAConcavePaths = 0; + fNumAAHairlineConcavePaths = 0; + } + + void swap(ContentInfo* other) { + SkTSwap(fNumPaintWithPathEffectUses, other->fNumPaintWithPathEffectUses); + SkTSwap(fNumAAConcavePaths, other->fNumAAConcavePaths); + SkTSwap(fNumAAHairlineConcavePaths, other->fNumAAHairlineConcavePaths); + } + + // This field is incremented every time a paint with a path effect is + // used (i.e., it is not a de-duplicated count) + int fNumPaintWithPathEffectUses; + // This field is incremented every time an anti-aliased drawPath call is + // issued with a concave path + int fNumAAConcavePaths; + // This field is incremented every time a drawPath call is + // issued for a hairline stroked concave path. + int fNumAAHairlineConcavePaths; + }; + + ContentInfo fContentInfo; + + void incPaintWithPathEffectUses() { + ++fContentInfo.fNumPaintWithPathEffectUses; + } + int numPaintWithPathEffectUses() const { + return fContentInfo.fNumPaintWithPathEffectUses; + } + + void incAAConcavePaths() { + ++fContentInfo.fNumAAConcavePaths; + } + int numAAConcavePaths() const { + return fContentInfo.fNumAAConcavePaths; + } + + void incAAHairlineConcavePaths() { + ++fContentInfo.fNumAAHairlineConcavePaths; + SkASSERT(fContentInfo.fNumAAHairlineConcavePaths <= fContentInfo.fNumAAConcavePaths); + } + int numAAHairlineConcavePaths() const { + return fContentInfo.fNumAAHairlineConcavePaths; + } + const SkPath& getPath(int index) const; int addPathToHeap(const SkPath& path); |