\hypertarget{group__Evas__Object__Group__Map}{}\doxysection{UV Mapping (Rotation, Perspective, 3D...)}
\label{group__Evas__Object__Group__Map}\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}


Evas allows different transformations to be applied to all kinds of objects.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full}} (Evas\+\_\+\+Map $\ast$m, const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} z)
\begin{DoxyCompactList}\small\item\em Populate source and destination map points to match exactly object. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object}} (Evas\+\_\+\+Map $\ast$m, const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Populate source and destination map points to match exactly object. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+geometry}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} x, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} y, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} w, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} h, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} z)
\begin{DoxyCompactList}\small\item\em Populate source and destination map points to match given geometry. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gac722b2b4b2673c8b6cfac99512105275}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+color\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, int r, int g, int b, int a)
\begin{DoxyCompactList}\small\item\em Set color of all points to given color. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate}} (Evas\+\_\+\+Map $\ast$m, double degrees, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cy)
\begin{DoxyCompactList}\small\item\em Change the map to apply the given rotation. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga3c237f1d8191490536a79ffdfeca757a}{evas\+\_\+map\+\_\+util\+\_\+zoom}} (Evas\+\_\+\+Map $\ast$m, double zoomx, double zoomy, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cy)
\begin{DoxyCompactList}\small\item\em Change the map to apply the given zooming. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate}} (Evas\+\_\+\+Map $\ast$m, double dx, double dy, double dz, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cy, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} cz)
\begin{DoxyCompactList}\small\item\em Rotate the map around 3 axes in 3D. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga2c67eb95636abdfdaacfbb51437f3ecc}{evas\+\_\+map\+\_\+util\+\_\+quat\+\_\+rotate}} (Evas\+\_\+\+Map $\ast$m, double qx, double qy, double qz, double qw, double cx, double cy, double cz)
\begin{DoxyCompactList}\small\item\em Rotate the map in 3D using a unit quaternion. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga27cc3c160ce2273889026ce58e32e503}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+lighting}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} lx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} ly, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} lz, int lr, int lg, int lb, int ar, int ag, int ab)
\begin{DoxyCompactList}\small\item\em Perform lighting calculations on the given Map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gaeaab7b6cc857d5b3e3a99b8c0efbab11}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+perspective}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} px, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} py, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} z0, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} foc)
\begin{DoxyCompactList}\small\item\em Apply a perspective transform to the map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Evas__Object__Group__Map_ga2fbfe112be2246ec4e0cb49f4e38088a}{evas\+\_\+map\+\_\+util\+\_\+clockwise\+\_\+get}} (Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Get the clockwise state of a map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API Evas\+\_\+\+Map $\ast$ \mbox{\hyperlink{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}{evas\+\_\+map\+\_\+new}} (int count)
\begin{DoxyCompactList}\small\item\em Create map of transformation points to be later used with an Evas object. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7899c76876aff4594596df069d68b637}{evas\+\_\+map\+\_\+smooth\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} enabled)
\begin{DoxyCompactList}\small\item\em Set the smoothing for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Evas__Object__Group__Map_ga414d798db15e961fbd36d6cc21526644}{evas\+\_\+map\+\_\+smooth\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Get the smoothing for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1be766cd6c3f6f637973c93da5b834f3}{evas\+\_\+map\+\_\+alpha\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} enabled)
\begin{DoxyCompactList}\small\item\em Set the alpha flag for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Evas__Object__Group__Map_gaa1909eb9d9d796dd8a286d24e6aaf5fc}{evas\+\_\+map\+\_\+alpha\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Get the alpha flag for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga4f2eca3c9d4f87f36e67597c6280cdf8}{evas\+\_\+map\+\_\+util\+\_\+object\+\_\+move\+\_\+sync\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} enabled)
\begin{DoxyCompactList}\small\item\em Set the flag of the object move synchronization for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Evas__Object__Group__Map_ga823695d2adbee9bf8692628200276c11}{evas\+\_\+map\+\_\+util\+\_\+object\+\_\+move\+\_\+sync\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Get the flag of the object move synchronization for map rendering. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API Evas\+\_\+\+Map $\ast$ \mbox{\hyperlink{group__Evas__Object__Group__Map_ga30015ec250abb4e51d0d0622724c3b20}{evas\+\_\+map\+\_\+dup}} (const Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Copy a previously allocated map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}{evas\+\_\+map\+\_\+free}} (Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Free a previously allocated map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API int \mbox{\hyperlink{group__Evas__Object__Group__Map_gaeffa01ccf059fc5f91d81e781616732e}{evas\+\_\+map\+\_\+count\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m)
\begin{DoxyCompactList}\small\item\em Get a maps size. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} \mbox{\hyperlink{group__Evas__Object__Group__Map_gaf9545ade4830730af2609cc41cc0b6f9}{evas\+\_\+map\+\_\+coords\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m, double x, double y, double $\ast$mx, double $\ast$my, int grab)
\begin{DoxyCompactList}\small\item\em Apply a map transformation on given coordinate. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, int idx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} x, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} y, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} z)
\begin{DoxyCompactList}\small\item\em Change the map point\textquotesingle{}s coordinate. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gaf5b67b4b12385b064027c7167fc4211b}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m, int idx, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$x, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$y, \mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$z)
\begin{DoxyCompactList}\small\item\em Get the map point\textquotesingle{}s coordinate. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, int idx, double u, double v)
\begin{DoxyCompactList}\small\item\em Change the map point\textquotesingle{}s U and V texture source point. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_gaf1f7a81b4805864b05995141e13fb4b1}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m, int idx, double $\ast$u, double $\ast$v)
\begin{DoxyCompactList}\small\item\em Get the map point\textquotesingle{}s U and V texture source points. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}{evas\+\_\+map\+\_\+point\+\_\+color\+\_\+set}} (Evas\+\_\+\+Map $\ast$m, int idx, int r, int g, int b, int a)
\begin{DoxyCompactList}\small\item\em Set the color of a vertex in the map. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1d5a9f95a7428bc1b7ce110ea60683f5}{evas\+\_\+map\+\_\+point\+\_\+color\+\_\+get}} (const Evas\+\_\+\+Map $\ast$m, int idx, int $\ast$r, int $\ast$g, int $\ast$b, int $\ast$a)
\begin{DoxyCompactList}\small\item\em Get the color set on a vertex in the map. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Evas allows different transformations to be applied to all kinds of objects. 

These are applied by means of UV mapping.

With UV mapping, one maps points in the source object to a 3D space positioning at target. This allows rotation, perspective, scale and lots of other effects, depending on the map that is used.

Each map point may carry a multiplier color. If properly calculated, these can do shading effects on the object, producing 3D effects.

As usual, Evas provides both the raw and easy to use methods. The raw methods allow developers to create their maps somewhere else, possibly loading them from some file format. The easy to use methods calculate the points given some high-\/level parameters such as rotation angle, ambient light, and so on.

\begin{DoxyNote}{Note}
applying mapping will reduce performance, so use with care. The impact on performance depends on engine in use. Software is quite optimized, but not as fast as Open\+GL.
\end{DoxyNote}
\hypertarget{group__Evas__Object__Group__Map_sec-map-points}{}\doxysubsection{Map points}\label{group__Evas__Object__Group__Map_sec-map-points}
\hypertarget{group__Evas__Object__Group__Map_subsec-rotation}{}\doxysubsubsection{Rotation}\label{group__Evas__Object__Group__Map_subsec-rotation}
A map consists of a set of points, currently only four are supported. Each of these points contains a set of canvas coordinates {\ttfamily x} and {\ttfamily y} that can be used to alter the geometry of the mapped object, and a {\ttfamily z} coordinate that indicates the depth of that point. This last coordinate does not normally affect the map, but it\textquotesingle{}s used by several of the utility functions to calculate the right position of the point given other parameters.

The coordinates for each point are set with \mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}}. The following image shows a map set to match the geometry of an existing object.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-set-map-points-1}}
\end{DoxyImageNoCaption}


This is a common practice, so there are a few functions that help make it easier.

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+geometry()}} sets the coordinates of each point in the given map to match the rectangle defined by the function parameters.

\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}} and \mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}} both take an object and set the map points to match its geometry. The difference between the two is that the first function sets the {\ttfamily z} value of all points to 0, while the latter receives the value to set in said coordinate as a parameter.

The following lines of code all produce the same result as in the image above. 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}{evas\_map\_util\_points\_populate\_from\_geometry}}(m,\ 100,\ 100,\ 200,\ 200,\ 0);}
\DoxyCodeLine{\textcolor{comment}{//\ Assuming\ o\ is\ our\ original\ object}}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_ga335c8ee6eaeaac9710656af4f8b0db91}{evas\_object\_move}}(o,\ 100,\ 100);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gacad94595f83580c18908cb3b69b08d1a}{evas\_object\_resize}}(o,\ 200,\ 200);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\_map\_util\_points\_populate\_from\_object}}(m,\ o);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\_map\_util\_points\_populate\_from\_object\_full}}(m,\ o,\ 0);}

\end{DoxyCode}


Several effects can be applied to an object by simply setting each point of the map to the right coordinates. For example, a simulated perspective could be achieve as follows.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-set-map-points-2}}
\end{DoxyImageNoCaption}


As said before, the {\ttfamily z} coordinate is unused here so when setting points by hand, its value is of no importance.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-set-map-points-3}}
\end{DoxyImageNoCaption}


In all three cases above, setting the map to be used by the object is the same. 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}

\end{DoxyCode}


Doing things this way, however, is a lot of work that can be avoided by using the provided utility functions, as described in the next section.\hypertarget{group__Evas__Object__Group__Map_map-utils}{}\doxysubsection{Utility functions}\label{group__Evas__Object__Group__Map_map-utils}
Utility functions take an already set up map and alter it to produce a specific effect. For example, to rotate an object around its own center you would need to take the rotation angle, the coordinates of each corner of the object and do all the math to get the new set of coordinates that need to be set in the map.

Or you can use this code\+: 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Basic_ga6e8e78e110392480dd612df86a16b630}{evas\_object\_geometry\_get}}(o,\ \&x,\ \&y,\ \&w,\ \&h);}
\DoxyCodeLine{m\ =\ \mbox{\hyperlink{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}{evas\_map\_new}}(4);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\_map\_util\_points\_populate\_from\_object}}(m,\ o);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\_map\_util\_rotate}}(m,\ 45,\ x\ +\ (w\ /\ 2),\ y\ +\ (h\ /\ 2));}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}{evas\_map\_free}}(m);}

\end{DoxyCode}


Which will rotate the object around its center point in a 45 degree angle in the clockwise direction, taking it from this

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-rotation-2d-1}}
\end{DoxyImageNoCaption}


to this

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-rotation-2d-2}}
\end{DoxyImageNoCaption}


Objects may be rotated around any other point just by setting the last two paramaters of the \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} function to the right values. A circle of roughly the diameter of the object overlaid on each image shows where the center of rotation is set for each example.

For example, this code 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Basic_ga6e8e78e110392480dd612df86a16b630}{evas\_object\_geometry\_get}}(o,\ \&x,\ \&y,\ \&w,\ \&h);}
\DoxyCodeLine{m\ =\ \mbox{\hyperlink{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}{evas\_map\_new}}(4);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\_map\_util\_points\_populate\_from\_object}}(m,\ o);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\_map\_util\_rotate}}(m,\ 45,\ x\ +\ w\ -\/\ 20,\ y\ +\ h\ -\/\ 20);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}{evas\_map\_free}}(m);}

\end{DoxyCode}


produces something like

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-rotation-2d-3}}
\end{DoxyImageNoCaption}


And the following 
\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Canvas_ga9db9974a647850d7bd49afb506c9717a}{evas\_output\_size\_get}}(evas,\ \&w,\ \&h);}
\DoxyCodeLine{m\ =\ \mbox{\hyperlink{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}{evas\_map\_new}}(4);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\_map\_util\_points\_populate\_from\_object}}(m,\ o);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\_map\_util\_rotate}}(m,\ 45,\ w,\ h);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}{evas\_map\_free}}(m);}

\end{DoxyCode}


rotates the object around the center of the window

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-rotation-2d-4}}
\end{DoxyImageNoCaption}
\hypertarget{group__Evas__Object__Group__Map_subsec-3d}{}\doxysubsubsection{3\+D Maps}\label{group__Evas__Object__Group__Map_subsec-3d}
Maps can also be used to achieve the effect of 3-\/dimensionality. When doing this, the {\ttfamily z} coordinate of each point counts, with higher values meaning the point is further into the screen, and smaller values (negative, usually) meaning the point is closer towards the user.

Thinking in 3D also introduces the concept of back-\/face of an object. An object is said to be facing the user when all its points are placed in a clockwise fashion. The next image shows this, with each point showing the with which is identified within the map.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-point-order-face}}
\end{DoxyImageNoCaption}


Rotating this map around the {\ttfamily Y} axis would leave the order of the points in a counter-\/clockwise fashion, as seen in the following image.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-point-order-back}}
\end{DoxyImageNoCaption}


This way we can say that we are looking at the back face of the object. This will have stronger implications later when we talk about lighting.

To know if a map is facing towards the user or not it\textquotesingle{}s enough to use the \mbox{\hyperlink{group__Evas__Object__Group__Map_ga2fbfe112be2246ec4e0cb49f4e38088a}{evas\+\_\+map\+\_\+util\+\_\+clockwise\+\_\+get()}} function, but this is normally done after all the other operations are applied on the map.\hypertarget{group__Evas__Object__Group__Map_subsec-3d-rot}{}\doxysubsubsection{3\+D rotation and perspective}\label{group__Evas__Object__Group__Map_subsec-3d-rot}
Much like \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}}, there\textquotesingle{}s the function \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate()}} that transforms the map to apply a 3D rotation to an object. As in its 2D counterpart, the rotation can be applied around any point in the canvas, this time with a {\ttfamily z} coordinate too. The rotation can also be around any of the 3 axis.

Starting from this simple setup

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-3d-basic-1}}
\end{DoxyImageNoCaption}


and setting maps so that the blue square to rotate on all axis around a sphere that uses the object as its center, and the red square to rotate around the {\ttfamily Y} axis, we get the following. A simple overlay over the image shows the original geometry of each object and the axis around which they are being rotated, with the {\ttfamily Z} one not appearing due to being orthogonal to the screen.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-3d-basic-2}}
\end{DoxyImageNoCaption}


which doesn\textquotesingle{}t look very real. This can be helped by adding perspective to the transformation, which can be simply done by calling \mbox{\hyperlink{group__Evas__Object__Group__Map_gaeaab7b6cc857d5b3e3a99b8c0efbab11}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+perspective()}} on the map after its position has been set. The result in this case, making the vanishing point the center of each object\+:

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-3d-basic-3}}
\end{DoxyImageNoCaption}
\hypertarget{group__Evas__Object__Group__Map_sec-color}{}\doxysubsection{Color and lighting}\label{group__Evas__Object__Group__Map_sec-color}
Each point in a map can be set to a color, which will be multiplied with the objects own color and linearly interpolated in between adjacent points. This is done with \mbox{\hyperlink{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}{evas\+\_\+map\+\_\+point\+\_\+color\+\_\+set()}} for each point of the map, or \mbox{\hyperlink{group__Evas__Object__Group__Map_gac722b2b4b2673c8b6cfac99512105275}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+color\+\_\+set()}} to set every point to the same color.

When using 3D effects, colors can be used to improve the looks of them by simulating a light source. The \mbox{\hyperlink{group__Evas__Object__Group__Map_ga27cc3c160ce2273889026ce58e32e503}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+lighting()}} function makes this task easier by taking the coordinates of the light source and its color, along with the color of the ambient light. Evas then sets the color of each point based on the distance to the light source, the angle with which the object is facing the light and the ambient light. Here, the orientation of each point as explained before, becomes more important. If the map is defined counter-\/clockwise, the object will be facing away from the user and thus become obscured, since no light would be reflecting from it.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Object facing the light source
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light2}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Same object facing away from the user
\end{DoxyNote}
\hypertarget{group__Evas__Object__Group__Map_Image}{}\doxysubsection{mapping}\label{group__Evas__Object__Group__Map_Image}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-uv-mapping-1}}
\end{DoxyImageNoCaption}


Images need some special handling when mapped. Evas can easily take care of objects and do almost anything with them, but it\textquotesingle{}s completely oblivious to the content of images, so each point in the map needs to be told to what pixel in the source image it belongs. Failing to do may sometimes result in the expected behavior, or it may look like a partial work.

The next image illustrates one possibility of a map being set to an image object, without setting the right UV mapping for each point. The objects themselves are mapped properly to their new geometry, but the image content may not be displayed correctly within the mapped object.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-uv-mapping-2}}
\end{DoxyImageNoCaption}


Once Evas knows how to handle the source image within the map, it will transform it as needed. This is done with \mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}}, which tells the map to which pixel in image it maps.

To match our example images to the maps above all we need is the size of each image, which can always be found with \mbox{\hyperlink{group__Evas__Object__Image_ga29401fb02f1d51ddf09d195f10a004e7}{evas\+\_\+object\+\_\+image\+\_\+size\+\_\+get()}}.


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 0,\ 0,\ 0);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 1,\ 150,\ 0);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 2,\ 150,\ 200);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 3,\ 0,\ 200);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 0,\ 0,\ 0);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 1,\ 120,\ 0);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 2,\ 120,\ 160);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 3,\ 0,\ 160);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o2,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o2,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}

\end{DoxyCode}


To get

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-uv-mapping-3}}
\end{DoxyImageNoCaption}


Maps can also be set to use part of an image only, or even map them inverted, and combined with \mbox{\hyperlink{group__Evas__Object__Image_ga58b0ba36355fe0cfb49a6aaa819e2aa4}{evas\+\_\+object\+\_\+image\+\_\+source\+\_\+set()}} it can be used to achieve more interesting results.


\begin{DoxyCode}{0}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Image_ga29401fb02f1d51ddf09d195f10a004e7}{evas\_object\_image\_size\_get}}(\mbox{\hyperlink{group__Evas__Object__Image_ga538c0c01d550f96c4cf879c1c2e277ea}{evas\_object\_image\_source\_get}}(o),\ \&w,\ \&h);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 0,\ 0,\ h);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 1,\ w,\ h);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 2,\ w,\ h\ /\ 3);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\_map\_point\_image\_uv\_set}}(m,\ 3,\ 0,\ h\ /\ 3);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\_object\_map\_set}}(o,\ m);}
\DoxyCodeLine{\mbox{\hyperlink{group__Evas__Object__Group_gafca4ed9f6cb6063ff7e8d9193418129e}{evas\_object\_map\_enable\_set}}(o,\ \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});}

\end{DoxyCode}


  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-uv-mapping-4}}
\end{DoxyImageNoCaption}


Examples\+: \begin{DoxyItemize}
\item \mbox{\hyperlink{Example_Evas_Map_Overview}{Evas Map -\/ Overview}} \end{DoxyItemize}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}\label{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_points\_populate\_from\_object\_full@{evas\_map\_util\_points\_populate\_from\_object\_full}}
\index{evas\_map\_util\_points\_populate\_from\_object\_full@{evas\_map\_util\_points\_populate\_from\_object\_full}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_points\_populate\_from\_object\_full()}{evas\_map\_util\_points\_populate\_from\_object\_full()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{z }\end{DoxyParamCaption})}



Populate source and destination map points to match exactly object. 

Usually one initialize map of an object to match it\textquotesingle{}s original position and size, then transform these with evas\+\_\+map\+\_\+util\+\_\+$\ast$ functions, such as \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} or \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate()}}. The original set is done by this function, avoiding code duplication all around.


\begin{DoxyParams}{Parameters}
{\em m} & map to change all 4 points (must be of size 4). \\
\hline
{\em obj} & object to use unmapped geometry to populate map coordinates. \\
\hline
{\em z} & Point Z Coordinate hint (pre-\/perspective transform). This value will be used for all four points.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}\label{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_points\_populate\_from\_object@{evas\_map\_util\_points\_populate\_from\_object}}
\index{evas\_map\_util\_points\_populate\_from\_object@{evas\_map\_util\_points\_populate\_from\_object}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_points\_populate\_from\_object()}{evas\_map\_util\_points\_populate\_from\_object()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{const \mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object}} $\ast$}]{obj }\end{DoxyParamCaption})}



Populate source and destination map points to match exactly object. 

Usually one initialize map of an object to match it\textquotesingle{}s original position and size, then transform these with evas\+\_\+map\+\_\+util\+\_\+$\ast$ functions, such as \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} or \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate()}}. The original set is done by this function, avoiding code duplication all around.

Z Point coordinate is assumed as 0 (zero).


\begin{DoxyParams}{Parameters}
{\em m} & map to change all 4 points (must be of size 4). \\
\hline
{\em obj} & object to use unmapped geometry to populate map coordinates.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+geometry()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}\label{group__Evas__Object__Group__Map_ga769e1ce26efed137c96bc6983f318439}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_points\_populate\_from\_geometry@{evas\_map\_util\_points\_populate\_from\_geometry}}
\index{evas\_map\_util\_points\_populate\_from\_geometry@{evas\_map\_util\_points\_populate\_from\_geometry}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_points\_populate\_from\_geometry()}{evas\_map\_util\_points\_populate\_from\_geometry()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+geometry (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{x,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{y,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{w,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{h,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{z }\end{DoxyParamCaption})}



Populate source and destination map points to match given geometry. 

Similar to \mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}}, this call takes raw values instead of querying object\textquotesingle{}s unmapped geometry. The given width will be used to calculate destination points (\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}}) and set the image uv (\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}}).


\begin{DoxyParams}{Parameters}
{\em m} & map to change all 4 points (must be of size 4). \\
\hline
{\em x} & Point X Coordinate \\
\hline
{\em y} & Point Y Coordinate \\
\hline
{\em w} & width to use to calculate second and third points. \\
\hline
{\em h} & height to use to calculate third and fourth points. \\
\hline
{\em z} & Point Z Coordinate hint (pre-\/perspective transform). This value will be used for all four points.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gac722b2b4b2673c8b6cfac99512105275}\label{group__Evas__Object__Group__Map_gac722b2b4b2673c8b6cfac99512105275}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_points\_color\_set@{evas\_map\_util\_points\_color\_set}}
\index{evas\_map\_util\_points\_color\_set@{evas\_map\_util\_points\_color\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_points\_color\_set()}{evas\_map\_util\_points\_color\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+points\+\_\+color\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{r,  }\item[{int}]{g,  }\item[{int}]{b,  }\item[{int}]{a }\end{DoxyParamCaption})}



Set color of all points to given color. 

This call is useful to reuse maps after they had 3d lighting or any other colorization applied before.


\begin{DoxyParams}{Parameters}
{\em m} & map to change the color of. \\
\hline
{\em r} & red (0 -\/ 255) \\
\hline
{\em g} & green (0 -\/ 255) \\
\hline
{\em b} & blue (0 -\/ 255) \\
\hline
{\em a} & alpha (0 -\/ 255)\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}{evas\+\_\+map\+\_\+point\+\_\+color\+\_\+set()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}\label{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_rotate@{evas\_map\_util\_rotate}}
\index{evas\_map\_util\_rotate@{evas\_map\_util\_rotate}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_rotate()}{evas\_map\_util\_rotate()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+rotate (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{double}]{degrees,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cy }\end{DoxyParamCaption})}



Change the map to apply the given rotation. 

This rotates the indicated map\textquotesingle{}s coordinates around the center coordinate given by {\ttfamily cx} and {\ttfamily cy} as the rotation center. The points will have their X and Y coordinates rotated clockwise by {\ttfamily degrees} degrees (360.\+0 is a full rotation). Negative values for degrees will rotate counter-\/clockwise by that amount. All coordinates are canvas global coordinates.


\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em degrees} & amount of degrees from 0.\+0 to 360.\+0 to rotate. \\
\hline
{\em cx} & rotation\textquotesingle{}s center horizontal position. \\
\hline
{\em cy} & rotation\textquotesingle{}s center vertical position.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga3c237f1d8191490536a79ffdfeca757a}{evas\+\_\+map\+\_\+util\+\_\+zoom()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga3c237f1d8191490536a79ffdfeca757a}\label{group__Evas__Object__Group__Map_ga3c237f1d8191490536a79ffdfeca757a}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_zoom@{evas\_map\_util\_zoom}}
\index{evas\_map\_util\_zoom@{evas\_map\_util\_zoom}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_zoom()}{evas\_map\_util\_zoom()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+zoom (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{double}]{zoomx,  }\item[{double}]{zoomy,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cy }\end{DoxyParamCaption})}



Change the map to apply the given zooming. 

Like \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}}, this zooms the points of the map from a center point. That center is defined by {\ttfamily cx} and {\ttfamily cy}. The {\ttfamily zoomx} and {\ttfamily zoomy} parameters specify how much to zoom in the X and Y direction respectively. A value of 1.\+0 means \char`\"{}don\textquotesingle{}t zoom\char`\"{}. 2.\+0 means \char`\"{}double the size\char`\"{}. 0.\+5 is \char`\"{}half the size\char`\"{} etc. All coordinates are canvas global coordinates.


\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em zoomx} & horizontal zoom to use. \\
\hline
{\em zoomy} & vertical zoom to use. \\
\hline
{\em cx} & zooming center horizontal position. \\
\hline
{\em cy} & zooming center vertical position.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}\label{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_3d\_rotate@{evas\_map\_util\_3d\_rotate}}
\index{evas\_map\_util\_3d\_rotate@{evas\_map\_util\_3d\_rotate}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_3d\_rotate()}{evas\_map\_util\_3d\_rotate()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{double}]{dx,  }\item[{double}]{dy,  }\item[{double}]{dz,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cy,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{cz }\end{DoxyParamCaption})}



Rotate the map around 3 axes in 3D. 

This will rotate not just around the \char`\"{}\+Z\char`\"{} axis as in \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} (which is a convenience call for those only wanting 2D). This will rotate around the X, Y and Z axes. The Z axis points \char`\"{}into\char`\"{} the screen with low values at the screen and higher values further away. The X axis runs from left to right on the screen and the Y axis from top to bottom. Like with \mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} you provide a center point to rotate around (in 3D).


\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em dx} & amount of degrees from 0.\+0 to 360.\+0 to rotate around X axis. \\
\hline
{\em dy} & amount of degrees from 0.\+0 to 360.\+0 to rotate around Y axis. \\
\hline
{\em dz} & amount of degrees from 0.\+0 to 360.\+0 to rotate around Z axis. \\
\hline
{\em cx} & rotation\textquotesingle{}s center horizontal position. \\
\hline
{\em cy} & rotation\textquotesingle{}s center vertical position. \\
\hline
{\em cz} & rotation\textquotesingle{}s center vertical position. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga2c67eb95636abdfdaacfbb51437f3ecc}\label{group__Evas__Object__Group__Map_ga2c67eb95636abdfdaacfbb51437f3ecc}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_quat\_rotate@{evas\_map\_util\_quat\_rotate}}
\index{evas\_map\_util\_quat\_rotate@{evas\_map\_util\_quat\_rotate}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_quat\_rotate()}{evas\_map\_util\_quat\_rotate()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+quat\+\_\+rotate (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{double}]{qx,  }\item[{double}]{qy,  }\item[{double}]{qz,  }\item[{double}]{qw,  }\item[{double}]{cx,  }\item[{double}]{cy,  }\item[{double}]{cz }\end{DoxyParamCaption})}



Rotate the map in 3D using a unit quaternion. 

This will rotate in 3D using a unit quaternion. Like with \mbox{\hyperlink{group__Evas__Object__Group__Map_ga7fc91b978232af55383baa7eb5ff7037}{evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+rotate()}} you provide a center point to rotate around (in 3D).


\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em qx} & the x component of the imaginary part of the quaternion. \\
\hline
{\em qy} & the y component of the imaginary part of the quaternion. \\
\hline
{\em qz} & the z component of the imaginary part of the quaternion. \\
\hline
{\em qw} & the w component of the real part of the quaternion. \\
\hline
{\em cx} & rotation\textquotesingle{}s center x. \\
\hline
{\em cy} & rotation\textquotesingle{}s center y. \\
\hline
{\em cz} & rotation\textquotesingle{}s center z.\\
\hline
\end{DoxyParams}
\begin{DoxyWarning}{Warning}
Rotations can be done using a unit quaternion. Thus, this function expects a unit quaternion (i.\+e. qx² + qy² + qz² + qw² == 1). If this is not the case the behavior is undefined.
\end{DoxyWarning}
\begin{DoxySince}{Since}
1.\+8 
\end{DoxySince}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga27cc3c160ce2273889026ce58e32e503}\label{group__Evas__Object__Group__Map_ga27cc3c160ce2273889026ce58e32e503}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_3d\_lighting@{evas\_map\_util\_3d\_lighting}}
\index{evas\_map\_util\_3d\_lighting@{evas\_map\_util\_3d\_lighting}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_3d\_lighting()}{evas\_map\_util\_3d\_lighting()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+lighting (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{lx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{ly,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{lz,  }\item[{int}]{lr,  }\item[{int}]{lg,  }\item[{int}]{lb,  }\item[{int}]{ar,  }\item[{int}]{ag,  }\item[{int}]{ab }\end{DoxyParamCaption})}



Perform lighting calculations on the given Map. 

This is used to apply lighting calculations (from a single light source) to a given map. The R, G and B values of each vertex will be modified to reflect the lighting based on the light point coordinates, the light color and the ambient color, and at what angle the map is facing the light source. A surface should have its points be declared in a clockwise fashion if the face is \char`\"{}facing\char`\"{} towards you (as opposed to away from you) as faces have a \char`\"{}logical\char`\"{} side for lighting.

  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light3}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Grey object, no lighting used
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light4}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Lights out! Every color set to 0
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light5}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Ambient light to full black, red light coming from close at the bottom-\/left vertex
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light6}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Same light as before, but not the light is set to 0 and ambient light is cyan
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light7}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Both lights are on
\end{DoxyNote}
  
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth,height=\textheight/2,keepaspectratio=true]{map-light8}}
\end{DoxyImageNoCaption}
 \begin{DoxyNote}{Note}
Both lights again, but this time both are the same color.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em lx} & X coordinate in space of light point \\
\hline
{\em ly} & Y coordinate in space of light point \\
\hline
{\em lz} & Z coordinate in space of light point \\
\hline
{\em lr} & light red value (0 -\/ 255) \\
\hline
{\em lg} & light green value (0 -\/ 255) \\
\hline
{\em lb} & light blue value (0 -\/ 255) \\
\hline
{\em ar} & ambient color red value (0 -\/ 255) \\
\hline
{\em ag} & ambient color green value (0 -\/ 255) \\
\hline
{\em ab} & ambient color blue value (0 -\/ 255) \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaeaab7b6cc857d5b3e3a99b8c0efbab11}\label{group__Evas__Object__Group__Map_gaeaab7b6cc857d5b3e3a99b8c0efbab11}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_3d\_perspective@{evas\_map\_util\_3d\_perspective}}
\index{evas\_map\_util\_3d\_perspective@{evas\_map\_util\_3d\_perspective}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_3d\_perspective()}{evas\_map\_util\_3d\_perspective()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+3d\+\_\+perspective (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{px,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{py,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{z0,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{foc }\end{DoxyParamCaption})}



Apply a perspective transform to the map. 

This applies a given perspective (3D) to the map coordinates. X, Y and Z values are used. The px and py points specify the \char`\"{}infinite distance\char`\"{} point in the 3D conversion (where all lines converge to like when artists draw 3D by hand). The {\ttfamily z0} value specifies the z value at which there is a 1\+:1 mapping between spatial coordinates and screen coordinates. Any points on this z value will not have their X and Y values modified in the transform. Those further away (Z value higher) will shrink into the distance, and those less than this value will expand and become bigger. The {\ttfamily foc} value determines the \char`\"{}focal length\char`\"{} of the camera. This is in reality the distance between the camera lens plane itself (at or closer than this rendering results are undefined) and the \char`\"{}z0\char`\"{} z value. This allows for some \char`\"{}depth\char`\"{} control and {\ttfamily foc} must be greater than 0.


\begin{DoxyParams}{Parameters}
{\em m} & map to change. \\
\hline
{\em px} & The perspective distance X coordinate \\
\hline
{\em py} & The perspective distance Y coordinate \\
\hline
{\em z0} & The \char`\"{}0\char`\"{} z plane value \\
\hline
{\em foc} & The focal distance \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga2fbfe112be2246ec4e0cb49f4e38088a}\label{group__Evas__Object__Group__Map_ga2fbfe112be2246ec4e0cb49f4e38088a}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_clockwise\_get@{evas\_map\_util\_clockwise\_get}}
\index{evas\_map\_util\_clockwise\_get@{evas\_map\_util\_clockwise\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_clockwise\_get()}{evas\_map\_util\_clockwise\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} evas\+\_\+map\+\_\+util\+\_\+clockwise\+\_\+get (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Get the clockwise state of a map. 

This determines if the output points (X and Y. Z is not used) are clockwise or counter-\/clockwise. This can be used for \char`\"{}back-\/face culling\char`\"{}. This is where you hide objects that \char`\"{}face away\char`\"{} from you. In this case objects that are not clockwise.


\begin{DoxyParams}{Parameters}
{\em m} & map to query. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
1 if clockwise, 0 otherwise 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}\label{group__Evas__Object__Group__Map_gae1a034340cc380623a82c1b84f6a5525}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_new@{evas\_map\_new}}
\index{evas\_map\_new@{evas\_map\_new}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_new()}{evas\_map\_new()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API Evas\+\_\+\+Map $\ast$ evas\+\_\+map\+\_\+new (\begin{DoxyParamCaption}\item[{int}]{count }\end{DoxyParamCaption})}



Create map of transformation points to be later used with an Evas object. 

This creates a set of points (currently only 4 is supported. no other number for {\ttfamily count} will work). That is empty and ready to be modified with evas\+\_\+map calls.


\begin{DoxyParams}{Parameters}
{\em count} & number of points in the map. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated map or {\ttfamily NULL} on errors.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}{evas\+\_\+map\+\_\+free()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga30015ec250abb4e51d0d0622724c3b20}{evas\+\_\+map\+\_\+dup()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}}

\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\+\_\+object\+\_\+map\+\_\+set()}} 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga7899c76876aff4594596df069d68b637}\label{group__Evas__Object__Group__Map_ga7899c76876aff4594596df069d68b637}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_smooth\_set@{evas\_map\_smooth\_set}}
\index{evas\_map\_smooth\_set@{evas\_map\_smooth\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_smooth\_set()}{evas\_map\_smooth\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+smooth\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{enabled }\end{DoxyParamCaption})}



Set the smoothing for map rendering. 

This sets smoothing for map rendering. If the object is a type that has its own smoothing settings, then both the smooth settings for this object and the map must be turned off. By default smooth maps are enabled.


\begin{DoxyParams}{Parameters}
{\em m} & map to modify. Must not be NULL. \\
\hline
{\em enabled} & enable or disable smooth map rendering \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga414d798db15e961fbd36d6cc21526644}\label{group__Evas__Object__Group__Map_ga414d798db15e961fbd36d6cc21526644}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_smooth\_get@{evas\_map\_smooth\_get}}
\index{evas\_map\_smooth\_get@{evas\_map\_smooth\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_smooth\_get()}{evas\_map\_smooth\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} evas\+\_\+map\+\_\+smooth\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Get the smoothing for map rendering. 

This gets smoothing for map rendering.


\begin{DoxyParams}{Parameters}
{\em m} & map to get the smooth from. Must not be NULL. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily EINA\+\_\+\+TRUE} if the smooth is enabled, {\ttfamily EINA\+\_\+\+FALSE} otherwise. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga1be766cd6c3f6f637973c93da5b834f3}\label{group__Evas__Object__Group__Map_ga1be766cd6c3f6f637973c93da5b834f3}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_alpha\_set@{evas\_map\_alpha\_set}}
\index{evas\_map\_alpha\_set@{evas\_map\_alpha\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_alpha\_set()}{evas\_map\_alpha\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+alpha\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{enabled }\end{DoxyParamCaption})}



Set the alpha flag for map rendering. 

This sets alpha flag for map rendering. If the object is a type that has its own alpha settings, then this will take precedence. Only image objects have this currently. Setting this off stops alpha blending of the map area, and is useful if you know the object and/or all sub-\/objects is 100\% solid.


\begin{DoxyParams}{Parameters}
{\em m} & map to modify. Must not be NULL. \\
\hline
{\em enabled} & enable or disable alpha map rendering \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaa1909eb9d9d796dd8a286d24e6aaf5fc}\label{group__Evas__Object__Group__Map_gaa1909eb9d9d796dd8a286d24e6aaf5fc}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_alpha\_get@{evas\_map\_alpha\_get}}
\index{evas\_map\_alpha\_get@{evas\_map\_alpha\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_alpha\_get()}{evas\_map\_alpha\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} evas\+\_\+map\+\_\+alpha\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Get the alpha flag for map rendering. 

This gets the alpha flag for map rendering.


\begin{DoxyParams}{Parameters}
{\em m} & map to get the alpha from. Must not be NULL. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
EINA\+\_\+\+FALSE if map is NULL EINA\+\_\+\+TRUE otherwise. 
\end{DoxyReturn}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga4f2eca3c9d4f87f36e67597c6280cdf8}\label{group__Evas__Object__Group__Map_ga4f2eca3c9d4f87f36e67597c6280cdf8}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_object\_move\_sync\_set@{evas\_map\_util\_object\_move\_sync\_set}}
\index{evas\_map\_util\_object\_move\_sync\_set@{evas\_map\_util\_object\_move\_sync\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_object\_move\_sync\_set()}{evas\_map\_util\_object\_move\_sync\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+util\+\_\+object\+\_\+move\+\_\+sync\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{\mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}}}]{enabled }\end{DoxyParamCaption})}



Set the flag of the object move synchronization for map rendering. 

This sets the flag of the object move synchronization for map rendering. If the flag is set as enabled, the map will be moved as the object of the map is moved. By default, the flag of the object move synchronization is not enabled.


\begin{DoxyParams}{Parameters}
{\em m} & map to modify. Must not be NULL. \\
\hline
{\em enabled} & enable or disable the object move synchronization for map rendering. \\
\hline
\end{DoxyParams}
\begin{DoxySince}{Since}
1.\+13 
\end{DoxySince}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga823695d2adbee9bf8692628200276c11}\label{group__Evas__Object__Group__Map_ga823695d2adbee9bf8692628200276c11}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_util\_object\_move\_sync\_get@{evas\_map\_util\_object\_move\_sync\_get}}
\index{evas\_map\_util\_object\_move\_sync\_get@{evas\_map\_util\_object\_move\_sync\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_util\_object\_move\_sync\_get()}{evas\_map\_util\_object\_move\_sync\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} evas\+\_\+map\+\_\+util\+\_\+object\+\_\+move\+\_\+sync\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Get the flag of the object move synchronization for map rendering. 

This gets the flag of the object move synchronization for map rendering.


\begin{DoxyParams}{Parameters}
{\em m} & map to get the flag of the object move synchronization from. Must not be NULL. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
EINA\+\_\+\+FALSE if map is NULL EINA\+\_\+\+TRUE otherwise. 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+13 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga30015ec250abb4e51d0d0622724c3b20}\label{group__Evas__Object__Group__Map_ga30015ec250abb4e51d0d0622724c3b20}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_dup@{evas\_map\_dup}}
\index{evas\_map\_dup@{evas\_map\_dup}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_dup()}{evas\_map\_dup()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API Evas\+\_\+\+Map $\ast$ evas\+\_\+map\+\_\+dup (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Copy a previously allocated map. 

This makes a duplicate of the {\ttfamily m} object and returns it.


\begin{DoxyParams}{Parameters}
{\em m} & map to copy. Must not be NULL. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
newly allocated map with the same count and contents as {\ttfamily m}. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}\label{group__Evas__Object__Group__Map_ga219c74ba8e2a4ae4525d2f331b8b5e0a}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_free@{evas\_map\_free}}
\index{evas\_map\_free@{evas\_map\_free}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_free()}{evas\_map\_free()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+free (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Free a previously allocated map. 

This frees a given map {\ttfamily m} and all memory associated with it. You must NOT free a map returned by \mbox{\hyperlink{group__Evas__Object__Group_ga90e3944802458cfc356a6823d5caa827}{evas\+\_\+object\+\_\+map\+\_\+get()}} as this is internal.


\begin{DoxyParams}{Parameters}
{\em m} & map to free. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaeffa01ccf059fc5f91d81e781616732e}\label{group__Evas__Object__Group__Map_gaeffa01ccf059fc5f91d81e781616732e}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_count\_get@{evas\_map\_count\_get}}
\index{evas\_map\_count\_get@{evas\_map\_count\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_count\_get()}{evas\_map\_count\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API int evas\+\_\+map\+\_\+count\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m }\end{DoxyParamCaption})}



Get a maps size. 

Returns the number of points in a map. Should be at least 4.


\begin{DoxyParams}{Parameters}
{\em m} & map to get size. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
-\/1 on error, points otherwise. 
\end{DoxyReturn}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaf9545ade4830730af2609cc41cc0b6f9}\label{group__Evas__Object__Group__Map_gaf9545ade4830730af2609cc41cc0b6f9}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_coords\_get@{evas\_map\_coords\_get}}
\index{evas\_map\_coords\_get@{evas\_map\_coords\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_coords\_get()}{evas\_map\_coords\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API \mbox{\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}} evas\+\_\+map\+\_\+coords\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m,  }\item[{double}]{x,  }\item[{double}]{y,  }\item[{double $\ast$}]{mx,  }\item[{double $\ast$}]{my,  }\item[{int}]{grab }\end{DoxyParamCaption})}



Apply a map transformation on given coordinate. 


\begin{DoxyParams}{Parameters}
{\em m} & map to use to transform x and y \\
\hline
{\em x} & point x source coordinate \\
\hline
{\em y} & point y source coordinate \\
\hline
{\em mx} & point x after transformation by m \\
\hline
{\em my} & point y after transformation by m \\
\hline
{\em grab} & \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}} on success interpolation, \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}} otherwise 
\end{DoxyReturn}
\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}


References \mbox{\hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\+\_\+\+FALSE}}, and \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\+\_\+\+TRUE}}.

\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}\label{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_coord\_set@{evas\_map\_point\_coord\_set}}
\index{evas\_map\_point\_coord\_set@{evas\_map\_point\_coord\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_coord\_set()}{evas\_map\_point\_coord\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{x,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{y,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}}}]{z }\end{DoxyParamCaption})}



Change the map point\textquotesingle{}s coordinate. 

This sets the fixed point\textquotesingle{}s coordinate in the map. Note that points describe the outline of a quadrangle and are ordered either clockwise or counter-\/clockwise. It is suggested to keep your quadrangles concave and non-\/complex, though these polygon modes may work, they may not render a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2, 2 and 3, and 3 and 0 to describe the edges of the quadrangle.

The X and Y and Z coordinates are in canvas units. Z is optional and may or may not be honored in drawing. Z is a hint and does not affect the X and Y rendered coordinates. It may be used for calculating fills with perspective correct rendering.

Remember all coordinates are canvas global ones like with move and resize in evas.


\begin{DoxyParams}{Parameters}
{\em m} & map to change point. Must not be {\ttfamily NULL}. \\
\hline
{\em idx} & index of point to change. Must be smaller than map size. \\
\hline
{\em x} & Point X Coordinate \\
\hline
{\em y} & Point Y Coordinate \\
\hline
{\em z} & Point Z Coordinate hint (pre-\/perspective transform)\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga1833b01762fdfd6be0d356aa94a3aa1c}{evas\+\_\+map\+\_\+util\+\_\+rotate()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga3c237f1d8191490536a79ffdfeca757a}{evas\+\_\+map\+\_\+util\+\_\+zoom()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaf5b67b4b12385b064027c7167fc4211b}\label{group__Evas__Object__Group__Map_gaf5b67b4b12385b064027c7167fc4211b}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_coord\_get@{evas\_map\_point\_coord\_get}}
\index{evas\_map\_point\_coord\_get@{evas\_map\_point\_coord\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_coord\_get()}{evas\_map\_point\_coord\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$}]{x,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$}]{y,  }\item[{\mbox{\hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord}} $\ast$}]{z }\end{DoxyParamCaption})}



Get the map point\textquotesingle{}s coordinate. 

This returns the coordinates of the given point in the map.


\begin{DoxyParams}{Parameters}
{\em m} & map to query point. \\
\hline
{\em idx} & index of point to query. Must be smaller than map size. \\
\hline
{\em x} & where to return the X coordinate. \\
\hline
{\em y} & where to return the Y coordinate. \\
\hline
{\em z} & where to return the Z coordinate. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}\label{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_image\_uv\_set@{evas\_map\_point\_image\_uv\_set}}
\index{evas\_map\_point\_image\_uv\_set@{evas\_map\_point\_image\_uv\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_image\_uv\_set()}{evas\_map\_point\_image\_uv\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{double}]{u,  }\item[{double}]{v }\end{DoxyParamCaption})}



Change the map point\textquotesingle{}s U and V texture source point. 

This sets the U and V coordinates for the point. This determines which coordinate in the source image is mapped to the given point, much like Open\+GL and textures. Notes that these points do select the pixel, but are double floating point values to allow for accuracy and sub-\/pixel selection.


\begin{DoxyParams}{Parameters}
{\em m} & map to change the point of. \\
\hline
{\em idx} & index of point to change. Must be smaller than map size. \\
\hline
{\em u} & the X coordinate within the image/texture source \\
\hline
{\em v} & the Y coordinate within the image/texture source\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\+\_\+object\+\_\+map\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gadb6af35fdb37ea54ff6d79faddbd2c19}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object\+\_\+full()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_gaa7f9acff0a474fbd529f3ecbc2727a6b}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+populate\+\_\+from\+\_\+object()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_gaf1f7a81b4805864b05995141e13fb4b1}\label{group__Evas__Object__Group__Map_gaf1f7a81b4805864b05995141e13fb4b1}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_image\_uv\_get@{evas\_map\_point\_image\_uv\_get}}
\index{evas\_map\_point\_image\_uv\_get@{evas\_map\_point\_image\_uv\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_image\_uv\_get()}{evas\_map\_point\_image\_uv\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{double $\ast$}]{u,  }\item[{double $\ast$}]{v }\end{DoxyParamCaption})}



Get the map point\textquotesingle{}s U and V texture source points. 

This returns the texture points set by \mbox{\hyperlink{group__Evas__Object__Group__Map_gac20df50c88ca79bc8ffaefb6a2265dd6}{evas\+\_\+map\+\_\+point\+\_\+image\+\_\+uv\+\_\+set()}}.


\begin{DoxyParams}{Parameters}
{\em m} & map to query point. \\
\hline
{\em idx} & index of point to query. Must be smaller than map size. \\
\hline
{\em u} & where to write the X coordinate within the image/texture source \\
\hline
{\em v} & where to write the Y coordinate within the image/texture source \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}\label{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_color\_set@{evas\_map\_point\_color\_set}}
\index{evas\_map\_point\_color\_set@{evas\_map\_point\_color\_set}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_color\_set()}{evas\_map\_point\_color\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+color\+\_\+set (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{int}]{r,  }\item[{int}]{g,  }\item[{int}]{b,  }\item[{int}]{a }\end{DoxyParamCaption})}



Set the color of a vertex in the map. 

This sets the color of the vertex in the map. Colors will be linearly interpolated between vertex points through the map. Color will multiply the \char`\"{}texture\char`\"{} pixels (like GL\+\_\+\+MODULATE in Open\+GL). The default color of a vertex in a map is white solid (255, 255, 255, 255) which means it will have no affect on modifying the texture pixels.


\begin{DoxyParams}{Parameters}
{\em m} & map to change the color of. \\
\hline
{\em idx} & index of point to change. Must be smaller than map size. \\
\hline
{\em r} & red (0 -\/ 255) \\
\hline
{\em g} & green (0 -\/ 255) \\
\hline
{\em b} & blue (0 -\/ 255) \\
\hline
{\em a} & alpha (0 -\/ 255)\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_gac722b2b4b2673c8b6cfac99512105275}{evas\+\_\+map\+\_\+util\+\_\+points\+\_\+color\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\+\_\+object\+\_\+map\+\_\+set()}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Object__Group__Map_ga1d5a9f95a7428bc1b7ce110ea60683f5}\label{group__Evas__Object__Group__Map_ga1d5a9f95a7428bc1b7ce110ea60683f5}} 
\index{UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}!evas\_map\_point\_color\_get@{evas\_map\_point\_color\_get}}
\index{evas\_map\_point\_color\_get@{evas\_map\_point\_color\_get}!UV Mapping (Rotation, Perspective, 3D...)@{UV Mapping (Rotation, Perspective, 3D...)}}
\doxysubsubsection{\texorpdfstring{evas\_map\_point\_color\_get()}{evas\_map\_point\_color\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+map\+\_\+point\+\_\+color\+\_\+get (\begin{DoxyParamCaption}\item[{const Evas\+\_\+\+Map $\ast$}]{m,  }\item[{int}]{idx,  }\item[{int $\ast$}]{r,  }\item[{int $\ast$}]{g,  }\item[{int $\ast$}]{b,  }\item[{int $\ast$}]{a }\end{DoxyParamCaption})}



Get the color set on a vertex in the map. 

This gets the color set by \mbox{\hyperlink{group__Evas__Object__Group__Map_ga02bf5546d997dafe611cb62eccec6f74}{evas\+\_\+map\+\_\+point\+\_\+color\+\_\+set()}} on the given vertex of the map.


\begin{DoxyParams}{Parameters}
{\em m} & map to get the color of the vertex from. \\
\hline
{\em idx} & index of point get. Must be smaller than map size. \\
\hline
{\em r} & pointer to red return \\
\hline
{\em g} & pointer to green return \\
\hline
{\em b} & pointer to blue return \\
\hline
{\em a} & pointer to alpha return\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Object__Group__Map_ga82d2bac6f3accd23c869f704696d0d53}{evas\+\_\+map\+\_\+point\+\_\+coord\+\_\+set()}} 

\mbox{\hyperlink{group__Evas__Object__Group_gadbb970a1e0da91183bab3af1eb276953}{evas\+\_\+object\+\_\+map\+\_\+set()}} 
\end{DoxySeeAlso}
