1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" 6 7 namespace mojo { 8 9 // static 10 PointPtr TypeConverter<PointPtr, gfx::Point>::Convert(const gfx::Point& input) { 11 PointPtr point(Point::New()); 12 point->x = input.x(); 13 point->y = input.y(); 14 return point.Pass(); 15 } 16 17 // static 18 gfx::Point TypeConverter<gfx::Point, PointPtr>::Convert(const PointPtr& input) { 19 if (input.is_null()) 20 return gfx::Point(); 21 return gfx::Point(input->x, input->y); 22 } 23 24 // static 25 PointFPtr TypeConverter<PointFPtr, gfx::PointF>::Convert( 26 const gfx::PointF& input) { 27 PointFPtr point(PointF::New()); 28 point->x = input.x(); 29 point->y = input.y(); 30 return point.Pass(); 31 } 32 33 // static 34 gfx::PointF TypeConverter<gfx::PointF, PointFPtr>::Convert( 35 const PointFPtr& input) { 36 if (input.is_null()) 37 return gfx::PointF(); 38 return gfx::PointF(input->x, input->y); 39 } 40 41 // static 42 SizePtr TypeConverter<SizePtr, gfx::Size>::Convert(const gfx::Size& input) { 43 SizePtr size(Size::New()); 44 size->width = input.width(); 45 size->height = input.height(); 46 return size.Pass(); 47 } 48 49 // static 50 gfx::Size TypeConverter<gfx::Size, SizePtr>::Convert(const SizePtr& input) { 51 if (input.is_null()) 52 return gfx::Size(); 53 return gfx::Size(input->width, input->height); 54 } 55 56 // static 57 RectPtr TypeConverter<RectPtr, gfx::Rect>::Convert(const gfx::Rect& input) { 58 RectPtr rect(Rect::New()); 59 rect->x = input.x(); 60 rect->y = input.y(); 61 rect->width = input.width(); 62 rect->height = input.height(); 63 return rect.Pass(); 64 } 65 66 // static 67 gfx::Rect TypeConverter<gfx::Rect, RectPtr>::Convert(const RectPtr& input) { 68 if (input.is_null()) 69 return gfx::Rect(); 70 return gfx::Rect(input->x, input->y, input->width, input->height); 71 } 72 73 // static 74 RectFPtr TypeConverter<RectFPtr, gfx::RectF>::Convert(const gfx::RectF& input) { 75 RectFPtr rect(RectF::New()); 76 rect->x = input.x(); 77 rect->y = input.y(); 78 rect->width = input.width(); 79 rect->height = input.height(); 80 return rect.Pass(); 81 } 82 83 // static 84 gfx::RectF TypeConverter<gfx::RectF, RectFPtr>::Convert(const RectFPtr& input) { 85 if (input.is_null()) 86 return gfx::RectF(); 87 return gfx::RectF(input->x, input->y, input->width, input->height); 88 } 89 90 // static 91 TransformPtr TypeConverter<TransformPtr, gfx::Transform>::Convert( 92 const gfx::Transform& input) { 93 std::vector<float> storage(16); 94 input.matrix().asRowMajorf(&storage[0]); 95 mojo::Array<float> matrix; 96 matrix.Swap(&storage); 97 TransformPtr transform(Transform::New()); 98 transform->matrix = matrix.Pass(); 99 return transform.Pass(); 100 } 101 102 // static 103 gfx::Transform TypeConverter<gfx::Transform, TransformPtr>::Convert( 104 const TransformPtr& input) { 105 if (input.is_null()) 106 return gfx::Transform(); 107 gfx::Transform transform(gfx::Transform::kSkipInitialization); 108 transform.matrix().setRowMajorf(&input->matrix.storage()[0]); 109 return transform; 110 } 111 112 } // namespace mojo 113