[evas] Documenting/exemplifying the following:

- evas_object_smart_member_add
 - evas_object_smart_member_del
 - evas_object_smart_members_get
 - evas_object_smart_move_children_relative
 - evas_object_smart_need_recalculate_get
 - evas_object_smart_need_recalculate_set
 - evas_object_smart_parent_get
 - evas_object_smart_smart_get



SVN revision: 61084
This commit is contained in:
Gustavo Lima Chaves 2011-07-06 13:52:47 +00:00
parent c94a9eff7f
commit 2cca9c6485
3 changed files with 90 additions and 45 deletions

View File

@ -579,7 +579,6 @@
* @skip typedef struct _Evas_Smart_Example_Data
* @until };
*
*
* See that, as we're inheriting from the clipped smart object's
* class, we @b must have their data struct as our first member. Other
* data of interest for us is a child members array and the border
@ -587,6 +586,10 @@
* mentioned function. Note how to tell Evas the border will be
* managed by our smart object from that time on:
* <code>evas_object_smart_member_add(priv->border, o);</code>.
* The counterpart of this function is exemplifyed on the smart
* object's interface function to remove children:
* @skip remove a child element
* @until set to
*
* At the end of that function we make use of an constant defined by
* the #EVAS_SMART_SUBCLASS_NEW: @c _evas_smart_example_parent_sc. It

View File

@ -439,6 +439,9 @@ _on_keydown(void *data __UNUSED__,
prev = evas_smart_example_set_left(d.smt, rect);
fprintf(stdout, "Setting smart object's left spot with a new"
" rectangle.\n");
fprintf(stdout, "Checking its new smart object parent: %s\n",
evas_object_smart_parent_get(rect) == d.smt ? "OK!" :
"Failure!");
if (prev)
{
int r, g, b;
@ -463,6 +466,9 @@ _on_keydown(void *data __UNUSED__,
prev = evas_smart_example_set_right(d.smt, rect);
fprintf(stdout, "Setting smart object's right spot with a new"
" rectangle.\n");
fprintf(stdout, "Checking its new smart object parent: %s\n",
evas_object_smart_parent_get(rect) == d.smt ? "OK!" :
"Failure!");
if (prev)
{
int r, g, b;

View File

@ -8208,38 +8208,65 @@ EAPI int evas_smart_usage_get(const Evas_Smart *s);
EAPI Evas_Object *evas_object_smart_add (Evas *e, Evas_Smart *s) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_MALLOC;
/**
* Set an Evas object as a member of a smart object.
* Set an Evas object as a member of a given smart object.
*
* @param obj The member object
* @param smart_obj The smart object
*
* Members will automatically be stacked and layered with the smart object.
* The various stacking function will operate on members relative to the
* other members instead of the entire canvas.
* Members will automatically be stacked and layered together with the
* smart object. The various stacking functions will operate on
* members relative to the other members instead of the entire canvas,
* since they now live on an exclusive layer (see
* evas_object_stack_above(), for more details).
*
* Non-member objects can not interleave a smart object's members.
* Any @p smart_obj object's specific implementation of the @c
* member_add() smart function will take place too, naturally.
*
* @see evas_object_smart_member_del()
* @see evas_object_smart_members_get()
*
* @ingroup Evas_Smart_Object_Group
*/
EAPI void evas_object_smart_member_add (Evas_Object *obj, Evas_Object *smart_obj) EINA_ARG_NONNULL(1, 2);
/**
* Removes a member object from a smart object.
* Removes a member object from a given smart object.
*
* @param obj the member object
* @ingroup Evas_Smart_Object_Group
*
* This removes a member object from a smart object. The object will still
* be on the canvas, but no longer associated with whichever smart object
* it was associated with.
* This removes a member object from a smart object, if it was added
* to any. The object will still be on the canvas, but no longer
* associated with whichever smart object it was associated with.
*
* @see evas_object_smart_member_add() for more details
* @see evas_object_smart_members_get()
*/
EAPI void evas_object_smart_member_del (Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Gets the smart parent of an Evas_Object
* @param obj the Evas_Object you want to get the parent
* @return Returns the smart parent of @a obj, or @c NULL if @a obj is not a smart member of another Evas_Object
* Retrieves the list of the member objects of a given Evas smart
* object
*
* @param obj the smart object to get members from
* @return Returns the list of the member objects of @p obj.
*
* The returned list should be freed with @c eina_list_free() when you
* no longer need it.
*
* @see evas_object_smart_member_add()
* @see evas_object_smart_member_del()
*/
EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* Gets the parent smart object of a given Evas object, if it has one.
*
* @param obj the Evas object you want to get the parent smart object
* from
* @return Returns the parent smart object of @a obj or @c NULL, if @a
* obj is not a smart member of any
*
* @ingroup Evas_Smart_Object_Group
*/
EAPI Evas_Object *evas_object_smart_parent_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@ -8263,18 +8290,11 @@ EAPI Eina_Bool evas_object_smart_type_check (const Evas_Object *obj
EAPI Eina_Bool evas_object_smart_type_check_ptr (const Evas_Object *obj, const char *type) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE;
/**
* Gets the list of the member objects of an Evas_Object
* @param obj the Evas_Object you want to get the list of member objects
* @return Returns the list of the member objects of @a obj.
* The returned list should be freed with eina_list_free() when you no longer need it
*/
EAPI Eina_List *evas_object_smart_members_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
/**
* Get the Evas_Smart from which @p obj was created.
* Get the #Evas_Smart from which @p obj smart object was created.
*
* @param obj a smart object
* @return the Evas_Smart
* @return the #Evas_Smart handle or @c NULL, on errors
*
* @ingroup Evas_Smart_Object_Group
*/
EAPI Evas_Smart *evas_object_smart_smart_get (const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@ -8441,36 +8461,43 @@ EAPI void evas_object_smart_callback_description_find(const Evas_Ob
EAPI void evas_object_smart_changed (Evas_Object *obj) EINA_ARG_NONNULL(1);
/**
* Set the need_recalculate flag of given smart object.
*
* If this flag is set then calculate() callback (method) of the given
* smart object will be called, if one is provided, during render phase
* usually evas_render(). After this step, this flag will be automatically
* unset.
*
* If no calculate() is provided, this flag will be left unchanged.
*
* @note just setting this flag will not make scene dirty and evas_render()
* will have no effect. To do that, use evas_object_smart_changed(),
* that will automatically call this function with 1 as parameter.
* Set or unset the flag signalling that a given smart object needs to
* get recalculated.
*
* @param obj the smart object
* @param value if one want to set or unset the need_recalculate flag.
* @param value whether one wants to set (@c EINA_TRUE) or to unset
* (@c EINA_FALSE) the flag.
*
* If this flag is set, then the @c calculate() smart function of @p
* obj will be called, if one is provided, during rendering phase of
* Evas (see evas_render()), after which this flag will be
* automatically unset.
*
* If that smart function is not provided for the given object, this
* flag will be left unchanged.
*
* @note just setting this flag will not make the canvas' whole scene
* dirty, by itself, and evas_render() will have no effect. To
* force that, use evas_object_smart_changed(), that will also
* automatically call this function automatically, with @c
* EINA_TRUE as parameter.
*
* @ingroup Evas_Smart_Object_Group
*/
EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj, Eina_Bool value) EINA_ARG_NONNULL(1);
/**
* Get the current value of need_recalculate flag.
*
* @note this flag will be unset during the render phase, after calculate()
* is called if one is provided. If no calculate() is provided, then
* the flag will be left unchanged after render phase.
* Get the value of the flag signalling that a given smart object needs to
* get recalculated.
*
* @param obj the smart object
* @return if flag is set or not.
*
* @note this flag will be unset during the rendering phase, when the
* @c calculate() smart function is called, if one is provided.
* If it's not provided, then the flag will be left unchanged
* after the rendering phase.
*
* @ingroup Evas_Smart_Object_Group
*/
EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
@ -8501,11 +8528,20 @@ EAPI void evas_smart_objects_calculate (Evas *e);
/**
* Moves all children objects relative to given offset.
* Moves all children objects of a given smart object relative to a
* given offset.
*
* @param obj the smart Evas object to use.
* @param dx horizontal offset.
* @param dy vertical offset.
* @param obj the smart object.
* @param dx horizontal offset (delta).
* @param dy vertical offset (delta).
*
* This will make each of @p obj object's children to move, from where
* they before, with those delta values (offsets) on both directions.
*
* @note This is most useful on custom smart @c move() functions.
*
* @note Clipped smart objects already make use of this function on
* their @c move() smart function definition.
*/
EAPI void evas_object_smart_move_children_relative(Evas_Object *obj, Evas_Coord dx, Evas_Coord dy) EINA_ARG_NONNULL(1);