void
_pixman_bits_image_src_iter_init (pixman_image_t *image, pixman_iter_t *iter)
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
iter->get_scanline = src_get_scanline_narrow;
else
iter->get_scanline = src_get_scanline_wide;
void
_pixman_bits_image_dest_iter_init (pixman_image_t *image, pixman_iter_t *iter)
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
{
- if ((iter->flags & (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA)) ==
+ if ((iter->iter_flags & (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA)) ==
(ITER_IGNORE_RGB | ITER_IGNORE_ALPHA))
{
iter->get_scanline = _pixman_iter_get_scanline_noop;
void
_pixman_conical_gradient_iter_init (pixman_image_t *image, pixman_iter_t *iter)
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
iter->get_scanline = conical_get_scanline_narrow;
else
iter->get_scanline = conical_get_scanline_wide;
pixman_iter_t src_iter, mask_iter, dest_iter;
pixman_combine_32_func_t compose;
pixman_bool_t component_alpha;
- iter_flags_t narrow, src_flags;
+ iter_flags_t narrow, src_iter_flags;
int Bpp;
int i;
dest_buffer = mask_buffer + width * Bpp;
/* src iter */
- src_flags = narrow | op_flags[op].src;
+ src_iter_flags = narrow | op_flags[op].src;
_pixman_implementation_src_iter_init (imp->toplevel, &src_iter, src_image,
src_x, src_y, width, height,
- src_buffer, src_flags);
+ src_buffer, src_iter_flags, info->src_flags);
/* mask iter */
- if ((src_flags & (ITER_IGNORE_ALPHA | ITER_IGNORE_RGB)) ==
+ if ((src_iter_flags & (ITER_IGNORE_ALPHA | ITER_IGNORE_RGB)) ==
(ITER_IGNORE_ALPHA | ITER_IGNORE_RGB))
{
/* If it doesn't matter what the source is, then it doesn't matter
_pixman_implementation_src_iter_init (
imp->toplevel, &mask_iter, mask_image, mask_x, mask_y, width, height,
- mask_buffer, narrow | (component_alpha? 0 : ITER_IGNORE_RGB));
+ mask_buffer, narrow | (component_alpha? 0 : ITER_IGNORE_RGB), info->mask_flags);
/* dest iter */
_pixman_implementation_dest_iter_init (
imp->toplevel, &dest_iter, dest_image, dest_x, dest_y, width, height,
- dest_buffer, narrow | op_flags[op].dst);
+ dest_buffer, narrow | op_flags[op].dst, info->dest_flags);
compose = _pixman_implementation_lookup_combiner (
imp->toplevel, op, component_alpha, narrow);
_pixman_implementation_src_iter_init (
imp, &iter, image, 0, 0, 1, 1,
- (uint8_t *)&result, ITER_NARROW);
+ (uint8_t *)&result, ITER_NARROW, image->common.flags);
result = *iter.get_scanline (&iter, NULL);
int width,
int height,
uint8_t *buffer,
- iter_flags_t flags)
+ iter_flags_t iter_flags,
+ uint32_t image_flags)
{
iter->image = image;
iter->buffer = (uint32_t *)buffer;
iter->y = y;
iter->width = width;
iter->height = height;
- iter->flags = flags;
+ iter->iter_flags = iter_flags;
+ iter->image_flags = image_flags;
(*imp->src_iter_init) (imp, iter);
}
int width,
int height,
uint8_t *buffer,
- iter_flags_t flags)
+ iter_flags_t iter_flags,
+ uint32_t image_flags)
{
iter->image = image;
iter->buffer = (uint32_t *)buffer;
iter->y = y;
iter->width = width;
iter->height = height;
- iter->flags = flags;
+ iter->iter_flags = iter_flags;
+ iter->image_flags = image_flags;
(*imp->dest_iter_init) (imp, iter);
}
if (linear_gradient_is_horizontal (
iter->image, iter->x, iter->y, iter->width, iter->height))
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
linear_get_scanline_narrow (iter, NULL);
else
linear_get_scanline_wide (iter, NULL);
}
else
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
iter->get_scanline = linear_get_scanline_narrow;
else
iter->get_scanline = linear_get_scanline_wide;
#define FLAGS \
(FAST_PATH_STANDARD_FLAGS | FAST_PATH_ID_TRANSFORM | FAST_PATH_BITS_IMAGE)
- if ((iter->flags & ITER_NARROW) &&
- (image->common.flags & FLAGS) == FLAGS &&
+ if ((iter->iter_flags & ITER_NARROW) &&
+ (iter->image_flags & FLAGS) == FLAGS &&
x >= 0 && y >= 0 &&
x + width <= image->bits.width &&
y + height <= image->bits.height)
{
iter->get_scanline = get_scanline_null;
}
- else if ((iter->flags & (ITER_IGNORE_ALPHA | ITER_IGNORE_RGB)) ==
+ else if ((iter->iter_flags & (ITER_IGNORE_ALPHA | ITER_IGNORE_RGB)) ==
(ITER_IGNORE_ALPHA | ITER_IGNORE_RGB))
{
iter->get_scanline = _pixman_iter_get_scanline_noop;
}
else if (image->common.extended_format_code == PIXMAN_solid &&
- ((image->common.flags & (FAST_PATH_BITS_IMAGE | FAST_PATH_NO_ALPHA_MAP)) ==
+ ((iter->image_flags & (FAST_PATH_BITS_IMAGE | FAST_PATH_NO_ALPHA_MAP)) ==
(FAST_PATH_BITS_IMAGE | FAST_PATH_NO_ALPHA_MAP)))
{
bits_image_t *bits = &image->bits;
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
{
uint32_t color = bits->fetch_pixel_32 (bits, 0, 0);
uint32_t *buffer = iter->buffer;
iter->get_scanline = _pixman_iter_get_scanline_noop;
}
else if (image->common.extended_format_code == PIXMAN_a8r8g8b8 &&
- (iter->flags & ITER_NARROW) &&
- (image->common.flags & FLAGS) == FLAGS &&
+ (iter->iter_flags & ITER_NARROW) &&
+ (iter->image_flags & FLAGS) == FLAGS &&
iter->x >= 0 && iter->y >= 0 &&
iter->x + iter->width <= image->bits.width &&
iter->y + iter->height <= image->bits.height)
noop_dest_iter_init (pixman_implementation_t *imp, pixman_iter_t *iter)
{
pixman_image_t *image = iter->image;
- uint32_t image_flags = image->common.flags;
- uint32_t iter_flags = iter->flags;
+ uint32_t image_flags = iter->image_flags;
+ uint32_t iter_flags = iter->iter_flags;
if ((image_flags & FAST_PATH_STD_DEST_FLAGS) == FAST_PATH_STD_DEST_FLAGS &&
(iter_flags & ITER_NARROW) == ITER_NARROW &&
int x, y;
int width;
int height;
- iter_flags_t flags;
+ iter_flags_t iter_flags;
+ uint32_t image_flags;
/* These function pointers are initialized by the implementation */
pixman_iter_get_scanline_t get_scanline;
int width,
int height,
uint8_t *buffer,
- iter_flags_t flags);
+ iter_flags_t flags,
+ uint32_t image_flags);
void
_pixman_implementation_dest_iter_init (pixman_implementation_t *imp,
int width,
int height,
uint8_t *buffer,
- iter_flags_t flags);
+ iter_flags_t flags,
+ uint32_t image_flags);
/* Specific implementations */
pixman_implementation_t *
void
_pixman_radial_gradient_iter_init (pixman_image_t *image, pixman_iter_t *iter)
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
iter->get_scanline = radial_get_scanline_narrow;
else
iter->get_scanline = radial_get_scanline_wide;
void
_pixman_solid_fill_iter_init (pixman_image_t *image, pixman_iter_t *iter)
{
- if (iter->flags & ITER_NARROW)
+ if (iter->iter_flags & ITER_NARROW)
{
uint32_t *b = (uint32_t *)iter->buffer;
uint32_t *e = b + iter->width;
#define FLAGS \
(FAST_PATH_STANDARD_FLAGS | FAST_PATH_ID_TRANSFORM | FAST_PATH_BITS_IMAGE)
- if ((iter->flags & ITER_NARROW) &&
- (image->common.flags & FLAGS) == FLAGS &&
+ if ((iter->iter_flags & ITER_NARROW) &&
+ (iter->image_flags & FLAGS) == FLAGS &&
x >= 0 && y >= 0 &&
x + width <= image->bits.width &&
y + height <= image->bits.height)