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>
81 /// The point Z coordinate hint (pre-perspective transform)This value is used for all four points.
83 public void PopulatePoints(EvasObject obj, int z)
85 Interop.Evas.evas_map_util_points_populate_from_object_full(_evasMap, obj, z);
89 /// Populates the source and destination map points to match the given geometry.
91 /// <param name="geometry">The geometry value contains X coordinate,Y coordinate,the width and height to use to calculate second and third points</param>
92 /// <param name="z">The Z coordinate hint (pre-perspective transform) This value is used for all four points.</param>
93 public void PopulatePoints(Rect geometry, int z)
95 Interop.Evas.evas_map_util_points_populate_from_geometry(_evasMap, geometry.X, geometry.Y, geometry.Width, geometry.Height, z);
99 /// Rotates the map around 3 axes in 3D.
101 /// <param name="dx">The amount of degrees from 0.0 to 360.0 to rotate around X axis</param>
102 /// <param name="dy">The amount of degrees from 0.0 to 360.0 to rotate around Y axis</param>
103 /// <param name="dz">The amount of degrees from 0.0 to 360.0 to rotate around Z axis</param>
104 /// <param name="cx">The rotation's center horizontal position</param>
105 /// <param name="cy">The rotation's center vertical position</param>
106 /// <param name="cz">The rotation's center vertical position</param>
107 public void Rotate3D(double dx, double dy, double dz, int cx, int cy, int cz)
109 Interop.Evas.evas_map_util_3d_rotate(_evasMap, dx, dy, dz, cx, cy, cz);
113 /// Changes the map point's coordinate.
115 /// <param name="idx">The index of point to change ,this must be smaller than map size.</param>
116 /// <param name="point">3D Point coordinate</param>
117 public void SetPointCoordinate(int idx, Point3D point)
119 Interop.Evas.evas_map_point_coord_set(_evasMap, idx, point.X, point.Y, point.Z);
123 /// Gets the map point's coordinate.
125 /// <param name="idx">The index of point to change ,this must be smaller than map size.</param>
126 /// <returns>The coordinates of the given point in the map.</returns>
127 public Point3D GetPointCoordinate(int idx)
130 Interop.Evas.evas_map_point_coord_get(_evasMap, idx, out point.X, out point.Y, out point.Z);
135 /// Changes the map to apply the given zooming.
137 /// <param name="x">The horizontal zoom to use</param>
138 /// <param name="y">The vertical zoom to use</param>
139 /// <param name="cx">The zooming center horizontal position</param>
140 /// <param name="cy">The zooming center vertical position</param>
141 public void Zoom(double x, double y, int cx, int cy)
143 Interop.Evas.evas_map_util_zoom(_evasMap, x, y, cx, cy);