2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
22 /// The EvasMap is an opaque handle to map points.
30 /// Creates and initializes a new instance of the EvasMap class.
32 /// <param name="count">The number of points in the map</param>
33 public EvasMap(int count)
35 _evasMap = Interop.Evas.evas_map_new(count);
39 internal EvasMap(IntPtr handle)
49 Interop.Evas.evas_map_free(_evasMap);
53 internal IntPtr Handle
62 /// Gets or sets the flag of the object move synchronization for map rendering.
64 public bool IsMoveSync
68 return Interop.Evas.evas_map_util_object_move_sync_get(_evasMap);
72 Interop.Evas.evas_map_util_object_move_sync_set(_evasMap, value);
77 /// Populates source and destination map points to exactly match the object.
79 /// <param name="obj">The object to use unmapped geometry to populate map coordinates</param>
80 public void PopulatePoints(EvasObject obj)
82 Interop.Evas.evas_map_util_points_populate_from_object_full(_evasMap, obj, 0);
86 /// Populates source and destination map points to exactly match the object.
88 /// <param name="obj">The object to use unmapped geometry to populate map coordinates</param>
90 /// The point Z coordinate hint (pre-perspective transform)This value is used for all four points.
92 public void PopulatePoints(EvasObject obj, int z)
94 Interop.Evas.evas_map_util_points_populate_from_object_full(_evasMap, obj, z);
98 /// Populates the source and destination map points to match the given geometry.
100 /// <param name="geometry">The geometry value contains X coordinate,Y coordinate,the width and height to use to calculate second and third points</param>
101 /// <param name="z">The Z coordinate hint (pre-perspective transform) This value is used for all four points.</param>
102 public void PopulatePoints(Rect geometry, int z)
104 Interop.Evas.evas_map_util_points_populate_from_geometry(_evasMap, geometry.X, geometry.Y, geometry.Width, geometry.Height, z);
110 /// <param name="degrees">The abount of degrees from 0.0 to 360.0 to rotate</param>
111 /// <param name="cx">rotation's center horizontal position.</param>
112 /// <param name="cy">rotation's center vertical position.</param>
113 public void Rotate(double degrees, int cx, int cy)
115 Interop.Evas.evas_map_util_rotate(_evasMap, degrees, cx, cy);
119 /// Rotates the map around 3 axes in 3D.
121 /// <param name="dx">The amount of degrees from 0.0 to 360.0 to rotate around X axis</param>
122 /// <param name="dy">The amount of degrees from 0.0 to 360.0 to rotate around Y axis</param>
123 /// <param name="dz">The amount of degrees from 0.0 to 360.0 to rotate around Z axis</param>
124 /// <param name="cx">The rotation's center horizontal position</param>
125 /// <param name="cy">The rotation's center vertical position</param>
126 /// <param name="cz">The rotation's center depth position</param>
127 public void Rotate3D(double dx, double dy, double dz, int cx, int cy, int cz)
129 Interop.Evas.evas_map_util_3d_rotate(_evasMap, dx, dy, dz, cx, cy, cz);
133 /// Changes the map point's coordinate.
135 /// <param name="idx">The index of point to change ,this must be smaller than map size.</param>
136 /// <param name="point">3D Point coordinate</param>
137 public void SetPointCoordinate(int idx, Point3D point)
139 Interop.Evas.evas_map_point_coord_set(_evasMap, idx, point.X, point.Y, point.Z);
143 /// Gets the map point's coordinate.
145 /// <param name="idx">The index of point to change ,this must be smaller than map size.</param>
146 /// <returns>The coordinates of the given point in the map.</returns>
147 public Point3D GetPointCoordinate(int idx)
150 Interop.Evas.evas_map_point_coord_get(_evasMap, idx, out point.X, out point.Y, out point.Z);
155 /// Changes the map to apply the given zooming.
157 /// <param name="x">The horizontal zoom to use</param>
158 /// <param name="y">The vertical zoom to use</param>
159 /// <param name="cx">The zooming center horizontal position</param>
160 /// <param name="cy">The zooming center vertical position</param>
161 public void Zoom(double x, double y, int cx, int cy)
163 Interop.Evas.evas_map_util_zoom(_evasMap, x, y, cx, cy);