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

Unified Diff: ui/compositor/compositor.cc

Issue 10221028: Move DIP translation from ui/aura to ui/compositor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: disable tests that doesn't run on bots Created 8 years, 7 months 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
« no previous file with comments | « ui/compositor/compositor.h ('k') | ui/compositor/compositor.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/compositor.cc
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 8c9b1bda3ce2e2a7ecd62e715d2be2ed482c9f02..18da91cc73b1ed9c7176c7c0b5875489ee500a59 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -14,6 +14,7 @@
#include "third_party/skia/include/images/SkImageEncoder.h"
#include "ui/compositor/compositor_observer.h"
#include "ui/compositor/compositor_switches.h"
+#include "ui/compositor/dip_util.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/test_web_graphics_context_3d.h"
#include "ui/gfx/gl/gl_context.h"
@@ -119,14 +120,13 @@ Texture::~Texture() {
}
Compositor::Compositor(CompositorDelegate* delegate,
- gfx::AcceleratedWidget widget,
- const gfx::Size& size)
+ gfx::AcceleratedWidget widget)
: delegate_(delegate),
- size_(size),
root_layer_(NULL),
widget_(widget),
root_web_layer_(WebKit::WebLayer::create()),
- swap_posted_(false) {
+ swap_posted_(false),
+ device_scale_factor_(0.0f) {
WebKit::WebLayerTreeView::Settings settings;
CommandLine* command_line = CommandLine::ForCurrentProcess();
settings.showFPSCounter =
@@ -142,7 +142,6 @@ Compositor::Compositor(CompositorDelegate* delegate,
host_.initialize(this, root_web_layer_, settings);
root_web_layer_.setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
- WidgetSizeChanged(size_);
}
Compositor::~Compositor() {
@@ -210,32 +209,42 @@ void Compositor::ScheduleFullDraw() {
host_.setNeedsRedraw();
}
-bool Compositor::ReadPixels(SkBitmap* bitmap, const gfx::Rect& bounds) {
- if (bounds.right() > size().width() || bounds.bottom() > size().height())
+bool Compositor::ReadPixels(SkBitmap* bitmap,
+ const gfx::Rect& bounds_in_pixel) {
+ if (bounds_in_pixel.right() > size().width() ||
+ bounds_in_pixel.bottom() > size().height())
return false;
// Convert to OpenGL coordinates.
- gfx::Point new_origin(bounds.x(),
- size().height() - bounds.height() - bounds.y());
+ gfx::Point new_origin(
+ bounds_in_pixel.x(),
+ size().height() - bounds_in_pixel.height() - bounds_in_pixel.y());
bitmap->setConfig(SkBitmap::kARGB_8888_Config,
- bounds.width(), bounds.height());
+ bounds_in_pixel.width(), bounds_in_pixel.height());
bitmap->allocPixels();
SkAutoLockPixels lock_image(*bitmap);
unsigned char* pixels = static_cast<unsigned char*>(bitmap->getPixels());
- if (host_.compositeAndReadback(pixels,
- gfx::Rect(new_origin, bounds.size()))) {
- SwizzleRGBAToBGRAAndFlip(pixels, bounds.size());
+ if (host_.compositeAndReadback(
+ pixels, gfx::Rect(new_origin, bounds_in_pixel.size()))) {
+ SwizzleRGBAToBGRAAndFlip(pixels, bounds_in_pixel.size());
return true;
}
return false;
}
-void Compositor::WidgetSizeChanged(const gfx::Size& size) {
- if (size.IsEmpty())
+void Compositor::SetScaleAndSize(float scale, const gfx::Size& size_in_pixel) {
+ DCHECK(scale > 0);
+ if (size_in_pixel.IsEmpty() || scale <= 0)
return;
- size_ = size;
- host_.setViewportSize(size_);
- root_web_layer_.setBounds(size_);
+ size_ = size_in_pixel;
+ host_.setViewportSize(size_in_pixel);
+ root_web_layer_.setBounds(size_in_pixel);
+
+ if (device_scale_factor_ != scale && IsDIPEnabled()) {
+ device_scale_factor_ = scale;
+ if (root_layer_)
+ root_layer_->OnDeviceScaleFactorChanged(scale);
+ }
}
void Compositor::AddObserver(CompositorObserver* observer) {
« no previous file with comments | « ui/compositor/compositor.h ('k') | ui/compositor/compositor.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698