summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2011-09-07 16:08:34 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-09-07 16:08:34 -0700
commitbd46ce51b0f1d7af8a543961df3799e4d9aab4ed (patch)
tree6c3d20234dee0364d4159ef242d30ad787acd708
parent321b119b4942dca02c7557790c7951695473ae7d (diff)
parent21ece83c0c88c197e90db19b44a52382fa3e325b (diff)
downloadexternal_webkit-bd46ce51b0f1d7af8a543961df3799e4d9aab4ed.zip
external_webkit-bd46ce51b0f1d7af8a543961df3799e4d9aab4ed.tar.gz
external_webkit-bd46ce51b0f1d7af8a543961df3799e4d9aab4ed.tar.bz2
Merge "Implement PictureSet(SkPicture*) ctor in FAST_PICTURESET case"
-rw-r--r--Source/WebKit/android/jni/PictureSet.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/Source/WebKit/android/jni/PictureSet.cpp b/Source/WebKit/android/jni/PictureSet.cpp
index 839a887..e6a9ed5 100644
--- a/Source/WebKit/android/jni/PictureSet.cpp
+++ b/Source/WebKit/android/jni/PictureSet.cpp
@@ -96,6 +96,27 @@ PictureSet::PictureSet(SkPicture* picture)
mHeight = picture->height();
mBaseArea = mWidth * mHeight;
#ifdef FAST_PICTURESET
+ SkIRect area;
+ area.set(0, 0, mWidth, mHeight);
+ splitAdd(area);
+ WTF::Vector<Bucket*>* buckets = bucketsToUpdate();
+ for (unsigned int i = 0; i < buckets->size(); i++) {
+ Bucket* bucket = (*buckets)[i];
+ for (unsigned int j = 0; j < bucket->size(); j++) {
+ BucketPicture& bucketPicture = (*bucket)[j];
+ const SkIRect& inval = bucketPicture.mRealArea;
+ SkPicture *splitPicture = new SkPicture();
+ SkCanvas *canvas = splitPicture->beginRecording(
+ inval.width(), inval.height(),
+ SkPicture::kUsePathBoundsForClip_RecordingFlag);
+ canvas->translate(-inval.fLeft, -inval.fTop);
+ picture->draw(canvas);
+ splitPicture->endRecording();
+ SkSafeUnref(bucketPicture.mPicture);
+ bucketPicture.mPicture = splitPicture;
+ }
+ }
+ buckets->clear();
#else
Pictures pictureAndBounds;
pictureAndBounds.mPicture = picture;