diff options
author | Andrea Canciani <ranma42@gmail.com> | 2010-11-16 17:53:30 +0100 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2010-12-13 17:22:37 +0100 |
commit | 8bb4350d8ec5f12b0755b0c736c15391d5e53dca (patch) | |
tree | 1eebea4f75bf90bfd660af10a781ff711bac8fee | |
parent | cb2bac969f006b0ed3fedd22e475a97ba8559e91 (diff) |
add float scanline bits fetchers
-rw-r--r-- | pixman/pixman-access.c | 31 |
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; } |