Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CC_MATH_UTIL_H_ | 5 #ifndef CC_MATH_UTIL_H_ |
| 6 #define CC_MATH_UTIL_H_ | 6 #define CC_MATH_UTIL_H_ |
| 7 | 7 |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "cc/cc_export.h" | 9 #include "cc/cc_export.h" |
| 10 #include "ui/gfx/point_f.h" | 10 #include "ui/gfx/point_f.h" |
| 11 #include "ui/gfx/point3_f.h" | 11 #include "ui/gfx/point3_f.h" |
| 12 #include "ui/gfx/transform.h" | |
| 12 | 13 |
| 13 namespace WebKit { | 14 namespace WebKit { |
| 14 class WebTransformationMatrix; | 15 class WebTransformationMatrix; |
| 15 } | 16 } |
| 16 | 17 |
| 17 namespace gfx { | 18 namespace gfx { |
| 18 class QuadF; | 19 class QuadF; |
| 19 class Rect; | 20 class Rect; |
| 20 class RectF; | 21 class RectF; |
| 21 class Vector2dF; | 22 class Vector2dF; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 108 static void flattenTransformTo2d(WebKit::WebTransformationMatrix&); | 109 static void flattenTransformTo2d(WebKit::WebTransformationMatrix&); |
| 109 | 110 |
| 110 static gfx::Vector2dF computeTransform2dScaleComponents(const WebKit::WebTra nsformationMatrix&); | 111 static gfx::Vector2dF computeTransform2dScaleComponents(const WebKit::WebTra nsformationMatrix&); |
| 111 | 112 |
| 112 // Returns the smallest angle between the given two vectors in degrees. Neit her vector is | 113 // Returns the smallest angle between the given two vectors in degrees. Neit her vector is |
| 113 // assumed to be normalized. | 114 // assumed to be normalized. |
| 114 static float smallestAngleBetweenVectors(gfx::Vector2dF, gfx::Vector2dF); | 115 static float smallestAngleBetweenVectors(gfx::Vector2dF, gfx::Vector2dF); |
| 115 | 116 |
| 116 // Projects the |source| vector onto |destination|. Neither vector is assume d to be normalized. | 117 // Projects the |source| vector onto |destination|. Neither vector is assume d to be normalized. |
| 117 static gfx::Vector2dF projectVector(gfx::Vector2dF source, gfx::Vector2dF de stination); | 118 static gfx::Vector2dF projectVector(gfx::Vector2dF source, gfx::Vector2dF de stination); |
| 119 | |
| 120 // Temporary API to ease migration from WebKit::WebTransformationMatrix | |
| 121 // to gfx::Transform. | |
| 122 // | |
| 123 // TODO(shawnsingh, vollick) we should phase out as much as possible of | |
| 124 // these temporary functions, putting functionality into gfx::Transform. | |
| 125 static bool isInvertible(const gfx::Transform&); | |
| 126 static bool isBackFaceVisible(const gfx::Transform&); | |
| 127 static bool isIdentity(const gfx::Transform&); | |
| 128 static bool isIdentityOrTranslation(const gfx::Transform&); | |
| 129 static bool hasPerspective(const gfx::Transform&); | |
| 130 static void makeIdentity(gfx::Transform*); | |
|
Ian Vollick
2012/11/16 13:44:46
Would transform = gfx::Transform() suffice?
danakj
2012/11/16 16:25:15
I've seen a pattern in the existing classes to pro
| |
| 131 static void rotateEulerAngles(gfx::Transform*, float eulerX, float eulerY, f loat eulerZ); // TODO: verify old webcore API was euler angles? | |
|
Ian Vollick
2012/11/16 13:44:46
These should be doubles now that gfx::Transform is
| |
| 132 static void rotateAxisAngle(gfx::Transform*, float i, float j, float k, floa t degrees); | |
| 133 static gfx::Transform inverse(const gfx::Transform&); | |
|
Ian Vollick
2012/11/16 13:44:46
I think this should be pulled from the API. gfx::T
shawnsingh
2012/11/17 00:38:31
As mentioned above, I agree with this, but I would
| |
| 134 static gfx::Transform to2dTransform(const gfx::Transform&); | |
| 135 static gfx::Transform toGfxTransform(const WebKit::WebTransformationMatrix&) ; | |
| 136 // Note carefully: the args here are labeled as per Webcore indexing convent ions. | |
| 137 static gfx::Transform createGfxTransform(float m11, float m12, float m13, fl oat m14, | |
| 138 float m21, float m22, float m23, fl oat m24, | |
| 139 float m31, float m32, float m33, fl oat m34, | |
| 140 float m41, float m42, float m43, fl oat m44); | |
|
Ian Vollick
2012/11/16 13:44:46
This is a bit of a matter of preference, but I pre
shawnsingh
2012/11/17 00:38:31
Same goes for this comment - this wrapper simply e
| |
| 141 | |
| 142 static gfx::Transform createGfxTransform(float a, float b, float c, | |
| 143 float d, float e, float f); | |
| 118 }; | 144 }; |
| 119 | 145 |
| 146 // TODO(shawnsingh, vollick) this is a temporary home, should eventually | |
| 147 // be phased out in favor of gfx::Transform API. | |
| 148 gfx::Transform operator*(const gfx::Transform&, const gfx::Transform&); | |
| 149 | |
| 120 } // namespace cc | 150 } // namespace cc |
| 121 | 151 |
| 122 #endif // CC_MATH_UTIL_H_ | 152 #endif // CC_MATH_UTIL_H_ |
| OLD | NEW |