Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(571)

Unified Diff: ui/gfx/compositor/compositor_cc.cc

Issue 8463024: Implement CompositorCC::ReadPixels (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compositor::ReadPixels now returns bool Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/compositor/compositor_cc.cc
diff --git a/ui/gfx/compositor/compositor_cc.cc b/ui/gfx/compositor/compositor_cc.cc
index 6649f38c2fe15f7dab7a1a10178ede0c3f224a4e..ba8cd3875cae7f27a00490a9fc0b82a41e7036b1 100644
--- a/ui/gfx/compositor/compositor_cc.cc
+++ b/ui/gfx/compositor/compositor_cc.cc
@@ -4,6 +4,8 @@
#include "ui/gfx/compositor/compositor_cc.h"
+#include "third_party/skia/include/images/SkImageEncoder.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositor.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFloatPoint.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h"
@@ -174,8 +176,17 @@ void CompositorCC::DrawTree() {
host_.composite();
}
-void CompositorCC::ReadPixels(SkBitmap* bitmap) {
- NOTIMPLEMENTED();
+bool CompositorCC::ReadPixels(SkBitmap* bitmap) {
+ bitmap->setConfig(SkBitmap::kARGB_8888_Config,
+ size().width(), size().height());
+ bitmap->allocPixels();
+ SkAutoLockPixels lock_image(*bitmap);
+ unsigned char* pixels = static_cast<unsigned char*>(bitmap->getPixels());
+ if (host_.compositeAndReadback(pixels)) {
+ SwizzleRGBAToBGRAAndFlip(pixels, size());
+ return true;
+ }
+ return false;
}
void CompositorCC::animateAndLayout(double frameBeginTime) {

Powered by Google App Engine
This is Rietveld 408576698