\hypertarget{group__Evas__Canvas}{\section{Canvas Functions}
\label{group__Evas__Canvas}\index{Canvas Functions@{Canvas Functions}}
}


Low level Evas canvas functions.  


\subsection*{Modules}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Evas__Output__Method}{Render Engine Functions}
\begin{DoxyCompactList}\small\item\em Functions that are used to set the render engine for a given function, and then get that engine working. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Coord__Mapping__Group}{Coordinate Mapping Functions}
\begin{DoxyCompactList}\small\item\em Functions that are used to map coordinates from the canvas to the screen or the screen to the canvas. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Output__Size}{Output and Viewport Resizing Functions}
\begin{DoxyCompactList}\small\item\em Functions that set and retrieve the output and viewport size of an evas. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Canvas__Events}{Canvas Events}
\begin{DoxyCompactList}\small\item\em Functions relating to canvas events, which are mainly reports on its internal states changing (an object got focused, the rendering is updated, etc). \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Image__Group}{Image Functions}
\begin{DoxyCompactList}\small\item\em Functions that deals with images at canvas level. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Font__Group}{Font Functions}
\begin{DoxyCompactList}\small\item\em Functions that deals with fonts. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Keys}{Key Input Functions}
\begin{DoxyCompactList}\small\item\em Functions which feed key events to the canvas. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Touch__Point__List}{Touch Point List Functions}
\begin{DoxyCompactList}\small\item\em Functions to get information of touched points in the Evas. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__GL}{Rendering G\-L on Evas}
\begin{DoxyCompactList}\small\item\em Functions that are used to do Open\-G\-L rendering on Evas. \end{DoxyCompactList}\item 
\hyperlink{group__Evas__Pointer__Group}{Pointer (\-Mouse) Functions}
\begin{DoxyCompactList}\small\item\em Functions that deal with the status of the pointer (mouse cursor). \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef \hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}
\begin{DoxyCompactList}\small\item\em An opaque handle to an Evas canvas. \end{DoxyCompactList}\item 
\hypertarget{group__Evas__Canvas_ga247928fced30bd79d1b294371a44add9}{typedef struct \-\_\-\-Evas\-\_\-\-Public\-\_\-\-Data \hyperlink{group__Evas__Canvas_ga247928fced30bd79d1b294371a44add9}{Evas\-\_\-\-Public\-\_\-\-Data}}\label{group__Evas__Canvas_ga247928fced30bd79d1b294371a44add9}

\begin{DoxyCompactList}\small\item\em Public data for an Evas. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}{evas\-\_\-render\-\_\-updates\-\_\-free} (\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\-\_\-\-List} $\ast$updates)
\begin{DoxyCompactList}\small\item\em Free the rectangles returned by \hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates()}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{group__Evas__Canvas_gaf7ec63f320bbd1fd7413f900764eb9d7}{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set}(data)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-T\-A\-\_\-\-A\-T\-T\-A\-C\-H\-\_\-\-S\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(void $\ast$, data)
\item 
\#define \hyperlink{group__Evas__Canvas_ga3a350d3900e81f4f6c44c8659dfb6103}{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get}(ret)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-T\-A\-\_\-\-A\-T\-T\-A\-C\-H\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(void $\ast$$\ast$, ret)
\item 
\#define \hyperlink{group__Evas__Canvas_ga0db295c751382430f5b4ac6bbface16b}{evas\-\_\-canvas\-\_\-focus\-\_\-in}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-I\-N)
\item 
\#define \hyperlink{group__Evas__Canvas_gae0b9d9c0830a54fe60ee5d36addf0e82}{evas\-\_\-canvas\-\_\-focus\-\_\-out}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-O\-U\-T)
\item 
\#define \hyperlink{group__Evas__Canvas_gaa3d01e60d90d85af8468712c574479da}{evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get}(ret)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-S\-T\-A\-T\-E\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} $\ast$, ret)
\item 
\#define \hyperlink{group__Evas__Canvas_ga8f602f0f576ca924127b76f4a678abd3}{evas\-\_\-canvas\-\_\-nochange\-\_\-push}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-C\-H\-A\-N\-G\-E\-\_\-\-P\-U\-S\-H)
\item 
\#define \hyperlink{group__Evas__Canvas_ga89f6ffe8dff52bd46b77c407e231b35c}{evas\-\_\-canvas\-\_\-nochange\-\_\-pop}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-C\-H\-A\-N\-G\-E\-\_\-\-P\-O\-P)
\item 
\#define \hyperlink{group__Evas__Canvas_ga79b156cb0f5b91935edbdd8313133cb8}{evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add}(x, y, w, h)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-M\-A\-G\-E\-\_\-\-R\-E\-C\-T\-A\-N\-G\-L\-E\-\_\-\-A\-D\-D), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, x), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, w), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, h)
\item 
\#define \hyperlink{group__Evas__Canvas_gadfe4745fbd1092e9f56452193a94ac93}{evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add}(x, y, w, h)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-O\-B\-S\-C\-U\-R\-E\-D\-\_\-\-R\-E\-C\-T\-A\-N\-G\-L\-E\-\_\-\-A\-D\-D), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, x), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, w), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, h)
\item 
\#define \hyperlink{group__Evas__Canvas_ga568e22476509860bf8e71fc67df3266e}{evas\-\_\-canvas\-\_\-obscured\-\_\-clear}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-O\-B\-S\-C\-U\-R\-E\-D\-\_\-\-C\-L\-E\-A\-R)
\item 
\#define \hyperlink{group__Evas__Canvas_gaac093f6674b2227979c68dc35d29f4e8}{evas\-\_\-canvas\-\_\-render\-\_\-async}(ret)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-A\-S\-Y\-N\-C), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} $\ast$, ret)
\item 
\#define \hyperlink{group__Evas__Canvas_gaa15f55984949893c836646597d789f9c}{evas\-\_\-canvas\-\_\-render\-\_\-updates}(ret)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-U\-P\-D\-A\-T\-E\-S), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\-\_\-\-List} $\ast$$\ast$, ret)
\item 
\#define \hyperlink{group__Evas__Canvas_ga5e06c066b9188989e9e62f8f20e870a8}{evas\-\_\-canvas\-\_\-render}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R)
\item 
\#define \hyperlink{group__Evas__Canvas_ga9c75b9cd30f6ab579303cd9cd4e51a8f}{evas\-\_\-canvas\-\_\-norender}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-R\-E\-N\-D\-E\-R)
\item 
\#define \hyperlink{group__Evas__Canvas_ga287c98608e0b67520589cbf10e7b6f49}{evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-I\-D\-L\-E\-\_\-\-F\-L\-U\-S\-H)
\item 
\#define \hyperlink{group__Evas__Canvas_gae113572ce53406df57c338c65a8c5c0e}{evas\-\_\-canvas\-\_\-render\-\_\-dump}()~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-D\-U\-M\-P)
\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$ \hyperlink{group__Evas__Canvas_ga67e8eb17d2a676bfdfb8794fc5f72bc0}{evas\-\_\-new} (void)
\begin{DoxyCompactList}\small\item\em Creates a new empty evas. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gaa0d5d3f1a1e1ffa3b14b09bb374215b4}{evas\-\_\-free} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Frees the given evas and any objects created on it. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga85bed3c87fc4aaa489b79fbf1af16fb4}{evas\-\_\-focus\-\_\-in} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Inform to the evas that it got the focus. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gaa50e193fce29dc4a80feb55163939339}{evas\-\_\-focus\-\_\-out} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Inform to the evas that it lost the focus. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} \hyperlink{group__Evas__Canvas_ga349f59615d0b33752b103ad21de85122}{evas\-\_\-focus\-\_\-state\-\_\-get} (const \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Get the focus state known by the given evas. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga994923b0fe5b2994aa3279bf1bdf372a}{evas\-\_\-nochange\-\_\-push} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Push the nochange flag up 1. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gabf8139cf74b71e94708661682b3a71a8}{evas\-\_\-nochange\-\_\-pop} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Pop the nochange flag down 1. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{evas\-\_\-data\-\_\-attach\-\_\-set} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e, void $\ast$data)
\begin{DoxyCompactList}\small\item\em Attaches a specific pointer to the evas for fetching later. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Evas__Canvas_gaf69ad21d38b08cc36a38083f2721201e}{evas\-\_\-data\-\_\-attach\-\_\-get} (const \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Returns the pointer attached by \hyperlink{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{evas\-\_\-data\-\_\-attach\-\_\-set()} \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{evas\-\_\-damage\-\_\-rectangle\-\_\-add} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e, int x, int y, int w, int h)
\begin{DoxyCompactList}\small\item\em Add a damage rectangle. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\-\_\-obscured\-\_\-rectangle\-\_\-add} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e, int x, int y, int w, int h)
\begin{DoxyCompactList}\small\item\em Add an \char`\"{}obscured region\char`\"{} to an Evas canvas. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\-\_\-obscured\-\_\-clear} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Remove all \char`\"{}obscured regions\char`\"{} from an Evas canvas. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\-\_\-\-Bool} \hyperlink{group__Evas__Canvas_gac4c9ada57c9eee19b470f6deab741abf}{evas\-\_\-render\-\_\-async} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Render the given Evas canvas asynchronously. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__List__Group_ga3295e1210efea1fb0fd6acbf3cbc1f29}{Eina\-\_\-\-List} $\ast$ \hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Force immediate renderization of the given Evas canvas. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}{evas\-\_\-render} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Force renderization of the given canvas. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga4d5ccf6f2e9ba056ce6b590f76bfc9f7}{evas\-\_\-norender} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Update the canvas internal objects but not triggering immediate renderization. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}{evas\-\_\-render\-\_\-idle\-\_\-flush} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Make the canvas discard internally cached data used for rendering. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__Canvas_ga0166abbe90a05935146ab9c133795e55}{evas\-\_\-render\-\_\-dump} (\hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} $\ast$e)
\begin{DoxyCompactList}\small\item\em Make the canvas discard as much data as possible used by the engine at runtime. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Low level Evas canvas functions. Sub groups will present more high level ones, though.

Most of these functions deal with low level Evas actions, like\-: \begin{DoxyItemize}
\item create/destroy raw canvases, not bound to any displaying engine \item tell a canvas i got focused (in a windowing context, for example) \item tell a canvas a region should not be calculated anymore in rendering \item tell a canvas to render its contents, immediately\end{DoxyItemize}
Most users will be using Evas by means of the {\ttfamily Ecore\-\_\-\-Evas} wrapper, which deals with all the above mentioned issues automatically for them. Thus, you'll be looking at this section only if you're building low level stuff.

The groups within present you functions that deal with the canvas directly, too, and not yet with its {\bfseries objects}. They are the functions you need to use at a minimum to get a working canvas.

Some of the functions in this group are exemplified \hyperlink{Example_Evas_Events}{here}. 

\subsection{Macro Definition Documentation}
\hypertarget{group__Evas__Canvas_gaf7ec63f320bbd1fd7413f900764eb9d7}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set@{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set}}
\index{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set@{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set(
\begin{DoxyParamCaption}
\item[{}]{data}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-T\-A\-\_\-\-A\-T\-T\-A\-C\-H\-\_\-\-S\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(void $\ast$, data)}}\label{group__Evas__Canvas_gaf7ec63f320bbd1fd7413f900764eb9d7}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Attaches a specific pointer to the evas for fetching later


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em data} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{evas\-\_\-data\-\_\-attach\-\_\-set} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-data\-\_\-attach\-\_\-set().

\hypertarget{group__Evas__Canvas_ga3a350d3900e81f4f6c44c8659dfb6103}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get@{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get}}
\index{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get@{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-T\-A\-\_\-\-A\-T\-T\-A\-C\-H\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(void $\ast$$\ast$, ret)}}\label{group__Evas__Canvas_ga3a350d3900e81f4f6c44c8659dfb6103}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Returns the pointer attached by \hyperlink{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{evas\-\_\-data\-\_\-attach\-\_\-set()}


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaf69ad21d38b08cc36a38083f2721201e}{evas\-\_\-data\-\_\-attach\-\_\-get} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-data\-\_\-attach\-\_\-get().

\hypertarget{group__Evas__Canvas_ga0db295c751382430f5b4ac6bbface16b}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-focus\-\_\-in@{evas\-\_\-canvas\-\_\-focus\-\_\-in}}
\index{evas\-\_\-canvas\-\_\-focus\-\_\-in@{evas\-\_\-canvas\-\_\-focus\-\_\-in}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-focus\-\_\-in}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-focus\-\_\-in(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-I\-N)}}\label{group__Evas__Canvas_ga0db295c751382430f5b4ac6bbface16b}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Inform to the evas that it got the focus.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga85bed3c87fc4aaa489b79fbf1af16fb4}{evas\-\_\-focus\-\_\-in} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-focus\-\_\-in().

\hypertarget{group__Evas__Canvas_gae0b9d9c0830a54fe60ee5d36addf0e82}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-focus\-\_\-out@{evas\-\_\-canvas\-\_\-focus\-\_\-out}}
\index{evas\-\_\-canvas\-\_\-focus\-\_\-out@{evas\-\_\-canvas\-\_\-focus\-\_\-out}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-focus\-\_\-out}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-focus\-\_\-out(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-O\-U\-T)}}\label{group__Evas__Canvas_gae0b9d9c0830a54fe60ee5d36addf0e82}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Inform to the evas that it lost the focus.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaa50e193fce29dc4a80feb55163939339}{evas\-\_\-focus\-\_\-out} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-focus\-\_\-out().

\hypertarget{group__Evas__Canvas_gaa3d01e60d90d85af8468712c574479da}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get@{evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get}}
\index{evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get@{evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-F\-O\-C\-U\-S\-\_\-\-S\-T\-A\-T\-E\-\_\-\-G\-E\-T), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K({\bf Eina\-\_\-\-Bool} $\ast$, ret)}}\label{group__Evas__Canvas_gaa3d01e60d90d85af8468712c574479da}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Get the focus state known by the given evas


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga349f59615d0b33752b103ad21de85122}{evas\-\_\-focus\-\_\-state\-\_\-get} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-focus\-\_\-state\-\_\-get().

\hypertarget{group__Evas__Canvas_ga8f602f0f576ca924127b76f4a678abd3}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-nochange\-\_\-push@{evas\-\_\-canvas\-\_\-nochange\-\_\-push}}
\index{evas\-\_\-canvas\-\_\-nochange\-\_\-push@{evas\-\_\-canvas\-\_\-nochange\-\_\-push}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-nochange\-\_\-push}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-nochange\-\_\-push(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-C\-H\-A\-N\-G\-E\-\_\-\-P\-U\-S\-H)}}\label{group__Evas__Canvas_ga8f602f0f576ca924127b76f4a678abd3}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Push the nochange flag up 1

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga994923b0fe5b2994aa3279bf1bdf372a}{evas\-\_\-nochange\-\_\-push} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-nochange\-\_\-push().

\hypertarget{group__Evas__Canvas_ga89f6ffe8dff52bd46b77c407e231b35c}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-nochange\-\_\-pop@{evas\-\_\-canvas\-\_\-nochange\-\_\-pop}}
\index{evas\-\_\-canvas\-\_\-nochange\-\_\-pop@{evas\-\_\-canvas\-\_\-nochange\-\_\-pop}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-nochange\-\_\-pop}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-nochange\-\_\-pop(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-C\-H\-A\-N\-G\-E\-\_\-\-P\-O\-P)}}\label{group__Evas__Canvas_ga89f6ffe8dff52bd46b77c407e231b35c}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Pop the nochange flag down 1

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gabf8139cf74b71e94708661682b3a71a8}{evas\-\_\-nochange\-\_\-pop} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-nochange\-\_\-pop().

\hypertarget{group__Evas__Canvas_ga79b156cb0f5b91935edbdd8313133cb8}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add@{evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add}}
\index{evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add@{evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add(
\begin{DoxyParamCaption}
\item[{}]{x, }
\item[{}]{y, }
\item[{}]{w, }
\item[{}]{h}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-D\-A\-M\-A\-G\-E\-\_\-\-R\-E\-C\-T\-A\-N\-G\-L\-E\-\_\-\-A\-D\-D), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, x), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, w), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, h)}}\label{group__Evas__Canvas_ga79b156cb0f5b91935edbdd8313133cb8}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Add a damage rectangle.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em x} & \\
\hline
\mbox{\tt in}  & {\em y} & \\
\hline
\mbox{\tt in}  & {\em w} & \\
\hline
\mbox{\tt in}  & {\em h} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{evas\-\_\-damage\-\_\-rectangle\-\_\-add} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-damage\-\_\-rectangle\-\_\-add().

\hypertarget{group__Evas__Canvas_gadfe4745fbd1092e9f56452193a94ac93}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add@{evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add}}
\index{evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add@{evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add(
\begin{DoxyParamCaption}
\item[{}]{x, }
\item[{}]{y, }
\item[{}]{w, }
\item[{}]{h}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-O\-B\-S\-C\-U\-R\-E\-D\-\_\-\-R\-E\-C\-T\-A\-N\-G\-L\-E\-\_\-\-A\-D\-D), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, x), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, y), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, w), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K(int, h)}}\label{group__Evas__Canvas_gadfe4745fbd1092e9f56452193a94ac93}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Add an \char`\"{}obscured region\char`\"{} to an Evas canvas.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em x} & \\
\hline
\mbox{\tt in}  & {\em y} & \\
\hline
\mbox{\tt in}  & {\em w} & \\
\hline
\mbox{\tt in}  & {\em h} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\-\_\-obscured\-\_\-rectangle\-\_\-add} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-obscured\-\_\-rectangle\-\_\-add().

\hypertarget{group__Evas__Canvas_ga568e22476509860bf8e71fc67df3266e}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-obscured\-\_\-clear@{evas\-\_\-canvas\-\_\-obscured\-\_\-clear}}
\index{evas\-\_\-canvas\-\_\-obscured\-\_\-clear@{evas\-\_\-canvas\-\_\-obscured\-\_\-clear}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-obscured\-\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-obscured\-\_\-clear(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-O\-B\-S\-C\-U\-R\-E\-D\-\_\-\-C\-L\-E\-A\-R)}}\label{group__Evas__Canvas_ga568e22476509860bf8e71fc67df3266e}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Remove all \char`\"{}obscured regions\char`\"{} from an Evas canvas.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\-\_\-obscured\-\_\-clear} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-obscured\-\_\-clear().

\hypertarget{group__Evas__Canvas_gaac093f6674b2227979c68dc35d29f4e8}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-render\-\_\-async@{evas\-\_\-canvas\-\_\-render\-\_\-async}}
\index{evas\-\_\-canvas\-\_\-render\-\_\-async@{evas\-\_\-canvas\-\_\-render\-\_\-async}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-render\-\_\-async}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-render\-\_\-async(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-A\-S\-Y\-N\-C), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K({\bf Eina\-\_\-\-Bool} $\ast$, ret)}}\label{group__Evas__Canvas_gaac093f6674b2227979c68dc35d29f4e8}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Render canvas asynchronously


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & Whether or not a frame will get rendered after the call\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gac4c9ada57c9eee19b470f6deab741abf}{evas\-\_\-render\-\_\-async} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-render\-\_\-async().

\hypertarget{group__Evas__Canvas_gaa15f55984949893c836646597d789f9c}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-render\-\_\-updates@{evas\-\_\-canvas\-\_\-render\-\_\-updates}}
\index{evas\-\_\-canvas\-\_\-render\-\_\-updates@{evas\-\_\-canvas\-\_\-render\-\_\-updates}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-render\-\_\-updates}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-render\-\_\-updates(
\begin{DoxyParamCaption}
\item[{}]{ret}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-U\-P\-D\-A\-T\-E\-S), E\-O\-\_\-\-T\-Y\-P\-E\-C\-H\-E\-C\-K({\bf Eina\-\_\-\-List} $\ast$$\ast$, ret)}}\label{group__Evas__Canvas_gaa15f55984949893c836646597d789f9c}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Force immediate renderization of the given Evas canvas.


\begin{DoxyParams}[1]{Parameters}
\mbox{\tt out}  & {\em ret} & \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-render\-\_\-updates().

\hypertarget{group__Evas__Canvas_ga5e06c066b9188989e9e62f8f20e870a8}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-render@{evas\-\_\-canvas\-\_\-render}}
\index{evas\-\_\-canvas\-\_\-render@{evas\-\_\-canvas\-\_\-render}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-render}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-render(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R)}}\label{group__Evas__Canvas_ga5e06c066b9188989e9e62f8f20e870a8}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Force renderization of the given canvas.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}{evas\-\_\-render} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-render().

\hypertarget{group__Evas__Canvas_ga9c75b9cd30f6ab579303cd9cd4e51a8f}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-norender@{evas\-\_\-canvas\-\_\-norender}}
\index{evas\-\_\-canvas\-\_\-norender@{evas\-\_\-canvas\-\_\-norender}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-norender}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-norender(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-N\-O\-R\-E\-N\-D\-E\-R)}}\label{group__Evas__Canvas_ga9c75b9cd30f6ab579303cd9cd4e51a8f}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Update the canvas internal objects but not triggering immediate renderization.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga4d5ccf6f2e9ba056ce6b590f76bfc9f7}{evas\-\_\-norender} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-norender().

\hypertarget{group__Evas__Canvas_ga287c98608e0b67520589cbf10e7b6f49}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush@{evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush}}
\index{evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush@{evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-I\-D\-L\-E\-\_\-\-F\-L\-U\-S\-H)}}\label{group__Evas__Canvas_ga287c98608e0b67520589cbf10e7b6f49}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Make the canvas discard internally cached data used for rendering.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}{evas\-\_\-render\-\_\-idle\-\_\-flush} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-render\-\_\-idle\-\_\-flush().

\hypertarget{group__Evas__Canvas_gae113572ce53406df57c338c65a8c5c0e}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-canvas\-\_\-render\-\_\-dump@{evas\-\_\-canvas\-\_\-render\-\_\-dump}}
\index{evas\-\_\-canvas\-\_\-render\-\_\-dump@{evas\-\_\-canvas\-\_\-render\-\_\-dump}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-canvas\-\_\-render\-\_\-dump}]{\setlength{\rightskip}{0pt plus 5cm}\#define evas\-\_\-canvas\-\_\-render\-\_\-dump(
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)~E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-I\-D(E\-V\-A\-S\-\_\-\-C\-A\-N\-V\-A\-S\-\_\-\-S\-U\-B\-\_\-\-I\-D\-\_\-\-R\-E\-N\-D\-E\-R\-\_\-\-D\-U\-M\-P)}}\label{group__Evas__Canvas_gae113572ce53406df57c338c65a8c5c0e}
\begin{DoxySince}{Since}
1.\-8
\end{DoxySince}
Make the canvas discard as much data as possible used by the engine at

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga0166abbe90a05935146ab9c133795e55}{evas\-\_\-render\-\_\-dump} 
\end{DoxySeeAlso}


Referenced by evas\-\_\-render\-\_\-dump().



\subsection{Typedef Documentation}
\hypertarget{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{\index{Canvas Functions@{Canvas Functions}!Evas@{Evas}}
\index{Evas@{Evas}!Canvas Functions@{Canvas Functions}}
\subsubsection[{Evas}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evas}}}\label{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}


An opaque handle to an Evas canvas. 

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga67e8eb17d2a676bfdfb8794fc5f72bc0}{evas\-\_\-new()} 

\hyperlink{group__Evas__Canvas_gaa0d5d3f1a1e1ffa3b14b09bb374215b4}{evas\-\_\-free()} 
\end{DoxySeeAlso}


\subsection{Function Documentation}
\hypertarget{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render\-\_\-updates\-\_\-free@{evas\-\_\-render\-\_\-updates\-\_\-free}}
\index{evas\-\_\-render\-\_\-updates\-\_\-free@{evas\-\_\-render\-\_\-updates\-\_\-free}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render\-\_\-updates\-\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-render\-\_\-updates\-\_\-free (
\begin{DoxyParamCaption}
\item[{{\bf Eina\-\_\-\-List} $\ast$}]{updates}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}


Free the rectangles returned by \hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates()}. 


\begin{DoxyParams}{Parameters}
{\em updates} & The list of updated rectangles of the canvas.\\
\hline
\end{DoxyParams}
This function removes the region from the render updates list. It makes the region doesn't be render updated anymore.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates()} for an example 
\end{DoxySeeAlso}


References E\-I\-N\-A\-\_\-\-L\-I\-S\-T\-\_\-\-F\-R\-E\-E, and eina\-\_\-rectangle\-\_\-free().

\hypertarget{group__Evas__Canvas_ga67e8eb17d2a676bfdfb8794fc5f72bc0}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-new@{evas\-\_\-new}}
\index{evas\-\_\-new@{evas\-\_\-new}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-new}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evas}$\ast$ evas\-\_\-new (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga67e8eb17d2a676bfdfb8794fc5f72bc0}


Creates a new empty evas. 

Note that before you can use the evas, you will to at a minimum\-: \begin{DoxyItemize}
\item Set its render method with \hyperlink{group__Evas__Output__Method_ga15b85dc673baa6aa40f91f8bfcd3cbaa}{evas\-\_\-output\-\_\-method\-\_\-set} . \item Set its viewport size with \hyperlink{group__Evas__Output__Size_ga6dcd13997f7825f03807dc0ec38dd38e}{evas\-\_\-output\-\_\-viewport\-\_\-set} . \item Set its size of the canvas with \hyperlink{group__Evas__Output__Size_gaf6478cb249ed09fa0fe961085773fe1e}{evas\-\_\-output\-\_\-size\-\_\-set} . \item Ensure that the render engine is given the correct settings with \hyperlink{group__Evas__Output__Method_gac2b732e9fb11cdddc46c7bdda79270d4}{evas\-\_\-engine\-\_\-info\-\_\-set} .\end{DoxyItemize}
This function should only fail if the memory allocation fails

\begin{DoxyNote}{Note}
this function is very low level. Instead of using it directly, consider using the high level functions in \hyperlink{group__Ecore__Evas__Group}{Ecore\-\_\-\-Evas wrapper/helper set of functions} such as {\ttfamily \hyperlink{group__Ecore__Evas__Group_gac7f2cdbcb79635c34317c1183dd04cb0}{ecore\-\_\-evas\-\_\-new()}}. See \hyperlink{group__Ecore}{Ecore}.
\end{DoxyNote}
\begin{DoxyAttention}{Attention}
it is recommended that one calls \hyperlink{group__Evas__Main__Group_ga65b3f060b6dd9e488afd0b8cbe101869}{evas\-\_\-init()} before creating new canvas.
\end{DoxyAttention}
\begin{DoxyReturn}{Returns}
A new uninitialised Evas canvas on success. Otherwise, {\ttfamily N\-U\-L\-L}. 
\end{DoxyReturn}


Referenced by ecore\-\_\-evas\-\_\-buffer\-\_\-allocfunc\-\_\-new(), ecore\-\_\-evas\-\_\-ews\-\_\-new(), and ecore\-\_\-evas\-\_\-object\-\_\-image\-\_\-new().

\hypertarget{group__Evas__Canvas_gaa0d5d3f1a1e1ffa3b14b09bb374215b4}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-free@{evas\-\_\-free}}
\index{evas\-\_\-free@{evas\-\_\-free}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-free}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-free (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaa0d5d3f1a1e1ffa3b14b09bb374215b4}


Frees the given evas and any objects created on it. 

Any objects with 'free' callbacks will have those callbacks called in this function.


\begin{DoxyParams}{Parameters}
{\em e} & The given evas. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__Canvas_ga85bed3c87fc4aaa489b79fbf1af16fb4}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-focus\-\_\-in@{evas\-\_\-focus\-\_\-in}}
\index{evas\-\_\-focus\-\_\-in@{evas\-\_\-focus\-\_\-in}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-focus\-\_\-in}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-focus\-\_\-in (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga85bed3c87fc4aaa489b79fbf1af16fb4}


Inform to the evas that it got the focus. 


\begin{DoxyParams}{Parameters}
{\em e} & The evas to change information. \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-focus\-\_\-in.

\hypertarget{group__Evas__Canvas_gaa50e193fce29dc4a80feb55163939339}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-focus\-\_\-out@{evas\-\_\-focus\-\_\-out}}
\index{evas\-\_\-focus\-\_\-out@{evas\-\_\-focus\-\_\-out}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-focus\-\_\-out}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-focus\-\_\-out (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaa50e193fce29dc4a80feb55163939339}


Inform to the evas that it lost the focus. 


\begin{DoxyParams}{Parameters}
{\em e} & The evas to change information. \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-focus\-\_\-out.

\hypertarget{group__Evas__Canvas_ga349f59615d0b33752b103ad21de85122}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-focus\-\_\-state\-\_\-get@{evas\-\_\-focus\-\_\-state\-\_\-get}}
\index{evas\-\_\-focus\-\_\-state\-\_\-get@{evas\-\_\-focus\-\_\-state\-\_\-get}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-focus\-\_\-state\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} evas\-\_\-focus\-\_\-state\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga349f59615d0b33752b103ad21de85122}


Get the focus state known by the given evas. 


\begin{DoxyParams}{Parameters}
{\em e} & The evas to query information. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily E\-I\-N\-A\-\_\-\-T\-R\-U\-E} if it got the focus, {\ttfamily E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E} otherwise. 
\end{DoxyReturn}


References evas\-\_\-canvas\-\_\-focus\-\_\-state\-\_\-get.

\hypertarget{group__Evas__Canvas_ga994923b0fe5b2994aa3279bf1bdf372a}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-nochange\-\_\-push@{evas\-\_\-nochange\-\_\-push}}
\index{evas\-\_\-nochange\-\_\-push@{evas\-\_\-nochange\-\_\-push}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-nochange\-\_\-push}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-nochange\-\_\-push (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga994923b0fe5b2994aa3279bf1bdf372a}


Push the nochange flag up 1. 

This tells evas, that while the nochange flag is greater than 0, do not mark objects as \char`\"{}changed\char`\"{} when making changes.


\begin{DoxyParams}{Parameters}
{\em e} & The evas to change information. \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-nochange\-\_\-push.

\hypertarget{group__Evas__Canvas_gabf8139cf74b71e94708661682b3a71a8}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-nochange\-\_\-pop@{evas\-\_\-nochange\-\_\-pop}}
\index{evas\-\_\-nochange\-\_\-pop@{evas\-\_\-nochange\-\_\-pop}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-nochange\-\_\-pop}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-nochange\-\_\-pop (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gabf8139cf74b71e94708661682b3a71a8}


Pop the nochange flag down 1. 

This tells evas, that while the nochange flag is greater than 0, do not mark objects as \char`\"{}changed\char`\"{} when making changes.


\begin{DoxyParams}{Parameters}
{\em e} & The evas to change information. \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-nochange\-\_\-pop.

\hypertarget{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-data\-\_\-attach\-\_\-set@{evas\-\_\-data\-\_\-attach\-\_\-set}}
\index{evas\-\_\-data\-\_\-attach\-\_\-set@{evas\-\_\-data\-\_\-attach\-\_\-set}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-data\-\_\-attach\-\_\-set}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-data\-\_\-attach\-\_\-set (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e, }
\item[{void $\ast$}]{data}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gacfa6823877172673237d34d477511409}


Attaches a specific pointer to the evas for fetching later. 


\begin{DoxyParams}{Parameters}
{\em e} & The canvas to attach the pointer to \\
\hline
{\em data} & The pointer to attach \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-set.



Referenced by ecore\-\_\-evas\-\_\-buffer\-\_\-allocfunc\-\_\-new(), ecore\-\_\-evas\-\_\-ews\-\_\-new(), and ecore\-\_\-evas\-\_\-object\-\_\-image\-\_\-new().

\hypertarget{group__Evas__Canvas_gaf69ad21d38b08cc36a38083f2721201e}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-data\-\_\-attach\-\_\-get@{evas\-\_\-data\-\_\-attach\-\_\-get}}
\index{evas\-\_\-data\-\_\-attach\-\_\-get@{evas\-\_\-data\-\_\-attach\-\_\-get}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-data\-\_\-attach\-\_\-get}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ evas\-\_\-data\-\_\-attach\-\_\-get (
\begin{DoxyParamCaption}
\item[{const {\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaf69ad21d38b08cc36a38083f2721201e}


Returns the pointer attached by \hyperlink{group__Evas__Canvas_gacfa6823877172673237d34d477511409}{evas\-\_\-data\-\_\-attach\-\_\-set()} 


\begin{DoxyParams}{Parameters}
{\em e} & The canvas to attach the pointer to \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The pointer attached 
\end{DoxyReturn}


References evas\-\_\-canvas\-\_\-data\-\_\-attach\-\_\-get.



Referenced by ecore\-\_\-evas\-\_\-ecore\-\_\-evas\-\_\-get().

\hypertarget{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-damage\-\_\-rectangle\-\_\-add@{evas\-\_\-damage\-\_\-rectangle\-\_\-add}}
\index{evas\-\_\-damage\-\_\-rectangle\-\_\-add@{evas\-\_\-damage\-\_\-rectangle\-\_\-add}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-damage\-\_\-rectangle\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-damage\-\_\-rectangle\-\_\-add (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e, }
\item[{int}]{x, }
\item[{int}]{y, }
\item[{int}]{w, }
\item[{int}]{h}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}


Add a damage rectangle. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer. \\
\hline
{\em x} & The rectangle's left position. \\
\hline
{\em y} & The rectangle's top position. \\
\hline
{\em w} & The rectangle's width. \\
\hline
{\em h} & The rectangle's height.\\
\hline
\end{DoxyParams}
This is the function by which one tells evas that a part of the canvas has to be repainted.

\begin{DoxyNote}{Note}
All newly created Evas rectangles get the default color values of 255 255 255 255 (opaque white). 
\end{DoxyNote}


References evas\-\_\-canvas\-\_\-damage\-\_\-rectangle\-\_\-add.



Referenced by ecore\-\_\-evas\-\_\-rotation\-\_\-set(), and ecore\-\_\-evas\-\_\-rotation\-\_\-with\-\_\-resize\-\_\-set().

\hypertarget{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-obscured\-\_\-rectangle\-\_\-add@{evas\-\_\-obscured\-\_\-rectangle\-\_\-add}}
\index{evas\-\_\-obscured\-\_\-rectangle\-\_\-add@{evas\-\_\-obscured\-\_\-rectangle\-\_\-add}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-obscured\-\_\-rectangle\-\_\-add}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-obscured\-\_\-rectangle\-\_\-add (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e, }
\item[{int}]{x, }
\item[{int}]{y, }
\item[{int}]{w, }
\item[{int}]{h}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}


Add an \char`\"{}obscured region\char`\"{} to an Evas canvas. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer. \\
\hline
{\em x} & The rectangle's top left corner's horizontal coordinate. \\
\hline
{\em y} & The rectangle's top left corner's vertical coordinate \\
\hline
{\em w} & The rectangle's width. \\
\hline
{\em h} & The rectangle's height.\\
\hline
\end{DoxyParams}
This is the function by which one tells an Evas canvas that a part of it {\bfseries must not} be repainted. The region must be rectangular and its coordinates inside the canvas viewport are passed in the call. After this call, the region specified won't participate in any form in Evas' calculations and actions during its rendering updates, having its displaying content frozen as it was just after this function took place.

We call it \char`\"{}obscured region\char`\"{} because the most common use case for this rendering (partial) freeze is something else (most probably other canvas) being on top of the specified rectangular region, thus shading it completely from the user's final scene in a display. To avoid unnecessary processing, one should indicate to the obscured canvas not to bother about the non-\/important area.

The majority of users won't have to worry about this function, as they'll be using just one canvas in their applications, with nothing inset or on top of it in any form.

To make this region one that {\bfseries has} to be repainted again, call the function \hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\-\_\-obscured\-\_\-clear()}.

\begin{DoxyNote}{Note}
This is a {\bfseries very low level function}, which most of Evas' users wouldn't care about.

This function does {\bfseries not} flag the canvas as having its state changed. If you want to re-\/render it afterwards expecting new contents, you have to add \char`\"{}damage\char`\"{} regions yourself (see \hyperlink{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{evas\-\_\-damage\-\_\-rectangle\-\_\-add()}).
\end{DoxyNote}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\-\_\-obscured\-\_\-clear()} 

\hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates()}
\end{DoxySeeAlso}
Example code follows.  
\begin{DoxyCodeInclude}
  \textcolor{stringliteral}{"\(\backslash\)tControl + o - add an obscured rectangle\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)th - print help\(\backslash\)n"};

\textcolor{keyword}{struct }test\_data
\{
   Ecore\_Evas  *ee;
   \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *canvas;
   \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *img, *bg;
   \hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\_Timer} *resize\_timer, *freeze\_timer;
   \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}    obscured, focus;
\};

\textcolor{keyword}{static} \textcolor{keyword}{struct }test\_data d = \{0\};

\textcolor{comment}{/* here to keep our example's window size and background image's}
\textcolor{comment}{ * size in synchrony */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_canvas\_resize\_cb(Ecore\_Evas *ee)
\{
   \textcolor{keywordtype}{int} w, h;

   \hyperlink{group__Ecore__Evas__Group_ga931aadf4603731e73e8a84e4b14f1493}{ecore\_evas\_geometry\_get}(ee, NULL, NULL, &w, &h);
   \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.bg, w, h);
\}

\textcolor{comment}{/* called when our rectangle gets focus */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_object\_focus\_in\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED,
                    \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} *e,
                    \textcolor{keywordtype}{void} *event\_info)
\{
   fprintf(stdout, \textcolor{stringliteral}{"An object got focused: %s\(\backslash\)n"},
           \hyperlink{group__Evas__Object__Group__Basic_ga7934106d84f6a019fcb421b6b4d860a3}{evas\_object\_name\_get}(event\_info));

   fprintf(stdout, \textcolor{stringliteral}{"Let's recheck it: %s\(\backslash\)n"},
           \hyperlink{group__Evas__Object__Group__Basic_ga7934106d84f6a019fcb421b6b4d860a3}{evas\_object\_name\_get}(\hyperlink{group__Evas__Object__Group__Find_gac3c860541fd122f6763abb3a87b07e05}{evas\_focus\_get}(e)));

   fprintf(stdout, \textcolor{stringliteral}{"And again: %s\(\backslash\)n"}, \hyperlink{group__Evas__Object__Group__Basic_ga49247ad06388c8a3c44d18fa5daf0af9}{evas\_object\_focus\_get}(event\_info) ?
           \textcolor{stringliteral}{"OK!"} : \textcolor{stringliteral}{"Oops, something is bad."});
\}

\textcolor{comment}{/* render flush callback */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_render\_flush\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED,
                 \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} *e EINA\_UNUSED,
                 \textcolor{keywordtype}{void} *event\_info EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Canvas is about to flush its rendering pipeline!\(\backslash\)n"});
\}

\textcolor{comment}{/* put some action in the canvas */}
\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_resize\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED)
\{
   \textcolor{keywordtype}{int} w, h, cw, ch;

   \hyperlink{group__Evas__Object__Group__Basic_ga6f52fab1a96dc58c85ee481d84bac871}{evas\_object\_geometry\_get}(d.img, NULL, NULL, &w, &h);
   \hyperlink{group__Ecore__Evas__Group_ga931aadf4603731e73e8a84e4b14f1493}{ecore\_evas\_geometry\_get}(d.ee, NULL, NULL, &cw, &ch);

   \textcolor{keywordflow}{if} (w < cw)
     \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.img, cw, ch);
   \textcolor{keywordflow}{else}
     \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.img, cw / 2, ch / 2);

   \textcolor{keywordflow}{return} \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}; \textcolor{comment}{/* re-issue the timer */}
\}

\textcolor{comment}{/* let's have our events back */}
\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_thaw\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Canvas was frozen %d times, now thawing.\(\backslash\)n"},
           \hyperlink{group__Evas__Event__Feeding__Group_gaca66af7f9b72ddbd63104d59c1fdf894}{evas\_event\_freeze\_get}(d.canvas));
   \hyperlink{group__Evas__Event__Feeding__Group_ga376918c56c3dc588a059da7fe8629b70}{evas\_event\_thaw}(d.canvas);
   \textcolor{keywordflow}{return} \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}; \textcolor{comment}{/* do not re-issue the timer */}
\}

\textcolor{comment}{/* mouse enters the object's area */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_mouse\_in(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
             \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas EINA\_UNUSED,
             \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
             \textcolor{keywordtype}{void}        *einfo EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Enlightenment logo has had the mouse in.\(\backslash\)n"});
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_mouse\_out(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
              \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas EINA\_UNUSED,
              \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
              \textcolor{keywordtype}{void}        *einfo EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Enlightenment logo has had the mouse out.\(\backslash\)n"});
\} \textcolor{comment}{/* mouse exits the object's area */}

\textcolor{comment}{/* examine the keys pressed */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_keydown(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
            \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas,
            \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
            \textcolor{keywordtype}{void}        *einfo)
\{
   \textcolor{keyword}{const} \hyperlink{Evas__Common_8h_a198d0b10861c1da456004688d3443e96}{Evas\_Modifier} *mods;
   \hyperlink{struct__Evas__Event__Key__Down}{Evas\_Event\_Key\_Down} *ev = einfo;

   fprintf(stdout, \textcolor{stringliteral}{"We've got key input: %s\(\backslash\)n"}, ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key});
   fprintf(stdout, \textcolor{stringliteral}{"It actually came from %s\(\backslash\)n"}, d.focus ?
           \textcolor{stringliteral}{"focus"} : \textcolor{stringliteral}{"key grab"});

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"h"}) == 0) \textcolor{comment}{/* print help */}
     \{
        fprintf(stdout, commands);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"a"}) == 0) \textcolor{comment}{/* toggle animation timer */}
     \{
        \textcolor{keywordflow}{if} (d.resize\_timer != NULL)
          \{
             fprintf(stdout, \textcolor{stringliteral}{"Stopping animation timer\(\backslash\)n"});
             \hyperlink{group__Ecore__Timer__Group_gab182e4c0e65b5b7241f7249de1b1039c}{ecore\_timer\_del}(d.resize\_timer);
             d.resize\_timer = NULL;
          \}
        \textcolor{keywordflow}{else}
          \{
             fprintf(stdout, \textcolor{stringliteral}{"Re-issuing animation timer\(\backslash\)n"});
             d.resize\_timer = \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\_timer\_add}(2, \_resize\_cb, NULL);
          \}
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"c"}) == 0) \textcolor{comment}{/* cycle between focus and key}
\textcolor{comment}{                                       * grabs for key input */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} ret;
        \hyperlink{Evas__Common_8h_a111c7333a7d49e44698bd19dd5bc9059}{Evas\_Modifier\_Mask} mask =
          \hyperlink{group__Evas__Keys_ga12255f6ad27ed224823cc2a0f6931399}{evas\_key\_modifier\_mask\_get}(d.canvas, \textcolor{stringliteral}{"Control"});

        fprintf(stdout, \textcolor{stringliteral}{"Switching to %s for key input\(\backslash\)n"}, d.focus ?
                \textcolor{stringliteral}{"key grabs"} : \textcolor{stringliteral}{"focus"});

        \textcolor{keywordflow}{if} (d.focus)
          \{
             \hyperlink{group__Evas__Object__Group__Basic_ga114336ce1de94dbb13843cca2516e34b}{evas\_object\_focus\_set}(d.bg, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE});
             fprintf(stdout, \textcolor{stringliteral}{"Focused object is now %s\(\backslash\)n"},
                     \hyperlink{group__Evas__Object__Group__Find_gac3c860541fd122f6763abb3a87b07e05}{evas\_focus\_get}(d.canvas) ?
                     \textcolor{stringliteral}{"still valid! Something went wrong."} : \textcolor{stringliteral}{"none."});

             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"a"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"c"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"d"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"f"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"p"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"o"}, mask, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"h"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
          \}
        \textcolor{keywordflow}{else} \textcolor{comment}{/* got here by key grabs */}
          \{
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"a"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"c"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"d"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"f"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"p"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"o"}, mask, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"h"}, 0, 0);

             \hyperlink{group__Evas__Object__Group__Basic_ga114336ce1de94dbb13843cca2516e34b}{evas\_object\_focus\_set}(d.bg, \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
          \}

c\_end:
        d.focus = !d.focus;

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"d"}) == 0) \textcolor{comment}{/* delete canvas' callbacks */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Deleting canvas event callbacks\(\backslash\)n"});
        \hyperlink{group__Evas__Canvas__Events_ga48b6d066830a1350bd5c8770070cd3f9}{evas\_event\_callback\_del\_full}(evas, 
      \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa5a68e4f5dccdc18a393ef4a4773236c3}{EVAS\_CALLBACK\_RENDER\_FLUSH\_PRE},
                                     \_render\_flush\_cb, NULL);
        \hyperlink{group__Evas__Canvas__Events_ga48b6d066830a1350bd5c8770070cd3f9}{evas\_event\_callback\_del\_full}(
          evas, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa7380ca16bf87762e96309473d3d306c5}{EVAS\_CALLBACK\_CANVAS\_OBJECT\_FOCUS\_IN},
          \_object\_focus\_in\_cb, NULL);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"f"}) == 0) \textcolor{comment}{/* freeze input for 3 seconds */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Freezing input for 3 seconds\(\backslash\)n"});
        \hyperlink{group__Evas__Event__Feeding__Group_ga4f6046343eab8b062e5509d984100ec8}{evas\_event\_freeze}(evas);
        d.freeze\_timer = \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\_timer\_add}(3, \_thaw\_cb, NULL);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"p"}) == 0) \textcolor{comment}{/* toggle precise point}
\textcolor{comment}{                                       * collision detection */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} precise = \hyperlink{group__Evas__Object__Group__Extras_ga4d2551c3265c013448f2b7cbb6bdf74d}{evas\_object\_precise\_is\_inside\_get}(d.
      img);

        fprintf(stdout, \textcolor{stringliteral}{"Toggling precise point collision detection %s on"}
                        \textcolor{stringliteral}{" Enlightenment logo\(\backslash\)n"}, precise ? \textcolor{stringliteral}{"off"} : \textcolor{stringliteral}{"on"});
        \hyperlink{group__Evas__Object__Group__Extras_ga9a344285f070ad36b899d8819e285579}{evas\_object\_precise\_is\_inside\_set}(d.img, !precise);

        \textcolor{keywordflow}{return};
     \}

   mods = \hyperlink{group__Evas__Keys_gabbfbb88042436b29b83b97098a8f6f3c}{evas\_key\_modifier\_get}(evas);
   \textcolor{keywordflow}{if} (\hyperlink{group__Evas__Keys_ga6cc24a5ea4b39b84c7a3e617de3db261}{evas\_key\_modifier\_is\_set}(mods, \textcolor{stringliteral}{"Control"}) &&
       (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"o"}) == 0)) \textcolor{comment}{/* add an obscured}
\textcolor{comment}{                                        * rectangle to the middle}
\textcolor{comment}{                                        * of the canvas */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Toggling obscured rectangle on canvas\(\backslash\)n"});
        \textcolor{keywordflow}{if} (!d.obscured)
          \{
             \textcolor{keywordtype}{int} w, h;
             \hyperlink{group__Evas__Output__Size_ga346bb724a254e8681c382b84886045b4}{evas\_output\_viewport\_get}(evas, NULL, NULL, &w, &h);
             \hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\_obscured\_rectangle\_add}(evas, w / 4, h / 4, w / 2, h / 2);
          \}
        \textcolor{keywordflow}{else}
          \{
             \textcolor{keywordtype}{int} w, h;
             \hyperlink{struct__Eina__Rectangle}{Eina\_Rectangle} *rect;
             \hyperlink{struct__Eina__List}{Eina\_List} *updates, *l;

             \hyperlink{group__Evas__Output__Size_ga346bb724a254e8681c382b84886045b4}{evas\_output\_viewport\_get}(evas, NULL, NULL, &w, &h);
             \hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\_obscured\_clear}(evas);

\end{DoxyCodeInclude}


In that example, pressing the \char`\"{}\-Ctrl\char`\"{} and \char`\"{}o\char`\"{} keys will impose or remove an obscured region in the middle of the canvas. You'll get the same contents at the time the key was pressed, if toggling it on, until you toggle it off again (make sure the animation is running on to get the idea better). See the full \hyperlink{Example_Evas_Events}{example}. 

References evas\-\_\-canvas\-\_\-obscured\-\_\-rectangle\-\_\-add.

\hypertarget{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-obscured\-\_\-clear@{evas\-\_\-obscured\-\_\-clear}}
\index{evas\-\_\-obscured\-\_\-clear@{evas\-\_\-obscured\-\_\-clear}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-obscured\-\_\-clear}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-obscured\-\_\-clear (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}


Remove all \char`\"{}obscured regions\char`\"{} from an Evas canvas. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer.\\
\hline
\end{DoxyParams}
This function removes all the rectangles from the obscured regions list of the canvas {\ttfamily e}. It takes obscured areas added with \hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\-\_\-obscured\-\_\-rectangle\-\_\-add()} and make them again a regions that {\bfseries have} to be repainted on rendering updates.

\begin{DoxyNote}{Note}
This is a {\bfseries very low level function}, which most of Evas' users wouldn't care about.

This function does {\bfseries not} flag the canvas as having its state changed. If you want to re-\/render it afterwards expecting new contents, you have to add \char`\"{}damage\char`\"{} regions yourself (see \hyperlink{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{evas\-\_\-damage\-\_\-rectangle\-\_\-add()}).
\end{DoxyNote}
\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\-\_\-obscured\-\_\-rectangle\-\_\-add()} for an example 

\hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\-\_\-render\-\_\-updates()} 
\end{DoxySeeAlso}


References evas\-\_\-canvas\-\_\-obscured\-\_\-clear.

\hypertarget{group__Evas__Canvas_gac4c9ada57c9eee19b470f6deab741abf}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render\-\_\-async@{evas\-\_\-render\-\_\-async}}
\index{evas\-\_\-render\-\_\-async@{evas\-\_\-render\-\_\-async}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render\-\_\-async}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-Bool} evas\-\_\-render\-\_\-async (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gac4c9ada57c9eee19b470f6deab741abf}


Render the given Evas canvas asynchronously. 


\begin{DoxyParams}{Parameters}
{\em e} & The canvas to render. \\
\hline
{\em func} & Optional function to call with the list of updated areas. \\
\hline
{\em data} & User data to pass to {\ttfamily func}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
E\-I\-N\-A\-\_\-\-T\-R\-U\-E if the canvas will render, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E otherwise.
\end{DoxyReturn}
This function only returns E\-I\-N\-A\-\_\-\-T\-R\-U\-E when a frame will be rendered. If the previous frame is still rendering, E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E will be returned so the users know not to wait for the updates callback and just return to their main loop.

If a {\ttfamily func} callback is given, a list of updated areas will be generated and the function will be called from the main thread after the rendered frame is flushed to the screen. The resulting list should be freed with  \hyperlink{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}{evas\-\_\-render\-\_\-updates\-\_\-free()}. The list is given in the {\ttfamily event\-\_\-info} parameter of the callback function.

\begin{DoxySince}{Since}
1.\-8 
\end{DoxySince}


References E\-I\-N\-A\-\_\-\-F\-A\-L\-S\-E, and evas\-\_\-canvas\-\_\-render\-\_\-async.

\hypertarget{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render\-\_\-updates@{evas\-\_\-render\-\_\-updates}}
\index{evas\-\_\-render\-\_\-updates@{evas\-\_\-render\-\_\-updates}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render\-\_\-updates}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\-\_\-\-List}$\ast$ evas\-\_\-render\-\_\-updates (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}


Force immediate renderization of the given Evas canvas. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A newly allocated list of updated rectangles of the canvas ({\ttfamily Eina\-\_\-\-Rectangle} structs). Free this list with \hyperlink{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}{evas\-\_\-render\-\_\-updates\-\_\-free()}.
\end{DoxyReturn}
This function forces an immediate renderization update of the given canvas {\ttfamily e}.

\begin{DoxyNote}{Note}
This is a {\bfseries very low level function}, which most of Evas' users wouldn't care about. One would use it, for example, to grab an Evas' canvas update regions and paint them back, using the canvas' pixmap, on a displaying system working below Evas.

Evas is a stateful canvas. If no operations changing its state took place since the last rendering action, you won't see no changes and this call will be a no-\/op.
\end{DoxyNote}
Example code follows.  
\begin{DoxyCodeInclude}
  \textcolor{stringliteral}{"\(\backslash\)tControl + o - add an obscured rectangle\(\backslash\)n"}
  \textcolor{stringliteral}{"\(\backslash\)th - print help\(\backslash\)n"};

\textcolor{keyword}{struct }test\_data
\{
   Ecore\_Evas  *ee;
   \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *canvas;
   \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *img, *bg;
   \hyperlink{group__Ecore__Timer__Group_gaf96ffb609956658ec038e54bd39f46f0}{Ecore\_Timer} *resize\_timer, *freeze\_timer;
   \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}    obscured, focus;
\};

\textcolor{keyword}{static} \textcolor{keyword}{struct }test\_data d = \{0\};

\textcolor{comment}{/* here to keep our example's window size and background image's}
\textcolor{comment}{ * size in synchrony */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_canvas\_resize\_cb(Ecore\_Evas *ee)
\{
   \textcolor{keywordtype}{int} w, h;

   \hyperlink{group__Ecore__Evas__Group_ga931aadf4603731e73e8a84e4b14f1493}{ecore\_evas\_geometry\_get}(ee, NULL, NULL, &w, &h);
   \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.bg, w, h);
\}

\textcolor{comment}{/* called when our rectangle gets focus */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_object\_focus\_in\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED,
                    \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} *e,
                    \textcolor{keywordtype}{void} *event\_info)
\{
   fprintf(stdout, \textcolor{stringliteral}{"An object got focused: %s\(\backslash\)n"},
           \hyperlink{group__Evas__Object__Group__Basic_ga7934106d84f6a019fcb421b6b4d860a3}{evas\_object\_name\_get}(event\_info));

   fprintf(stdout, \textcolor{stringliteral}{"Let's recheck it: %s\(\backslash\)n"},
           \hyperlink{group__Evas__Object__Group__Basic_ga7934106d84f6a019fcb421b6b4d860a3}{evas\_object\_name\_get}(\hyperlink{group__Evas__Object__Group__Find_gac3c860541fd122f6763abb3a87b07e05}{evas\_focus\_get}(e)));

   fprintf(stdout, \textcolor{stringliteral}{"And again: %s\(\backslash\)n"}, \hyperlink{group__Evas__Object__Group__Basic_ga49247ad06388c8a3c44d18fa5daf0af9}{evas\_object\_focus\_get}(event\_info) ?
           \textcolor{stringliteral}{"OK!"} : \textcolor{stringliteral}{"Oops, something is bad."});
\}

\textcolor{comment}{/* render flush callback */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_render\_flush\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED,
                 \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas} *e EINA\_UNUSED,
                 \textcolor{keywordtype}{void} *event\_info EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Canvas is about to flush its rendering pipeline!\(\backslash\)n"});
\}

\textcolor{comment}{/* put some action in the canvas */}
\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_resize\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED)
\{
   \textcolor{keywordtype}{int} w, h, cw, ch;

   \hyperlink{group__Evas__Object__Group__Basic_ga6f52fab1a96dc58c85ee481d84bac871}{evas\_object\_geometry\_get}(d.img, NULL, NULL, &w, &h);
   \hyperlink{group__Ecore__Evas__Group_ga931aadf4603731e73e8a84e4b14f1493}{ecore\_evas\_geometry\_get}(d.ee, NULL, NULL, &cw, &ch);

   \textcolor{keywordflow}{if} (w < cw)
     \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.img, cw, ch);
   \textcolor{keywordflow}{else}
     \hyperlink{group__Evas__Object__Group__Basic_ga21e8604c0e4a93e469bff4bd069e82b5}{evas\_object\_resize}(d.img, cw / 2, ch / 2);

   \textcolor{keywordflow}{return} \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}; \textcolor{comment}{/* re-issue the timer */}
\}

\textcolor{comment}{/* let's have our events back */}
\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_thaw\_cb(\textcolor{keywordtype}{void} *data EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Canvas was frozen %d times, now thawing.\(\backslash\)n"},
           \hyperlink{group__Evas__Event__Feeding__Group_gaca66af7f9b72ddbd63104d59c1fdf894}{evas\_event\_freeze\_get}(d.canvas));
   \hyperlink{group__Evas__Event__Feeding__Group_ga376918c56c3dc588a059da7fe8629b70}{evas\_event\_thaw}(d.canvas);
   \textcolor{keywordflow}{return} \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE}; \textcolor{comment}{/* do not re-issue the timer */}
\}

\textcolor{comment}{/* mouse enters the object's area */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_mouse\_in(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
             \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas EINA\_UNUSED,
             \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
             \textcolor{keywordtype}{void}        *einfo EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Enlightenment logo has had the mouse in.\(\backslash\)n"});
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_mouse\_out(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
              \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas EINA\_UNUSED,
              \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
              \textcolor{keywordtype}{void}        *einfo EINA\_UNUSED)
\{
   fprintf(stdout, \textcolor{stringliteral}{"Enlightenment logo has had the mouse out.\(\backslash\)n"});
\} \textcolor{comment}{/* mouse exits the object's area */}

\textcolor{comment}{/* examine the keys pressed */}
\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_on\_keydown(\textcolor{keywordtype}{void}        *data EINA\_UNUSED,
            \hyperlink{group__Evas__Canvas_ga5ff87cc4ce6bc43e3b640a6d37f73043}{Evas}        *evas,
            \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object} *o EINA\_UNUSED,
            \textcolor{keywordtype}{void}        *einfo)
\{
   \textcolor{keyword}{const} \hyperlink{Evas__Common_8h_a198d0b10861c1da456004688d3443e96}{Evas\_Modifier} *mods;
   \hyperlink{struct__Evas__Event__Key__Down}{Evas\_Event\_Key\_Down} *ev = einfo;

   fprintf(stdout, \textcolor{stringliteral}{"We've got key input: %s\(\backslash\)n"}, ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key});
   fprintf(stdout, \textcolor{stringliteral}{"It actually came from %s\(\backslash\)n"}, d.focus ?
           \textcolor{stringliteral}{"focus"} : \textcolor{stringliteral}{"key grab"});

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"h"}) == 0) \textcolor{comment}{/* print help */}
     \{
        fprintf(stdout, commands);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"a"}) == 0) \textcolor{comment}{/* toggle animation timer */}
     \{
        \textcolor{keywordflow}{if} (d.resize\_timer != NULL)
          \{
             fprintf(stdout, \textcolor{stringliteral}{"Stopping animation timer\(\backslash\)n"});
             \hyperlink{group__Ecore__Timer__Group_gab182e4c0e65b5b7241f7249de1b1039c}{ecore\_timer\_del}(d.resize\_timer);
             d.resize\_timer = NULL;
          \}
        \textcolor{keywordflow}{else}
          \{
             fprintf(stdout, \textcolor{stringliteral}{"Re-issuing animation timer\(\backslash\)n"});
             d.resize\_timer = \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\_timer\_add}(2, \_resize\_cb, NULL);
          \}
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"c"}) == 0) \textcolor{comment}{/* cycle between focus and key}
\textcolor{comment}{                                       * grabs for key input */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} ret;
        \hyperlink{Evas__Common_8h_a111c7333a7d49e44698bd19dd5bc9059}{Evas\_Modifier\_Mask} mask =
          \hyperlink{group__Evas__Keys_ga12255f6ad27ed224823cc2a0f6931399}{evas\_key\_modifier\_mask\_get}(d.canvas, \textcolor{stringliteral}{"Control"});

        fprintf(stdout, \textcolor{stringliteral}{"Switching to %s for key input\(\backslash\)n"}, d.focus ?
                \textcolor{stringliteral}{"key grabs"} : \textcolor{stringliteral}{"focus"});

        \textcolor{keywordflow}{if} (d.focus)
          \{
             \hyperlink{group__Evas__Object__Group__Basic_ga114336ce1de94dbb13843cca2516e34b}{evas\_object\_focus\_set}(d.bg, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{EINA\_FALSE});
             fprintf(stdout, \textcolor{stringliteral}{"Focused object is now %s\(\backslash\)n"},
                     \hyperlink{group__Evas__Object__Group__Find_gac3c860541fd122f6763abb3a87b07e05}{evas\_focus\_get}(d.canvas) ?
                     \textcolor{stringliteral}{"still valid! Something went wrong."} : \textcolor{stringliteral}{"none."});

             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"a"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"c"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"d"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"f"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"p"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"o"}, mask, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
             ret = \hyperlink{group__Evas__Keys_ga85828f3c1f252391def19e179b850def}{evas\_object\_key\_grab}(d.bg, \textcolor{stringliteral}{"h"}, 0, 0, 
      \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
             \textcolor{keywordflow}{if} (!ret)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Something went wrong with key grabs.\(\backslash\)n"});
                  \textcolor{keywordflow}{goto} c\_end;
               \}
          \}
        \textcolor{keywordflow}{else} \textcolor{comment}{/* got here by key grabs */}
          \{
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"a"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"c"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"d"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"f"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"p"}, 0, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"o"}, mask, 0);
             \hyperlink{group__Evas__Keys_ga4bf730e4f650c51a9a76d76bc63f44c9}{evas\_object\_key\_ungrab}(d.bg, \textcolor{stringliteral}{"h"}, 0, 0);

             \hyperlink{group__Evas__Object__Group__Basic_ga114336ce1de94dbb13843cca2516e34b}{evas\_object\_focus\_set}(d.bg, \hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE});
          \}

c\_end:
        d.focus = !d.focus;

        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"d"}) == 0) \textcolor{comment}{/* delete canvas' callbacks */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Deleting canvas event callbacks\(\backslash\)n"});
        \hyperlink{group__Evas__Canvas__Events_ga48b6d066830a1350bd5c8770070cd3f9}{evas\_event\_callback\_del\_full}(evas, 
      \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa5a68e4f5dccdc18a393ef4a4773236c3}{EVAS\_CALLBACK\_RENDER\_FLUSH\_PRE},
                                     \_render\_flush\_cb, NULL);
        \hyperlink{group__Evas__Canvas__Events_ga48b6d066830a1350bd5c8770070cd3f9}{evas\_event\_callback\_del\_full}(
          evas, \hyperlink{Evas__Common_8h_a99e208e463a20499aabe6faac8a8cb8aa7380ca16bf87762e96309473d3d306c5}{EVAS\_CALLBACK\_CANVAS\_OBJECT\_FOCUS\_IN},
          \_object\_focus\_in\_cb, NULL);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"f"}) == 0) \textcolor{comment}{/* freeze input for 3 seconds */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Freezing input for 3 seconds\(\backslash\)n"});
        \hyperlink{group__Evas__Event__Feeding__Group_ga4f6046343eab8b062e5509d984100ec8}{evas\_event\_freeze}(evas);
        d.freeze\_timer = \hyperlink{group__Ecore__Timer__Group_gad84e3e9e2b70a915ce9d44263666bb07}{ecore\_timer\_add}(3, \_thaw\_cb, NULL);
        \textcolor{keywordflow}{return};
     \}

   \textcolor{keywordflow}{if} (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"p"}) == 0) \textcolor{comment}{/* toggle precise point}
\textcolor{comment}{                                       * collision detection */}
     \{
        \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool} precise = \hyperlink{group__Evas__Object__Group__Extras_ga4d2551c3265c013448f2b7cbb6bdf74d}{evas\_object\_precise\_is\_inside\_get}(d.
      img);

        fprintf(stdout, \textcolor{stringliteral}{"Toggling precise point collision detection %s on"}
                        \textcolor{stringliteral}{" Enlightenment logo\(\backslash\)n"}, precise ? \textcolor{stringliteral}{"off"} : \textcolor{stringliteral}{"on"});
        \hyperlink{group__Evas__Object__Group__Extras_ga9a344285f070ad36b899d8819e285579}{evas\_object\_precise\_is\_inside\_set}(d.img, !precise);

        \textcolor{keywordflow}{return};
     \}

   mods = \hyperlink{group__Evas__Keys_gabbfbb88042436b29b83b97098a8f6f3c}{evas\_key\_modifier\_get}(evas);
   \textcolor{keywordflow}{if} (\hyperlink{group__Evas__Keys_ga6cc24a5ea4b39b84c7a3e617de3db261}{evas\_key\_modifier\_is\_set}(mods, \textcolor{stringliteral}{"Control"}) &&
       (strcmp(ev->\hyperlink{struct__Evas__Event__Key__Down_a70473bba88a1afaee180a54150513824}{key}, \textcolor{stringliteral}{"o"}) == 0)) \textcolor{comment}{/* add an obscured}
\textcolor{comment}{                                        * rectangle to the middle}
\textcolor{comment}{                                        * of the canvas */}
     \{
        fprintf(stdout, \textcolor{stringliteral}{"Toggling obscured rectangle on canvas\(\backslash\)n"});
        \textcolor{keywordflow}{if} (!d.obscured)
          \{
             \textcolor{keywordtype}{int} w, h;
             \hyperlink{group__Evas__Output__Size_ga346bb724a254e8681c382b84886045b4}{evas\_output\_viewport\_get}(evas, NULL, NULL, &w, &h);
             \hyperlink{group__Evas__Canvas_gaeb0ecb2e1859726900b2ab1bfa448769}{evas\_obscured\_rectangle\_add}(evas, w / 4, h / 4, w / 2, h / 2);
          \}
        \textcolor{keywordflow}{else}
          \{
             \textcolor{keywordtype}{int} w, h;
             \hyperlink{struct__Eina__Rectangle}{Eina\_Rectangle} *rect;
             \hyperlink{struct__Eina__List}{Eina\_List} *updates, *l;

             \hyperlink{group__Evas__Output__Size_ga346bb724a254e8681c382b84886045b4}{evas\_output\_viewport\_get}(evas, NULL, NULL, &w, &h);
             \hyperlink{group__Evas__Canvas_gab68efe9c1d8fb95ac87dde262264730d}{evas\_obscured\_clear}(evas);

             \textcolor{comment}{/* we have to flag a damage region here because}
\textcolor{comment}{              * evas\_obscured\_clear() doesn't change the canvas'}
\textcolor{comment}{              * state. we'd have to wait for an animation step, for}
\textcolor{comment}{              * example, to get the result, without it */}
             \hyperlink{group__Evas__Canvas_gaef9559fb70234784623aadb332bfcb6c}{evas\_damage\_rectangle\_add}(evas, 0, 0, w, h);

             updates = \hyperlink{group__Evas__Canvas_gaf1ba812f79bd3f68780917e7a66c8d6e}{evas\_render\_updates}(evas);

             \hyperlink{group__Eina__List__Group_gad02f746a08ee0b12b7ed66d4bc0d71d8}{EINA\_LIST\_FOREACH}(updates, l, rect)
               \{
                  fprintf(stdout, \textcolor{stringliteral}{"Rectangle (%d, %d, %d, %d) on canvas got a"}
                                  \textcolor{stringliteral}{" rendering update.\(\backslash\)n"}, rect->\hyperlink{struct__Eina__Rectangle_a8358c0791dcf476432687510ca4e5d5c}{x}, rect->\hyperlink{struct__Eina__Rectangle_ae74dc834fb71a1f4cd9e3fe11dec3940}{y},
                          rect->\hyperlink{struct__Eina__Rectangle_af6a92d51ec25ee3464c81297ffc3a330}{w},
                          rect->\hyperlink{struct__Eina__Rectangle_a7570ed17f58fc94be997414a86130074}{h});
               \}
             \hyperlink{group__Evas__Canvas_ga038d98c7c13a86b6ba4de51f8aba3595}{evas\_render\_updates\_free}(updates);
          \}
        d.obscured = !d.obscured;

\end{DoxyCodeInclude}


See the full \hyperlink{Example_Evas_Events}{example}. 

References evas\-\_\-canvas\-\_\-render\-\_\-updates.

\hypertarget{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render@{evas\-\_\-render}}
\index{evas\-\_\-render@{evas\-\_\-render}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-render (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}


Force renderization of the given canvas. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer. \\
\hline
\end{DoxyParams}


References evas\-\_\-canvas\-\_\-render.

\hypertarget{group__Evas__Canvas_ga4d5ccf6f2e9ba056ce6b590f76bfc9f7}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-norender@{evas\-\_\-norender}}
\index{evas\-\_\-norender@{evas\-\_\-norender}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-norender}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-norender (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga4d5ccf6f2e9ba056ce6b590f76bfc9f7}


Update the canvas internal objects but not triggering immediate renderization. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer.\\
\hline
\end{DoxyParams}
This function updates the canvas internal objects not triggering renderization. To force renderization function \hyperlink{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}{evas\-\_\-render()} should be used.

\begin{DoxySeeAlso}{See Also}
\hyperlink{group__Evas__Canvas_ga59c2cae9ef69e439a58dbad26f92b082}{evas\-\_\-render}. 
\end{DoxySeeAlso}


References evas\-\_\-canvas\-\_\-norender.

\hypertarget{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render\-\_\-idle\-\_\-flush@{evas\-\_\-render\-\_\-idle\-\_\-flush}}
\index{evas\-\_\-render\-\_\-idle\-\_\-flush@{evas\-\_\-render\-\_\-idle\-\_\-flush}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render\-\_\-idle\-\_\-flush}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-render\-\_\-idle\-\_\-flush (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}


Make the canvas discard internally cached data used for rendering. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer.\\
\hline
\end{DoxyParams}
This function flushes the arrays of delete, active and render objects. Other things it may also discard are\-: shared memory segments, temporary scratch buffers, cached data to avoid re-\/compute of that data etc. 

References evas\-\_\-canvas\-\_\-render\-\_\-idle\-\_\-flush.

\hypertarget{group__Evas__Canvas_ga0166abbe90a05935146ab9c133795e55}{\index{Canvas Functions@{Canvas Functions}!evas\-\_\-render\-\_\-dump@{evas\-\_\-render\-\_\-dump}}
\index{evas\-\_\-render\-\_\-dump@{evas\-\_\-render\-\_\-dump}!Canvas Functions@{Canvas Functions}}
\subsubsection[{evas\-\_\-render\-\_\-dump}]{\setlength{\rightskip}{0pt plus 5cm}void evas\-\_\-render\-\_\-dump (
\begin{DoxyParamCaption}
\item[{{\bf Evas} $\ast$}]{e}
\end{DoxyParamCaption}
)}}\label{group__Evas__Canvas_ga0166abbe90a05935146ab9c133795e55}


Make the canvas discard as much data as possible used by the engine at runtime. 


\begin{DoxyParams}{Parameters}
{\em e} & The given canvas pointer.\\
\hline
\end{DoxyParams}
This function will unload images, delete textures and much more, where possible. You may also want to call \hyperlink{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}{evas\-\_\-render\-\_\-idle\-\_\-flush()} immediately prior to this to perhaps discard a little more, though \hyperlink{group__Evas__Canvas_ga0166abbe90a05935146ab9c133795e55}{evas\-\_\-render\-\_\-dump()} should implicitly delete most of what \hyperlink{group__Evas__Canvas_ga4da52cd30a44f9d3e65f7d213d1516e9}{evas\-\_\-render\-\_\-idle\-\_\-flush()} might discard too. 

References evas\-\_\-canvas\-\_\-render\-\_\-dump.

