Clip Functions
Functions that manage the clipping of objects by other objects. More...
Functions | |
EAPI void | evas_object_clip_set (Evas_Object *obj, Evas_Object *clip) |
Clip one object to another. | |
EAPI Evas_Object * | evas_object_clip_get (const Evas_Object *obj) |
Get the object clipping this one (if any). | |
EAPI void | evas_object_clip_unset (Evas_Object *obj) |
Disable clipping for an object. | |
EAPI const Evas_List * | evas_object_clipees_get (const Evas_Object *obj) |
Return a list of objects currently clipped by a specific object. |
Detailed Description
Functions that manage the clipping of objects by other objects.Function Documentation
EAPI Evas_Object* evas_object_clip_get | ( | const Evas_Object * | obj | ) |
Get the object clipping this one (if any).
- Parameters:
-
obj The object to get the clipper from
obj
. If obj
not being clipped, NULL is returned. The object obj
must be a valid object.See also evas_object_clip_set(), evas_object_clip_unset() and evas_object_clipees_get().
Example:
extern Evas_Object *obj; Evas_Object *clipper; clipper = evas_object_clip_get(obj); if (clipper) evas_object_show(clipper);
EAPI void evas_object_clip_set | ( | Evas_Object * | obj, | |
Evas_Object * | clip | |||
) |
Clip one object to another.
- Parameters:
-
obj The object to be clipped clip The object to clip obj
by
obj
to the area occupied by the object clipper
. This means the object obj
will only be visible within the area occupied by the clipping object (clip
). The color of the object being clipped will be multiplied by the color of the clipping object, so the resulting color for the clipped object is RESULT = (OBJ * CLIP) / (255 * 255) per color element (red, green, blue and alpha). Clipping is recursive, so clip objects may be clipped by other objects, and their color will in tern be multiplied. You may NOT set up circular clipping lists (i.e. object 1 clips object 2 which clips object 1). The behavior of Evas is undefined in this case. Objects which do not clip others are visible as normal, those that clip 1 or more objects become invisible themselves, only affecting what they clip. If an object ceases to have other objects being clipped by it, it will become visible again. The visibility of an object affects the objects that are clipped by it, so if the object clipping others is not shown, the objects clipped will not be shown either. If the object was being clipped by another object when this function is called, it is implicitly removed from the clipper it is being clipped to, and now is made to clip its new clipper.At the moment the only objects that can validly be used to clip other objects are rectangle objects. All other object types are invalid and the result of using them is undefined.
The clip object clip
must be a valid object, but may also be NULL in which case the effect of this function is the same as calling evas_object_clip_unset() on the obj
object.
Example:
extern Evas *evas; extern Evas_Object *obj; Evas_Object *clipper; clipper = evas_object_rectangle_add(evas); evas_object_color_set(clipper, 255, 255, 255, 255); evas_object_move(clipper, 10, 10); evas_object_resize(clipper, 20, 50); evas_object_clip_set(obj, clipper); evas_object_show(clipper);
References evas_list_append(), evas_list_remove(), and evas_object_clip_unset().
Referenced by evas_object_smart_clipped_member_add().
EAPI void evas_object_clip_unset | ( | Evas_Object * | obj | ) |
Disable clipping for an object.
- Parameters:
-
obj The object to cease clipping on
obj
, if it was already clipped. If it wasn't, this has no effect. The object obj
must be a valid object.See also evas_object_clip_set(), evas_object_clipees_get() and evas_object_clip_get().
Example:
extern Evas_Object *obj; Evas_Object *clipper; clipper = evas_object_clip_get(obj); if (clipper) { evas_object_clip_unset(obj); evas_object_hide(obj); }
References evas_list_remove().
Referenced by evas_object_clip_set(), evas_object_del(), and evas_object_smart_clipped_member_del().
EAPI const Evas_List* evas_object_clipees_get | ( | const Evas_Object * | obj | ) |
Return a list of objects currently clipped by a specific object.
- Parameters:
-
obj The object to get a list of clippees from
obj
. If none are clipped, it returns NULL. This list is only valid until the clip list is changed and should be fetched again with another call to evas_object_clipees_get() if any objects being clipped by this object are unclipped, clipped by a new object, are deleted or the clipper is deleted. These operations will invalidate the list returned so it should not be used anymore after that point. Any use of the list after this may have undefined results, not limited just to strange behavior but possible segfaults and other strange memory errors. The object obj
must be a valid object.See also evas_object_clip_set(), evas_object_clip_unset() and evas_object_clip_get().
Example:
extern Evas_Object *obj; Evas_Object *clipper; clipper = evas_object_clip_get(obj); if (clipper) { Evas_List *clippees, *l; clippees = evas_object_clipees_get(clipper); printf("Clipper clips %i objects\n", evas_list_count(clippees)); for (l = clippees; l; l = l->next) { Evas_Object *obj_tmp; obj_tmp = l->data; evas_object_show(obj_tmp); } }
Referenced by evas_object_smart_clipped_member_del().