summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2009-12-11 14:13:14 +0100
committerBenjamin Otte <otte@redhat.com>2010-04-07 10:38:42 +0200
commit6d3be893630d3fa15b05f8b29944c9216885a868 (patch)
treeba5093c923a731ac7f34624b95109715ec7adb4f
parentb75efe598f75069cea63d970973d25b2f09ea221 (diff)
Add accessors for data and stride of planar images
-rw-r--r--pixman/pixman-image.c22
-rw-r--r--pixman/pixman.h4
2 files changed, 22 insertions, 4 deletions
diff --git a/pixman/pixman-image.c b/pixman/pixman-image.c
index 9b44aa9..6b878c3 100644
--- a/pixman/pixman-image.c
+++ b/pixman/pixman-image.c
@@ -697,8 +697,15 @@ pixman_image_set_accessors (pixman_image_t * image,
PIXMAN_EXPORT uint32_t *
pixman_image_get_data (pixman_image_t *image)
{
- if (image->type == BITS)
- return image->bits.bits;
+ return pixman_image_get_data_for_plane (image, 0);
+}
+
+PIXMAN_EXPORT uint32_t *
+pixman_image_get_data_for_plane (pixman_image_t *image,
+ unsigned int plane)
+{
+ if (image->type == BITS && plane < PIXMAN_MAX_PLANES)
+ return image->bits.planes[plane].bits;
return NULL;
}
@@ -724,8 +731,15 @@ pixman_image_get_height (pixman_image_t *image)
PIXMAN_EXPORT int
pixman_image_get_stride (pixman_image_t *image)
{
- if (image->type == BITS)
- return image->bits.rowstride * (int) sizeof (uint32_t);
+ return pixman_image_get_stride_for_plane (image, 0);
+}
+
+PIXMAN_EXPORT int
+pixman_image_get_stride_for_plane (pixman_image_t *image,
+ unsigned int plane)
+{
+ if (image->type == BITS && plane < PIXMAN_MAX_PLANES)
+ return image->bits.planes[plane].rowstride * (int) sizeof (uint32_t);
return 0;
}
diff --git a/pixman/pixman.h b/pixman/pixman.h
index 4a740ec..89ce899 100644
--- a/pixman/pixman.h
+++ b/pixman/pixman.h
@@ -780,9 +780,13 @@ void pixman_image_set_accessors (pixman_image_t *image,
void pixman_image_set_indexed (pixman_image_t *image,
const pixman_indexed_t *indexed);
uint32_t *pixman_image_get_data (pixman_image_t *image);
+uint32_t *pixman_image_get_data_for_plane (pixman_image_t *image,
+ unsigned int plane);
int pixman_image_get_width (pixman_image_t *image);
int pixman_image_get_height (pixman_image_t *image);
int pixman_image_get_stride (pixman_image_t *image); /* in bytes */
+int pixman_image_get_stride_for_plane (pixman_image_t *image,
+ unsigned int plane);
int pixman_image_get_depth (pixman_image_t *image);
pixman_bool_t pixman_image_fill_rectangles (pixman_op_t op,
pixman_image_t *image,