mirror of
https://github.com/brl/mutter.git
synced 2024-11-13 01:36:10 -05:00
interactive/image-box: Add a pure Image test, suitable for docs
This commit is contained in:
parent
6c181b96e9
commit
1b4bfb04e5
@ -65,7 +65,9 @@ UNIT_TESTS += test-pixmap.c
|
||||
endif
|
||||
|
||||
if PIXBUF_TESTS
|
||||
UNIT_TESTS += test-image.c
|
||||
UNIT_TESTS += \
|
||||
test-image.c \
|
||||
test-image-box.c
|
||||
endif
|
||||
|
||||
if OS_WIN32
|
||||
|
100
tests/interactive/test-image-box.c
Normal file
100
tests/interactive/test-image-box.c
Normal file
@ -0,0 +1,100 @@
|
||||
#include <stdlib.h>
|
||||
#include <gmodule.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
#include <clutter/clutter.h>
|
||||
|
||||
static const struct {
|
||||
ClutterContentGravity gravity;
|
||||
const char *name;
|
||||
} gravities[] = {
|
||||
{ CLUTTER_CONTENT_GRAVITY_TOP_LEFT, "Top Left" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_TOP, "Top" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_TOP_RIGHT, "Top Right" },
|
||||
|
||||
{ CLUTTER_CONTENT_GRAVITY_LEFT, "Left" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_CENTER, "Center" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_RIGHT, "Right" },
|
||||
|
||||
{ CLUTTER_CONTENT_GRAVITY_BOTTOM_LEFT, "Bottom Left" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_BOTTOM, "Bottom" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_BOTTOM_RIGHT, "Bottom Right" },
|
||||
|
||||
{ CLUTTER_CONTENT_GRAVITY_RESIZE_FILL, "Resize Fill" },
|
||||
{ CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT, "Resize Aspect" },
|
||||
};
|
||||
|
||||
static int n_gravities = G_N_ELEMENTS (gravities);
|
||||
static int cur_gravity = 0;
|
||||
|
||||
static void
|
||||
on_clicked (ClutterClickAction *action,
|
||||
ClutterActor *actor)
|
||||
{
|
||||
clutter_actor_set_content_gravity (actor, gravities[cur_gravity].gravity);
|
||||
|
||||
cur_gravity += 1;
|
||||
|
||||
if (cur_gravity >= n_gravities)
|
||||
cur_gravity = 0;
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT const char *
|
||||
test_image_box_describe (void)
|
||||
{
|
||||
return "A test with image content.";
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT int
|
||||
test_image_box_main (int argc, char *argv[])
|
||||
{
|
||||
ClutterActor *stage, *box;
|
||||
ClutterContent *image;
|
||||
ClutterAction *action;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
stage = clutter_stage_new ();
|
||||
clutter_actor_set_name (stage, "Stage");
|
||||
clutter_stage_set_title (CLUTTER_STAGE (stage), "Content");
|
||||
clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE);
|
||||
g_signal_connect (stage, "destroy", G_CALLBACK (clutter_main_quit), NULL);
|
||||
clutter_actor_show (stage);
|
||||
|
||||
box = clutter_actor_new ();
|
||||
clutter_actor_set_name (box, "Grid");
|
||||
clutter_actor_set_margin_top (box, 12);
|
||||
clutter_actor_set_margin_right (box, 12);
|
||||
clutter_actor_set_margin_bottom (box, 12);
|
||||
clutter_actor_set_margin_left (box, 12);
|
||||
clutter_actor_set_layout_manager (box, clutter_flow_layout_new (CLUTTER_FLOW_HORIZONTAL));
|
||||
clutter_actor_add_constraint (box, clutter_bind_constraint_new (stage, CLUTTER_BIND_SIZE, 0.0));
|
||||
clutter_actor_add_child (stage, box);
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_file (TESTS_DATADIR G_DIR_SEPARATOR_S "redhand.png", NULL);
|
||||
image = clutter_image_new ();
|
||||
clutter_image_set_data (CLUTTER_IMAGE (image),
|
||||
gdk_pixbuf_get_pixels (pixbuf),
|
||||
gdk_pixbuf_get_has_alpha (pixbuf)
|
||||
? COGL_PIXEL_FORMAT_RGBA_8888
|
||||
: COGL_PIXEL_FORMAT_RGB_888,
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf),
|
||||
gdk_pixbuf_get_rowstride (pixbuf),
|
||||
NULL);
|
||||
g_object_unref (pixbuf);
|
||||
|
||||
clutter_actor_set_content_gravity (box, CLUTTER_CONTENT_GRAVITY_TOP_LEFT);
|
||||
clutter_actor_set_content (box, image);
|
||||
g_object_unref (image);
|
||||
|
||||
action = clutter_click_action_new ();
|
||||
g_signal_connect (action, "clicked", G_CALLBACK (on_clicked), NULL);
|
||||
clutter_actor_set_reactive (box, TRUE);
|
||||
clutter_actor_add_action (box, action);
|
||||
|
||||
clutter_main ();
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Loading…
Reference in New Issue
Block a user