2008-06-07 11:08:05 -04:00
|
|
|
#include <stdlib.h>
|
2008-11-07 14:32:28 -05:00
|
|
|
#include <gmodule.h>
|
2010-11-06 11:54:21 -04:00
|
|
|
|
|
|
|
#undef CLUTTER_DISABLE_DEPRECATED
|
2008-06-07 11:08:05 -04:00
|
|
|
#include <clutter/clutter.h>
|
|
|
|
|
|
|
|
/* each time the timeline animating the label completes, swap the direction */
|
|
|
|
static void
|
|
|
|
timeline_completed (ClutterTimeline *timeline,
|
|
|
|
gpointer user_data)
|
|
|
|
{
|
|
|
|
clutter_timeline_set_direction (timeline,
|
|
|
|
!clutter_timeline_get_direction (timeline));
|
|
|
|
clutter_timeline_start (timeline);
|
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
change_filter (gpointer actor)
|
|
|
|
{
|
|
|
|
ClutterTextureQuality old_quality;
|
|
|
|
|
|
|
|
old_quality = clutter_texture_get_filter_quality (actor);
|
|
|
|
switch (old_quality)
|
|
|
|
{
|
|
|
|
case CLUTTER_TEXTURE_QUALITY_LOW:
|
|
|
|
clutter_texture_set_filter_quality (actor,
|
|
|
|
CLUTTER_TEXTURE_QUALITY_MEDIUM);
|
|
|
|
g_print ("Setting texture rendering quality to medium\n");
|
|
|
|
break;
|
|
|
|
case CLUTTER_TEXTURE_QUALITY_MEDIUM:
|
|
|
|
clutter_texture_set_filter_quality (actor,
|
|
|
|
CLUTTER_TEXTURE_QUALITY_HIGH);
|
|
|
|
g_print ("Setting texture rendering quality to high\n");
|
|
|
|
break;
|
|
|
|
case CLUTTER_TEXTURE_QUALITY_HIGH:
|
|
|
|
clutter_texture_set_filter_quality (actor,
|
|
|
|
CLUTTER_TEXTURE_QUALITY_LOW);
|
|
|
|
g_print ("Setting texture rendering quality to low\n");
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2008-11-07 14:32:28 -05:00
|
|
|
G_MODULE_EXPORT gint
|
|
|
|
test_texture_quality_main (int argc, char *argv[])
|
2008-06-07 11:08:05 -04:00
|
|
|
{
|
|
|
|
ClutterTimeline *timeline;
|
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 04:50:03 -05:00
|
|
|
ClutterAlpha *alpha;
|
2008-06-07 11:08:05 -04:00
|
|
|
ClutterBehaviour *depth_behavior;
|
|
|
|
ClutterActor *stage;
|
|
|
|
ClutterActor *image;
|
|
|
|
ClutterColor stage_color = { 0x12, 0x34, 0x56, 0xff };
|
[stage] Coalesce fog and perspective API
The fog and perspective API is currently split in two parts:
- the floating point version, using values
- the fixed point version, using structures
The relative properties are using the structure types, since they
are meant to set multiple values at the same time. Instead of
using bare values, the whole API should be coalesced into two
simple calls using structures to match the GObject properties.
Thus:
clutter_stage_set_fog (ClutterStage*, const ClutterFog*)
clutter_stage_get_fog (ClutterStage*, ClutterFog*)
clutter_stage_set_perspective (ClutterStage*, const ClutterPerspective*)
clutter_stage_get_perspective (ClutterStage*, ClutterPerspective*)
Which supercedes the fixed point and floating point variants.
More importantly, both ClutterFog and ClutterPerspective should
using floating point values, since that's what get passed to
COGL anyway.
ClutterFog should also drop the "density" member, since ClutterStage
only allows linear fog; non-linear fog distribution can be achieved
using a signal handler and calling cogl_set_fog() directly; this keeps
the API compact yet extensible.
Finally, there is no ClutterStage:fog so it should be added.
2009-03-09 13:24:44 -04:00
|
|
|
ClutterFog stage_fog = { 10.0, -50.0 };
|
2008-06-07 11:08:05 -04:00
|
|
|
GError *error;
|
2009-11-05 12:30:33 -05:00
|
|
|
gchar *file;
|
2008-06-07 11:08:05 -04:00
|
|
|
|
|
|
|
clutter_init (&argc, &argv);
|
|
|
|
|
|
|
|
stage = clutter_stage_get_default ();
|
|
|
|
clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
|
|
|
|
clutter_stage_set_use_fog (CLUTTER_STAGE (stage), TRUE);
|
[stage] Coalesce fog and perspective API
The fog and perspective API is currently split in two parts:
- the floating point version, using values
- the fixed point version, using structures
The relative properties are using the structure types, since they
are meant to set multiple values at the same time. Instead of
using bare values, the whole API should be coalesced into two
simple calls using structures to match the GObject properties.
Thus:
clutter_stage_set_fog (ClutterStage*, const ClutterFog*)
clutter_stage_get_fog (ClutterStage*, ClutterFog*)
clutter_stage_set_perspective (ClutterStage*, const ClutterPerspective*)
clutter_stage_get_perspective (ClutterStage*, ClutterPerspective*)
Which supercedes the fixed point and floating point variants.
More importantly, both ClutterFog and ClutterPerspective should
using floating point values, since that's what get passed to
COGL anyway.
ClutterFog should also drop the "density" member, since ClutterStage
only allows linear fog; non-linear fog distribution can be achieved
using a signal handler and calling cogl_set_fog() directly; this keeps
the API compact yet extensible.
Finally, there is no ClutterStage:fog so it should be added.
2009-03-09 13:24:44 -04:00
|
|
|
clutter_stage_set_fog (CLUTTER_STAGE (stage), &stage_fog);
|
2008-06-07 11:08:05 -04:00
|
|
|
|
|
|
|
g_signal_connect (stage,
|
|
|
|
"button-press-event", G_CALLBACK (clutter_main_quit),
|
|
|
|
NULL);
|
|
|
|
|
2009-11-25 07:29:26 -05:00
|
|
|
if (argc < 2)
|
2009-11-05 12:30:33 -05:00
|
|
|
g_print ("Hint: the redhand.png isn't a good test image for this test.\n"
|
|
|
|
"This test can take any image file as an argument\n");
|
|
|
|
|
2009-11-25 07:29:26 -05:00
|
|
|
file = (argc > 1)
|
2009-11-05 12:30:33 -05:00
|
|
|
? g_strdup (argv[1])
|
|
|
|
: g_build_filename (TESTS_DATADIR, "redhand.png", NULL);
|
|
|
|
|
2008-06-07 11:08:05 -04:00
|
|
|
error = NULL;
|
2009-11-05 12:30:33 -05:00
|
|
|
image = clutter_texture_new_from_file (file, &error);
|
2008-06-07 11:08:05 -04:00
|
|
|
if (error)
|
2008-06-13 11:18:08 -04:00
|
|
|
g_error ("Unable to load image: %s", error->message);
|
2008-06-07 11:08:05 -04:00
|
|
|
|
2009-11-05 12:30:33 -05:00
|
|
|
g_free (file);
|
2008-06-07 11:08:05 -04:00
|
|
|
|
|
|
|
/* center the image */
|
|
|
|
clutter_actor_set_position (image,
|
|
|
|
(clutter_actor_get_width (stage) - clutter_actor_get_width (image))/2,
|
|
|
|
(clutter_actor_get_height (stage) - clutter_actor_get_height (image))/2);
|
|
|
|
clutter_container_add (CLUTTER_CONTAINER (stage), image, NULL);
|
|
|
|
|
2009-06-04 08:05:12 -04:00
|
|
|
timeline = clutter_timeline_new (5000);
|
2008-06-07 11:08:05 -04:00
|
|
|
g_signal_connect (timeline,
|
|
|
|
"completed", G_CALLBACK (timeline_completed),
|
|
|
|
NULL);
|
|
|
|
|
2009-01-16 08:42:06 -05:00
|
|
|
alpha = clutter_alpha_new_full (timeline, CLUTTER_LINEAR);
|
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 04:50:03 -05:00
|
|
|
depth_behavior = clutter_behaviour_depth_new (alpha, -2500, 400);
|
2008-06-07 11:08:05 -04:00
|
|
|
clutter_behaviour_apply (depth_behavior, image);
|
|
|
|
|
|
|
|
clutter_actor_show (stage);
|
|
|
|
clutter_timeline_start (timeline);
|
|
|
|
|
|
|
|
g_timeout_add (10000, change_filter, image);
|
|
|
|
|
|
|
|
clutter_main ();
|
|
|
|
|
|
|
|
g_object_unref (depth_behavior);
|
|
|
|
g_object_unref (timeline);
|
|
|
|
|
|
|
|
return EXIT_SUCCESS;
|
|
|
|
}
|