diff options
author | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-17 14:56:13 +0000 |
---|---|---|
committer | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-17 14:56:13 +0000 |
commit | 0b23f9e15f87363249cb66db2dd9918bc42d72ab (patch) | |
tree | 12c28a5bb6e9342732d30da5cffceb1790f58df4 /src/core/SkPicturePlayback.h | |
parent | d1c85d29204ad94950b23014c03e781409b9b682 (diff) |
Add a means of extracting active operations from SkPicture
https://codereview.chromium.org/195793010/
git-svn-id: http://skia.googlecode.com/svn/trunk@13831 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkPicturePlayback.h')
-rw-r--r-- | src/core/SkPicturePlayback.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/core/SkPicturePlayback.h b/src/core/SkPicturePlayback.h index 512f24a77e..11624205d4 100644 --- a/src/core/SkPicturePlayback.h +++ b/src/core/SkPicturePlayback.h @@ -85,6 +85,8 @@ public: virtual ~SkPicturePlayback(); + const SkPicture::OperationList& getActiveOps(const SkIRect& queryRect); + void draw(SkCanvas& canvas, SkDrawPictureCallback*); void serialize(SkWStream*, SkPicture::EncodeBitmap) const; @@ -109,7 +111,7 @@ protected: virtual void postDraw(int opIndex); #endif - void preLoadBitmaps(const SkTDArray<void*>& results); + void preLoadBitmaps(const SkTDArray<void*>* results); private: class TextContainer { @@ -237,6 +239,29 @@ private: SkBBoxHierarchy* fBoundingHierarchy; SkPictureStateTree* fStateTree; + class CachedOperationList : public SkPicture::OperationList { + public: + CachedOperationList() { + fCacheQueryRect.setEmpty(); + } + + virtual bool valid() const { return true; } + virtual int numOps() const SK_OVERRIDE { return fOps.count(); } + virtual uint32_t offset(int index) const SK_OVERRIDE; + virtual const SkMatrix& matrix(int index) const SK_OVERRIDE; + + // The query rect for which the cached active ops are valid + SkIRect fCacheQueryRect; + + // The operations which are active within 'fCachedQueryRect' + SkTDArray<void*> fOps; + + private: + typedef SkPicture::OperationList INHERITED; + }; + + CachedOperationList* fCachedActiveOps; + SkTypefacePlayback fTFPlayback; SkFactoryPlayback* fFactoryPlayback; #ifdef SK_BUILD_FOR_ANDROID |