\hypertarget{group__Evas__Smart__Object__Clipped}{\section{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.  


\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct__Evas__Object__Smart__Clipped__Data}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\hypertarget{group__Evas__Smart__Object__Clipped_ga65c1b2ed3578175e476998f7b55dfe34}{typedef struct \\*
\hyperlink{struct__Evas__Object__Smart__Clipped__Data}{\+\_\+\+Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data} \hyperlink{group__Evas__Smart__Object__Clipped_ga65c1b2ed3578175e476998f7b55dfe34}{Evas\+\_\+\+Object\+\_\+\+Smart\+\_\+\+Clipped\+\_\+\+Data}}\label{group__Evas__Smart__Object__Clipped_ga65c1b2ed3578175e476998f7b55dfe34}

\begin{DoxyCompactList}\small\item\em Every subclass should provide this at the beginning of their own data set with \hyperlink{group__Evas__Smart__Object__Group_ga2608f1464c467bb583da442fc170b39c}{evas\+\_\+object\+\_\+smart\+\_\+data\+\_\+set()}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{group__Evas__Smart__Object__Clipped_ga94cfbe31903b171a54e05913f12714ed}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set} (\hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class} $\ast$sc)
\begin{DoxyCompactList}\small\item\em Set a given smart class' callbacks so it implements the {\bfseries clipped smart object"}'s interface. \end{DoxyCompactList}\item 
const \hyperlink{group__Evas__Smart__Group_gaea15f67e901bf5380cdb67dc1bb43391}{Evas\+\_\+\+Smart\+\_\+\+Class} $\ast$ \hyperlink{group__Evas__Smart__Object__Clipped_gabbb2c85a3978e44404528a94be381dcd}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get} (void)
\begin{DoxyCompactList}\small\item\em Get a pointer to the {\bfseries clipped smart object's} class, to use for proper inheritance. \end{DoxyCompactList}\end{DoxyCompactItemize}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$ \hyperlink{group__Evas__Smart__Object__Clipped_ga1ea2217e8a4abc28a35d8273949d4444}{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get} (const \hyperlink{group__Evas__Object__Group_ga9e19e6dd1f517a0ba437c0114d3e7c97}{Evas\+\_\+\+Object} $\ast$obj)
\begin{DoxyCompactList}\small\item\em Get the clipper object for the given clipped smart object. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{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 relatively to the parent, and delete them when parent is deleted. In other words, it is the base for simple object grouping.

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

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


\subsection{Function Documentation}
\hypertarget{group__Evas__Smart__Object__Clipped_ga94cfbe31903b171a54e05913f12714ed}{\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}}
\subsubsection[{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Evas\+\_\+\+Smart\+\_\+\+Class} $\ast$}]{sc}
\end{DoxyParamCaption}
)}}\label{group__Evas__Smart__Object__Clipped_ga94cfbe31903b171a54e05913f12714ed}


Set a given smart class' callbacks so it implements the {\bfseries clipped smart object"}'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} \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}
1 static Evas\_Smart\_Class parent\_sc = EVAS\_SMART\_CLASS\_INIT\_NULL;
2 
3 static void my\_class\_smart\_add(Evas\_Object *o)
4 \{
5    parent\_sc.add(o);
6    evas\_object\_color\_set(evas\_object\_smart\_clipped\_clipper\_get(o),
7                          255, 0, 0, 255);
8 \}
9 
10 Evas\_Smart\_Class *my\_class\_new(void)
11 \{
12    static Evas\_Smart\_Class sc = EVAS\_SMART\_CLASS\_INIT\_NAME\_VERSION("MyClass");
13    if (!parent\_sc.name)
14      \{
15         evas\_object\_smart\_clipped\_smart\_set(&sc);
16         parent\_sc = sc;
17         sc.add = my\_class\_smart\_add;
18      \}
19    return &sc;
20 \}
\end{DoxyCode}


Default behavior for each of \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 \hyperlink{group__Evas__Smart__Group_ga58dc94af6f064b39b2bf0155908fbe52}{E\+V\+A\+S\+\_\+\+S\+M\+A\+R\+T\+\_\+\+S\+U\+B\+C\+L\+A\+S\+S\+\_\+\+N\+E\+W} macro or the \hyperlink{group__Evas__Smart__Group_gae095bab508ff7a68b435047f43bb1ad9}{evas\+\_\+smart\+\_\+class\+\_\+inherit\+\_\+full()} function. 
\end{DoxyNote}


References \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::add, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::calculate, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::clip\+\_\+set, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::clip\+\_\+unset, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::color\+\_\+set, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::del, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::hide, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::member\+\_\+add, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::member\+\_\+del, \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::move, and \+\_\+\+Evas\+\_\+\+Smart\+\_\+\+Class\+::show.



Referenced by evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get().

\hypertarget{group__Evas__Smart__Object__Clipped_gabbb2c85a3978e44404528a94be381dcd}{\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}}
\subsubsection[{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Evas\+\_\+\+Smart\+\_\+\+Class}$\ast$ evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+class\+\_\+get (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)}}\label{group__Evas__Smart__Object__Clipped_gabbb2c85a3978e44404528a94be381dcd}


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

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


References evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+set(), and E\+V\+A\+S\+\_\+\+S\+M\+A\+R\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+I\+N\+I\+T\+\_\+\+N\+A\+M\+E\+\_\+\+V\+E\+R\+S\+I\+O\+N.

\hypertarget{group__Evas__Smart__Object__Clipped_ga1ea2217e8a4abc28a35d8273949d4444}{\index{Clipped Smart Object@{Clipped Smart Object}!evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get@{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get}}
\index{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get@{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get}!Clipped Smart Object@{Clipped Smart Object}}
\subsubsection[{evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evas\+\_\+\+Object}$\ast$ evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+clipper\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Evas\+\_\+\+Object} $\ast$}]{obj}
\end{DoxyParamCaption}
)}}\label{group__Evas__Smart__Object__Clipped_ga1ea2217e8a4abc28a35d8273949d4444}


Get the clipper object for the given clipped smart object. 


\begin{DoxyParams}{Parameters}
{\em obj} & the clipped smart object to retrieve associated clipper from. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the clipper object.
\end{DoxyReturn}
Use this function if you want to change any of this clipper's properties, like colors.

\begin{DoxySeeAlso}{See also}
evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+add()
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
the clipper object.
\end{DoxyReturn}
Use this function if you want to change any of this clipper's properties, like colors.

\begin{DoxySeeAlso}{See also}
evas\+\_\+object\+\_\+smart\+\_\+clipped\+\_\+smart\+\_\+add() 
\end{DoxySeeAlso}
