diff options
Diffstat (limited to 'Source/WebKit/android/jni/PictureSet.h')
-rw-r--r-- | Source/WebKit/android/jni/PictureSet.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/Source/WebKit/android/jni/PictureSet.h b/Source/WebKit/android/jni/PictureSet.h index b177958..907fb92 100644 --- a/Source/WebKit/android/jni/PictureSet.h +++ b/Source/WebKit/android/jni/PictureSet.h @@ -56,15 +56,25 @@ namespace android { PictureSet(const PictureSet& src) { set(src); } virtual ~PictureSet(); void add(const SkRegion& area, SkPicture* picture, - uint32_t elapsed, bool split) + uint32_t elapsed, bool split) { - add(area, picture, elapsed, split, emptyPicture(picture)); + if (area.isRect()) { + add(area, picture, elapsed, split, false); + } else { + SkRegion::Iterator cliperator(area); + while (!cliperator.done()) { + SkIRect ir = cliperator.rect(); + SkRegion newArea; + newArea.setRect(ir); + add(newArea, picture, elapsed, split, false); + cliperator.next(); + } + } } void add(const SkRegion& area, SkPicture* picture, uint32_t elapsed, bool split, bool empty); const SkIRect& bounds(size_t i) const { return mPictures[i].mArea.getBounds(); } - bool build(); // Update mWidth/mHeight, and adds any additional inval region void checkDimensions(int width, int height, SkRegion* inval); void clear(); @@ -94,6 +104,8 @@ namespace android { bool mBase : 8; // true if nothing is drawn underneath this bool mEmpty : 8; // true if the picture only draws white }; + float mBaseArea; + float mAdditionalArea; void add(const Pictures* temp); WTF::Vector<Pictures> mPictures; int mHeight; |