![]() |
![]() |
![]() |
Clutter Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces |
struct ClutterImage; struct ClutterImageClass; #define CLUTTER_IMAGE_ERROR enum ClutterImageError; ClutterContent * clutter_image_new (void
); gboolean clutter_image_set_data (ClutterImage *image
,const guint8 *data
,CoglPixelFormat pixel_format
,guint width
,guint height
,guint row_stride
,GError **error
); gboolean clutter_image_set_bytes (ClutterImage *image
,GBytes *data
,CoglPixelFormat pixel_format
,guint width
,guint height
,guint row_stride
,GError **error
); gboolean clutter_image_set_area (ClutterImage *image
,const guint8 *data
,CoglPixelFormat pixel_format
,const cairo_rectangle_int_t *rect
,guint row_stride
,GError **error
); CoglTexture * clutter_image_get_texture (ClutterImage *image
);
ClutterImage is a ClutterContent implementation that displays image data.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
#include <stdlib.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, ClutterText *label) { gchar *str; clutter_actor_save_easing_state (actor); clutter_actor_set_content_gravity (actor, gravities[cur_gravity].gravity); clutter_actor_restore_easing_state (actor); str = g_strconcat ("Content gravity: ", gravities[cur_gravity].name, NULL); clutter_text_set_text (label, str); g_free (str); cur_gravity += 1; if (cur_gravity >= n_gravities) cur_gravity = 0; } int main (int argc, char *argv[]) { ClutterActor *stage, *box, *text; ClutterContent *image; ClutterAction *action; GdkPixbuf *pixbuf; gchar *str; 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 Box"); 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, "Image"); 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_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_scaling_filters (box, CLUTTER_SCALING_FILTER_TRILINEAR, CLUTTER_SCALING_FILTER_LINEAR); clutter_actor_set_content_gravity (box, gravities[n_gravities - 1].gravity); clutter_actor_set_content (box, image); g_object_unref (image); str = g_strconcat ("Content gravity: ", gravities[n_gravities - 1].name, NULL); text = clutter_text_new (); clutter_text_set_text (CLUTTER_TEXT (text), str); clutter_actor_add_constraint (text, clutter_align_constraint_new (stage, CLUTTER_ALIGN_BOTH, 0.5)); clutter_actor_add_child (stage, text); g_free (str); action = clutter_click_action_new (); g_signal_connect (action, "clicked", G_CALLBACK (on_clicked), text); clutter_actor_set_reactive (box, TRUE); clutter_actor_add_action (box, action); clutter_main (); return EXIT_SUCCESS; } |
ClutterImage is available since Clutter 1.10.
struct ClutterImage;
The ClutterImage structure contains private data and should only be accessed using the provided API.
Since 1.10
struct ClutterImageClass { };
The ClutterImageClass structure contains private data.
Since 1.10
#define CLUTTER_IMAGE_ERROR (clutter_image_error_quark ())
Error domain for the ClutterImageError enumeration.
Since 1.10
typedef enum { CLUTTER_IMAGE_ERROR_INVALID_DATA } ClutterImageError;
Error enumeration for ClutterImage.
Invalid data passed to the
clutter_image_set_data() function.
|
Since 1.10
ClutterContent * clutter_image_new (void
);
Creates a new ClutterImage instance.
Returns : |
the newly created ClutterImage instance.
Use g_object_unref() when done. [transfer full]
|
Since 1.10
gboolean clutter_image_set_data (ClutterImage *image
,const guint8 *data
,CoglPixelFormat pixel_format
,guint width
,guint height
,guint row_stride
,GError **error
);
Sets the image data to be displayed by image
.
If the image data was successfully loaded, the image
will be invalidated.
In case of error, the error
value will be set, and this function will
return FALSE
.
The image data is copied in texture memory.
|
a ClutterImage |
|
the image data, as an array of bytes. [array] |
|
the Cogl pixel format of the image data |
|
the width of the image data |
|
the height of the image data |
|
the length of each row inside data
|
|
return location for a GError, or NULL
|
Returns : |
TRUE if the image data was successfully loaded,
and FALSE otherwise. |
Since 1.10
gboolean clutter_image_set_bytes (ClutterImage *image
,GBytes *data
,CoglPixelFormat pixel_format
,guint width
,guint height
,guint row_stride
,GError **error
);
Sets the image data stored inside a GBytes to be displayed by image
.
If the image data was successfully loaded, the image
will be invalidated.
In case of error, the error
value will be set, and this function will
return FALSE
.
The image data contained inside the GBytes is copied in texture memory,
and no additional reference is acquired on the data
.
|
a ClutterImage |
|
the image data, as a GBytes |
|
the Cogl pixel format of the image data |
|
the width of the image data |
|
the height of the image data |
|
the length of each row inside data
|
|
return location for a GError, or NULL
|
Returns : |
TRUE if the image data was successfully loaded,
and FALSE otherwise. |
Since 1.12
gboolean clutter_image_set_area (ClutterImage *image
,const guint8 *data
,CoglPixelFormat pixel_format
,const cairo_rectangle_int_t *rect
,guint row_stride
,GError **error
);
Sets the image data to be display by image
, using rect
to indicate
the position and size of the image data to be set.
If the image
does not have any image data set when this function is
called, a new texture will be created with the size of the width and
height of the rectangle, i.e. calling this function on a newly created
ClutterImage will be the equivalent of calling clutter_image_set_data()
.
If the image data was successfully loaded, the image
will be invalidated.
In case of error, the error
value will be set, and this function will
return FALSE
.
The image data is copied in texture memory.
|
a ClutterImage |
|
the image data, as an array of bytes. [array] |
|
the Cogl pixel format of the image data |
|
a rectangle indicating the area that should be set |
|
the length of each row inside data
|
|
return location for a GError, or NULL
|
Returns : |
TRUE if the image data was successfully loaded,
and FALSE otherwise. |
Since 1.10
CoglTexture * clutter_image_get_texture (ClutterImage *image
);
Retrieves a pointer to the Cogl texture used by image
.
If you change the contents of the returned Cogl texture you will need
to manually invalidate the image
with clutter_content_invalidate()
in order to update the actors using image
as their content.
|
a ClutterImage |
Returns : |
a pointer to the Cogl texture, or NULL . [transfer none]
|
Since 1.10
Stability Level: Unstable