#ifndef ASH_ROTATOR_WINDOW_ROTATION_H_
#define ASH_ROTATOR_WINDOW_ROTATION_H_
#include <memory>
#include "ash/ash_export.h"
#include "ui/compositor/layer_animation_element.h"
#include "ui/gfx/geometry/point.h"
namespace ui {
class InterpolatedTransform;
class Layer;
}
namespace ash {
class ASH_EXPORT WindowRotation : public ui::LayerAnimationElement {
public:
WindowRotation(int degrees, ui::Layer* layer);
WindowRotation(const WindowRotation&) = delete;
WindowRotation& operator=(const WindowRotation&) = delete;
~WindowRotation() override;
private:
void InitTransform(ui::Layer* layer);
void OnStart(ui::LayerAnimationDelegate* delegate) override;
bool OnProgress(double t, ui::LayerAnimationDelegate* delegate) override;
void OnGetTarget(TargetValue* target) const override;
void OnAbort(ui::LayerAnimationDelegate* delegate) override;
std::unique_ptr<ui::InterpolatedTransform> interpolated_transform_;
int degrees_;
gfx::Point new_origin_;
};
}
#endif