// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_GFX_INTERPOLATED_TRANSFORM_H_ #define UI_GFX_INTERPOLATED_TRANSFORM_H_ #include <memory> #include "ui/gfx/geometry/decomposed_transform.h" #include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point3_f.h" #include "ui/gfx/geometry/transform.h" #include "ui/gfx/geometry/vector3d_f.h" #include "ui/gfx/gfx_export.h" namespace ui { /////////////////////////////////////////////////////////////////////////////// // class InterpolatedTransform // // Abstract base class for transforms that animate over time. These // interpolated transforms can be combined to allow for more sophisticated // animations. For example, you might combine a rotation of 90 degrees between // times 0 and 1, with a scale from 1 to 0.3 between times 0 and 0.25 and a // scale from 0.3 to 1 from between times 0.75 and 1. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedTransform { … }; /////////////////////////////////////////////////////////////////////////////// // class InterpolatedRotation // // Represents an animated rotation. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedRotation : public InterpolatedTransform { … }; /////////////////////////////////////////////////////////////////////////////// // class InterpolatedAxisAngleRotation // // Represents an animated rotation. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedAxisAngleRotation : public InterpolatedTransform { … }; /////////////////////////////////////////////////////////////////////////////// // class InterpolatedScale // // Represents an animated scale. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedScale : public InterpolatedTransform { … }; class GFX_EXPORT InterpolatedTranslation : public InterpolatedTransform { … }; /////////////////////////////////////////////////////////////////////////////// // class InterpolatedConstantTransform // // Represents a transform that is constant over time. This is only useful when // composed with other interpolated transforms. // // See InterpolatedTransformAboutPivot for an example of its usage. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedConstantTransform : public InterpolatedTransform { … }; /////////////////////////////////////////////////////////////////////////////// // class InterpolatedTransformAboutPivot // // Represents an animated transform with a transformed origin. Essentially, // at each time, t, the interpolated transform is created by composing // P * T * P^-1 where P is a constant transform to the new origin. // /////////////////////////////////////////////////////////////////////////////// class GFX_EXPORT InterpolatedTransformAboutPivot : public InterpolatedTransform { … }; class GFX_EXPORT InterpolatedMatrixTransform : public InterpolatedTransform { … }; } // namespace ui #endif // UI_GFX_INTERPOLATED_TRANSFORM_H_