\hypertarget{group__Evas__Smart__Object__Clipped}{}\doxysection{Clipped Smart Object}
\label{group__Evas__Smart__Object__Clipped}\index{Clipped Smart Object@{Clipped Smart Object}}


Clipped smart object is a base to construct other smart objects based on the concept of having an internal clipper that is applied to all children objects.  


\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{struct__Evas__Object__Smart__Clipped__Data}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data}}
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{group__Evas__Smart__Object__Clipped_ga65c1b2ed3578175e476998f7b55dfe34}\label{group__Evas__Smart__Object__Clipped_ga65c1b2ed3578175e476998f7b55dfe34}} 
typedef struct \mbox{\hyperlink{struct__Evas__Object__Smart__Clipped__Data}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data}} {\bfseries Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data}
\begin{DoxyCompactList}\small\item\em Every subclass should provide this at the beginning of their own data set with \mbox{\hyperlink{group__Evas__Smart__Object__Group_gab5c5fdec775c3b908fbc3422b91f703c}{evas\+\_\+object\+\_\+smart\+\_\+data\+\_\+set()}}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
EVAS\+\_\+\+API void \mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set}} (\mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} $\ast$sc)
\begin{DoxyCompactList}\small\item\em Set a given smart class\textquotesingle{} callbacks so it implements the {\bfseries{clipped smart object"{}}}\textquotesingle{}s interface. \end{DoxyCompactList}\item 
EVAS\+\_\+\+API const \mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} $\ast$ \mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga28133d16f3a1f8e3e71d3e80bb78df96}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get}} (void)
\begin{DoxyCompactList}\small\item\em Get a pointer to the {\bfseries{clipped smart object\textquotesingle{}s}} class, to use for proper inheritance. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Clipped smart object is a base to construct other smart objects based on the concept of having an internal clipper that is applied to all children objects. 

This clipper will control the visibility, clipping and color of sibling objects (remember that the clipping is recursive, and clipper color modulates the color of its clippees). By default, this base will also move children relative to the parent, and delete them when parent is deleted. In other words, it is the base for simple object grouping.

See some \mbox{\hyperlink{Example_Evas_Smart_Objects}{examples}} of this group of functions.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set()}} 
\end{DoxySeeAlso}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}\label{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}} 
\index{Clipped Smart Object@{Clipped Smart Object}!evas\_object\_smart\_clipped\_smart\_set@{evas\_object\_smart\_clipped\_smart\_set}}
\index{evas\_object\_smart\_clipped\_smart\_set@{evas\_object\_smart\_clipped\_smart\_set}!Clipped Smart Object@{Clipped Smart Object}}
\doxysubsubsection{\texorpdfstring{evas\_object\_smart\_clipped\_smart\_set()}{evas\_object\_smart\_clipped\_smart\_set()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API void evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} $\ast$}]{sc }\end{DoxyParamCaption})}



Set a given smart class\textquotesingle{} callbacks so it implements the {\bfseries{clipped smart object"{}}}\textquotesingle{}s interface. 


\begin{DoxyParams}{Parameters}
{\em sc} & The smart class handle to operate on\\
\hline
\end{DoxyParams}
This call will assign all the required methods of the {\ttfamily sc} \mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} instance to the implementations set for clipped smart objects. If one wants to \char`\"{}subclass\char`\"{} it, call this function and then override desired values. If one wants to call any original method, save it somewhere. Example\+:


\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{static}\ \mbox{\hyperlink{struct__Evas__Smart__Class}{Evas\_Smart\_Class}}\ parent\_sc\ =\ \mbox{\hyperlink{group__Evas__Smart__Group_ga223f5d420c1e22275cd6490cd77c85f0}{EVAS\_SMART\_CLASS\_INIT\_NULL}};}
\DoxyCodeLine{}
\DoxyCodeLine{\textcolor{keyword}{static}\ \textcolor{keywordtype}{void}\ my\_class\_smart\_add(\mbox{\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\_Object}}\ *o)}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ parent\_sc.\mbox{\hyperlink{struct__Evas__Smart__Class_a044206688a3b0ea9785688d2efcea4d6}{add}}(o);}
\DoxyCodeLine{\ \ \ \mbox{\hyperlink{group__Evas__Object__Group__Basic_gab751e9d24c16e74af6f7c08ea5b930c2}{evas\_object\_color\_set}}(\mbox{\hyperlink{group__Evas__Smart__Object__Group_ga10342ef3dfaa95ffd70b2883f0be531d}{evas\_object\_smart\_clipped\_clipper\_get}}(o),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 255,\ 0,\ 0,\ 255);}
\DoxyCodeLine{\}}
\DoxyCodeLine{}
\DoxyCodeLine{\mbox{\hyperlink{struct__Evas__Smart__Class}{Evas\_Smart\_Class}}\ *my\_class\_new(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\{}
\DoxyCodeLine{\ \ \ \textcolor{keyword}{static}\ \mbox{\hyperlink{struct__Evas__Smart__Class}{Evas\_Smart\_Class}}\ sc\ =\ \mbox{\hyperlink{group__Evas__Smart__Group_gaff2bbd5bb79e51ad8d31f98106caff77}{EVAS\_SMART\_CLASS\_INIT\_NAME\_VERSION}}(\textcolor{stringliteral}{"{}MyClass"{}});}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{if}\ (!parent\_sc.\mbox{\hyperlink{struct__Evas__Smart__Class_a34b0476dfa714dff39812ed72636005f}{name}})}
\DoxyCodeLine{\ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}{evas\_object\_smart\_clipped\_smart\_set}}(\&sc);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ parent\_sc\ =\ sc;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ sc.\mbox{\hyperlink{struct__Evas__Smart__Class_a044206688a3b0ea9785688d2efcea4d6}{add}}\ =\ my\_class\_smart\_add;}
\DoxyCodeLine{\ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \textcolor{keywordflow}{return}\ \&sc;}
\DoxyCodeLine{\}}

\end{DoxyCode}


Default behavior for each of \mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} functions on a clipped smart object are\+:
\begin{DoxyItemize}
\item {\ttfamily add\+:} creates a hidden clipper with \char`\"{}infinite\char`\"{} size, to clip any incoming members;
\item {\ttfamily del\+:} delete all children objects;
\item {\ttfamily move\+:} move all objects relative relatively;
\item {\ttfamily resize\+:} {\bfseries{not defined}};
\item {\ttfamily show\+:} if there are children objects, show clipper;
\item {\ttfamily hide\+:} hides clipper;
\item {\ttfamily color\+\_\+set\+:} set the color of clipper;
\item {\ttfamily clip\+\_\+set\+:} set clipper of clipper;
\item {\ttfamily clip\+\_\+unset\+:} unset the clipper of clipper;
\end{DoxyItemize}

\begin{DoxyNote}{Note}
There are other means of assigning parent smart classes to child ones, like the \mbox{\hyperlink{group__Evas__Smart__Group_ga58dc94af6f064b39b2bf0155908fbe52}{EVAS\+\_\+\+SMART\+\_\+\+SUBCLASS\+\_\+\+NEW}} macro or the \mbox{\hyperlink{group__Evas__Smart__Group_gaef540ec61cd8924181107a22f37f871a}{evas\+\_\+smart\+\_\+class\+\_\+inherit\+\_\+full()}} function. 
\end{DoxyNote}


References \mbox{\hyperlink{struct__Evas__Smart__Class_a044206688a3b0ea9785688d2efcea4d6}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::add}}, \mbox{\hyperlink{struct__Evas__Smart__Class_a495fe27fb074354ccaf9ebc68165ed69}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::calculate}}, \mbox{\hyperlink{struct__Evas__Smart__Class_aae2107fb1b9b20b483ea41160cf1da23}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::clip\+\_\+set}}, \mbox{\hyperlink{struct__Evas__Smart__Class_a7abc5300bbe98678d704c1fb27475002}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::clip\+\_\+unset}}, \mbox{\hyperlink{struct__Evas__Smart__Class_aab2d6d2a9e6bf2420a19fecf59800091}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::color\+\_\+set}}, \mbox{\hyperlink{struct__Evas__Smart__Class_a1dd96f1c822fefaa68025e35de0bbde7}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::del}}, \mbox{\hyperlink{struct__Evas__Smart__Class_ad48724181a7379c046e754b20ece69b8}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::hide}}, \mbox{\hyperlink{struct__Evas__Smart__Class_aa0675efc0ae988dd8fcaaadaea2a17d1}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::member\+\_\+add}}, \mbox{\hyperlink{struct__Evas__Smart__Class_a2ad229ea682c812f8145f8e5d17ced5e}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::member\+\_\+del}}, \mbox{\hyperlink{struct__Evas__Smart__Class_ab554d9c900d3aff4303a440a06cda80a}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::move}}, and \mbox{\hyperlink{struct__Evas__Smart__Class_a1aa57fda1f2e428b91e771a1d3a3a9de}{\+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::show}}.



Referenced by \mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga28133d16f3a1f8e3e71d3e80bb78df96}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get()}}.

\mbox{\Hypertarget{group__Evas__Smart__Object__Clipped_ga28133d16f3a1f8e3e71d3e80bb78df96}\label{group__Evas__Smart__Object__Clipped_ga28133d16f3a1f8e3e71d3e80bb78df96}} 
\index{Clipped Smart Object@{Clipped Smart Object}!evas\_object\_smart\_clipped\_class\_get@{evas\_object\_smart\_clipped\_class\_get}}
\index{evas\_object\_smart\_clipped\_class\_get@{evas\_object\_smart\_clipped\_class\_get}!Clipped Smart Object@{Clipped Smart Object}}
\doxysubsubsection{\texorpdfstring{evas\_object\_smart\_clipped\_class\_get()}{evas\_object\_smart\_clipped\_class\_get()}}
{\footnotesize\ttfamily EVAS\+\_\+\+API const \mbox{\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class}} $\ast$ evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Get a pointer to the {\bfseries{clipped smart object\textquotesingle{}s}} class, to use for proper inheritance. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__Evas__Smart__Object__Clipped}{Clipped Smart Object}} for more information on this smart class 
\end{DoxySeeAlso}


References \mbox{\hyperlink{group__Evas__Smart__Object__Clipped_ga4707c923b5e1dc47d0d1996a738755a6}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set()}}, and \mbox{\hyperlink{group__Evas__Smart__Group_gaff2bbd5bb79e51ad8d31f98106caff77}{EVAS\+\_\+\+SMART\+\_\+\+CLASS\+\_\+\+INIT\+\_\+\+NAME\+\_\+\+VERSION}}.

