\hypertarget{group__Ecore__Animator__Group}{}\section{Ecore Animator functions}
\label{group__Ecore__Animator__Group}\index{Ecore Animator functions@{Ecore Animator functions}}


Ecore animators are a helper to simplify creating animations.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Ecore__Animator__Group_gad1a6b70608fac23f54d51254d9856066}{}typedef enum \hyperlink{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map} {\bfseries Ecore\+\_\+\+Pos\+\_\+\+Map}\label{group__Ecore__Animator__Group_gad1a6b70608fac23f54d51254d9856066}

\item 
\hypertarget{group__Ecore__Animator__Group_ga6166b80b228b3601c8dbe5a4e4d43936}{}typedef enum \hyperlink{group__Ecore__Animator__Group_ga65389917c70f87bd3b9b76850df8bfe6}{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source} {\bfseries Ecore\+\_\+\+Animator\+\_\+\+Source}\label{group__Ecore__Animator__Group_ga6166b80b228b3601c8dbe5a4e4d43936}

\item 
\hypertarget{group__Ecore__Animator__Group_ga7cfa90cfd3bb181d28604ca34d896c91}{}typedef \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool}($\ast$ \hyperlink{group__Ecore__Animator__Group_ga7cfa90cfd3bb181d28604ca34d896c91}{Ecore\+\_\+\+Timeline\+\_\+\+Cb}) (void $\ast$data, double pos)\label{group__Ecore__Animator__Group_ga7cfa90cfd3bb181d28604ca34d896c91}

\begin{DoxyCompactList}\small\item\em A callback run for a task (animators with runtimes) \end{DoxyCompactList}\item 
\hypertarget{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{}typedef \hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} \hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator}\label{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}

\begin{DoxyCompactList}\small\item\em A handle for animators. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map} \{ \\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca67cea4cd70c7c97862cdb9d3f51e59fd}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca538f465678f595805768d180b6b652fd}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cadfce20b454f9090f0f3fb0a90c8f6811}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca0d9d0bb084cee51d0126167dc5bf4569}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cab4d571f71ce9f295216d084900edde48}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cace459ff341178e73020370cb729992af}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca660ddbafd4accde5653e92d1769bbaa5}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2f9a8bd1d3eb51ea642b3939da661cb7}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2eb0a9af74a33bf88fc19d350f703f5e}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cac8cbb42f58cabb5db04f52cede85dacd}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca605ff22fa3be1bd90f1823b211f3b084}{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R}
 \}\begin{DoxyCompactList}\small\item\em Defines the position mappings for the animation. \end{DoxyCompactList}
\item 
enum \hyperlink{group__Ecore__Animator__Group_ga65389917c70f87bd3b9b76850df8bfe6}{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source} \{ \\*
\hyperlink{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a0dbb85b96817331505974486f5604e77}{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R}, 
\\*
\hyperlink{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a40806499705304d1a7a0784b7ea06be3}{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M}
 \}\begin{DoxyCompactList}\small\item\em Defines the timing sources for animators. \end{DoxyCompactList}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set} (double frametime)
\begin{DoxyCompactList}\small\item\em Set the animator call interval in seconds. \end{DoxyCompactList}\item 
double \hyperlink{group__Ecore__Animator__Group_ga2981cf0a663650e0457d18a7ba18a6ad}{ecore\+\_\+animator\+\_\+frametime\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get the animator call interval in seconds. \end{DoxyCompactList}\item 
double \hyperlink{group__Ecore__Animator__Group_ga5d4c42b9fdb22748943efa9ae6ba0a47}{ecore\+\_\+animator\+\_\+pos\+\_\+map} (double pos, Ecore\+\_\+\+Pos\+\_\+\+Map map, double v1, double v2)
\begin{DoxyCompactList}\small\item\em Maps an input position from 0.\+0 to 1.\+0 along a timeline to a position in a different curve. \end{DoxyCompactList}\item 
double \hyperlink{group__Ecore__Animator__Group_gaf003ecceff48304546472ad28b987883}{ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n} (double pos, Ecore\+\_\+\+Pos\+\_\+\+Map map, int v\+\_\+size, double $\ast$v)
\begin{DoxyCompactList}\small\item\em Maps an input position from 0.\+0 to 1.\+0 along a timeline to a position in a different curve. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{ecore\+\_\+animator\+\_\+source\+\_\+set} (Ecore\+\_\+\+Animator\+\_\+\+Source source)
\begin{DoxyCompactList}\small\item\em Set the source of animator ticks for the mainloop. \end{DoxyCompactList}\item 
Ecore\+\_\+\+Animator\+\_\+\+Source \hyperlink{group__Ecore__Animator__Group_ga880be7bbe3c47b2e1b91f5678e7f6c26}{ecore\+\_\+animator\+\_\+source\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get the animator source currently set. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set} (\hyperlink{group__Ecore__Main__Loop__Group_ga00aa98b68b33de046b49a0158956874f}{Ecore\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set the function that begins a custom animator tick source. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set} (\hyperlink{group__Ecore__Main__Loop__Group_ga00aa98b68b33de046b49a0158956874f}{Ecore\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set the function that ends a custom animator tick source. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick} (void)
\begin{DoxyCompactList}\small\item\em Trigger a custom animator tick. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator} $\ast$ \hyperlink{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}{ecore\+\_\+animator\+\_\+add} (\hyperlink{group__Ecore__Main__Loop__Group_ga8a36ef1ac24bfa317a7826617264e530}{Ecore\+\_\+\+Task\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Add an animator to call {\ttfamily func} at every animation tick during main loop execution. \end{DoxyCompactList}\item 
\hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator} $\ast$ \hyperlink{group__Ecore__Animator__Group_ga523a0e9716bcc6573eb9f4b310067ed1}{ecore\+\_\+animator\+\_\+timeline\+\_\+add} (double runtime, \hyperlink{group__Ecore__Animator__Group_ga7cfa90cfd3bb181d28604ca34d896c91}{Ecore\+\_\+\+Timeline\+\_\+\+Cb} func, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Add an animator that runs for a limited time. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Ecore__Animator__Group_gaadfa590f3c1638035393ed9d7aa10e2f}{ecore\+\_\+animator\+\_\+del} (\hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator} $\ast$animator)
\begin{DoxyCompactList}\small\item\em Delete the specified animator from the animator list. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_gaff76e892f893610f9360aa6fddd810ef}{ecore\+\_\+animator\+\_\+freeze} (\hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator} $\ast$animator)
\begin{DoxyCompactList}\small\item\em Suspend the specified animator. \end{DoxyCompactList}\item 
void \hyperlink{group__Ecore__Animator__Group_ga11c89906f136e3132e23527e412ccc69}{ecore\+\_\+animator\+\_\+thaw} (\hyperlink{group__Ecore__Animator__Group_gaeb096f0da5f8f0fb3e9498a560d3b59c}{Ecore\+\_\+\+Animator} $\ast$animator)
\begin{DoxyCompactList}\small\item\em Restore execution of the specified animator. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Ecore animators are a helper to simplify creating animations. 

Creating an animation is as simple as saying for how long it should be run and having a callback that does the animation, something like this\+: 
\begin{DoxyCode}
\textcolor{keyword}{static} \hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\_Bool}
\_do\_animation(\textcolor{keywordtype}{void} *data, \textcolor{keywordtype}{double} pos)
\{
   \hyperlink{group__Evas__Font__Group_ga02da8091bbac768b8e86c7b74b2a94f9}{evas\_object\_move}(data, 100 * pos, 100 * pos);
   ... \textcolor{keywordflow}{do} some more animating ...
\}
...
ecore\_animator\_timeline\_add(2, \_do\_animation, my\_evas\_object);
\end{DoxyCode}
 In the sample above we create an animation to move {\ttfamily my\+\_\+evas\+\_\+object} from position (0,0) to (100,100) in 2 seconds.

If your animation will run for an unspecified amount of time you can use \hyperlink{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}{ecore\+\_\+animator\+\_\+add()}, which is like using \hyperlink{group__Ecore__Timer__Group_ga7b9cb9d24ecebfdbb957436e2e669402}{ecore\+\_\+timer\+\_\+add()} with the interval being the \hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{framerate}. Note that this has tangible benefits to creating a timer for each animation in terms of performance.

For a more detailed example that show several animation see \hyperlink{tutorial_ecore_animator}{Ecore animator example}. 

\subsection{Enumeration Type Documentation}
\hypertarget{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}{}\index{Ecore Animator functions@{Ecore Animator functions}!\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map@{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map}}
\index{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map@{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf \+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map}}\label{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}


Defines the position mappings for the animation. 

\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca67cea4cd70c7c97862cdb9d3f51e59fd}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca67cea4cd70c7c97862cdb9d3f51e59fd}
}]Linear 0.\+0 -\/$>$ 1.\+0. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca538f465678f595805768d180b6b652fd}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca538f465678f595805768d180b6b652fd}
}]Start slow then speed up. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cadfce20b454f9090f0f3fb0a90c8f6811}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cadfce20b454f9090f0f3fb0a90c8f6811}
}]Start fast then slow down. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca0d9d0bb084cee51d0126167dc5bf4569}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca0d9d0bb084cee51d0126167dc5bf4569}
}]Start slow, speed up then slow down at end. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cab4d571f71ce9f295216d084900edde48}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cab4d571f71ce9f295216d084900edde48}
}]Start slow then speed up, v1 being a power factor, 0.\+0 being linear, 1.\+0 being normal accelerate, 2.\+0 being much more pronounced accelerate (squared), 3.\+0 being cubed, etc. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cace459ff341178e73020370cb729992af}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cace459ff341178e73020370cb729992af}
}]Start fast then slow down, v1 being a power factor, 0.\+0 being linear, 1.\+0 being normal decelerate, 2.\+0 being much more pronounced decelerate (squared), 3.\+0 being cubed, etc. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca660ddbafd4accde5653e92d1769bbaa5}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca660ddbafd4accde5653e92d1769bbaa5}
}]Start slow, speed up then slow down at end, v1 being a power factor, 0.\+0 being linear, 1.\+0 being normal sinusoidal, 2.\+0 being much more pronounced sinusoidal (squared), 3.\+0 being cubed, etc. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2f9a8bd1d3eb51ea642b3939da661cb7}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2f9a8bd1d3eb51ea642b3939da661cb7}
}]Start at gradient $\ast$ v1, interpolated via power of v2 curve. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2eb0a9af74a33bf88fc19d350f703f5e}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca2eb0a9af74a33bf88fc19d350f703f5e}
}]Start at 0.\+0 then \char`\"{}drop\char`\"{} like a ball bouncing to the ground at 1.\+0, and bounce v2 times, with decay factor of v1. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cac8cbb42f58cabb5db04f52cede85dacd}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041cac8cbb42f58cabb5db04f52cede85dacd}
}]Start at 0.\+0 then \char`\"{}wobble\char`\"{} like a spring rest position 1.\+0, and wobble v2 times, with decay factor of v1. \index{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R@{E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca605ff22fa3be1bd90f1823b211f3b084}{}E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R\label{group__Ecore__Animator__Group_gga2db0d0f0f3973829c7f700e5af3e041ca605ff22fa3be1bd90f1823b211f3b084}
}]Follow the cubic-\/bezier curve calculated with the control points (x1, y1), (x2, y2) \end{description}
\end{Desc}
\hypertarget{group__Ecore__Animator__Group_ga65389917c70f87bd3b9b76850df8bfe6}{}\index{Ecore Animator functions@{Ecore Animator functions}!\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source@{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source}}
\index{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source@{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{\+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf \+\_\+\+Ecore\+\_\+\+Animator\+\_\+\+Source}}\label{group__Ecore__Animator__Group_ga65389917c70f87bd3b9b76850df8bfe6}


Defines the timing sources for animators. 

\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R@{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R@{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a0dbb85b96817331505974486f5604e77}{}E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R\label{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a0dbb85b96817331505974486f5604e77}
}]The default system clock/timer based animator that ticks every \char`\"{}frametime\char`\"{} seconds. \index{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M@{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M}!Ecore Animator functions@{Ecore Animator functions}}\index{Ecore Animator functions@{Ecore Animator functions}!E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M@{E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M}}\item[{\em 
\hypertarget{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a40806499705304d1a7a0784b7ea06be3}{}E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M\label{group__Ecore__Animator__Group_gga65389917c70f87bd3b9b76850df8bfe6a40806499705304d1a7a0784b7ea06be3}
}]A custom animator trigger that you need to call \hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()} to make it tick. \end{description}
\end{Desc}


\subsection{Function Documentation}
\hypertarget{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+frametime\+\_\+set@{ecore\+\_\+animator\+\_\+frametime\+\_\+set}}
\index{ecore\+\_\+animator\+\_\+frametime\+\_\+set@{ecore\+\_\+animator\+\_\+frametime\+\_\+set}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+frametime\+\_\+set(double frametime)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+frametime\+\_\+set (
\begin{DoxyParamCaption}
\item[{double}]{frametime}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}


Set the animator call interval in seconds. 


\begin{DoxyParams}{Parameters}
{\em frametime} & The time in seconds in between animator ticks.\\
\hline
\end{DoxyParams}
This function sets the time interval (in seconds) between animator ticks. At every tick the callback of every existing animator will be called.

\begin{DoxyWarning}{Warning}
Too small a value may cause performance issues and too high a value may cause your animation to seem \char`\"{}jerky\char`\"{}.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
The default {\ttfamily frametime} value is 1/30th of a second. 
\end{DoxyNote}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.



Referenced by edje\+\_\+frametime\+\_\+set().

\hypertarget{group__Ecore__Animator__Group_ga2981cf0a663650e0457d18a7ba18a6ad}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+frametime\+\_\+get@{ecore\+\_\+animator\+\_\+frametime\+\_\+get}}
\index{ecore\+\_\+animator\+\_\+frametime\+\_\+get@{ecore\+\_\+animator\+\_\+frametime\+\_\+get}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+frametime\+\_\+get(void)}]{\setlength{\rightskip}{0pt plus 5cm}double ecore\+\_\+animator\+\_\+frametime\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga2981cf0a663650e0457d18a7ba18a6ad}


Get the animator call interval in seconds. 

\begin{DoxyReturn}{Returns}
The time in second in between animator ticks.
\end{DoxyReturn}
This function retrieves the time in seconds between animator ticks.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L.



Referenced by edje\+\_\+frametime\+\_\+get().

\hypertarget{group__Ecore__Animator__Group_ga5d4c42b9fdb22748943efa9ae6ba0a47}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+pos\+\_\+map@{ecore\+\_\+animator\+\_\+pos\+\_\+map}}
\index{ecore\+\_\+animator\+\_\+pos\+\_\+map@{ecore\+\_\+animator\+\_\+pos\+\_\+map}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+pos\+\_\+map(double pos, Ecore\+\_\+\+Pos\+\_\+\+Map map, double v1, double v2)}]{\setlength{\rightskip}{0pt plus 5cm}double ecore\+\_\+animator\+\_\+pos\+\_\+map (
\begin{DoxyParamCaption}
\item[{double}]{pos, }
\item[{Ecore\+\_\+\+Pos\+\_\+\+Map}]{map, }
\item[{double}]{v1, }
\item[{double}]{v2}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga5d4c42b9fdb22748943efa9ae6ba0a47}


Maps an input position from 0.\+0 to 1.\+0 along a timeline to a position in a different curve. 


\begin{DoxyParams}{Parameters}
{\em pos} & The input position to map \\
\hline
{\em map} & The mapping to use \\
\hline
{\em v1} & A parameter use by the mapping (pass 0.\+0 if not used) \\
\hline
{\em v2} & A parameter use by the mapping (pass 0.\+0 if not used) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The mapped value
\end{DoxyReturn}
Takes an input position (0.\+0 to 1.\+0) and maps to a new position (normally between 0.\+0 and 1.\+0, but it may go above/below 0.\+0 or 1.\+0 to show that it has \char`\"{}overshot\char`\"{} the mark) using some interpolation (mapping) algorithm.

This function useful to create non-\/linear animations. It offers a variety of possible animation curves to be used\+: \begin{DoxyItemize}
\item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R -\/ Linear, returns {\ttfamily pos} \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E -\/ Start slow then speed up \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E -\/ Start fast then slow down \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L -\/ Start slow, speed up then slow down at end \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start slow then speed up, v1 being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E, 2.\+0 being much more pronounced accelerate (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start fast then slow down, v1 being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E, 2.\+0 being much more pronounced decelerate (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start slow, speed up then slow down at end, v1 being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L, 2.\+0 being much more pronounced sinusoidal (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P -\/ Start at gradient $\ast$ v1, interpolated via power of v2 curve \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E -\/ Start at 0.\+0 then \char`\"{}drop\char`\"{} like a ball bouncing to the ground at 1.\+0, and bounce v2 times, with decay factor of v1 \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G -\/ Start at 0.\+0 then \char`\"{}wobble\char`\"{} like a spring rest position 1.\+0, and wobble v2 times, with decay factor of v1 \begin{DoxyNote}{Note}
When not listed v1 and v2 have no effect.
\end{DoxyNote}
 
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth]{ecore-pos-map}}
\end{DoxyImageNoCaption}
\end{DoxyItemize}
One way to use this would be\+: 
\begin{DoxyCode}
1 double pos; // input position in a timeline from 0.0 to 1.0
2 double out; // output position after mapping
3 int x1, y1, x2, y2; // x1 & y1 are start position, x2 & y2 are end position
4 int x, y; // x & y are the calculated position
5 
6 out = ecore\_animator\_pos\_map(pos, ECORE\_POS\_MAP\_BOUNCE, 1.8, 7);
7 x = (x1 * out) + (x2 * (1.0 - out));
8 y = (y1 * out) + (y2 * (1.0 - out));
9 move\_my\_object\_to(myobject, x, y);
\end{DoxyCode}
 This will make an animation that bounces 7 each times diminishing by a factor of 1.\+8.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map}
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}


References ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n().

\hypertarget{group__Ecore__Animator__Group_gaf003ecceff48304546472ad28b987883}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n@{ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n}}
\index{ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n@{ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n(double pos, Ecore\+\_\+\+Pos\+\_\+\+Map map, int v\+\_\+size, double $\ast$v)}]{\setlength{\rightskip}{0pt plus 5cm}double ecore\+\_\+animator\+\_\+pos\+\_\+map\+\_\+n (
\begin{DoxyParamCaption}
\item[{double}]{pos, }
\item[{Ecore\+\_\+\+Pos\+\_\+\+Map}]{map, }
\item[{int}]{v\+\_\+size, }
\item[{double $\ast$}]{v}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gaf003ecceff48304546472ad28b987883}


Maps an input position from 0.\+0 to 1.\+0 along a timeline to a position in a different curve. 


\begin{DoxyParams}{Parameters}
{\em pos} & The input position to map \\
\hline
{\em map} & The mapping to use \\
\hline
{\em v\+\_\+size} & The size of the v array. \\
\hline
{\em v} & An array with the double parameters to be used by the mapping. N\+U\+L\+L if not used. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The mapped value
\end{DoxyReturn}
Takes an input position (0.\+0 to 1.\+0) and maps to a new position (normally between 0.\+0 and 1.\+0, but it may go above/below 0.\+0 or 1.\+0 to show that it has \char`\"{}overshot\char`\"{} the mark) using some interpolation (mapping) algorithm.

This function useful to create non-\/linear animations. It offers a variety of possible animation curves to be used\+: \begin{DoxyItemize}
\item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R -\/ Linear, returns {\ttfamily pos} \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E -\/ Start slow then speed up \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E -\/ Start fast then slow down \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L -\/ Start slow, speed up then slow down at end \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start slow then speed up, v\mbox{[}0\mbox{]} being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E, 2.\+0 being much more pronounced accelerate (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start fast then slow down, v\mbox{[}0\mbox{]} being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E, 2.\+0 being much more pronounced decelerate (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R -\/ Start slow, speed up then slow down at end, v\mbox{[}0\mbox{]} being a power factor, 0.\+0 being linear, 1.\+0 being E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L, 2.\+0 being much more pronounced sinusoidal (squared), 3.\+0 being cubed, etc. \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P -\/ Start at gradient $\ast$ v\mbox{[}0\mbox{]}, interpolated via power of v2 curve \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E -\/ Start at 0.\+0 then \char`\"{}drop\char`\"{} like a ball bouncing to the ground at 1.\+0, and bounce v2 times, with decay factor of v\mbox{[}0\mbox{]} \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G -\/ Start at 0.\+0 then \char`\"{}wobble\char`\"{} like a spring rest position 1.\+0, and wobble v2 times, with decay factor of v\mbox{[}0\mbox{]} \item E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R -\/ Use an interpolated cubic-\/bezier curve ajusted with parameters from v\mbox{[}0\mbox{]} to v\mbox{[}3\mbox{]}. \begin{DoxyNote}{Note}
When not listed v has no effect.
\end{DoxyNote}
 
\begin{DoxyImageNoCaption}
  \mbox{\includegraphics[width=\textwidth]{ecore-pos-map}}
\end{DoxyImageNoCaption}
\end{DoxyItemize}
One way to use this would be\+: 
\begin{DoxyCode}
1 double pos; // input position in a timeline from 0.0 to 1.0
2 double out; // output position after mapping
3 int x1, y1, x2, y2; // x1 & y1 are start position, x2 & y2 are end position
4 int x, y; // x & y are the calculated position
5 double v[2] = \{1.8, 7\};
6 
7 out = ecore\_animator\_pos\_map(pos, ECORE\_POS\_MAP\_BOUNCE, 2, v);
8 x = (x1 * out) + (x2 * (1.0 - out));
9 y = (y1 * out) + (y2 * (1.0 - out));
10 move\_my\_object\_to(myobject, x, y);
\end{DoxyCode}
 This will make an animation that bounces 7 each times diminishing by a factor of 1.\+8.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga2db0d0f0f3973829c7f700e5af3e041c}{\+\_\+\+Ecore\+\_\+\+Pos\+\_\+\+Map} 
\end{DoxySeeAlso}


References E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+A\+C\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+B\+O\+U\+N\+C\+E, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+C\+U\+B\+I\+C\+\_\+\+B\+E\+Z\+I\+E\+R, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+E\+C\+E\+L\+E\+R\+A\+T\+E\+\_\+\+F\+A\+C\+T\+O\+R, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+D\+I\+V\+I\+S\+O\+R\+\_\+\+I\+N\+T\+E\+R\+P, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+L\+I\+N\+E\+A\+R, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+I\+N\+U\+S\+O\+I\+D\+A\+L\+\_\+\+F\+A\+C\+T\+O\+R, E\+C\+O\+R\+E\+\_\+\+P\+O\+S\+\_\+\+M\+A\+P\+\_\+\+S\+P\+R\+I\+N\+G, and E\+I\+N\+A\+\_\+\+F32\+P32\+\_\+\+P\+I.



Referenced by ecore\+\_\+animator\+\_\+pos\+\_\+map().

\hypertarget{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+source\+\_\+set@{ecore\+\_\+animator\+\_\+source\+\_\+set}}
\index{ecore\+\_\+animator\+\_\+source\+\_\+set@{ecore\+\_\+animator\+\_\+source\+\_\+set}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+source\+\_\+set(\+Ecore\+\_\+\+Animator\+\_\+\+Source source)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+source\+\_\+set (
\begin{DoxyParamCaption}
\item[{Ecore\+\_\+\+Animator\+\_\+\+Source}]{source}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}


Set the source of animator ticks for the mainloop. 


\begin{DoxyParams}{Parameters}
{\em source} & The source of animator ticks to use\\
\hline
\end{DoxyParams}
This sets the source of animator ticks. When an animator is active the mainloop will \char`\"{}tick\char`\"{} over frame by frame calling all animators that are registered until none are. The mainloop will tick at a given rate based on the animator source. The default source is the system clock timer source -\/ E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+T\+I\+M\+E\+R. This source uses the system clock to tick over every N seconds (specified by \hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set()}, with the default being 1/30th of a second unless set otherwise). You can set a custom tick source by setting the source to E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M and then drive it yourself based on some input tick source (like another application via ipc, some vertical blanking interrupt, and etc.) using \hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set()} and \hyperlink{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set()} to set the functions that will be called to start and stop the ticking source, which when it gets a \char`\"{}tick\char`\"{} should call \hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()} to make the \char`\"{}tick\char`\"{} over 1 frame.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga880be7bbe3c47b2e1b91f5678e7f6c26}{ecore\+\_\+animator\+\_\+source\+\_\+get()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Animator__Group_ga880be7bbe3c47b2e1b91f5678e7f6c26}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+source\+\_\+get@{ecore\+\_\+animator\+\_\+source\+\_\+get}}
\index{ecore\+\_\+animator\+\_\+source\+\_\+get@{ecore\+\_\+animator\+\_\+source\+\_\+get}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+source\+\_\+get(void)}]{\setlength{\rightskip}{0pt plus 5cm}Ecore\+\_\+\+Animator\+\_\+\+Source ecore\+\_\+animator\+\_\+source\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga880be7bbe3c47b2e1b91f5678e7f6c26}


Get the animator source currently set. 

\begin{DoxyReturn}{Returns}
The current animator source
\end{DoxyReturn}
This gets the current animator source.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{ecore\+\_\+animator\+\_\+source\+\_\+set()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L.

\hypertarget{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set@{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set}}
\index{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set@{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set(\+Ecore\+\_\+\+Cb func, const void $\ast$data)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}


Set the function that begins a custom animator tick source. 


\begin{DoxyParams}{Parameters}
{\em func} & The function to call when ticking is to begin \\
\hline
{\em data} & The data passed to the tick begin function as its parameter\\
\hline
\end{DoxyParams}
The Ecore Animator infrastructure handles tracking if animators are needed or not and which ones need to be called and when, but when the tick source is custom, you have to provide a tick source by calling \hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()} to indicate a frame tick happened. In order to allow the source of ticks to be dynamically enabled or disabled as needed, the {\ttfamily func} when set is called to enable the tick source to produce tick events that call \hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()}. If {\ttfamily func} is {\ttfamily N\+U\+L\+L} then no function is called to begin custom ticking.

\begin{DoxyWarning}{Warning}
Do not use this function unless you know what you are doing.
\end{DoxyWarning}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{ecore\+\_\+animator\+\_\+source\+\_\+set()} 

\hyperlink{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set()} 

\hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set@{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set}}
\index{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set@{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set(\+Ecore\+\_\+\+Cb func, const void $\ast$data)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}


Set the function that ends a custom animator tick source. 


\begin{DoxyParams}{Parameters}
{\em func} & The function to call when ticking is to end \\
\hline
{\em data} & The data passed to the tick end function as its parameter\\
\hline
\end{DoxyParams}
This function is a matching pair to the function set by \hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set()} and is called when ticking is to stop. If {\ttfamily func} is {\ttfamily N\+U\+L\+L} then no function will be called to stop ticking. For more information please see \hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set()}.

\begin{DoxyWarning}{Warning}
Do not use this function unless you know what you are doing.
\end{DoxyWarning}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{ecore\+\_\+animator\+\_\+source\+\_\+set()} 

\hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set()} 

\hyperlink{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{ecore\+\_\+animator\+\_\+custom\+\_\+tick()} 
\end{DoxySeeAlso}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+custom\+\_\+tick@{ecore\+\_\+animator\+\_\+custom\+\_\+tick}}
\index{ecore\+\_\+animator\+\_\+custom\+\_\+tick@{ecore\+\_\+animator\+\_\+custom\+\_\+tick}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+custom\+\_\+tick(void)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+custom\+\_\+tick (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gac49405d70dc83d6313fe6a8d15e2a50c}


Trigger a custom animator tick. 

When animator source is set to E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M, then calling this function triggers a run of all animators currently registered with Ecore as this indicates a \char`\"{}frame tick\char`\"{} happened. This will do nothing if the animator source(set by ecore\+\_\+animator\+\_\+source\+\_\+set()) is not set to E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M.

\begin{DoxyWarning}{Warning}
Do not use this function unless you know what you are doing.
\end{DoxyWarning}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga4c434a81eaf0949a138ae04fe09953dd}{ecore\+\_\+animator\+\_\+source\+\_\+set()} 

\hyperlink{group__Ecore__Animator__Group_gadba7c3950f80eeccd89c2a286e488471}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+begin\+\_\+callback\+\_\+set} 

\hyperlink{group__Ecore__Animator__Group_ga7bc6abc79daeb32d2b0951f701948576}{ecore\+\_\+animator\+\_\+custom\+\_\+source\+\_\+tick\+\_\+end\+\_\+callback\+\_\+set()}() 
\end{DoxySeeAlso}


References E\+C\+O\+R\+E\+\_\+\+A\+N\+I\+M\+A\+T\+O\+R\+\_\+\+S\+O\+U\+R\+C\+E\+\_\+\+C\+U\+S\+T\+O\+M, and E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N.

\hypertarget{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+add@{ecore\+\_\+animator\+\_\+add}}
\index{ecore\+\_\+animator\+\_\+add@{ecore\+\_\+animator\+\_\+add}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+add(\+Ecore\+\_\+\+Task\+\_\+\+Cb func, const void $\ast$data)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Animator}$\ast$ ecore\+\_\+animator\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Task\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}


Add an animator to call {\ttfamily func} at every animation tick during main loop execution. 


\begin{DoxyParams}{Parameters}
{\em func} & The function to call when it ticks off \\
\hline
{\em data} & The data to pass to the function \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A handle to the new animator
\end{DoxyReturn}
This function adds an animator and returns its handle on success and {\ttfamily N\+U\+L\+L} on failure. The function {\ttfamily func} will be called every N seconds where N is the {\ttfamily frametime} interval set by \hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set()}. The function will be passed the {\ttfamily data} pointer as its parameter.

When the animator {\ttfamily func} is called, it must return a boolean value. If it returns E\+I\+N\+A\+\_\+\+T\+R\+U\+E (or E\+C\+O\+R\+E\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+N\+E\+W), it will be called again at the next tick, or if it returns E\+I\+N\+A\+\_\+\+F\+A\+L\+S\+E (or E\+C\+O\+R\+E\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+A\+N\+C\+E\+L) it will be deleted automatically making any references/handles for it invalid.

\begin{DoxyNote}{Note}
The default {\ttfamily frametime} value is 1/30th of a second.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_ga523a0e9716bcc6573eb9f4b310067ed1}{ecore\+\_\+animator\+\_\+timeline\+\_\+add()} 

\hyperlink{group__Ecore__Animator__Group_ga2c7aa7e621cd68562519066ad87a3fa1}{ecore\+\_\+animator\+\_\+frametime\+\_\+set()} 
\end{DoxySeeAlso}


References eo\+\_\+add.



Referenced by ecore\+\_\+init().

\hypertarget{group__Ecore__Animator__Group_ga523a0e9716bcc6573eb9f4b310067ed1}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+timeline\+\_\+add@{ecore\+\_\+animator\+\_\+timeline\+\_\+add}}
\index{ecore\+\_\+animator\+\_\+timeline\+\_\+add@{ecore\+\_\+animator\+\_\+timeline\+\_\+add}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+timeline\+\_\+add(double runtime, Ecore\+\_\+\+Timeline\+\_\+\+Cb func, const void $\ast$data)}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Ecore\+\_\+\+Animator}$\ast$ ecore\+\_\+animator\+\_\+timeline\+\_\+add (
\begin{DoxyParamCaption}
\item[{double}]{runtime, }
\item[{{\bf Ecore\+\_\+\+Timeline\+\_\+\+Cb}}]{func, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga523a0e9716bcc6573eb9f4b310067ed1}


Add an animator that runs for a limited time. 


\begin{DoxyParams}{Parameters}
{\em runtime} & The time to run in seconds \\
\hline
{\em func} & The function to call when it ticks off \\
\hline
{\em data} & The data to pass to the function \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A handle to the new animator
\end{DoxyReturn}
This function is just like \hyperlink{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}{ecore\+\_\+animator\+\_\+add()} except the animator only runs for a limited time specified in seconds by {\ttfamily runtime}. Once the runtime the animator has elapsed (animator finished) it will automatically be deleted. The callback function {\ttfamily func} can return E\+C\+O\+R\+E\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+R\+E\+N\+E\+W to keep the animator running or E\+C\+O\+R\+E\+\_\+\+C\+A\+L\+L\+B\+A\+C\+K\+\_\+\+C\+A\+N\+C\+E\+L ro stop it and have it be deleted automatically at any time.

The {\ttfamily func} will A\+L\+S\+O be passed a position parameter that will be in value from 0.\+0 to 1.\+0 to indicate where along the timeline (0.\+0 start, 1.\+0 end) the animator run is at. If the callback wishes not to have a linear transition it can \char`\"{}map\char`\"{} this value to one of several curves and mappings via \hyperlink{group__Ecore__Animator__Group_ga5d4c42b9fdb22748943efa9ae6ba0a47}{ecore\+\_\+animator\+\_\+pos\+\_\+map()}.

\begin{DoxyNote}{Note}
The default {\ttfamily frametime} value is 1/30th of a second.
\end{DoxyNote}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Ecore__Animator__Group_gaa1e33b8be9117a26918823c535e429ea}{ecore\+\_\+animator\+\_\+add()} 

\hyperlink{group__Ecore__Animator__Group_ga5d4c42b9fdb22748943efa9ae6ba0a47}{ecore\+\_\+animator\+\_\+pos\+\_\+map()} 
\end{DoxySeeAlso}
\begin{DoxySince}{Since}
1.\+1.\+0 
\end{DoxySince}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_animator_example_8c-example}{ecore\+\_\+animator\+\_\+example.\+c}.\end{Desc}


References eo\+\_\+add.

\hypertarget{group__Ecore__Animator__Group_gaadfa590f3c1638035393ed9d7aa10e2f}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+del@{ecore\+\_\+animator\+\_\+del}}
\index{ecore\+\_\+animator\+\_\+del@{ecore\+\_\+animator\+\_\+del}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+del(\+Ecore\+\_\+\+Animator $\ast$animator)}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ ecore\+\_\+animator\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Animator} $\ast$}]{animator}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gaadfa590f3c1638035393ed9d7aa10e2f}


Delete the specified animator from the animator list. 


\begin{DoxyParams}{Parameters}
{\em animator} & The animator to delete \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The data pointer set for the animator on add
\end{DoxyReturn}
Delete the specified {\ttfamily animator} from the set of animators that are executed during main loop execution. This function returns the data parameter that was being passed to the callback on success, or {\ttfamily N\+U\+L\+L} on failure. After this call returns the specified animator object {\ttfamily animator} is invalid and should not be used again. It will not get called again after deletion. \begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_animator_example_8c-example}{ecore\+\_\+animator\+\_\+example.\+c}, and \hyperlink{test_camera_8c-example}{test\+\_\+camera.\+c}.\end{Desc}


References E\+I\+N\+A\+\_\+\+M\+A\+I\+N\+\_\+\+L\+O\+O\+P\+\_\+\+C\+H\+E\+C\+K\+\_\+\+R\+E\+T\+U\+R\+N\+\_\+\+V\+A\+L, E\+I\+N\+A\+\_\+\+T\+R\+U\+E, and eo\+\_\+data\+\_\+scope\+\_\+get().



Referenced by ecore\+\_\+evas\+\_\+shutdown(), and edje\+\_\+shutdown().

\hypertarget{group__Ecore__Animator__Group_gaff76e892f893610f9360aa6fddd810ef}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+freeze@{ecore\+\_\+animator\+\_\+freeze}}
\index{ecore\+\_\+animator\+\_\+freeze@{ecore\+\_\+animator\+\_\+freeze}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+freeze(\+Ecore\+\_\+\+Animator $\ast$animator)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+freeze (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Animator} $\ast$}]{animator}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_gaff76e892f893610f9360aa6fddd810ef}


Suspend the specified animator. 


\begin{DoxyParams}{Parameters}
{\em animator} & The animator to delete\\
\hline
\end{DoxyParams}
The specified {\ttfamily animator} will be temporarily removed from the set of animators that are executed during main loop.

\begin{DoxyWarning}{Warning}
Freezing an animator doesn\textquotesingle{}t freeze accounting of how long that animator has been running. Therefore if the animator was created with \hyperlink{group__Ecore__Animator__Group_ga523a0e9716bcc6573eb9f4b310067ed1}{ecore\+\_\+animator\+\_\+timeline\+\_\+add()} the {\ttfamily pos} argument given to the callback will increase as if the animator hadn\textquotesingle{}t been frozen and the animator may have it\textquotesingle{}s execution halted if {\ttfamily runtime} elapsed. 
\end{DoxyWarning}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_animator_example_8c-example}{ecore\+\_\+animator\+\_\+example.\+c}.\end{Desc}
\hypertarget{group__Ecore__Animator__Group_ga11c89906f136e3132e23527e412ccc69}{}\index{Ecore Animator functions@{Ecore Animator functions}!ecore\+\_\+animator\+\_\+thaw@{ecore\+\_\+animator\+\_\+thaw}}
\index{ecore\+\_\+animator\+\_\+thaw@{ecore\+\_\+animator\+\_\+thaw}!Ecore Animator functions@{Ecore Animator functions}}
\subsubsection[{ecore\+\_\+animator\+\_\+thaw(\+Ecore\+\_\+\+Animator $\ast$animator)}]{\setlength{\rightskip}{0pt plus 5cm}void ecore\+\_\+animator\+\_\+thaw (
\begin{DoxyParamCaption}
\item[{{\bf Ecore\+\_\+\+Animator} $\ast$}]{animator}
\end{DoxyParamCaption}
)}\label{group__Ecore__Animator__Group_ga11c89906f136e3132e23527e412ccc69}


Restore execution of the specified animator. 


\begin{DoxyParams}{Parameters}
{\em animator} & The animator to delete\\
\hline
\end{DoxyParams}
The specified {\ttfamily animator} will be put back in the set of animators that are executed during main loop. \begin{Desc}
\item[Examples\+: ]\par
\hyperlink{ecore_animator_example_8c-example}{ecore\+\_\+animator\+\_\+example.\+c}.\end{Desc}
