2008-06-23 Emmanuele Bassi <ebassi@openedhand.com>

* clutter/subclassing-ClutterActor.sgml: Remove mention of the
	get_paint_area() function and virtual function.
This commit is contained in:
Emmanuele Bassi 2008-06-23 15:56:30 +00:00
parent 9006de848b
commit 6fa156ad0f
2 changed files with 8 additions and 89 deletions

View File

@ -1,3 +1,8 @@
2008-06-23 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/subclassing-ClutterActor.sgml: Remove mention of the
get_paint_area() function and virtual function.
2008-06-23 Øyvind Kolås <pippin@o-hand.com> 2008-06-23 Øyvind Kolås <pippin@o-hand.com>
* clutter/subclassing-ClutterActor.sgml: added missing call to * clutter/subclassing-ClutterActor.sgml: added missing call to

View File

@ -320,90 +320,8 @@ foo_actor_allocate (ClutterActor *actor,
</programlisting> </programlisting>
</example> </example>
<para>An actor should always paint inside its allocation. It is, <para>The allocation is also the "paint area", that is the area where
however, possible to paint outside the negotiated size by overriding the paint operations should be performed.</para>
the <classname>ClutterActor</classname>::get_paint_area() virtual
function and setting the passed #ClutterActorBox with their
<emphasis>untransformed</emphasis> paint area. This allows writing
actors that can effectively paint on an area different in size and
position from the allocation area.</para>
<para>The <classname>ClutterActor</classname>::get_paint_area() method of
a #ClutterActor is internally invoked when clutter_actor_get_paint_area()
is called on an instance of that actor class. The get_paint_area()
virtual function must return the untransformed area used by the
actor to paint itself; clutter_actor_get_paint_area() will then
proceed to transform the area coordinates into the frame of reference
of the actor's parent (taking into account anchor point, scaling
and rotation).</para>
<note><para>The default paint area is the allocation area of the
actor.</para></note>
<example id="container-actor-paint-area-example">
<title>Implementation of get_paint_area()</title>
<para>In this example, <classname>FooActor</classname> implements
the get_paint_area() virtual function to return an area equivalent
to those of its children plus a border which is not taken into
account by the size negotiation process.</para>
<programlisting>
static void
foo_actor_get_paint_area (ClutterActor *actor,
ClutterActorBox *box)
{
FooActor *foo_actor = FOO_ACTOR (actor);
if (!foo_actor-&gt;children)
{
/* if we don't have any children we return the
* allocation given to us
*/
clutter_actor_get_allocation_box (actor, box);
}
else
{
ClutterActorBox all_box = { 0, };
GList *l;
/* our paint area is the union of the children
* paint areas, plus a border
*/
for (l = foo_actor-&gt;children; l != NULL; l = l&gt;next)
{
ClutterActor *child = l-&gt;data;
ClutterActorBox child_box = { 0, };
clutter_actor_get_paint_area (child, &amp;child_box);
if (l == foo_actor-&gt;children)
all_box = child_box;
else
{
if (child_box.x1 &lt; all_box.x1)
all_box.x1 = child_box.x1;
if (child_box.y1 &lt; all_box.y1)
all_box.y1 = child_box.y1;
if (child_box.x2 &lt; all_box.x2)
all_box.x2 = child_box.x2;
if (child_box.y2 &lt; all_box.y2)
all_box.y2 = child_box.y2;
}
}
/* apply the border width around the box */
all_box.x1 -= (foo_actor-&gt;border_width / 2);
all_box.y1 -= (foo_actor-&gt;border_width / 2);
all_box.x2 += (foo_actor-&gt;border_width / 2);
all_box.y2 += (foo_actor-&gt;border_width / 2);
*box = all_box;
}
}
</programlisting>
</example>
</refsect1> <!-- actor-size-allocation --> </refsect1> <!-- actor-size-allocation -->
@ -512,10 +430,6 @@ foo_actor_paint (ClutterActor *actor)
</programlisting> </programlisting>
</example> </example>
<note><para>A container imposing a layout on its children may
opt to use the paint area as returned by clutter_actor_get_paint_area()
instead of the allocation.</para></note>
<para>If the actor has a non-rectangular shape, or it has internal <para>If the actor has a non-rectangular shape, or it has internal
children that need to be distinguished by the events delivery mechanism, children that need to be distinguished by the events delivery mechanism,
the <classname>ClutterActor</classname>::pick() method should also be the <classname>ClutterActor</classname>::pick() method should also be
@ -527,7 +441,7 @@ foo_actor_paint (ClutterActor *actor)
<para>In this example, <classname>FooActor</classname> overrides the <para>In this example, <classname>FooActor</classname> overrides the
pick() virtual function default implementation to paint itself with a pick() virtual function default implementation to paint itself with a
shaped silhouette, to allow events only on the actual shape of the actor shaped silhouette, to allow events only on the actual shape of the actor
instead of the paint area.</para> instead of the whole paint area.</para>
<programlisting> <programlisting>
static void static void
foo_actor_pick (ClutterActor *actor, foo_actor_pick (ClutterActor *actor,