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

Unified Diff: mojo/skia/type_converters.cc

Issue 1534033002: Improve Ganesh helpers. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-8
Patch Set: rebase Created 4 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 | « mojo/skia/type_converters.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/skia/type_converters.cc
diff --git a/mojo/skia/type_converters.cc b/mojo/skia/type_converters.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ddc9687e55e7d684001fc0f7e7f515470128de88
--- /dev/null
+++ b/mojo/skia/type_converters.cc
@@ -0,0 +1,99 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "mojo/skia/type_converters.h"
+
+namespace mojo {
+
+SkPoint TypeConverter<SkPoint, mojo::Point>::Convert(const mojo::Point& input) {
+ return SkPoint::Make(input.x, input.y);
+}
+
+mojo::Point TypeConverter<mojo::Point, SkPoint>::Convert(const SkPoint& input) {
+ mojo::Point output;
+ output.x = input.x();
+ output.y = input.y();
+ return output;
+}
+
+SkRect TypeConverter<SkRect, mojo::Rect>::Convert(const mojo::Rect& input) {
+ return SkRect::MakeXYWH(input.x, input.y, input.width, input.height);
+}
+
+mojo::Rect TypeConverter<mojo::Rect, SkRect>::Convert(const SkRect& input) {
+ mojo::Rect output;
+ output.x = input.x();
+ output.y = input.y();
+ output.width = input.width();
+ output.height = input.height();
+ return output;
+}
+
+SkRRect TypeConverter<SkRRect, mojo::RRect>::Convert(const mojo::RRect& input) {
+ SkVector radii[4] = {
+ {input.top_left_radius_x, input.top_left_radius_y},
+ {input.top_right_radius_x, input.top_right_radius_y},
+ {input.bottom_left_radius_x, input.bottom_left_radius_y},
+ {input.bottom_right_radius_x, input.bottom_right_radius_y}};
+ SkRRect output;
+ output.setRectRadii(
+ SkRect::MakeXYWH(input.x, input.y, input.width, input.height), radii);
+ return output;
+}
+
+mojo::RRect TypeConverter<mojo::RRect, SkRRect>::Convert(const SkRRect& input) {
+ mojo::RRect output;
+ output.x = input.rect().x();
+ output.y = input.rect().y();
+ output.width = input.rect().width();
+ output.height = input.rect().height();
+ output.top_left_radius_x = input.radii(SkRRect::kUpperLeft_Corner).x();
+ output.top_left_radius_y = input.radii(SkRRect::kUpperLeft_Corner).y();
+ output.top_right_radius_x = input.radii(SkRRect::kUpperRight_Corner).x();
+ output.top_right_radius_y = input.radii(SkRRect::kUpperRight_Corner).y();
+ output.bottom_left_radius_x = input.radii(SkRRect::kLowerLeft_Corner).x();
+ output.bottom_left_radius_y = input.radii(SkRRect::kLowerLeft_Corner).y();
+ output.bottom_right_radius_x = input.radii(SkRRect::kLowerRight_Corner).x();
+ output.bottom_right_radius_y = input.radii(SkRRect::kLowerRight_Corner).y();
+ return output;
+}
+
+SkMatrix TypeConverter<SkMatrix, mojo::TransformPtr>::Convert(
+ const mojo::TransformPtr& input) {
+ if (!input)
+ return SkMatrix::I();
+
+ // Drop 3D components during conversion from 4x4 to 3x3.
+ SkMatrix output;
+ output.setAll(input->matrix[0], input->matrix[1], input->matrix[3],
+ input->matrix[4], input->matrix[5], input->matrix[7],
+ input->matrix[12], input->matrix[13], input->matrix[15]);
+ return output;
+}
+
+mojo::TransformPtr TypeConverter<mojo::TransformPtr, SkMatrix>::Convert(
+ const SkMatrix& input) {
+ // Expand 3x3 to 4x4.
+ auto output = mojo::Transform::New();
+ output->matrix.resize(16u);
+ output->matrix[0] = input[0];
+ output->matrix[1] = input[1];
+ output->matrix[2] = 0.f;
+ output->matrix[3] = input[2];
+ output->matrix[4] = input[3];
+ output->matrix[5] = input[4];
+ output->matrix[6] = 0.f;
+ output->matrix[7] = input[5];
+ output->matrix[8] = 0.f;
+ output->matrix[9] = 0.f;
+ output->matrix[10] = 1.f;
+ output->matrix[11] = 0.f;
+ output->matrix[12] = input[6];
+ output->matrix[13] = input[7];
+ output->matrix[14] = 0.f;
+ output->matrix[15] = input[8];
+ return output.Pass();
+}
+
+} // namespace mojo
« no previous file with comments | « mojo/skia/type_converters.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698