profile/ivi/clutter.git
12 years agoUpdated French translation
Bruno Brouard [Sun, 18 Mar 2012 20:41:05 +0000 (21:41 +0100)]
Updated French translation

12 years agoUpdated Bulgarian translation
Alexander Shopov [Sun, 18 Mar 2012 18:29:17 +0000 (20:29 +0200)]
Updated Bulgarian translation

12 years agoUpdated Swedish translation
Daniel Nylander [Sun, 18 Mar 2012 10:04:34 +0000 (11:04 +0100)]
Updated Swedish translation

12 years agoactor: Add ::transitions-completed signal
Emmanuele Bassi [Sun, 18 Mar 2012 08:07:56 +0000 (08:07 +0000)]
actor: Add ::transitions-completed signal

While you can get a per-transition notification of completion, it can be
convenient to also have a way to notify that all the transitions
involving an actor are complete. A simple signal triggered by the
removal of the last transition fits the bill pretty neatly.

12 years agoscript-parser: Fix build
Jasper St. Pierre [Sun, 18 Mar 2012 07:07:31 +0000 (03:07 -0400)]
script-parser: Fix build

12 years agoUpdated Czech translation
Marek Černocký [Sun, 18 Mar 2012 06:57:52 +0000 (07:57 +0100)]
Updated Czech translation

12 years agoUpdated Czech translation
Adam Matoušek [Sun, 18 Mar 2012 06:38:15 +0000 (07:38 +0100)]
Updated Czech translation

12 years agox11/stage: fix multi-stage support
Lionel Landwerlin [Sat, 17 Mar 2012 23:52:48 +0000 (23:52 +0000)]
x11/stage: fix multi-stage support

When handling Configure events from the X server we update the
internal copy of the window size. Unfortunately we may be updating the
wrong stage implementation because we use the one related to the event
translator (which is the first created stage).

This patch fix flickering/redrawning issues with multi-stage by
looking for the right stage implementation associated with an XEvent.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@linux.intel.com>
12 years agoUpdated Portuguese translation
Duarte Loreto [Sun, 18 Mar 2012 00:19:04 +0000 (00:19 +0000)]
Updated Portuguese translation

12 years agoscript: Add 'context' to the translatable definitions
Emmanuele Bassi [Sat, 17 Mar 2012 22:55:33 +0000 (22:55 +0000)]
script: Add 'context' to the translatable definitions

This should cover all the possible options.

12 years agoUpdated Serbian translation
Мирослав Николић [Sat, 17 Mar 2012 19:45:56 +0000 (20:45 +0100)]
Updated Serbian translation

12 years agoactor: Avoid popping the easing state stack once too many
Emmanuele Bassi [Sat, 17 Mar 2012 16:49:35 +0000 (16:49 +0000)]
actor: Avoid popping the easing state stack once too many

If restore_easing_state() is called on the last easing state on the
stack, clean up the stack, so that we don't leave stale pointers
around to later segfault on.

12 years agoactor: Remove the implicit easing state save
Emmanuele Bassi [Sat, 17 Mar 2012 16:46:38 +0000 (16:46 +0000)]
actor: Remove the implicit easing state save

When setting the easing mode, duration, or delay without having ever
called clutter_actor_save_easing_state(). It's confusing, and not
really nice.

In the future, we'll have a default easing state implicitly created by
the actor itself, but for the time being explicitly opting in is
preferrable.

12 years agoUse G_VALUE_INIT instead of { 0, }
Emmanuele Bassi [Sat, 17 Mar 2012 16:38:06 +0000 (16:38 +0000)]
Use G_VALUE_INIT instead of { 0, }

The macro avoids warnings from anal-retentive compilers.

12 years agoUpdated Lithuanian translation
Aurimas Černius [Sat, 17 Mar 2012 16:30:43 +0000 (18:30 +0200)]
Updated Lithuanian translation

12 years agoAdd initializer utilities for ClutterVertex
Emmanuele Bassi [Sat, 17 Mar 2012 16:29:09 +0000 (16:29 +0000)]
Add initializer utilities for ClutterVertex

Similar to what we did for ClutterActorBox.

12 years agoactor: Fix set_scale_with_gravity()
Emmanuele Bassi [Sat, 17 Mar 2012 16:17:39 +0000 (16:17 +0000)]
actor: Fix set_scale_with_gravity()

Add a scale-gravity internal setter, and make set_scale_with_gravity()
call it, along with the scale factor.

12 years agoAdd some utility initializers to ClutterActorBox
Emmanuele Bassi [Sat, 17 Mar 2012 15:27:26 +0000 (15:27 +0000)]
Add some utility initializers to ClutterActorBox

12 years agoUpdated Galician translations
Fran Diéguez [Sat, 17 Mar 2012 14:04:38 +0000 (15:04 +0100)]
Updated Galician translations

12 years agoosx/stage: Synthesize an enter event on show
Emmanuele Bassi [Fri, 16 Mar 2012 23:10:28 +0000 (23:10 +0000)]
osx/stage: Synthesize an enter event on show

If the pointer is inside the window frame when it's shown then we need
to synthesize and emit a NSMouseEnterEvent ourselves, as Quartz won't
do it for us.

This is a bit of a blind commit - but it's taken from an equivalent
patch that has been verified to work in GDK.

12 years agodocs: Change the short description of ClutterActor
Emmanuele Bassi [Fri, 16 Mar 2012 18:10:34 +0000 (18:10 +0000)]
docs: Change the short description of ClutterActor

The Actor class is not abstract any more.

12 years agoAnnotate functionality added in 1.10
Emmanuele Bassi [Fri, 16 Mar 2012 17:30:26 +0000 (17:30 +0000)]
Annotate functionality added in 1.10

12 years agoDebugging cleanups
Emmanuele Bassi [Fri, 16 Mar 2012 16:16:40 +0000 (16:16 +0000)]
Debugging cleanups

Add some more debugging notes to the layout and paint node output.

12 years agoactor: Remove an has_allocation() check
Emmanuele Bassi [Fri, 16 Mar 2012 16:13:11 +0000 (16:13 +0000)]
actor: Remove an has_allocation() check

The get_content_box() method should always succeed; if the actor does
not have an allocation, we are just going to return a 0-box.

12 years agointeractive/image-box: Clarify the label contents
Emmanuele Bassi [Fri, 16 Mar 2012 15:05:42 +0000 (15:05 +0000)]
interactive/image-box: Clarify the label contents

12 years agoactor: Restore a lost queue_relayout()
Emmanuele Bassi [Fri, 16 Mar 2012 14:26:28 +0000 (14:26 +0000)]
actor: Restore a lost queue_relayout()

It got lost during a rebase conflict resolution.

12 years agoUpdated Polish translation
Piotr Drąg [Fri, 16 Mar 2012 14:25:30 +0000 (15:25 +0100)]
Updated Polish translation

12 years agoUpdated British English translation
Bruce Cowan [Fri, 16 Mar 2012 14:18:12 +0000 (14:18 +0000)]
Updated British English translation

12 years agoUpdated POTFILES.in
Piotr Drąg [Fri, 16 Mar 2012 14:12:38 +0000 (15:12 +0100)]
Updated POTFILES.in

12 years agoAssamese translation updated
Nilamdyuti Goswami [Fri, 16 Mar 2012 14:00:46 +0000 (19:30 +0530)]
Assamese translation updated

12 years agoUpdated Slovenian translation
Matej Urbančič [Fri, 16 Mar 2012 13:58:09 +0000 (14:58 +0100)]
Updated Slovenian translation

12 years agoUpdated Spanish translation
Daniel Mustieles [Fri, 16 Mar 2012 13:13:57 +0000 (14:13 +0100)]
Updated Spanish translation

12 years agobuild: Remove maintainer flags from cookbook/examples
Emmanuele Bassi [Fri, 16 Mar 2012 12:21:19 +0000 (12:21 +0000)]
build: Remove maintainer flags from cookbook/examples

The code should be a tad more relaxed.

12 years agopo: Update POTFILES.in
Emmanuele Bassi [Fri, 16 Mar 2012 12:19:33 +0000 (12:19 +0000)]
po: Update POTFILES.in

12 years agoRename 'bilinear' scaling filter to 'trilinear'
Emmanuele Bassi [Fri, 16 Mar 2012 12:05:11 +0000 (12:05 +0000)]
Rename 'bilinear' scaling filter to 'trilinear'

Yes, it's not really the proper GL name for a linear-on-every-axis of a
texture plus linear-between-mipmap-levels minification filter, but it
has three redeeming qualities as a name:

  - LINEAR_MIPMAP_LINEAR sucks, as it introduces GL concepts like
    mipmaps in the API naming, while we're trying to avoid that;
  - people using GL already know what 'trilinear' means in this context
    without going all Khronos on their asses;
  - we're using 2D textures anyway, so 'linear on two axes and linear
    between mipmap levels' can be effectively approximated to
    'trilinear'.

I mean, if even the OpenGL official wiki says:

  Unfortunately, what most people think of as "trilinear" is not linear
  filtering of a 3D texture, but what in OpenGL terms is GL_LINEAR mag
  filter and GL_LINEAR_MIPMAP_LINEAR in the min filter in a 2D texture.
  That is, it is bilinear filtering of each appropriate mipmap level,
  and doing a third linear filter between the adjacent mipmap levels.
  Hence the term "trilinear".
                -- http://www.opengl.org/wiki/Texture

then the horse has already been flogged to death, and I don't intend to
be accused of necrophilia and sadism by flogging it some more.

Prior art: every single GL tutorial in the history of ever;
CoreAnimation's scaling filter enumerations.

If people want to start using 1D or 3D textures they they are probably
going to be using Cogl API directly, and that has the GL naming scheme
for minification and magnification filters anyway.

12 years agodocs: Add ClutterActorClass.paint_node() description
Emmanuele Bassi [Fri, 16 Mar 2012 12:01:28 +0000 (12:01 +0000)]
docs: Add ClutterActorClass.paint_node() description

12 years agopaint-nodes: Make part of the API internal
Emmanuele Bassi [Fri, 16 Mar 2012 11:57:34 +0000 (11:57 +0000)]
paint-nodes: Make part of the API internal

At least for the time being, we only expose the parts of the API that we
want to use internally and for new, out-of-tree Content implementations.

The full PaintNode tree API will be made public in 1.12 once we branch
master.

12 years agodocs: Fixes for ClutterImage's API reference
Emmanuele Bassi [Thu, 15 Mar 2012 19:08:20 +0000 (19:08 +0000)]
docs: Fixes for ClutterImage's API reference

12 years agoUpdate release notes
Emmanuele Bassi [Thu, 15 Mar 2012 19:02:39 +0000 (19:02 +0000)]
Update release notes

12 years agodocs: Fixes for the API reference
Emmanuele Bassi [Thu, 15 Mar 2012 18:26:42 +0000 (18:26 +0000)]
docs: Fixes for the API reference

12 years agointeractive/image-box: Remove unneeded stuff
Emmanuele Bassi [Tue, 13 Mar 2012 17:19:15 +0000 (17:19 +0000)]
interactive/image-box: Remove unneeded stuff

12 years agoactor: Unconditionally emit ::paint
Emmanuele Bassi [Mon, 12 Mar 2012 16:19:08 +0000 (16:19 +0000)]
actor: Unconditionally emit ::paint

It's a bit late in the game for changing the emission of the paint
signal with actors that use paint nodes - mostly because we have both
implicit paint nodes (background color, content) and explicit paint
nodes (the paint_node virtual).

When we branch for 1.12 we can revert this change.

12 years agopo: Update POTFILES.in
Emmanuele Bassi [Mon, 12 Mar 2012 16:07:55 +0000 (16:07 +0000)]
po: Update POTFILES.in

12 years agopaint-node: Make texture template pipeline clamp to edge
Emmanuele Bassi [Mon, 12 Mar 2012 15:52:55 +0000 (15:52 +0000)]
paint-node: Make texture template pipeline clamp to edge

It's safer, and consistent with the rest of Clutter, to make sure that
the template pipeline we use for ClutterTextureNode has its wrap mode
set to clamp-to-edge.

12 years agoimage: Add set_area() method
Emmanuele Bassi [Mon, 12 Mar 2012 15:46:34 +0000 (15:46 +0000)]
image: Add set_area() method

This method allows replacing an area inside the texture data used by a
ClutterImage.

12 years agoimage: Add get_texture()
Emmanuele Bassi [Mon, 12 Mar 2012 15:25:38 +0000 (15:25 +0000)]
image: Add get_texture()

Allow retrieving the Cogl texture used by the ClutterImage.

12 years agoactor: Fix RESIZE_ASPECT mode for the content box
Emmanuele Bassi [Fri, 9 Mar 2012 16:26:44 +0000 (16:26 +0000)]
actor: Fix RESIZE_ASPECT mode for the content box

12 years agoDocumentation fixes
Emmanuele Bassi [Fri, 9 Mar 2012 17:11:19 +0000 (17:11 +0000)]
Documentation fixes

12 years agointeractive/image-box: Add a pure Image test, suitable for docs
Emmanuele Bassi [Fri, 9 Mar 2012 16:26:34 +0000 (16:26 +0000)]
interactive/image-box: Add a pure Image test, suitable for docs

12 years agointeractive/image: Test ClutterImage
Emmanuele Bassi [Fri, 9 Mar 2012 14:58:17 +0000 (14:58 +0000)]
interactive/image: Test ClutterImage

Load up the image content using a GdkPixbuf; this means that the test is
not compiled when --disable-gdk-pixbuf is passed.

12 years agobuild: Check for gdk-pixbuf
Emmanuele Bassi [Fri, 9 Mar 2012 14:56:58 +0000 (14:56 +0000)]
build: Check for gdk-pixbuf

Some tests may need to load image data without going through
ClutterTexture or Cogl, so let's add a configure switch and a
conditional for gdk-pibxuf.

12 years agoUpdate clutter.symbols
Emmanuele Bassi [Thu, 8 Mar 2012 17:37:00 +0000 (17:37 +0000)]
Update clutter.symbols

12 years agointeractive/canvas: Set the scaling filters
Emmanuele Bassi [Thu, 8 Mar 2012 17:19:58 +0000 (17:19 +0000)]
interactive/canvas: Set the scaling filters

12 years agoUse the content scaling filters
Emmanuele Bassi [Thu, 8 Mar 2012 17:19:12 +0000 (17:19 +0000)]
Use the content scaling filters

Both ClutterCanvas and ClutterImage should use the minification and
magnification filters set on the actor, just like the use the content
box and the paint opacity.

12 years agoactor: Add minification/magnification filters
Emmanuele Bassi [Thu, 8 Mar 2012 17:18:17 +0000 (17:18 +0000)]
actor: Add minification/magnification filters

These settings are informative, and will only be used by the eventual
content of an actor.

12 years agoAdd ClutterImage, and image data content
Emmanuele Bassi [Thu, 8 Mar 2012 16:38:45 +0000 (16:38 +0000)]
Add ClutterImage, and image data content

12 years agocanvas: Fix single header inclusion guard
Emmanuele Bassi [Thu, 8 Mar 2012 16:38:30 +0000 (16:38 +0000)]
canvas: Fix single header inclusion guard

12 years agocanvas: Add canvas size to the ::draw signal
Emmanuele Bassi [Thu, 8 Mar 2012 15:47:16 +0000 (15:47 +0000)]
canvas: Add canvas size to the ::draw signal

Instead of requiring a call to clutter_content_get_preferred_size(), we
can simply pass the canvas size to the Canvas::draw signal.

12 years agoAdd ClutterCanvas, a drawing content
Emmanuele Bassi [Thu, 8 Mar 2012 10:31:21 +0000 (10:31 +0000)]
Add ClutterCanvas, a drawing content

12 years agopaint-node: Remove redundant declarations
Emmanuele Bassi [Thu, 8 Mar 2012 14:06:20 +0000 (14:06 +0000)]
paint-node: Remove redundant declarations

12 years agocontent: Make get_preferred_size() public
Emmanuele Bassi [Thu, 8 Mar 2012 14:05:48 +0000 (14:05 +0000)]
content: Make get_preferred_size() public

12 years agoconform: Skip actor-offscreen-redirect
Emmanuele Bassi [Mon, 5 Mar 2012 19:02:16 +0000 (19:02 +0000)]
conform: Skip actor-offscreen-redirect

Until we figure out a way to make it succeed even without the paint
signal emission.

12 years agoconform/text-cache: Use the stage paint signal
Emmanuele Bassi [Mon, 5 Mar 2012 19:01:30 +0000 (19:01 +0000)]
conform/text-cache: Use the stage paint signal

The stage's paint signal is guaranteed to be emitted; ClutterText's
paint signal is not.

12 years agoactor: Make paint_node() and ::paint mutually exclusive
Emmanuele Bassi [Mon, 5 Mar 2012 18:32:16 +0000 (18:32 +0000)]
actor: Make paint_node() and ::paint mutually exclusive

The ::paint signal is the old way to paint an actor; the paint_node()
virtual function is the new way. It's still not possible to traverse the
whole scene graph and build a render tree of PaintNode instances, but
with this change we simultaneously cut out the ::paint signal emission
from the critical path for actors that are using the new PaintNode-based
API, and we retain backward compatibility in the interim period between
1.10 and 2.0.

12 years agopaint-nodes: Fix compiler warning
Emmanuele Bassi [Mon, 5 Mar 2012 18:32:02 +0000 (18:32 +0000)]
paint-nodes: Fix compiler warning

12 years agointeractive/content: Define the size of the text geometry
Emmanuele Bassi [Mon, 20 Feb 2012 10:09:58 +0000 (10:09 +0000)]
interactive/content: Define the size of the text geometry

So that Clutter can decide whether or not to clip the text properly.

12 years agopaint-nodes: Use logical extents for the TextNode::draw
Emmanuele Bassi [Mon, 20 Feb 2012 10:09:05 +0000 (10:09 +0000)]
paint-nodes: Use logical extents for the TextNode::draw

When we decide if we ought to clip, we should use the logical extents of
the PangoLayout, just like we do for ClutterText.

12 years agocontent: Turn attached and detached into signals
Emmanuele Bassi [Sat, 4 Feb 2012 12:58:40 +0000 (12:58 +0000)]
content: Turn attached and detached into signals

The attached and detached virtual functions are now informative, and not
normative - which means it's a good idea to provide them as signals.

12 years agocontent: Make vfuncs optional
Emmanuele Bassi [Sat, 4 Feb 2012 12:49:49 +0000 (12:49 +0000)]
content: Make vfuncs optional

The virtual functions on the ClutterContent interface should provide
hooks for application code, not be the actual implementation.

12 years agopaint-node: Use JSON-GLib for debug serialization
Emmanuele Bassi [Fri, 3 Feb 2012 13:51:29 +0000 (13:51 +0000)]
paint-node: Use JSON-GLib for debug serialization

Instead of our homegrown string building; this at least ensures that
we're generating proper data, instead of random strings. Plus, using
JsonNode and JsonBuilder, we can ask the PaintNode subclasses to
serialize themselves in a sensible way.

12 years agodocs: Update the API reference
Emmanuele Bassi [Thu, 2 Feb 2012 14:51:17 +0000 (14:51 +0000)]
docs: Update the API reference

Add all the new symbols.

12 years agodocs: Update documentation on the paint sequence
Emmanuele Bassi [Wed, 1 Feb 2012 19:26:15 +0000 (19:26 +0000)]
docs: Update documentation on the paint sequence

12 years agoAdd ClutterContent
Emmanuele Bassi [Wed, 1 Feb 2012 18:33:55 +0000 (18:33 +0000)]
Add ClutterContent

ClutterContent is an interface for creating delegate objects that handle
what an actor is going to paint.

Since they are a newly added type, they only hook into the new PaintNode
based API.

The position and size of the content is controlled in part by the
content's own preferred size, and by the ClutterContentGravity
enumeration.

12 years agoactor: Add paint_node virtual function
Emmanuele Bassi [Wed, 1 Feb 2012 17:47:15 +0000 (17:47 +0000)]
actor: Add paint_node virtual function

The ::paint-node virtual inside ClutterActor is what we want people to
use when painting their actors.

Right now, it's a new code path, that gets called while painting; the
paint_node() implementation should only paint the actor itself, and not
its children — they will get their own paint_node() called when needed.

Internally, ClutterActor will automatically create a dummy PaintNode and
paint the background color; then control will be handed out to the
implementation on the class. This is required to maintain compatibility
with the old ::paint signal emission.

Once we are able to get rid of the paint (and pick) sequences, we'll
switch to a fully retained render tree.

12 years agoAdd PaintNode, an element on the render object tree
Emmanuele Bassi [Wed, 1 Feb 2012 15:51:27 +0000 (15:51 +0000)]
Add PaintNode, an element on the render object tree

Now that we have a proper scene graph API, we should split out the
rendering part from the logical and event handling part.

ClutterPaintNode is a lightweight fundamental type that encodes only the
paint operations: pipeline state and geometry. At its most simple, is a
way to structure setting up the programmable pipeline using a
CoglPipeline, and submitting Cogl primitives. The important take away
from this API is that you are not allowed to call Cogl API like
cogl_set_source() or cogl_primitive_draw() directly.

The interesting approach to this is that, in the future, we should be
able to move to a purely retained mode: we will decide which actors need
to be painted, they will update their own branch of the render graph,
and we'll take the render graph and build all the rendering commands
from that.

For the 1.x API, we will have to maintain invariants and the existing
behaviour, but as soon as we can break API, the old paint signal will
just go away, and Actors will only be allowed to manipulate the render
tree.

12 years agoUpdated Spanish translation
Daniel Mustieles [Fri, 16 Mar 2012 12:04:34 +0000 (13:04 +0100)]
Updated Spanish translation

12 years agoAssamese translation updated
Nilamdyuti Goswami [Fri, 16 Mar 2012 07:24:23 +0000 (12:54 +0530)]
Assamese translation updated

12 years agoUpdated Galician translations
Fran Diéguez [Fri, 16 Mar 2012 00:56:03 +0000 (01:56 +0100)]
Updated Galician translations

12 years agoUpdated Slovenian translation
Matej Urbančič [Thu, 15 Mar 2012 20:57:19 +0000 (21:57 +0100)]
Updated Slovenian translation

12 years agoUpdated Polish translation
Piotr Drąg [Thu, 15 Mar 2012 19:53:33 +0000 (20:53 +0100)]
Updated Polish translation

12 years agoUpdated POTFILES.in
Piotr Drąg [Thu, 15 Mar 2012 19:47:06 +0000 (20:47 +0100)]
Updated POTFILES.in

12 years agoanimator: Fix NULL check
Emmanuele Bassi [Thu, 15 Mar 2012 17:51:22 +0000 (17:51 +0000)]
animator: Fix NULL check

12 years agointeractive/texture-async: Use implicit animations
Emmanuele Bassi [Thu, 15 Mar 2012 17:42:42 +0000 (17:42 +0000)]
interactive/texture-async: Use implicit animations

12 years agoactor: Remove G_SIGNAL_NO_RECURSE
Emmanuele Bassi [Thu, 15 Mar 2012 17:41:28 +0000 (17:41 +0000)]
actor: Remove G_SIGNAL_NO_RECURSE

As it turns out, we do end up recursing inside the ::paint signal
emission - especially inside the conformance test suite.

This thoroughly sucks - and we'll only be able to fix it properly
when we bump API for 2.0.

12 years agoI should compile the changes I make
Emmanuele Bassi [Thu, 15 Mar 2012 17:32:53 +0000 (17:32 +0000)]
I should compile the changes I make

12 years agoactor: Fix get_transition() method
Emmanuele Bassi [Thu, 15 Mar 2012 17:31:36 +0000 (17:31 +0000)]
actor: Fix get_transition() method

We now store a closure, not directly a ClutterTransition instance.

12 years agodoc: Reference fixes
Emmanuele Bassi [Thu, 15 Mar 2012 16:57:18 +0000 (16:57 +0000)]
doc: Reference fixes

12 years agosymbols: Update
Emmanuele Bassi [Thu, 15 Mar 2012 16:53:19 +0000 (16:53 +0000)]
symbols: Update

12 years agoactor: Add generic transition support
Emmanuele Bassi [Thu, 15 Mar 2012 16:40:41 +0000 (16:40 +0000)]
actor: Add generic transition support

ClutterActor should be able to hold all transitions, even the ones that
have been explicitly created.

This will allow to add new transitions types in the future, like the
keyframe-based one, or the transition group.

12 years agotransition: Clear the animatable member when removing on complete
Emmanuele Bassi [Thu, 15 Mar 2012 13:53:56 +0000 (13:53 +0000)]
transition: Clear the animatable member when removing on complete

12 years agotransition: Check the repeat count to remove on complete
Emmanuele Bassi [Thu, 15 Mar 2012 13:52:09 +0000 (13:52 +0000)]
transition: Check the repeat count to remove on complete

We can now ask the timeline for the current repeat, and if it's the last
one, then we can safely detach the transition from the animatable
instance.

12 years agotimeline: Add more state accessors
Emmanuele Bassi [Thu, 15 Mar 2012 13:50:28 +0000 (13:50 +0000)]
timeline: Add more state accessors

It should be possible to ask a timeline what is its duration, taking
into account eventual repeats, and which repeat is the one currently
in progress.

These two functions allow writing animations that depend on the current
state of another timeline.

12 years agoactor: Add delay to the easing state
Emmanuele Bassi [Thu, 15 Mar 2012 12:24:02 +0000 (12:24 +0000)]
actor: Add delay to the easing state

It should be possible to set up the delay of a transition, but since
we start the Transition instance before returning control to the caller,
we cannot use clutter_actor_get_transition() to do it without something
extra-awkward, like:

  transition = clutter_actor_get_transition (actor, "width");
  clutter_timeline_stop (transition);
  clutter_timeline_set_delay (transition, 1000);
  clutter_timeline_start (transition);

for each property involved. It's much easier to add a delay to the
easing state of an actor.

12 years agointeractive/bin-layout: Use implicit animations
Emmanuele Bassi [Thu, 15 Mar 2012 11:25:52 +0000 (11:25 +0000)]
interactive/bin-layout: Use implicit animations

12 years agointeractive/actor: Do not use clutter_actor_animate()
Emmanuele Bassi [Thu, 15 Mar 2012 11:25:26 +0000 (11:25 +0000)]
interactive/actor: Do not use clutter_actor_animate()

Use implicit animations instead.

12 years agointeractive/transitions: An easing demo without animate()
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:46 +0000 (11:24 +0000)]
interactive/transitions: An easing demo without animate()

Use the newly added implicit animations support in ClutterActor.

12 years agodocs: Update the API reference
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:27 +0000 (11:24 +0000)]
docs: Update the API reference

12 years agosymbols: Update
Emmanuele Bassi [Thu, 15 Mar 2012 11:24:07 +0000 (11:24 +0000)]
symbols: Update

12 years agoactor: Implement implicit animatable properties
Emmanuele Bassi [Thu, 15 Mar 2012 11:09:11 +0000 (11:09 +0000)]
actor: Implement implicit animatable properties

Clutter is meant to be, and I quote from the README, a toolkit:

  for creating fast, compelling, portable, and dynamic graphical
  user interfaces

and yet the default mode of operation for setting an actor's state on
the scene graph (position, size, opacity, rotation, scaling, depth,
etc.) is *not* dynamic. We assume a static UI, and then animate it.

This is the wrong way to design an API for a toolkit meant to be used to
create animated user interfaces. The default mode of operation should be
to implicitly animate every state transition, and only allow skipping
the animation if the user consciously decides to do so — i.e. the design
tenet of the API should be to make The Right Thing™ by default, and make
it really hard (or even impossible) to do The Wrong Thing™.

So we should identify "animatable" properties, i.e. those properties
that should be implicitly animated by ClutterActor, and use the
animation framework we provide to tween the transitions between the
current state and the desired state; the implicit animation should
happen when setting these properties using the public accessors, and not
through some added functionality. For instance, the following:

  clutter_actor_set_position (actor, newX, newY);

should not make the actor jump to the (newX, newY) point; it should
tween the actor's position between the current point and the desired
point.

Since we have to maintain backward compatibility with existing
applications, we still need to mark the transitions explicitly, but we
can be smart about it, and treat transition states as a stack that can
be pushed and popped, e.g.:

  clutter_actor_save_easing_state (actor);

    clutter_actor_set_easing_duration (actor, 500);
    clutter_actor_set_position (actor, newX, newY);
    clutter_actor_set_opacity (actor, newOpacity);

  clutter_actor_restore_easing_state (actor);

And we can even start stacking animations, e.g.:

  clutter_actor_save_easing_state (actor);

    clutter_actor_set_easing_duration (actor, 500);
    clutter_actor_set_position (actor, newX, newY);

    clutter_actor_save_easing_state (actor);

      clutter_actor_set_easing_duration (actor, 500);
      clutter_actor_set_easing_mode (actor, CLUTTER_LINEAR);
      clutter_actor_set_opacity (actor, newOpacity);
      clutter_actor_set_depth (actor, newDepth);

    clutter_actor_restore_easing_state (actor);

  clutter_actor_restore_easing_state (actor);

And so on, and so forth.

The implementation takes advantage of the newly added Transition API,
which uses only ClutterTimeline sub-classes and ClutterInterval, to cut
down the amount of signal emissions and memory management of object
instances; as well of using the ClutterAnimatable interface for custom
properties and interpolation of values.

12 years agoAdd ClutterPropertyTransition
Emmanuele Bassi [Thu, 15 Mar 2012 11:06:00 +0000 (11:06 +0000)]
Add ClutterPropertyTransition

ClutterPropertyTransition is a ClutterTransition that animates a
property of a ClutterAnimatable implementation.