/usr/share/gtk-doc/html/clutter/migrating-ClutterEffect.html is in libclutter-1.0-doc 1.20.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Clutter Reference Manual: Migrating from ClutterEffect</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
<link rel="home" href="index.html" title="Clutter Reference Manual">
<link rel="up" href="migration.html" title="Part VIII. Migrating from previous version of Clutter">
<link rel="prev" href="pt09.html" title="Part I. ">
<link rel="next" href="migrating-ClutterPath.html" title="Migrating to ClutterPath">
<meta name="generator" content="GTK-Doc V1.21 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="migration.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="pt09.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="migrating-ClutterPath.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<div class="titlepage"><div>
<div><h2 class="title">
<a name="migrating-ClutterEffect"></a>Migrating from ClutterEffect</h2></div>
<div><div class="author">
<h3 class="author">
<span class="firstname">Emmanuele</span> <span class="surname">Bassi</span>
</h3>
<div class="affiliation"><div class="address"><p><br>
<code class="email"><<a class="email" href="mailto:ebassilinux.intel.com">ebassi<em class="parameter"><code>linux.intel.com</code></em></a>></code><br>
</p></div></div>
</div></div>
</div></div>
<div class="toc"><dl class="toc"><dt><span class="section"><a href="migrating-ClutterEffect.html#using-actor-animate">Using <code class="function">clutter_actor_animate()</code></a></span></dt></dl></div>
<p>Since version 1.0, Clutter provides the <a class="link" href="clutter-Implicit-Animations.html#ClutterAnimation"><span class="type">ClutterAnimation</span></a> API
and the <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> family of functions as replacements
for the <span class="structname">ClutterEffectTemplate</span> and
clutter_effect_* API for creating simple, one-off animations.</p>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="using-actor-animate"></a>Using <code class="function"><a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a></code>
</h2></div></div></div>
<p>Prior to Clutter 1.0, the way to create simple, one-off
animations involving a single actor was the ClutterEffect API. The
major downside of this API was that to abstract the duration and
easing function of the animation the application developer had to
create a <span class="structname">ClutterEffectTemplate</span> and keep it
around for the duration of the application.</p>
<p>The <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> function performs all of the
memory management that was delegated to the
<span class="structname">ClutterEffectTemplate</span>, freeing the developer
from having to deal with object bookkeeping.</p>
<p>Another downside of the ClutterEffect API is that every
possible animation has its own function (scaling, opacity, rotation,
movement, etc.), and new functions cannot be added outside of
Clutter.</p>
<div class="example">
<a name="example-clutter-effect"></a><p class="title"><b>Example 1. Effect example</b></p>
<div class="example-contents">
<p>The following code shows a simple animation using
the ClutterEffect API. It animates an actor linearly in 500
milliseconds, by moving it to the (100, 100) coordinates
while fading it out.</p>
<pre class="programlisting">
ClutterEffectTemplate *tmpl;
tmpl = clutter_effect_template_new_for_duration (500, clutter_ramp_inc_func);
clutter_effect_move (tmpl, actor, 100, 100, NULL, NULL);
clutter_effect_fade (tmpl, actor, 0, NULL, NULL);
g_object_unref (tmpl);
</pre>
</div>
</div>
<br class="example-break"><p>The <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> function will implicitely
create a <a class="link" href="clutter-Implicit-Animations.html#ClutterAnimation"><span class="type">ClutterAnimation</span></a> with the passed duration and easing
mode, and will bind all the passed properties. All readable and
writable properties specified by a <a class="link" href="ClutterActor.html" title="ClutterActor"><span class="type">ClutterActor</span></a> are animatable
through <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a>.</p>
<div class="example">
<a name="example-actor-animate"></a><p class="title"><b>Example 2. Animation example</b></p>
<div class="example-contents">
<p>The following code shows the <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> call
equivalent to the previous ClutterEffect example.</p>
<pre class="programlisting">
clutter_actor_animate (actor, CLUTTER_LINEAR, 500,
"x", 100.0,
"y", 100.0,
"opacity", 0,
NULL);
</pre>
</div>
</div>
<br class="example-break"><p>The ClutterEffect API provided a way to be notified of the
effect completion. Since the <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> function creates
a <a class="link" href="clutter-Implicit-Animations.html#ClutterAnimation"><span class="type">ClutterAnimation</span></a> instance it's possible to use the
<a class="link" href="clutter-Implicit-Animations.html#ClutterAnimation-completed" title="The “completed” signal"><span class="type">“completed”</span></a> signal for the same notification.</p>
<div class="example">
<a name="example-clutter-effect-complete"></a><p class="title"><b>Example 3. Effect complete example</b></p>
<div class="example-contents">
<p>The following code shows how to receive notification of the
completion of the animation.</p>
<pre class="programlisting">
static void
on_fade_complete (ClutterActor *actor,
gpointer data)
{
clutter_actor_hide (actor);
}
ClutterEffectTemplate *tmpl;
tmpl = clutter_effect_template_new_for_duration (500, clutter_ramp_inc_func);
clutter_effect_fade (tmpl, actor, 0, on_fade_complete, NULL);
g_object_unref (tmpl);
</pre>
</div>
</div>
<br class="example-break"><p>The <a class="link" href="clutter-Implicit-Animations.html#clutter-actor-animate" title="clutter_actor_animate ()"><code class="function">clutter_actor_animate()</code></a> function also has a convenience
wrapper that allows to inline the signal connection:</p>
<div class="example">
<a name="example-actor-animate-complete"></a><p class="title"><b>Example 4. Animation completed example</b></p>
<div class="example-contents">
<p>The following code shows how to get the same notification
as the example above.</p>
<pre class="programlisting">
ClutterAnimation *animation;
animation = clutter_actor_animate (actor, CLUTTER_LINEAR, 500,
"opacity", 0,
NULL);
g_signal_connect_swapped (animation,
"completed", G_CALLBACK (clutter_actor_hide),
actor);
/* OR */
clutter_actor_animate (actor, CLUTTER_LINEAR, 500,
"opacity", 0,
"signal-swapped::completed", clutter_actor_hide, actor,
NULL);
</pre>
</div>
</div>
<br class="example-break">
</div>
</div>
<div class="footer">
<hr>
Generated by GTK-Doc V1.21</div>
</body>
</html>
|