| 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
|
|
|