summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2010-11-16 17:53:30 +0100
committerAndrea Canciani <ranma42@gmail.com>2010-12-13 17:22:37 +0100
commit8bb4350d8ec5f12b0755b0c736c15391d5e53dca (patch)
tree1eebea4f75bf90bfd660af10a781ff711bac8fee
parentcb2bac969f006b0ed3fedd22e475a97ba8559e91 (diff)
add float scanline bits fetchers
-rw-r--r--pixman/pixman-access.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/pixman/pixman-access.c b/pixman/pixman-access.c
index f513151..717ecba 100644
--- a/pixman/pixman-access.c
+++ b/pixman/pixman-access.c
@@ -820,6 +820,35 @@ static const format_info_t accessors[] =
{ PIXMAN_null },
};
+
+static void
+fetch_scanline_generic (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ pixman_component_t *buffer,
+ const pixman_component_t * mask)
+{
+ uint64_t *tmp = malloc (sizeof(uint64_t) * width);
+ image->bits.fetch_scanline_64 (image, x, y, width, (uint32_t *)tmp, NULL);
+ pixman_expand_64 (buffer, tmp, width);
+ free (tmp);
+}
+
+static void
+store_scanline_generic (bits_image_t * image,
+ int x,
+ int y,
+ int width,
+ const pixman_component_t *buffer)
+{
+ uint64_t *tmp = malloc (sizeof(uint64_t) * 4 * width);
+ pixman_contract_64 (tmp, buffer, width);
+ image->store_scanline_64 (image, x, y, width, (uint32_t *) tmp);
+ free (tmp);
+}
+
+
static void
setup_accessors (bits_image_t *image)
{
@@ -834,6 +863,8 @@ setup_accessors (bits_image_t *image)
image->store_scanline_32 = info->store_scanline_32;
image->store_scanline_64 = info->store_scanline_64;
+ image->fetch_scanline = fetch_scanline_generic;
+ image->store_scanline = store_scanline_generic;
return;
}