Commit Graph

25 Commits

Author SHA1 Message Date
Emmanuele Bassi
7d7372af43 [animation] Move the alpha value to floating point
The current Alpha value is an unsigned integer that can be used
implicitly as a fixed point value. This makes writing an alpha
function overshooting below and above the current range basically
impossible without complicating an already complex code, and
creating weird corner cases.

For this reason, the Alpha value should be defined as a floating
point normalized value, spanning a range between 0.0 and 1.0; in
order to allow overshooting, the valid range is extended one unit
below and one unit above, thus making it -1.0 .. 2.0.

This commit updates the various users of the ClutterAlpha API
and the tests cases.

This commit also removes all the current alpha functions exposed
in the public API.
2009-01-20 16:42:49 +00:00
Emmanuele Bassi
74213e0ee3 [alpha] Allow registering alpha functions
In order to unify alpha functions and animation modes in ClutterAlpha
we should be able to register alpha functions and get a logical id
for them; the logical id will then be available to be used by
clutter_alpha_set_mode().

The registration requires API changes in ClutterAlpha constructors
and methods. It also provides the chance to shift ClutterAlpha
towards the use of animations modes only, and to alpha functions
as a convenience API for language bindings alone.
2009-01-16 14:37:35 +00:00
Emmanuele Bassi
34cc7fe21c 2008-11-18 Emmanuele Bassi <ebassi@linux.intel.com>
* clutter/clutter-alpha.h:
	* clutter/clutter-alpha.c:
	(clutter_alpha_set_mode): Use a lookup table to find the alpha
	function given the animation mode.

	(clutter_exp_in_func),
	(clutter_exp_out_func),
	(clutter_exp_in_out_func): Add new exponential functions.

	* clutter/clutter-script.c: Update the lookup table with the
	new animation modes; match "linear" to the ramp-inc alpha
	function.

	* clutter/clutter-types.h: Add new AnimationMode values.

	* tests/interactive/test-easing.c: Update the easing functions
	test.
2008-11-18 12:42:05 +00:00
Emmanuele Bassi
62844d5f04 2008-11-17 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1014 - Clutter Animation API Improvements

	* clutter/Makefile.am:
	* clutter/clutter.h: Update the build

	* clutter/clutter-types.h: Add AnimationMode, an enumeration
	for easing functions.

	* clutter/clutter-alpha.[ch]: Add the :mode property to
	control the function bound to an Alpha instance using an
	enumeration value. Also add six new alpha functions:

		- ease-in, ease-out, ease-in-out
		- sine-in, sine-out, sine-in-out

	* clutter/clutter-deprecated.h: Deprecate the #defines for
	the alpha functions. They will be replaced by entries in the
	ClutterAnimationMode.

	* clutter/clutter-interval.[ch]: Add ClutterInterval, an
	object for defining, validating and computing an interval
	between two values.

	* clutter/clutter-animation.[ch]: Add ClutterAnimation, an
	object responsible for animation the properties of a single
	actor along an interval of values. ClutterAnimation memory
	management is automatic. A simple wrapper method for
	ClutterActor is provided:

		clutter_actor_animate()

	which will create, or update, an animation for the passed
	actor.

	* clutter/clutter-debug.h:
	* clutter/clutter-main.c: Add a new 'animation' debug note.

	* clutter/clutter-script.c: Clean up the alpha functions
	whitelist, and add the new functions.

	* doc/reference/clutter/Makefile.am:
	* doc/reference/clutter/clutter-sections.txt: Update the
	API reference.

	* doc/reference/clutter/clutter-animation.xml: Renamed to
	doc/reference/clutter/clutter-animation-tutorial.xml to
	avoid clashes with the ClutterAnimation section.

	* doc/reference/clutter/clutter-docs.sgml: Renamed to
	doc/reference/clutter/clutter-docs.xml, as it was an XML
	file and not a SGML file.

	* tests/Makefile.am:
	* tests/interactive/Makefile.am:
	* tests/interactive/test-animation.c:
	* tests/interactive/test-easing.c: Add two tests for the
	new simple animation API and the easing functions.

	* tests/interactive/test-actors.c:
	* tests/interactive/test-behave.c:
	* tests/interactive/test-depth.c:
	* tests/interactive/test-effects.c:
	* tests/interactive/test-layout.c:
	* tests/interactive/test-multistage.c:
	* tests/interactive/test-paint-wrapper.c:
	* tests/interactive/test-rotate.c:
	* tests/interactive/test-scale.c:
	* tests/interactive/test-texture-quality.c:
	* tests/interactive/test-threads.c:
	* tests/interactive/test-viewport.c: Update interactive tests
	to the deprecations and new alpha API.
2008-11-18 09:50:03 +00:00
Emmanuele Bassi
a32eca26b6 2008-10-30 Emmanuele Bassi <ebassi@linux.intel.com>
Bug 1212 - Allow only a single include file for Clutter

	* clutter/*.h: Only allow including clutter.h in third
	party code.

	* clutter/cogl/cogl-color.h:
	* clutter/cogl/cogl-fixed.h:
	* clutter/cogl/cogl.h.in: Only allow including cogl.h in
	third party code.

	* clutter/cogl/common/Makefile.am:
	* clutter/cogl/gl/Makefile.am:
	* clutter/cogl/gles/Makefile.am:
	* clutter/eglnative/Makefile.am:
	* clutter/eglx/Makefile.am:
	* clutter/fruity/Makefile.am:
	* clutter/glx/Makefile.am:
	* clutter/glx/clutter-glx.h:
	* clutter/osx/Makefile.am:
	* clutter/pango/Makefile.am:
	* clutter/sdl/Makefile.am:
	* clutter/win32/Makefile.am:
	* clutter/x11/Makefile.am: Fix build environment.

	* clutter/x11/clutter-x11-texture-pixmap.h:
	* clutter/x11/clutter-x11.h: Fix inclusion rules.

	* tests/test-pixmap.c: Fix inclusion of GdkPixbuf header.

	* README: Update release notes.
2008-10-30 17:04:34 +00:00
Emmanuele Bassi
9655f4d58c 2008-04-18 Emmanuele Bassi <ebassi@openedhand.com>
Bug #884 - Add clutter_alpha_set_closure

	* clutter/clutter-alpha.[ch]: Add clutter_alpha_set_closure(),
	a GClosure variant of clutter_alpha_set_func(), and reimplement
	the latter as a special case of the former. (#884, Xan López)
2008-04-18 15:03:30 +00:00
Emmanuele Bassi
5eecda2dba 2007-12-15 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-actor.c:
	* clutter/clutter-alpha.h:
	* clutter/clutter-event.h:
	* clutter/clutter-fixed.[ch]:
	* clutter/clutter-model.h:
	* clutter/clutter-shader.[ch]:
	* clutter/clutter-stage.c: Documentation fixes.
2007-12-15 14:36:27 +00:00
Emmanuele Bassi
790ef05b46 More documentation fixes 2007-08-07 14:03:30 +00:00
Emmanuele Bassi
9686266fd3 Documentation fixes 2007-08-07 14:03:08 +00:00
Emmanuele Bassi
0d287fc4d4 2007-07-29 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-behaviour-ellipse.c: Documentation
	fixes; kill some indirections; freeze the notification
	queue when (potentially) emitting multiple notify
	signals.

	* clutter/clutter-alpha.h: Remove the unused macro
	CLUTTER_TYPE_SMOOTHSTEP.
2007-07-29 08:54:24 +00:00
Emmanuele Bassi
82860b5d5a Use the right argument naming for alpha functions
The name of the argument in the header must match the name in the
function implementation, for gtk-doc to work properly.
2007-07-04 12:29:44 +00:00
Tomas Frydrych
5b0e0dbcbe removed ClutterSmoothstep type; renamed clutter_smoothstep_func to clutter_smoothstep_inc_func; added clutter_smoothstep_dec_func 2007-05-30 10:52:06 +00:00
Tomas Frydrych
733a767657 added clutter_exp_inc_func() and clutter_exp_dec_func() 2007-05-17 07:09:24 +00:00
Tomas Frydrych
06bf2ddaef added clutter_sine_half_func() 2007-05-16 13:53:39 +00:00
Tomas Frydrych
9a10979e0f Fixed clutter_sine_inc_func(); added clutter_sine_dec_func() 2007-05-16 13:46:54 +00:00
Tomas Frydrych
9dfe31a542 implemented smoothstep alpha function 2007-05-16 11:32:50 +00:00
Matthew Allum
23ac88ac70 2007-05-14 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-behaviour-path.c:
        Fix bug where last knot position wouldn't get reached.

        * clutter/clutter-group.c:
        Add some docs

        * clutter/clutter-timeline.h:
        * clutter/clutter-timeline.c:
        Add clutter_timeline_copy (needed for ClutterEffect)

        * clutter/clutter-version.h.in:
        Export windowing system / GL backend etc defines.

        * clutter/Makefile.am:
        * clutter/clutter-effect.c:
        * clutter/clutter-effect.h:
        * clutter/clutter.h:

        * clutter/glx/clutter-backend-glx.c:
        Minor clean ups.

        * clutter/clutter-alpha.h:
        Add a fixme.

        * configure.ac:
        Add FPU define.

        * examples/Makefile.am:
        * examples/slider.c:
        Add Robs slider game.
2007-05-14 09:11:23 +00:00
Emmanuele Bassi
9661bd50b8 2007-01-30 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-alpha.h:
	* clutter/clutter-alpha.c: Add the square waveform
	function clutter_square_func() to the precooked
	alpha functions.
2007-01-30 16:51:49 +00:00
Emmanuele Bassi
734f808fbc 2006-11-15 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-alpha.h:
	* clutter/clutter-alpha.c: Add a data parameter to
	the ClutterAlphaFunc; add a data+destroy parameter
	to clutter_alpha_set_func() and to clutter_alpha_new(),
	and turned the latter into clutter_alpha_new_full();
	add a simple, empty constructor clutter_alpha_new().

	These changes makes writing bindings a tad more easy,
	as bindings require passing their own functions in
	order to call the real alpha function.

	* clutter/clutter-behaviour.h: Clean up the header.

	* clutter/clutter-behaviours.[ch]:
	* clutter/clutter-behaviour-opacity.[ch]:
	* clutter/clutter-behaviour-path.[ch]:
	* clutter/clutter-behaviour-scale.[ch]: Split the
	ClutterBehaviourPath, ClutterBehaviourOpacity and
	ClutterBehaviourScale into their own files as they
	have been growing a bit. Fix ClutterBehaviourPath
	API.

	* clutter/clutter-media.h: Remove the commented
	"metadata_available" signal: gtk-doc chokes up on that.

	* clutter/clutter-timeline.h:
	* clutter/clutter-timeline.c: Remove the useless
	ClutterTimelineAlphaFunc signature; add missing accessor
	methods for the properties; clean up a bit.

	* clutter/clutter-util.h:
	* clutter/clutter-util.c: Remove unneeded function
	clutter_util_can_create_texture().

	* clutter/clutter-feature.h: Sync the name of
	clutter_feature_get_all() with the name declared
	in clutter-feature.h.

	* clutter/Makefile.am:
	* clutter/clutter.h: Update.

	* examples/behave.c: Update to the new ClutterAlpha
	constructor.

	* examples/super-oh.c: Use the right pointer and avoid
	the compiler making a fuss about it.
2006-11-15 23:37:53 +00:00
Matthew Allum
5ca4d3718d 2006-11-15 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-actor.h:
        * clutter/clutter-actor.c:
        Add new API clutter_actor_move_by(), clutter_actor_get_size()

        * clutter/clutter-alpha.c:
        * clutter/clutter-alpha.h:
        Add clutter alpha sine func

        * clutter/clutter-behaviours.h:
        * clutter/clutter-behaviours.c:
        Add a basic scale behaviour (needs work)

        * examples/behave.c: (main):
        More playing with new behaviour functionality

        * clutter/clutter-feature.c:
        * clutter/clutter-feature.h:
        * clutter/clutter-main.c:
        Add new experimental sync to vblank code
        Set env CLUTTER_VBLANK=none to disable.
2006-11-15 21:19:01 +00:00
Emmanuele Bassi
3f62c72d07 2006-11-16 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-alpha.h:
	* clutter/clutter-alpha.c: ClutterAlpha is an initially
	floating object, as it makes sense only when bound to
	a ClutterBehaviour; add checks for public API.

	* clutter/clutter-behaviour.h:
	* clutter/clutter-behaviour.c: Remove the ClutterBehaviour
	constructor: ClutterBehaviour is an abstract class which
	must be implemented by subclassing; add checks for public
	API; unref the actors on finalize; sink the ClutterAlpha
	object.

	* clutter/clutter-behaviours.h: ClutterKnot is a boxed
	type: add the _get_type() function declaration and the
	type macro.
2006-11-14 14:12:56 +00:00
Matthew Allum
ddab271272 2006-10-23 Matthew Allum <mallum@openedhand.com>
* clutter/clutter-alpha.h:
        * clutter/clutter-behaviour.c:
        * clutter/clutter-behaviour.h:
        * clutter/clutter-behaviours.c:
        * clutter/clutter-behaviours.h:
        * examples/behave.c:
        Behaviours now only 'driven' by ClutterAlpha, not any object/prop.
        Add simple Clutter path behaviour.
2006-10-22 23:33:14 +00:00
Emmanuele Bassi
4dea33e123 revert changes 2006-09-08 20:57:31 +00:00
Emmanuele Bassi
ba32170d94 creating a branch for experimenting with the behaviour API 2006-09-08 20:52:38 +00:00
Jorn Baayen
bc3d914ccd 2006-08-28 Jorn Baayen <jorn@openedhand.com>
* clutter/Makefile.am:
	* clutter/clutter-alpha.c:
	* clutter/clutter-alpha.h:
	* clutter/clutter-behaviours.c:
	(clutter_behaviour_opacity_dispose),
	(clutter_behaviour_opacity_init),
	(clutter_behaviour_opacity_frame_foreach),
	(clutter_behaviour_opacity_frame):
	* clutter/clutter-behaviours.h:
	* clutter/clutter-timeline.c: (clutter_timeline_class_init):
	* clutter/clutter-timeline.h:
	* clutter/clutter.h:
	* examples/behave.c: (main):

	Separate alpha calculation into its own class.

	* clutter/clutter-behaviour.c: (clutter_behaviour_set_timelime):

	Correct NULL check.
2006-08-28 17:11:15 +00:00