\hypertarget{group__Evas__Utils}{}\section{General Utilities}
\label{group__Evas__Utils}\index{General Utilities@{General Utilities}}


Some functions that are handy but are not specific of canvas or objects.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
const char $\ast$ \mbox{\hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\+\_\+load\+\_\+error\+\_\+str}} (Evas\+\_\+\+Load\+\_\+\+Error error)
\begin{DoxyCompactList}\small\item\em Converts the given Evas image load error code into a string describing it in human-\/readable text. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_ga143f983570c36917783a6b1a3b341bf5}{evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb}} (float h, float s, float v, int $\ast$r, int $\ast$g, int $\ast$b)
\begin{DoxyCompactList}\small\item\em Convert a given color from H\+SV to R\+GB format. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_gaa8711329d10e34fc8a3221598afe7a91}{evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv}} (int r, int g, int b, float $\ast$h, float $\ast$s, float $\ast$v)
\begin{DoxyCompactList}\small\item\em Convert a given color from R\+GB to H\+SV format. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_gac02bf3973675ae7591b9f34deef1554f}{evas\+\_\+color\+\_\+argb\+\_\+premul}} (int a, int $\ast$r, int $\ast$g, int $\ast$b)
\begin{DoxyCompactList}\small\item\em Pre-\/multiplies a rgb triplet by an alpha factor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_ga862abed1097a429dd439fbe08813cd9d}{evas\+\_\+color\+\_\+argb\+\_\+unpremul}} (int a, int $\ast$r, int $\ast$g, int $\ast$b)
\begin{DoxyCompactList}\small\item\em Undo pre-\/multiplication of a rgb triplet by an alpha factor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_ga6728112a26090165c5e4a1a6bf71ffb1}{evas\+\_\+data\+\_\+argb\+\_\+premul}} (unsigned int $\ast$data, unsigned int len)
\begin{DoxyCompactList}\small\item\em Pre-\/multiplies data by an alpha factor. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_gafdab034f277f25c3cd0195f4e7fbb38d}{evas\+\_\+data\+\_\+argb\+\_\+unpremul}} (unsigned int $\ast$data, unsigned int len)
\begin{DoxyCompactList}\small\item\em Undo pre-\/multiplication data by an alpha factor. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Evas__Utils_ga044cd250a33c2d994b2c5d3d31e3f413}{evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get}} (const char $\ast$str, int pos, int $\ast$decoded)
\begin{DoxyCompactList}\small\item\em Gets the next character in the string. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Evas__Utils_gab7c9b92ab4ccb14a3391f1fa884bae24}{evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get}} (const char $\ast$str, int pos, int $\ast$decoded)
\begin{DoxyCompactList}\small\item\em Gets the previous character in the string. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__Evas__Utils_gadfcfcae8546f2d7f6c14c5e1b17b8446}{evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get}} (const char $\ast$str)
\begin{DoxyCompactList}\small\item\em Get the length in characters of the string. \end{DoxyCompactList}\item 
Evas\+\_\+\+Bi\+Di\+\_\+\+Direction \mbox{\hyperlink{group__Evas__Utils_ga48befbd7fd3dbb39c038b9383752bb07}{evas\+\_\+language\+\_\+direction\+\_\+get}} (void)
\begin{DoxyCompactList}\small\item\em Get language direction. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__Evas__Utils_gac5f4a861a887740faac175e0cbebd7ff}{evas\+\_\+language\+\_\+reinit}} (void)
\begin{DoxyCompactList}\small\item\em Reinitialize language from the environment. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Some functions that are handy but are not specific of canvas or objects. 



\subsection{Function Documentation}
\mbox{\Hypertarget{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}\label{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}} 
\index{General Utilities@{General Utilities}!evas\+\_\+load\+\_\+error\+\_\+str@{evas\+\_\+load\+\_\+error\+\_\+str}}
\index{evas\+\_\+load\+\_\+error\+\_\+str@{evas\+\_\+load\+\_\+error\+\_\+str}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+load\+\_\+error\+\_\+str()}{evas\_load\_error\_str()}}
{\footnotesize\ttfamily const char$\ast$ evas\+\_\+load\+\_\+error\+\_\+str (\begin{DoxyParamCaption}\item[{Evas\+\_\+\+Load\+\_\+\+Error}]{error }\end{DoxyParamCaption})}



Converts the given Evas image load error code into a string describing it in human-\/readable text. 


\begin{DoxyParams}{Parameters}
{\em error} & the error code, a value in \+::\+Evas\+\_\+\+Load\+\_\+\+Error. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Always returns a valid string. If the given {\ttfamily error} is not supported, {\ttfamily \char`\"{}\+Unknown error\char`\"{}} is returned.
\end{DoxyReturn}
Mostly evas\+\_\+object\+\_\+image\+\_\+file\+\_\+set() would be the function setting that error value afterwards, but also evas\+\_\+object\+\_\+image\+\_\+load(), evas\+\_\+object\+\_\+image\+\_\+save(), evas\+\_\+object\+\_\+image\+\_\+data\+\_\+get(), evas\+\_\+object\+\_\+image\+\_\+data\+\_\+convert(), evas\+\_\+object\+\_\+image\+\_\+pixels\+\_\+import() and evas\+\_\+object\+\_\+image\+\_\+is\+\_\+inside(). This function is meant to be used in conjunction with evas\+\_\+object\+\_\+image\+\_\+load\+\_\+error\+\_\+get(), as in\+:

Example code\+:  
\begin{DoxyCodeInclude}
   d.img1 = \mbox{\hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}}(d.evas);
   evas\_object\_image\_file\_set(d.img1, valid\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img1);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s'. error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                valid\_path, \mbox{\hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        printf(\textcolor{stringliteral}{"loaded image '%s' with succes! error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
               valid\_path, \mbox{\hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}}(err));

        evas\_object\_move(d.img1, 3, 3);
        evas\_object\_image\_fill\_set(d.img1, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img1, WIDTH / 2, HEIGHT / 2);
        \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(d.img1);

        evas\_object\_focus\_set(d.bg, \mbox{\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{EINA\_TRUE}});
        \mbox{\hyperlink{group__Evas__Object__Group__Events_ga23be30ac5cdfb780f1ff82e9108ec26b}{evas\_object\_event\_callback\_add}}(
          d.bg, \mbox{\hyperlink{Evas__Common_8h_ad64cde0da38a60e7cb7905b3ab216968a336b86bad4f145f84c155e4922335584}{EVAS\_CALLBACK\_KEY\_DOWN}}, \_on\_keydown, NULL);
     \}

   \textcolor{comment}{/* this is a border around the image above, here just to emphasize}
\textcolor{comment}{    * its geometry */}
   d.border = evas\_object\_image\_filled\_add(d.evas);
   evas\_object\_image\_file\_set(d.border, border\_img\_path, NULL);
   evas\_object\_image\_border\_set(d.border, 3, 3, 3, 3);
   evas\_object\_image\_border\_center\_fill\_set(d.border, EVAS\_BORDER\_FILL\_NONE);

   evas\_object\_move(d.border, 0, 0);
   evas\_object\_resize(d.border, (WIDTH / 2) + 6, (HEIGHT / 2) + 6);
   \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(d.border);

   \textcolor{comment}{/* image loading will fail for this one -- unless one cheats and}
\textcolor{comment}{    * puts a valid image on that path */}
   d.img2 = \mbox{\hyperlink{group__Evas__Object__Image_gadd901a6b181c38dc040537b3fd76fcc6}{evas\_object\_image\_add}}(d.evas);
   evas\_object\_image\_file\_set(d.img2, bogus\_path, NULL);
   err = evas\_object\_image\_load\_error\_get(d.img2);
   \textcolor{keywordflow}{if} (err != EVAS\_LOAD\_ERROR\_NONE)
     \{
        fprintf(stderr, \textcolor{stringliteral}{"could not load image '%s': error string is \(\backslash\)"%s\(\backslash\)"\(\backslash\)n"},
                bogus\_path, \mbox{\hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\_load\_error\_str}}(err));
     \}
   \textcolor{keywordflow}{else}
     \{
        evas\_object\_move(d.img2, WIDTH / 2, HEIGHT / 2);
        evas\_object\_image\_fill\_set(d.img2, 0, 0, WIDTH / 2, HEIGHT / 2);
        evas\_object\_resize(d.img2, WIDTH / 2, HEIGHT / 2);
        \mbox{\hyperlink{group__Evas__Object__Group__Basic_ga9cbc13661584e49fb9d9cdab514a1eeb}{evas\_object\_show}}(d.img2);
     \}

   puts(commands);
   \mbox{\hyperlink{group__Ecore__Main__Loop__Group_gaf103b9f668bb3e4fed12e52c6180132d}{ecore\_main\_loop\_begin}}();

\end{DoxyCodeInclude}


Here, being {\ttfamily valid\+\_\+path} the path to a valid image and {\ttfamily bogus\+\_\+path} a path to a file that does not exist, the two outputs of \mbox{\hyperlink{group__Evas__Utils_gaca3384642e5ebb32cfeab24c760c739a}{evas\+\_\+load\+\_\+error\+\_\+str()}} would be (if no other errors occur)\+: {\ttfamily \char`\"{}\+No error on load\char`\"{}} and {\ttfamily \char`\"{}\+File (or file path) does
not exist\char`\"{}}, respectively. See the full \mbox{\hyperlink{Example_Evas_Images}{example}}. 

Referenced by elm\+\_\+image\+\_\+memfile\+\_\+set().

\mbox{\Hypertarget{group__Evas__Utils_ga143f983570c36917783a6b1a3b341bf5}\label{group__Evas__Utils_ga143f983570c36917783a6b1a3b341bf5}} 
\index{General Utilities@{General Utilities}!evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb@{evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb}}
\index{evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb@{evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb()}{evas\_color\_hsv\_to\_rgb()}}
{\footnotesize\ttfamily void evas\+\_\+color\+\_\+hsv\+\_\+to\+\_\+rgb (\begin{DoxyParamCaption}\item[{float}]{h,  }\item[{float}]{s,  }\item[{float}]{v,  }\item[{int $\ast$}]{r,  }\item[{int $\ast$}]{g,  }\item[{int $\ast$}]{b }\end{DoxyParamCaption})}



Convert a given color from H\+SV to R\+GB format. 


\begin{DoxyParams}{Parameters}
{\em h} & The Hue component of the color. \\
\hline
{\em s} & The Saturation component of the color. \\
\hline
{\em v} & The Value component of the color. \\
\hline
{\em r} & The Red component of the color. \\
\hline
{\em g} & The Green component of the color. \\
\hline
{\em b} & The Blue component of the color.\\
\hline
\end{DoxyParams}
This function converts a given color in H\+SV color format to R\+GB color format. \mbox{\Hypertarget{group__Evas__Utils_gaa8711329d10e34fc8a3221598afe7a91}\label{group__Evas__Utils_gaa8711329d10e34fc8a3221598afe7a91}} 
\index{General Utilities@{General Utilities}!evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv@{evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv}}
\index{evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv@{evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv()}{evas\_color\_rgb\_to\_hsv()}}
{\footnotesize\ttfamily void evas\+\_\+color\+\_\+rgb\+\_\+to\+\_\+hsv (\begin{DoxyParamCaption}\item[{int}]{r,  }\item[{int}]{g,  }\item[{int}]{b,  }\item[{float $\ast$}]{h,  }\item[{float $\ast$}]{s,  }\item[{float $\ast$}]{v }\end{DoxyParamCaption})}



Convert a given color from R\+GB to H\+SV format. 


\begin{DoxyParams}{Parameters}
{\em r} & The Red component of the color. \\
\hline
{\em g} & The Green component of the color. \\
\hline
{\em b} & The Blue component of the color. \\
\hline
{\em h} & The Hue component of the color. \\
\hline
{\em s} & The Saturation component of the color. \\
\hline
{\em v} & The Value component of the color.\\
\hline
\end{DoxyParams}
This function converts a given color in R\+GB color format to H\+SV color format. \mbox{\Hypertarget{group__Evas__Utils_gac02bf3973675ae7591b9f34deef1554f}\label{group__Evas__Utils_gac02bf3973675ae7591b9f34deef1554f}} 
\index{General Utilities@{General Utilities}!evas\+\_\+color\+\_\+argb\+\_\+premul@{evas\+\_\+color\+\_\+argb\+\_\+premul}}
\index{evas\+\_\+color\+\_\+argb\+\_\+premul@{evas\+\_\+color\+\_\+argb\+\_\+premul}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+color\+\_\+argb\+\_\+premul()}{evas\_color\_argb\_premul()}}
{\footnotesize\ttfamily void evas\+\_\+color\+\_\+argb\+\_\+premul (\begin{DoxyParamCaption}\item[{int}]{a,  }\item[{int $\ast$}]{r,  }\item[{int $\ast$}]{g,  }\item[{int $\ast$}]{b }\end{DoxyParamCaption})}



Pre-\/multiplies a rgb triplet by an alpha factor. 


\begin{DoxyParams}{Parameters}
{\em a} & The alpha factor. \\
\hline
{\em r} & The Red component of the color. \\
\hline
{\em g} & The Green component of the color. \\
\hline
{\em b} & The Blue component of the color.\\
\hline
\end{DoxyParams}
This function pre-\/multiplies a given rgb triplet by an alpha factor. Alpha factor is used to define transparency. \mbox{\Hypertarget{group__Evas__Utils_ga862abed1097a429dd439fbe08813cd9d}\label{group__Evas__Utils_ga862abed1097a429dd439fbe08813cd9d}} 
\index{General Utilities@{General Utilities}!evas\+\_\+color\+\_\+argb\+\_\+unpremul@{evas\+\_\+color\+\_\+argb\+\_\+unpremul}}
\index{evas\+\_\+color\+\_\+argb\+\_\+unpremul@{evas\+\_\+color\+\_\+argb\+\_\+unpremul}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+color\+\_\+argb\+\_\+unpremul()}{evas\_color\_argb\_unpremul()}}
{\footnotesize\ttfamily void evas\+\_\+color\+\_\+argb\+\_\+unpremul (\begin{DoxyParamCaption}\item[{int}]{a,  }\item[{int $\ast$}]{r,  }\item[{int $\ast$}]{g,  }\item[{int $\ast$}]{b }\end{DoxyParamCaption})}



Undo pre-\/multiplication of a rgb triplet by an alpha factor. 


\begin{DoxyParams}{Parameters}
{\em a} & The alpha factor. \\
\hline
{\em r} & The Red component of the color. \\
\hline
{\em g} & The Green component of the color. \\
\hline
{\em b} & The Blue component of the color.\\
\hline
\end{DoxyParams}
This function undoes pre-\/multiplication a given rbg triplet by an alpha factor. Alpha factor is used to define transparency.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Utils_gac02bf3973675ae7591b9f34deef1554f}{evas\+\_\+color\+\_\+argb\+\_\+premul()}}. 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__Evas__Utils_ga6728112a26090165c5e4a1a6bf71ffb1}\label{group__Evas__Utils_ga6728112a26090165c5e4a1a6bf71ffb1}} 
\index{General Utilities@{General Utilities}!evas\+\_\+data\+\_\+argb\+\_\+premul@{evas\+\_\+data\+\_\+argb\+\_\+premul}}
\index{evas\+\_\+data\+\_\+argb\+\_\+premul@{evas\+\_\+data\+\_\+argb\+\_\+premul}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+data\+\_\+argb\+\_\+premul()}{evas\_data\_argb\_premul()}}
{\footnotesize\ttfamily void evas\+\_\+data\+\_\+argb\+\_\+premul (\begin{DoxyParamCaption}\item[{unsigned int $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



Pre-\/multiplies data by an alpha factor. 


\begin{DoxyParams}{Parameters}
{\em data} & The data value. \\
\hline
{\em len} & The length value.\\
\hline
\end{DoxyParams}
This function pre-\/multiplies a given data by an alpha factor. Alpha factor is used to define transparency. \mbox{\Hypertarget{group__Evas__Utils_gafdab034f277f25c3cd0195f4e7fbb38d}\label{group__Evas__Utils_gafdab034f277f25c3cd0195f4e7fbb38d}} 
\index{General Utilities@{General Utilities}!evas\+\_\+data\+\_\+argb\+\_\+unpremul@{evas\+\_\+data\+\_\+argb\+\_\+unpremul}}
\index{evas\+\_\+data\+\_\+argb\+\_\+unpremul@{evas\+\_\+data\+\_\+argb\+\_\+unpremul}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+data\+\_\+argb\+\_\+unpremul()}{evas\_data\_argb\_unpremul()}}
{\footnotesize\ttfamily void evas\+\_\+data\+\_\+argb\+\_\+unpremul (\begin{DoxyParamCaption}\item[{unsigned int $\ast$}]{data,  }\item[{unsigned int}]{len }\end{DoxyParamCaption})}



Undo pre-\/multiplication data by an alpha factor. 


\begin{DoxyParams}{Parameters}
{\em data} & The data value. \\
\hline
{\em len} & The length value.\\
\hline
\end{DoxyParams}
This function undoes pre-\/multiplication of a given data by an alpha factor. Alpha factor is used to define transparency. \mbox{\Hypertarget{group__Evas__Utils_ga044cd250a33c2d994b2c5d3d31e3f413}\label{group__Evas__Utils_ga044cd250a33c2d994b2c5d3d31e3f413}} 
\index{General Utilities@{General Utilities}!evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get}}
\index{evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get()}{evas\_string\_char\_next\_get()}}
{\footnotesize\ttfamily int evas\+\_\+string\+\_\+char\+\_\+next\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str,  }\item[{int}]{pos,  }\item[{int $\ast$}]{decoded }\end{DoxyParamCaption})}



Gets the next character in the string. 

Given the U\+T\+F-\/8 string in {\ttfamily str}, and starting byte position in {\ttfamily pos}, this function will place in {\ttfamily decoded} the decoded code point at {\ttfamily pos} and return the byte index for the next character in the string.

The only boundary check done is that {\ttfamily pos} must be $>$= 0. Other than that, no checks are performed, so passing an index value that\textquotesingle{}s not within the length of the string will result in undefined behavior.


\begin{DoxyParams}{Parameters}
{\em str} & The U\+T\+F-\/8 string \\
\hline
{\em pos} & The byte index where to start \\
\hline
{\em decoded} & Address where to store the decoded code point. Optional.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The byte index of the next character 
\end{DoxyReturn}


References eina\+\_\+unicode\+\_\+utf8\+\_\+next\+\_\+get().

\mbox{\Hypertarget{group__Evas__Utils_gab7c9b92ab4ccb14a3391f1fa884bae24}\label{group__Evas__Utils_gab7c9b92ab4ccb14a3391f1fa884bae24}} 
\index{General Utilities@{General Utilities}!evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get}}
\index{evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get()}{evas\_string\_char\_prev\_get()}}
{\footnotesize\ttfamily int evas\+\_\+string\+\_\+char\+\_\+prev\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str,  }\item[{int}]{pos,  }\item[{int $\ast$}]{decoded }\end{DoxyParamCaption})}



Gets the previous character in the string. 

Given the U\+T\+F-\/8 string in {\ttfamily str}, and starting byte position in {\ttfamily pos}, this function will place in {\ttfamily decoded} the decoded code point at {\ttfamily pos} and return the byte index for the previous character in the string.

The only boundary check done is that {\ttfamily pos} must be $>$= 1. Other than that, no checks are performed, so passing an index value that\textquotesingle{}s not within the length of the string will result in undefined behavior.


\begin{DoxyParams}{Parameters}
{\em str} & The U\+T\+F-\/8 string \\
\hline
{\em pos} & The byte index where to start \\
\hline
{\em decoded} & Address where to store the decoded code point. Optional.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The byte index of the previous character 
\end{DoxyReturn}


References eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+prev().

\mbox{\Hypertarget{group__Evas__Utils_gadfcfcae8546f2d7f6c14c5e1b17b8446}\label{group__Evas__Utils_gadfcfcae8546f2d7f6c14c5e1b17b8446}} 
\index{General Utilities@{General Utilities}!evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get}}
\index{evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get@{evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get()}{evas\_string\_char\_len\_get()}}
{\footnotesize\ttfamily int evas\+\_\+string\+\_\+char\+\_\+len\+\_\+get (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str }\end{DoxyParamCaption})}



Get the length in characters of the string. 


\begin{DoxyParams}{Parameters}
{\em str} & The string to get the length of. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The length in characters (not bytes) 
\end{DoxyReturn}


References eina\+\_\+unicode\+\_\+utf8\+\_\+get\+\_\+len().

\mbox{\Hypertarget{group__Evas__Utils_ga48befbd7fd3dbb39c038b9383752bb07}\label{group__Evas__Utils_ga48befbd7fd3dbb39c038b9383752bb07}} 
\index{General Utilities@{General Utilities}!evas\+\_\+language\+\_\+direction\+\_\+get@{evas\+\_\+language\+\_\+direction\+\_\+get}}
\index{evas\+\_\+language\+\_\+direction\+\_\+get@{evas\+\_\+language\+\_\+direction\+\_\+get}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+language\+\_\+direction\+\_\+get()}{evas\_language\_direction\_get()}}
{\footnotesize\ttfamily Evas\+\_\+\+Bi\+Di\+\_\+\+Direction evas\+\_\+language\+\_\+direction\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Get language direction. 

\begin{DoxySince}{Since}
1.\+20 
\end{DoxySince}
\mbox{\Hypertarget{group__Evas__Utils_gac5f4a861a887740faac175e0cbebd7ff}\label{group__Evas__Utils_gac5f4a861a887740faac175e0cbebd7ff}} 
\index{General Utilities@{General Utilities}!evas\+\_\+language\+\_\+reinit@{evas\+\_\+language\+\_\+reinit}}
\index{evas\+\_\+language\+\_\+reinit@{evas\+\_\+language\+\_\+reinit}!General Utilities@{General Utilities}}
\subsubsection{\texorpdfstring{evas\+\_\+language\+\_\+reinit()}{evas\_language\_reinit()}}
{\footnotesize\ttfamily void evas\+\_\+language\+\_\+reinit (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Reinitialize language from the environment. 

The locale can change while a process is running. This call tells evas to reload the locale from the environment like it does on start.

\begin{DoxySince}{Since}
1.\+18 
\end{DoxySince}


Referenced by elm\+\_\+language\+\_\+set().

