| Index: chrome/browser/ui/touch/animation/screen_rotation_setter.cc
|
| diff --git a/chrome/browser/ui/touch/animation/screen_rotation_setter.cc b/chrome/browser/ui/touch/animation/screen_rotation_setter.cc
|
| deleted file mode 100644
|
| index a20774bd116b01a97d74505b5d82424d43e39447..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/touch/animation/screen_rotation_setter.cc
|
| +++ /dev/null
|
| @@ -1,134 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/ui/touch/animation/screen_rotation_setter.h"
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "chrome/browser/ui/touch/animation/screen_rotation.h"
|
| -#include "ui/gfx/compositor/layer.h"
|
| -#include "ui/gfx/interpolated_transform.h"
|
| -#include "views/layer_property_setter.h"
|
| -#include "views/view.h"
|
| -
|
| -namespace {
|
| -
|
| -static int SymmetricRound(float x) {
|
| - return static_cast<int>(
|
| - x > 0
|
| - ? std::floor(x + 0.5f)
|
| - : std::ceil(x - 0.5f));
|
| -}
|
| -
|
| -// A screen rotation setter is a LayerPropertySetter that initiates screen
|
| -// rotations in response to calls to |SetTransform|. Calls to |SetBounds| are
|
| -// applied to the layer immediately.
|
| -class ScreenRotationSetter : public views::LayerPropertySetter,
|
| - public ScreenRotationListener {
|
| - public:
|
| - explicit ScreenRotationSetter(views::View* view);
|
| -
|
| - // implementation of LayerPropertySetter
|
| - virtual void Installed(ui::Layer* layer) OVERRIDE;
|
| - virtual void Uninstalled(ui::Layer* layer) OVERRIDE;
|
| - virtual void SetTransform(ui::Layer* layer,
|
| - const ui::Transform& transform) OVERRIDE;
|
| - virtual void SetBounds(ui::Layer* layer, const gfx::Rect& bounds) OVERRIDE;
|
| -
|
| - // implementation of ScreenRotationListener
|
| - virtual void OnScreenRotationCompleted(const ui::Transform& final_transform,
|
| - const gfx::Rect& final_rect) OVERRIDE;
|
| -
|
| - private:
|
| - // This is the currently animating rotation. We hang onto it so that if a
|
| - // call to |SetTransform| is made during the rotation, we can update the
|
| - // target orientation of this rotation.
|
| - scoped_ptr<ScreenRotation> rotation_;
|
| -
|
| - // If a call to SetBounds happens during a rotation its effect is delayed
|
| - // until the rotation completes. If this happens several times, only the last
|
| - // call to SetBounds will have any effect.
|
| - scoped_ptr<gfx::Rect> pending_bounds_;
|
| -
|
| - // If a call to SetTransform happens during a rotation its effect is delayed
|
| - // until the rotation completes. If this happens several times, only the last
|
| - // call to SetTransform will have any effect.
|
| - scoped_ptr<ui::Transform> pending_transform_;
|
| -
|
| - // The screen rotation setter is associated with a view so that the view's
|
| - // bounds may be set when the animation completes.
|
| - views::View* view_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ScreenRotationSetter);
|
| -};
|
| -
|
| -
|
| -ScreenRotationSetter::ScreenRotationSetter(views::View* view) : view_(view) {
|
| -}
|
| -
|
| -void ScreenRotationSetter::Installed(ui::Layer* layer) OVERRIDE {
|
| -}
|
| -
|
| -void ScreenRotationSetter::Uninstalled(ui::Layer* layer) OVERRIDE {
|
| - if (rotation_.get())
|
| - rotation_->Stop();
|
| -}
|
| -
|
| -void ScreenRotationSetter::SetTransform(ui::Layer* layer,
|
| - const ui::Transform& transform) {
|
| - if (rotation_.get()) {
|
| - pending_transform_.reset(new ui::Transform(transform));
|
| - } else {
|
| - float new_degrees, old_degrees;
|
| - if (ui::InterpolatedTransform::FactorTRS(transform,
|
| - NULL, &new_degrees, NULL) &&
|
| - ui::InterpolatedTransform::FactorTRS(layer->transform(),
|
| - NULL, &old_degrees, NULL)) {
|
| - rotation_.reset(new ScreenRotation(view_,
|
| - this,
|
| - SymmetricRound(old_degrees),
|
| - SymmetricRound(new_degrees)));
|
| - }
|
| - }
|
| -}
|
| -
|
| -void ScreenRotationSetter::SetBounds(ui::Layer* layer,
|
| - const gfx::Rect& bounds) {
|
| - // cache bounds changes during an animation.
|
| - if (rotation_.get())
|
| - pending_bounds_.reset(new gfx::Rect(bounds));
|
| - else
|
| - layer->SetBounds(bounds);
|
| -}
|
| -
|
| -void ScreenRotationSetter::OnScreenRotationCompleted(
|
| - const ui::Transform& final_transform,
|
| - const gfx::Rect& final_bounds) {
|
| - // destroy the animation.
|
| - rotation_.reset();
|
| -
|
| - if (pending_bounds_.get() && view_->layer()) {
|
| - // If there are any pending bounds changes, they will have already been
|
| - // applied to the view, and are waiting to be applied to the layer.
|
| - view_->layer()->SetBounds(*pending_bounds_);
|
| - pending_bounds_.reset();
|
| - } else if (!final_bounds.IsEmpty()) {
|
| - // Otherwise we may have new bounds as the result of the completed screen
|
| - // rotation. Apply these to the view.
|
| - view_->SetBoundsRect(final_bounds);
|
| - }
|
| -
|
| - if (pending_transform_.get() && view_->layer()) {
|
| - // If there is a pending transformation, we need to initiate another
|
| - // animation.
|
| - SetTransform(view_->layer(), *pending_transform_);
|
| - pending_transform_.reset();
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -views::LayerPropertySetter* ScreenRotationSetterFactory::Create(
|
| - views::View* view) {
|
| - return new ScreenRotationSetter(view);
|
| -}
|
|
|