Home | History | Annotate | Download | only in gfx
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef UI_GFX_TRANSFORM_UTIL_H_
      6 #define UI_GFX_TRANSFORM_UTIL_H_
      7 
      8 #include "ui/base/ui_export.h"
      9 #include "ui/gfx/transform.h"
     10 
     11 namespace gfx {
     12 
     13 class Point;
     14 
     15 // Returns a scale transform at |anchor| point.
     16 UI_EXPORT Transform GetScaleTransform(const Point& anchor, float scale);
     17 
     18 // Contains the components of a factored transform. These components may be
     19 // blended and recomposed.
     20 struct UI_EXPORT DecomposedTransform {
     21   // The default constructor initializes the components in such a way that
     22   // if used with Compose below, will produce the identity transform.
     23   DecomposedTransform();
     24 
     25   double translate[3];
     26   double scale[3];
     27   double skew[3];
     28   double perspective[4];
     29   double quaternion[4];
     30 
     31   // Copy and assign are allowed.
     32 };
     33 
     34 // Interpolates the decomposed components |to| with |from| using the
     35 // routines described in http://www.w3.org/TR/css3-3d-transform/.
     36 // |progress| is in the range [0, 1] (0 leaves |out| unchanged, and 1
     37 // assigns |from| to |out|).
     38 UI_EXPORT bool BlendDecomposedTransforms(DecomposedTransform* out,
     39                                          const DecomposedTransform& to,
     40                                          const DecomposedTransform& from,
     41                                          double progress);
     42 
     43 // Decomposes this transform into its translation, scale, skew, perspective,
     44 // and rotation components following the routines detailed in this spec:
     45 // http://www.w3.org/TR/css3-3d-transforms/.
     46 UI_EXPORT bool DecomposeTransform(DecomposedTransform* out,
     47                                   const Transform& transform);
     48 
     49 // Composes a transform from the given translation, scale, skew, prespective,
     50 // and rotation components following the routines detailed in this spec:
     51 // http://www.w3.org/TR/css3-3d-transforms/.
     52 UI_EXPORT Transform ComposeTransform(const DecomposedTransform& decomp);
     53 
     54 }  // namespace gfx
     55 
     56 #endif  // UI_GFX_TRANSFORM_UTIL_H_
     57