Index: ui/gfx/transform_util.cc |
diff --git a/ui/gfx/transform_util.cc b/ui/gfx/transform_util.cc |
index c8ef5736d3e4b51103ff0c73a4d1f82496a74ef2..268aa3862c733525a7de4a4433a0cf036da8bfc3 100644 |
--- a/ui/gfx/transform_util.cc |
+++ b/ui/gfx/transform_util.cc |
@@ -315,4 +315,74 @@ Transform ComposeTransform(const DecomposedTransform& decomp) { |
return to_return; |
} |
+Transform CreateGfxTransform( |
+ double col1row1, double col1row2, double col1row3, double col1row4, |
+ double col2row1, double col2row2, double col2row3, double col2row4, |
+ double col3row1, double col3row2, double col3row3, double col3row4, |
+ double col4row1, double col4row2, double col4row3, double col4row4) |
+{ |
+ Transform result(Transform::kSkipInitialization); |
+ SkMatrix44& matrix = result.matrix(); |
+ |
+ // Initialize column 1 |
+ matrix.setDouble(0, 0, col1row1); |
+ matrix.setDouble(1, 0, col1row2); |
+ matrix.setDouble(2, 0, col1row3); |
+ matrix.setDouble(3, 0, col1row4); |
+ |
+ // Initialize column 2 |
+ matrix.setDouble(0, 1, col2row1); |
+ matrix.setDouble(1, 1, col2row2); |
+ matrix.setDouble(2, 1, col2row3); |
+ matrix.setDouble(3, 1, col2row4); |
+ |
+ // Initialize column 3 |
+ matrix.setDouble(0, 2, col3row1); |
+ matrix.setDouble(1, 2, col3row2); |
+ matrix.setDouble(2, 2, col3row3); |
+ matrix.setDouble(3, 2, col3row4); |
+ |
+ // Initialize column 4 |
+ matrix.setDouble(0, 3, col4row1); |
+ matrix.setDouble(1, 3, col4row2); |
+ matrix.setDouble(2, 3, col4row3); |
+ matrix.setDouble(3, 3, col4row4); |
+ |
+ return result; |
+} |
+ |
+Transform CreateGfxTransform( |
+ double col1row1, double col1row2, double col2row1, |
+ double col2row2, double x_translation, double y_translation) |
+{ |
+ gfx::Transform result; |
+ SkMatrix44& matrix = result.matrix(); |
+ 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); |
+ |
+ return result; |
+} |
+ |
+void FlattenTransformTo2d(Transform& transform) { |
+ // Set both the 3rd row and 3rd column to (0, 0, 1, 0). |
+ transform.matrix().setDouble(2, 0, 0); |
+ transform.matrix().setDouble(2, 1, 0); |
+ transform.matrix().setDouble(0, 2, 0); |
+ transform.matrix().setDouble(1, 2, 0); |
+ transform.matrix().setDouble(2, 2, 1); |
+ transform.matrix().setDouble(3, 2, 0); |
+ transform.matrix().setDouble(2, 3, 0); |
+} |
+ |
+// Constructs a flattened version of the given transform. |
+Transform CreateFlattenedTransform(const Transform& transform) { |
+ Transform result = transform; |
+ FlattenTransformTo2d(result); |
+ return result; |
+} |
+ |
} // namespace ui |