2006-05-29 08:59:36 +00:00
|
|
|
#include <clutter/clutter.h>
|
|
|
|
|
2007-12-09 08:53:06 +00:00
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2007-10-11 12:18:01 +00:00
|
|
|
#define STAGE_WIDTH 640
|
|
|
|
#define STAGE_HEIGHT 480
|
2006-06-06 20:40:40 +00:00
|
|
|
|
2007-10-11 12:18:01 +00:00
|
|
|
#define COLS 18
|
|
|
|
#define ROWS 20
|
2006-06-06 20:40:40 +00:00
|
|
|
|
2009-01-15 13:58:31 +00:00
|
|
|
static void
|
|
|
|
on_paint (ClutterActor *actor, gconstpointer *data)
|
2008-04-25 13:37:36 +00:00
|
|
|
{
|
|
|
|
static GTimer *timer = NULL;
|
|
|
|
static int fps = 0;
|
|
|
|
|
|
|
|
if (!timer)
|
|
|
|
{
|
|
|
|
timer = g_timer_new ();
|
|
|
|
g_timer_start (timer);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (g_timer_elapsed (timer, NULL) >= 1)
|
|
|
|
{
|
|
|
|
printf ("fps: %d\n", fps);
|
|
|
|
g_timer_start (timer);
|
|
|
|
fps = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
++fps;
|
2009-01-15 13:58:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static gboolean
|
|
|
|
queue_redraw (gpointer stage)
|
|
|
|
{
|
|
|
|
clutter_actor_queue_redraw (CLUTTER_ACTOR (stage));
|
2008-05-09 10:58:26 +00:00
|
|
|
|
|
|
|
return TRUE;
|
2008-04-25 13:37:36 +00:00
|
|
|
}
|
|
|
|
|
2006-05-29 08:59:36 +00:00
|
|
|
int
|
|
|
|
main (int argc, char *argv[])
|
|
|
|
{
|
2007-10-11 12:18:01 +00:00
|
|
|
ClutterActor *stage;
|
2006-06-06 20:40:40 +00:00
|
|
|
ClutterColor stage_color = { 0x00, 0x00, 0x00, 0xff };
|
2007-10-11 12:18:01 +00:00
|
|
|
ClutterColor label_color = { 0xff, 0xff, 0xff, 0xff };
|
2009-01-15 13:58:31 +00:00
|
|
|
ClutterActor *group;
|
|
|
|
|
|
|
|
setenv ("CLUTTER_VBLANK", "none", 0);
|
2006-05-29 08:59:36 +00:00
|
|
|
|
|
|
|
clutter_init (&argc, &argv);
|
|
|
|
|
2006-06-05 Emmanuele Bassi <ebassi@openedhand.com>
* clutter-color.h:
* clutter-color.c: Reimplement ClutterColor as a boxed type;
add convenience API for color handling, like: add, subtract,
shade, HSL color-space conversion, packing and unpacking.
* clutter-private.h: Update ClutterMainContext, and export the
main context pointer here.
* clutter-rectangle.h:
* clutter-rectangle.c: Update the color-related code; make
clutter_rectangle_new() and empty constructor and provide
clutter_rectangle_new_with_color(); provide color setter
and getter API.
* clutter-label.h:
* clutter-label.c: Rename the "font" property to "font-name";
update the color-related code to the new ClutterColor object;
rename clutter_label_new() to clutter_label_new_with_text(),
and add setters and getters for the properties.
* clutter-marshal.list: Add VOID:OBJECT and VOID:BOXED marshallers
generators.
* clutter-stage.h:
* clutter-stage.c: Rework the API: provide a default constructor
for a singleton object, named clutter_stage_get_default(), which
supercedes the clutter_stage() function in clutter-main; provide
new events: button-press-event, button-release-event,
key-press-event and key-release-event; update the color-related
code;
(clutter_stage_snapshot): Allow negative width and height when
taking a snapshot (meaning: use full width/height).
(clutter_stage_get_element_at_pos): Rename clutter_stage_pick().
* clutter-element.c (clutter_element_paint): Clean up the
stage and color related code.
* clutter-event.h:
* clutter-event.c: Add generic ClutterAnyEvent type; add
clutter_event_new(), clutter_event_copy() and clutter_event_free();
make ClutterEvent a boxed type.
* clutter-main.h:
* clutter-main.c: Remove clutter_stage(); add clutter_main_quit(),
for cleanly quitting from clutter_main(); add multiple mainloops
support; allocate the ClutterCntx instead of adding it to the
stack; re-work the ClutterEvent dispatching.
* clutter-group.c (clutter_group_add), (clutter_group_remove): Keep
a reference on the element when added to a ClutterGroup.
* examples/rects.py
* examples/test.c:
* examples/test-text.c:
* examples/video-cube.c:
* examples/super-oh.c:
* examples/test-video.c: Update.
2006-06-05 13:38:31 +00:00
|
|
|
stage = clutter_stage_get_default ();
|
2007-10-11 12:18:01 +00:00
|
|
|
clutter_actor_set_size (stage, STAGE_WIDTH, STAGE_HEIGHT);
|
2006-06-05 Emmanuele Bassi <ebassi@openedhand.com>
* clutter-color.h:
* clutter-color.c: Reimplement ClutterColor as a boxed type;
add convenience API for color handling, like: add, subtract,
shade, HSL color-space conversion, packing and unpacking.
* clutter-private.h: Update ClutterMainContext, and export the
main context pointer here.
* clutter-rectangle.h:
* clutter-rectangle.c: Update the color-related code; make
clutter_rectangle_new() and empty constructor and provide
clutter_rectangle_new_with_color(); provide color setter
and getter API.
* clutter-label.h:
* clutter-label.c: Rename the "font" property to "font-name";
update the color-related code to the new ClutterColor object;
rename clutter_label_new() to clutter_label_new_with_text(),
and add setters and getters for the properties.
* clutter-marshal.list: Add VOID:OBJECT and VOID:BOXED marshallers
generators.
* clutter-stage.h:
* clutter-stage.c: Rework the API: provide a default constructor
for a singleton object, named clutter_stage_get_default(), which
supercedes the clutter_stage() function in clutter-main; provide
new events: button-press-event, button-release-event,
key-press-event and key-release-event; update the color-related
code;
(clutter_stage_snapshot): Allow negative width and height when
taking a snapshot (meaning: use full width/height).
(clutter_stage_get_element_at_pos): Rename clutter_stage_pick().
* clutter-element.c (clutter_element_paint): Clean up the
stage and color related code.
* clutter-event.h:
* clutter-event.c: Add generic ClutterAnyEvent type; add
clutter_event_new(), clutter_event_copy() and clutter_event_free();
make ClutterEvent a boxed type.
* clutter-main.h:
* clutter-main.c: Remove clutter_stage(); add clutter_main_quit(),
for cleanly quitting from clutter_main(); add multiple mainloops
support; allocate the ClutterCntx instead of adding it to the
stack; re-work the ClutterEvent dispatching.
* clutter-group.c (clutter_group_add), (clutter_group_remove): Keep
a reference on the element when added to a ClutterGroup.
* examples/rects.py
* examples/test.c:
* examples/test-text.c:
* examples/video-cube.c:
* examples/super-oh.c:
* examples/test-video.c: Update.
2006-06-05 13:38:31 +00:00
|
|
|
clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);
|
2006-05-29 08:59:36 +00:00
|
|
|
|
2009-01-15 13:58:31 +00:00
|
|
|
group = clutter_group_new ();
|
|
|
|
clutter_actor_set_size (group, STAGE_WIDTH, STAGE_WIDTH);
|
|
|
|
clutter_container_add_actor (CLUTTER_CONTAINER (stage), group);
|
|
|
|
|
|
|
|
g_idle_add (queue_redraw, stage);
|
|
|
|
|
|
|
|
g_signal_connect (group, "paint", G_CALLBACK (on_paint), NULL);
|
|
|
|
|
2007-10-11 12:18:01 +00:00
|
|
|
{
|
2007-12-09 08:53:06 +00:00
|
|
|
gint row, col;
|
2007-10-11 12:18:01 +00:00
|
|
|
|
|
|
|
for (row=0; row<ROWS; row++)
|
|
|
|
for (col=0; col<COLS; col++)
|
|
|
|
{
|
2007-12-09 08:53:06 +00:00
|
|
|
ClutterActor *label;
|
2007-10-11 12:18:01 +00:00
|
|
|
gchar font_name[64];
|
|
|
|
gchar text[64];
|
2007-12-09 08:53:06 +00:00
|
|
|
gint font_size = row+10;
|
|
|
|
gdouble scale = 0.17 + (1.5 * col / COLS);
|
2007-10-11 12:18:01 +00:00
|
|
|
|
|
|
|
sprintf (font_name, "Sans %ipx", font_size);
|
|
|
|
sprintf (text, "OH");
|
|
|
|
|
|
|
|
if (row==0)
|
|
|
|
{
|
|
|
|
sprintf (font_name, "Sans 10px");
|
|
|
|
sprintf (text, "%1.2f", scale);
|
|
|
|
font_size = 10;
|
|
|
|
scale = 1.0;
|
|
|
|
}
|
|
|
|
if (col==0)
|
|
|
|
{
|
|
|
|
sprintf (font_name, "Sans 10px");
|
|
|
|
sprintf (text, "%ipx", font_size);
|
2007-12-09 08:53:06 +00:00
|
|
|
if (row == 0)
|
|
|
|
strcpy (text, "");
|
2007-10-11 12:18:01 +00:00
|
|
|
font_size = 10;
|
|
|
|
scale = 1.0;
|
|
|
|
}
|
|
|
|
|
2008-12-11 13:48:45 +00:00
|
|
|
label = clutter_text_new_with_text (font_name, text);
|
|
|
|
clutter_text_set_color (CLUTTER_TEXT (label), &label_color);
|
2007-10-11 12:18:01 +00:00
|
|
|
clutter_actor_set_position (label, (1.0*STAGE_WIDTH/COLS)*col,
|
|
|
|
(1.0*STAGE_HEIGHT/ROWS)*row);
|
|
|
|
/*clutter_actor_set_clip (label, 0,0, (1.0*STAGE_WIDTH/COLS),
|
|
|
|
(1.0*STAGE_HEIGHT/ROWS));*/
|
|
|
|
clutter_actor_set_scale (label, scale, scale);
|
2008-12-11 13:48:45 +00:00
|
|
|
clutter_text_set_line_wrap (CLUTTER_TEXT (label), FALSE);
|
2009-01-15 13:58:31 +00:00
|
|
|
clutter_container_add_actor (CLUTTER_CONTAINER (group), label);
|
2007-10-11 12:18:01 +00:00
|
|
|
}
|
|
|
|
}
|
2007-06-07 14:41:35 +00:00
|
|
|
clutter_actor_show_all (stage);
|
2006-06-06 20:40:40 +00:00
|
|
|
|
|
|
|
g_signal_connect (stage, "key-press-event",
|
2006-06-05 Emmanuele Bassi <ebassi@openedhand.com>
* clutter-color.h:
* clutter-color.c: Reimplement ClutterColor as a boxed type;
add convenience API for color handling, like: add, subtract,
shade, HSL color-space conversion, packing and unpacking.
* clutter-private.h: Update ClutterMainContext, and export the
main context pointer here.
* clutter-rectangle.h:
* clutter-rectangle.c: Update the color-related code; make
clutter_rectangle_new() and empty constructor and provide
clutter_rectangle_new_with_color(); provide color setter
and getter API.
* clutter-label.h:
* clutter-label.c: Rename the "font" property to "font-name";
update the color-related code to the new ClutterColor object;
rename clutter_label_new() to clutter_label_new_with_text(),
and add setters and getters for the properties.
* clutter-marshal.list: Add VOID:OBJECT and VOID:BOXED marshallers
generators.
* clutter-stage.h:
* clutter-stage.c: Rework the API: provide a default constructor
for a singleton object, named clutter_stage_get_default(), which
supercedes the clutter_stage() function in clutter-main; provide
new events: button-press-event, button-release-event,
key-press-event and key-release-event; update the color-related
code;
(clutter_stage_snapshot): Allow negative width and height when
taking a snapshot (meaning: use full width/height).
(clutter_stage_get_element_at_pos): Rename clutter_stage_pick().
* clutter-element.c (clutter_element_paint): Clean up the
stage and color related code.
* clutter-event.h:
* clutter-event.c: Add generic ClutterAnyEvent type; add
clutter_event_new(), clutter_event_copy() and clutter_event_free();
make ClutterEvent a boxed type.
* clutter-main.h:
* clutter-main.c: Remove clutter_stage(); add clutter_main_quit(),
for cleanly quitting from clutter_main(); add multiple mainloops
support; allocate the ClutterCntx instead of adding it to the
stack; re-work the ClutterEvent dispatching.
* clutter-group.c (clutter_group_add), (clutter_group_remove): Keep
a reference on the element when added to a ClutterGroup.
* examples/rects.py
* examples/test.c:
* examples/test-text.c:
* examples/video-cube.c:
* examples/super-oh.c:
* examples/test-video.c: Update.
2006-06-05 13:38:31 +00:00
|
|
|
G_CALLBACK (clutter_main_quit), NULL);
|
2006-06-06 20:40:40 +00:00
|
|
|
|
2006-05-29 08:59:36 +00:00
|
|
|
clutter_main();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|