app: migrate paintcore loops to new iterator api
(cherry picked from commit fb5d7832a8
)
This commit is contained in:
@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#define GEGL_ITERATOR2_API
|
||||
#include <gegl.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
@ -639,7 +639,7 @@ struct CombinePaintMaskToCanvasMaskToPaintBufAlpha :
|
||||
base_type::init_step (params, state, iter, roi, area);
|
||||
|
||||
state->canvas_pixel =
|
||||
(gfloat *) iter->data[base_type::canvas_buffer_iterator];
|
||||
(gfloat *) iter->items[base_type::canvas_buffer_iterator].data;
|
||||
}
|
||||
|
||||
template <class Derived>
|
||||
@ -654,14 +654,14 @@ struct CombinePaintMaskToCanvasMaskToPaintBufAlpha :
|
||||
base_type::process_row (params, state, iter, roi, area, y);
|
||||
|
||||
gint mask_offset = (y - roi->y) * this->mask_stride +
|
||||
(iter->roi[0].x - roi->x);
|
||||
(iter->items[0].roi.x - roi->x);
|
||||
const mask_type *mask_pixel = &this->mask_data[mask_offset];
|
||||
gint paint_offset = (y - roi->y) * this->paint_stride +
|
||||
(iter->roi[0].x - roi->x) * 4;
|
||||
(iter->items[0].roi.x - roi->x) * 4;
|
||||
gfloat *paint_pixel = &this->paint_data[paint_offset];
|
||||
gint x;
|
||||
|
||||
for (x = 0; x < iter->roi[0].width; x++)
|
||||
for (x = 0; x < iter->items[0].roi.width; x++)
|
||||
{
|
||||
if (base_type::stipple)
|
||||
{
|
||||
@ -736,7 +736,7 @@ struct CombinePaintMaskToCanvasMask :
|
||||
base_type::init_step (params, state, iter, roi, area);
|
||||
|
||||
state->canvas_pixel =
|
||||
(gfloat *) iter->data[base_type::canvas_buffer_iterator];
|
||||
(gfloat *) iter->items[base_type::canvas_buffer_iterator].data;
|
||||
}
|
||||
|
||||
template <class Derived>
|
||||
@ -751,11 +751,11 @@ struct CombinePaintMaskToCanvasMask :
|
||||
base_type::process_row (params, state, iter, roi, area, y);
|
||||
|
||||
gint mask_offset = (y - roi->y) * this->mask_stride +
|
||||
(iter->roi[0].x - roi->x);
|
||||
(iter->items[0].roi.x - roi->x);
|
||||
const mask_type *mask_pixel = &this->mask_data[mask_offset];
|
||||
gint x;
|
||||
|
||||
for (x = 0; x < iter->roi[0].width; x++)
|
||||
for (x = 0; x < iter->items[0].roi.width; x++)
|
||||
{
|
||||
if (base_type::stipple)
|
||||
{
|
||||
@ -824,7 +824,7 @@ struct CanvasBufferToPaintBufAlpha : CanvasBufferIterator<Base,
|
||||
base_type::init_step (params, state, iter, roi, area);
|
||||
|
||||
state->canvas_pixel =
|
||||
(const gfloat *) iter->data[base_type::canvas_buffer_iterator];
|
||||
(const gfloat *) iter->items[base_type::canvas_buffer_iterator].data;
|
||||
}
|
||||
|
||||
template <class Derived>
|
||||
@ -840,12 +840,12 @@ struct CanvasBufferToPaintBufAlpha : CanvasBufferIterator<Base,
|
||||
|
||||
/* Copy the canvas buffer in rect to the paint buffer's alpha channel */
|
||||
|
||||
gint paint_offset = (y - roi->y) * this->paint_stride +
|
||||
(iter->roi[0].x - roi->x) * 4;
|
||||
gint paint_offset = (y - roi->y) * this->paint_stride +
|
||||
(iter->items[0].roi.x - roi->x) * 4;
|
||||
gfloat *paint_pixel = &this->paint_data[paint_offset];
|
||||
gint x;
|
||||
|
||||
for (x = 0; x < iter->roi[0].width; x++)
|
||||
for (x = 0; x < iter->items[0].roi.width; x++)
|
||||
{
|
||||
paint_pixel[3] *= *state->canvas_pixel;
|
||||
|
||||
@ -904,15 +904,15 @@ struct PaintMaskToPaintBuffer : Base
|
||||
{
|
||||
Base::process_row (params, state, iter, roi, area, y);
|
||||
|
||||
gint paint_offset = (y - roi->y) * this->paint_stride +
|
||||
(iter->roi[0].x - roi->x) * 4;
|
||||
gint paint_offset = (y - roi->y) * this->paint_stride +
|
||||
(iter->items[0].roi.x - roi->x) * 4;
|
||||
gfloat *paint_pixel = &this->paint_data[paint_offset];
|
||||
gint mask_offset = (y - roi->y) * this->mask_stride +
|
||||
(iter->roi[0].x - roi->x);
|
||||
gint mask_offset = (y - roi->y) * this->mask_stride +
|
||||
(iter->items[0].roi.x - roi->x);
|
||||
const mask_type *mask_pixel = &this->mask_data[mask_offset];
|
||||
gint x;
|
||||
|
||||
for (x = 0; x < iter->roi[0].width; x++)
|
||||
for (x = 0; x < iter->items[0].roi.width; x++)
|
||||
{
|
||||
paint_pixel[3] *= value_to_float (*mask_pixel) * params->paint_opacity;
|
||||
|
||||
@ -1022,19 +1022,19 @@ struct DoLayerBlend : Base
|
||||
{
|
||||
Base::init_step (params, state, iter, roi, area);
|
||||
|
||||
state->out_pixel = (gfloat *) iter->data[iterator_base + 0];
|
||||
state->in_pixel = (gfloat *) iter->data[iterator_base + 1];
|
||||
state->out_pixel = (gfloat *) iter->items[iterator_base + 0].data;
|
||||
state->in_pixel = (gfloat *) iter->items[iterator_base + 1].data;
|
||||
state->mask_pixel = NULL;
|
||||
|
||||
state->paint_pixel = this->paint_data +
|
||||
(iter->roi[0].y - roi->y) * this->paint_stride +
|
||||
(iter->roi[0].x - roi->x) * 4;
|
||||
(iter->items[0].roi.y - roi->y) * this->paint_stride +
|
||||
(iter->items[0].roi.x - roi->x) * 4;
|
||||
|
||||
if (params->mask_buffer)
|
||||
state->mask_pixel = (gfloat *) iter->data[iterator_base + 2];
|
||||
state->mask_pixel = (gfloat *) iter->items[iterator_base + 2].data;
|
||||
|
||||
state->process_roi.x = iter->roi[0].x;
|
||||
state->process_roi.width = iter->roi[0].width;
|
||||
state->process_roi.x = iter->items[0].roi.x;
|
||||
state->process_roi.width = iter->items[0].roi.width;
|
||||
state->process_roi.height = 1;
|
||||
}
|
||||
|
||||
@ -1056,14 +1056,14 @@ struct DoLayerBlend : Base
|
||||
state->paint_pixel,
|
||||
state->mask_pixel,
|
||||
state->out_pixel,
|
||||
iter->roi[0].width,
|
||||
iter->items[0].roi.width,
|
||||
&state->process_roi,
|
||||
0);
|
||||
|
||||
state->in_pixel += iter->roi[0].width * 4;
|
||||
state->out_pixel += iter->roi[0].width * 4;
|
||||
state->in_pixel += iter->items[0].roi.width * 4;
|
||||
state->out_pixel += iter->items[0].roi.width * 4;
|
||||
if (params->mask_buffer)
|
||||
state->mask_pixel += iter->roi[0].width;
|
||||
state->mask_pixel += iter->items[0].roi.width;
|
||||
state->paint_pixel += this->paint_stride;
|
||||
}
|
||||
};
|
||||
@ -1128,7 +1128,7 @@ gimp_paint_core_loops_process (const GimpPaintCoreLoopsParams *params,
|
||||
{
|
||||
GeglBufferIterator *iter;
|
||||
|
||||
iter = gegl_buffer_iterator_empty_new ();
|
||||
iter = gegl_buffer_iterator_empty_new (4);
|
||||
|
||||
algorithm.init (params, &state, iter, &roi, area);
|
||||
|
||||
@ -1136,28 +1136,28 @@ gimp_paint_core_loops_process (const GimpPaintCoreLoopsParams *params,
|
||||
{
|
||||
algorithm.init_step (params, &state, iter, &roi, area);
|
||||
|
||||
for (y = 0; y < iter->roi[0].height; y++)
|
||||
for (y = 0; y < iter->items[0].roi.height; y++)
|
||||
{
|
||||
algorithm.process_row (params, &state,
|
||||
iter, &roi, area,
|
||||
iter->roi[0].y + y);
|
||||
iter->items[0].roi.y + y);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
GeglBufferIterator iter;
|
||||
GeglBufferIterator iter[2];
|
||||
|
||||
iter.roi[0] = *area;
|
||||
iter[0].items[0].roi = *area;
|
||||
|
||||
algorithm.init (params, &state, &iter, &roi, area);
|
||||
algorithm.init_step (params, &state, &iter, &roi, area);
|
||||
algorithm.init (params, &state, &iter[0], &roi, area);
|
||||
algorithm.init_step (params, &state, &iter[0], &roi, area);
|
||||
|
||||
for (y = 0; y < iter.roi[0].height; y++)
|
||||
for (y = 0; y < iter[0].items[0].roi.height; y++)
|
||||
{
|
||||
algorithm.process_row (params, &state,
|
||||
&iter, &roi, area,
|
||||
iter.roi[0].y + y);
|
||||
&iter[0], &roi, area,
|
||||
iter[0].items[0].roi.y + y);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -1343,7 +1343,7 @@ mask_components_onto (GeglBuffer *src_buffer,
|
||||
|
||||
iter = gegl_buffer_iterator_new (dst_buffer, area, 0,
|
||||
iterator_format,
|
||||
GEGL_ACCESS_WRITE, GEGL_ABYSS_NONE);
|
||||
GEGL_ACCESS_WRITE, GEGL_ABYSS_NONE, 3);
|
||||
|
||||
gegl_buffer_iterator_add (iter, src_buffer, area, 0,
|
||||
iterator_format,
|
||||
@ -1355,9 +1355,9 @@ mask_components_onto (GeglBuffer *src_buffer,
|
||||
|
||||
while (gegl_buffer_iterator_next (iter))
|
||||
{
|
||||
gfloat *dest = (gfloat *)iter->data[0];
|
||||
gfloat *src = (gfloat *)iter->data[1];
|
||||
gfloat *aux = (gfloat *)iter->data[2];
|
||||
gfloat *dest = (gfloat *)iter->items[0].data;
|
||||
gfloat *src = (gfloat *)iter->items[1].data;
|
||||
gfloat *aux = (gfloat *)iter->items[2].data;
|
||||
glong samples = iter->length;
|
||||
|
||||
while (samples--)
|
||||
|
Reference in New Issue
Block a user