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

Unified Diff: ui/compositor/layer.cc

Issue 13725015: Merge ui::Layer's concept of position with cc::Layer's (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/layer.h ('k') | ui/compositor/layer_animation_element.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/layer.cc
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 5e5ebcb95a7bd577e18d170fa373af0aa25a0e27..ad3c31cc33538e56ae91737a9f9a57b588977d19 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -425,11 +425,9 @@ bool Layer::GetTargetTransformRelativeTo(const Layer* ancestor,
// static
gfx::Transform Layer::ConvertTransformToCCTransform(
const gfx::Transform& transform,
- const gfx::Rect& bounds,
float device_scale_factor) {
gfx::Transform cc_transform;
cc_transform.Scale(device_scale_factor, device_scale_factor);
- cc_transform.Translate(bounds.x(), bounds.y());
cc_transform.PreconcatTransform(transform);
cc_transform.Scale(1.0f / device_scale_factor, 1.0f / device_scale_factor);
return cc_transform;
@@ -463,6 +461,7 @@ void Layer::SwitchToLayer(scoped_refptr<cc::Layer> new_layer) {
cc_layer_->RemoveLayerAnimationEventObserver(this);
new_layer->SetOpacity(cc_layer_->opacity());
new_layer->SetTransform(cc_layer_->transform());
+ new_layer->SetPosition(cc_layer_->position());
cc_layer_= new_layer;
content_layer_ = NULL;
@@ -601,6 +600,7 @@ void Layer::OnDeviceScaleFactorChanged(float device_scale_factor) {
device_scale_factor_ = device_scale_factor;
RecomputeCCTransformFromTransform(transform);
RecomputeDrawsContentAndUVRect();
+ RecomputePosition();
SchedulePaint(gfx::Rect(bounds_.size()));
if (delegate_)
delegate_->OnDeviceScaleFactorChanged(device_scale_factor);
@@ -704,11 +704,11 @@ void Layer::SetBoundsImmediately(const gfx::Rect& bounds) {
if (delegate_)
closure = delegate_->PrepareForLayerBoundsChange();
bool was_move = bounds_.size() == bounds.size();
- gfx::Transform transform = this->transform();
bounds_ = bounds;
- RecomputeCCTransformFromTransform(transform);
RecomputeDrawsContentAndUVRect();
+ RecomputePosition();
+
if (!closure.is_null())
closure.Run();
@@ -891,17 +891,16 @@ void Layer::CreateWebLayer() {
cc_layer_->SetContentsOpaque(true);
cc_layer_->SetIsDrawable(type_ != LAYER_NOT_DRAWN);
cc_layer_->AddLayerAnimationEventObserver(this);
+ RecomputePosition();
}
void Layer::RecomputeCCTransformFromTransform(const gfx::Transform& transform) {
cc_layer_->SetTransform(ConvertTransformToCCTransform(transform,
- bounds_,
device_scale_factor_));
}
gfx::Transform Layer::transform() const {
gfx::Transform transform;
- transform.Translate(-bounds_.x(), -bounds_.y());
transform.Scale(1.0f / device_scale_factor_, 1.0f / device_scale_factor_);
transform.PreconcatTransform(cc_layer_->transform());
transform.Scale(device_scale_factor_, device_scale_factor_);
@@ -932,4 +931,10 @@ void Layer::RecomputeDrawsContentAndUVRect() {
cc_layer_->SetBounds(ConvertSizeToPixel(this, size));
}
+void Layer::RecomputePosition() {
+ cc_layer_->SetPosition(gfx::ScalePoint(
+ gfx::PointF(bounds_.x(), bounds_.y()),
+ device_scale_factor_));
+}
+
} // namespace ui
« no previous file with comments | « ui/compositor/layer.h ('k') | ui/compositor/layer_animation_element.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698