Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1487)

Unified Diff: ui/gfx/transform.cc

Issue 11774005: Migrate more functions from MathUtil to gfx::Transform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: try to fix double/float conversion errors Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/transform.h ('k') | ui/gfx/transform_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/transform.cc
diff --git a/ui/gfx/transform.cc b/ui/gfx/transform.cc
index c2b6ba2fa9dffe86b6d2e7795ea3096f1479161f..df3ed9f502b7e1266f2c9974aef5bdb2c6380763 100644
--- a/ui/gfx/transform.cc
+++ b/ui/gfx/transform.cc
@@ -32,6 +32,48 @@ double TanDegrees(double degrees) {
} // namespace
+Transform::Transform(
+ double col1row1, double col2row1, double col3row1, double col4row1,
+ double col1row2, double col2row2, double col3row2, double col4row2,
+ double col1row3, double col2row3, double col3row3, double col4row3,
+ double col1row4, double col2row4, double col3row4, double col4row4)
+ : matrix_(SkMatrix44::kUninitialized_Constructor)
+{
+ matrix_.setDouble(0, 0, col1row1);
+ matrix_.setDouble(1, 0, col1row2);
+ matrix_.setDouble(2, 0, col1row3);
+ matrix_.setDouble(3, 0, col1row4);
+
+ matrix_.setDouble(0, 1, col2row1);
+ matrix_.setDouble(1, 1, col2row2);
+ matrix_.setDouble(2, 1, col2row3);
+ matrix_.setDouble(3, 1, col2row4);
+
+ matrix_.setDouble(0, 2, col3row1);
+ matrix_.setDouble(1, 2, col3row2);
+ matrix_.setDouble(2, 2, col3row3);
+ matrix_.setDouble(3, 2, col3row4);
+
+ matrix_.setDouble(0, 3, col4row1);
+ matrix_.setDouble(1, 3, col4row2);
+ matrix_.setDouble(2, 3, col4row3);
+ matrix_.setDouble(3, 3, col4row4);
+}
+
+Transform::Transform(
+ double col1row1, double col2row1,
+ double col1row2, double col2row2,
+ double x_translation, double y_translation)
+ : matrix_(SkMatrix44::kIdentity_Constructor)
+{
+ matrix_.setDouble(0, 0, col1row1);
+ matrix_.setDouble(1, 0, col1row2);
+ matrix_.setDouble(0, 1, col2row1);
+ matrix_.setDouble(1, 1, col2row2);
+ matrix_.setDouble(0, 3, x_translation);
+ matrix_.setDouble(1, 3, y_translation);
+}
+
void Transform::RotateAboutXAxis(double degrees) {
double radians = degrees * M_PI / 180;
double cosTheta = std::cos(radians);
@@ -259,6 +301,16 @@ void Transform::Transpose() {
matrix_.transpose();
}
+void Transform::FlattenTo2d() {
+ matrix_.setDouble(2, 0, 0.0);
+ matrix_.setDouble(2, 1, 0.0);
+ matrix_.setDouble(0, 2, 0.0);
+ matrix_.setDouble(1, 2, 0.0);
+ matrix_.setDouble(2, 2, 1.0);
+ matrix_.setDouble(3, 2, 0.0);
+ matrix_.setDouble(2, 3, 0.0);
+}
+
void Transform::TransformPoint(Point& point) const {
TransformPointInternal(matrix_, point);
}
« no previous file with comments | « ui/gfx/transform.h ('k') | ui/gfx/transform_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698