app: explicitly pass around the offsets of the view renderer's temp_bufs
and don't use temp_buf->x and ->y.
This commit is contained in:
@ -76,6 +76,8 @@ static cairo_pattern_t *
|
|||||||
|
|
||||||
static void gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
static void gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
||||||
GimpTempBuf *temp_buf,
|
GimpTempBuf *temp_buf,
|
||||||
|
gint temp_buf_x,
|
||||||
|
gint temp_buf_y,
|
||||||
gint channel,
|
gint channel,
|
||||||
GimpViewBG inside_bg,
|
GimpViewBG inside_bg,
|
||||||
GimpViewBG outside_bg,
|
GimpViewBG outside_bg,
|
||||||
@ -794,16 +796,21 @@ void
|
|||||||
gimp_view_renderer_render_temp_buf_simple (GimpViewRenderer *renderer,
|
gimp_view_renderer_render_temp_buf_simple (GimpViewRenderer *renderer,
|
||||||
GimpTempBuf *temp_buf)
|
GimpTempBuf *temp_buf)
|
||||||
{
|
{
|
||||||
|
gint temp_buf_x = 0;
|
||||||
|
gint temp_buf_y = 0;
|
||||||
|
|
||||||
g_return_if_fail (GIMP_IS_VIEW_RENDERER (renderer));
|
g_return_if_fail (GIMP_IS_VIEW_RENDERER (renderer));
|
||||||
g_return_if_fail (temp_buf != NULL);
|
g_return_if_fail (temp_buf != NULL);
|
||||||
|
|
||||||
if (temp_buf->width < renderer->width)
|
if (temp_buf->width < renderer->width)
|
||||||
temp_buf->x = (renderer->width - temp_buf->width) / 2;
|
temp_buf_x = (renderer->width - temp_buf->width) / 2;
|
||||||
|
|
||||||
if (temp_buf->height < renderer->height)
|
if (temp_buf->height < renderer->height)
|
||||||
temp_buf->y = (renderer->height - temp_buf->height) / 2;
|
temp_buf_y = (renderer->height - temp_buf->height) / 2;
|
||||||
|
|
||||||
gimp_view_renderer_render_temp_buf (renderer, temp_buf, -1,
|
gimp_view_renderer_render_temp_buf (renderer, temp_buf,
|
||||||
|
temp_buf_x, temp_buf_y,
|
||||||
|
-1,
|
||||||
GIMP_VIEW_BG_CHECKS,
|
GIMP_VIEW_BG_CHECKS,
|
||||||
GIMP_VIEW_BG_WHITE);
|
GIMP_VIEW_BG_WHITE);
|
||||||
}
|
}
|
||||||
@ -811,6 +818,8 @@ gimp_view_renderer_render_temp_buf_simple (GimpViewRenderer *renderer,
|
|||||||
void
|
void
|
||||||
gimp_view_renderer_render_temp_buf (GimpViewRenderer *renderer,
|
gimp_view_renderer_render_temp_buf (GimpViewRenderer *renderer,
|
||||||
GimpTempBuf *temp_buf,
|
GimpTempBuf *temp_buf,
|
||||||
|
gint temp_buf_x,
|
||||||
|
gint temp_buf_y,
|
||||||
gint channel,
|
gint channel,
|
||||||
GimpViewBG inside_bg,
|
GimpViewBG inside_bg,
|
||||||
GimpViewBG outside_bg)
|
GimpViewBG outside_bg)
|
||||||
@ -828,6 +837,8 @@ gimp_view_renderer_render_temp_buf (GimpViewRenderer *renderer,
|
|||||||
|
|
||||||
gimp_view_render_temp_buf_to_surface (renderer,
|
gimp_view_render_temp_buf_to_surface (renderer,
|
||||||
temp_buf,
|
temp_buf,
|
||||||
|
temp_buf_x,
|
||||||
|
temp_buf_y,
|
||||||
channel,
|
channel,
|
||||||
inside_bg,
|
inside_bg,
|
||||||
outside_bg,
|
outside_bg,
|
||||||
@ -921,6 +932,8 @@ gimp_view_renderer_render_stock (GimpViewRenderer *renderer,
|
|||||||
static void
|
static void
|
||||||
gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
||||||
GimpTempBuf *temp_buf,
|
GimpTempBuf *temp_buf,
|
||||||
|
gint temp_buf_x,
|
||||||
|
gint temp_buf_y,
|
||||||
gint channel,
|
gint channel,
|
||||||
GimpViewBG inside_bg,
|
GimpViewBG inside_bg,
|
||||||
GimpViewBG outside_bg,
|
GimpViewBG outside_bg,
|
||||||
@ -974,7 +987,7 @@ gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
|||||||
|
|
||||||
if (! gimp_rectangle_intersect (0, 0,
|
if (! gimp_rectangle_intersect (0, 0,
|
||||||
surface_width, surface_height,
|
surface_width, surface_height,
|
||||||
temp_buf->x, temp_buf->y,
|
temp_buf_x, temp_buf_y,
|
||||||
temp_buf->width, temp_buf->height,
|
temp_buf->width, temp_buf->height,
|
||||||
&x, &y,
|
&x, &y,
|
||||||
&width, &height))
|
&width, &height))
|
||||||
@ -1015,8 +1028,8 @@ gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
|||||||
dest_buffer = gimp_cairo_image_surface_create_buffer (alpha_surface);
|
dest_buffer = gimp_cairo_image_surface_create_buffer (alpha_surface);
|
||||||
|
|
||||||
gegl_buffer_copy (src_buffer,
|
gegl_buffer_copy (src_buffer,
|
||||||
GEGL_RECTANGLE (x - temp_buf->x,
|
GEGL_RECTANGLE (x - temp_buf_x,
|
||||||
y - temp_buf->y,
|
y - temp_buf_y,
|
||||||
width, height),
|
width, height),
|
||||||
dest_buffer,
|
dest_buffer,
|
||||||
GEGL_RECTANGLE (0, 0, 0, 0));
|
GEGL_RECTANGLE (0, 0, 0, 0));
|
||||||
@ -1044,8 +1057,8 @@ gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
|||||||
dest_buffer = gimp_cairo_image_surface_create_buffer (surface);
|
dest_buffer = gimp_cairo_image_surface_create_buffer (surface);
|
||||||
|
|
||||||
gegl_buffer_copy (src_buffer,
|
gegl_buffer_copy (src_buffer,
|
||||||
GEGL_RECTANGLE (x - temp_buf->x,
|
GEGL_RECTANGLE (x - temp_buf_x,
|
||||||
y - temp_buf->y,
|
y - temp_buf_y,
|
||||||
width, height),
|
width, height),
|
||||||
dest_buffer,
|
dest_buffer,
|
||||||
GEGL_RECTANGLE (x, y, 0, 0));
|
GEGL_RECTANGLE (x, y, 0, 0));
|
||||||
@ -1070,8 +1083,8 @@ gimp_view_render_temp_buf_to_surface (GimpViewRenderer *renderer,
|
|||||||
bytes = babl_format_get_bytes_per_pixel (temp_buf->format);
|
bytes = babl_format_get_bytes_per_pixel (temp_buf->format);
|
||||||
rowstride = temp_buf->width * bytes;
|
rowstride = temp_buf->width * bytes;
|
||||||
|
|
||||||
src = gimp_temp_buf_get_data (temp_buf) + ((y - temp_buf->y) * rowstride +
|
src = gimp_temp_buf_get_data (temp_buf) + ((y - temp_buf_y) * rowstride +
|
||||||
(x - temp_buf->x) * bytes);
|
(x - temp_buf_x) * bytes);
|
||||||
|
|
||||||
dest = cairo_image_surface_get_data (surface);
|
dest = cairo_image_surface_get_data (surface);
|
||||||
dest_stride = cairo_image_surface_get_stride (surface);
|
dest_stride = cairo_image_surface_get_stride (surface);
|
||||||
|
@ -144,6 +144,8 @@ void gimp_view_renderer_render_temp_buf_simple (GimpViewRenderer *renderer,
|
|||||||
GimpTempBuf *temp_buf);
|
GimpTempBuf *temp_buf);
|
||||||
void gimp_view_renderer_render_temp_buf (GimpViewRenderer *renderer,
|
void gimp_view_renderer_render_temp_buf (GimpViewRenderer *renderer,
|
||||||
GimpTempBuf *temp_buf,
|
GimpTempBuf *temp_buf,
|
||||||
|
gint temp_buf_x,
|
||||||
|
gint temp_buf_y,
|
||||||
gint channel,
|
gint channel,
|
||||||
GimpViewBG inside_bg,
|
GimpViewBG inside_bg,
|
||||||
GimpViewBG outside_bg);
|
GimpViewBG outside_bg);
|
||||||
|
@ -89,6 +89,8 @@ gimp_view_renderer_brush_render (GimpViewRenderer *renderer,
|
|||||||
{
|
{
|
||||||
GimpViewRendererBrush *renderbrush = GIMP_VIEW_RENDERER_BRUSH (renderer);
|
GimpViewRendererBrush *renderbrush = GIMP_VIEW_RENDERER_BRUSH (renderer);
|
||||||
GimpTempBuf *temp_buf;
|
GimpTempBuf *temp_buf;
|
||||||
|
gint temp_buf_x = 0;
|
||||||
|
gint temp_buf_y = 0;
|
||||||
|
|
||||||
if (renderbrush->pipe_timeout_id)
|
if (renderbrush->pipe_timeout_id)
|
||||||
{
|
{
|
||||||
@ -102,14 +104,16 @@ gimp_view_renderer_brush_render (GimpViewRenderer *renderer,
|
|||||||
renderer->height);
|
renderer->height);
|
||||||
|
|
||||||
if (temp_buf->width < renderer->width)
|
if (temp_buf->width < renderer->width)
|
||||||
temp_buf->x = (renderer->width - temp_buf->width) / 2;
|
temp_buf_x = (renderer->width - temp_buf->width) / 2;
|
||||||
|
|
||||||
if (temp_buf->height < renderer->height)
|
if (temp_buf->height < renderer->height)
|
||||||
temp_buf->y = (renderer->height - temp_buf->height) / 2;
|
temp_buf_y = (renderer->height - temp_buf->height) / 2;
|
||||||
|
|
||||||
if (renderer->is_popup)
|
if (renderer->is_popup)
|
||||||
{
|
{
|
||||||
gimp_view_renderer_render_temp_buf (renderer, temp_buf, -1,
|
gimp_view_renderer_render_temp_buf (renderer, temp_buf,
|
||||||
|
temp_buf_x, temp_buf_y,
|
||||||
|
-1,
|
||||||
GIMP_VIEW_BG_WHITE,
|
GIMP_VIEW_BG_WHITE,
|
||||||
GIMP_VIEW_BG_WHITE);
|
GIMP_VIEW_BG_WHITE);
|
||||||
|
|
||||||
@ -126,7 +130,9 @@ gimp_view_renderer_brush_render (GimpViewRenderer *renderer,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
gimp_view_renderer_render_temp_buf (renderer, temp_buf, -1,
|
gimp_view_renderer_render_temp_buf (renderer, temp_buf,
|
||||||
|
temp_buf_x, temp_buf_y,
|
||||||
|
-1,
|
||||||
GIMP_VIEW_BG_WHITE,
|
GIMP_VIEW_BG_WHITE,
|
||||||
GIMP_VIEW_BG_WHITE);
|
GIMP_VIEW_BG_WHITE);
|
||||||
|
|
||||||
@ -141,6 +147,8 @@ gimp_view_renderer_brush_render_timeout (gpointer data)
|
|||||||
GimpBrushPipe *brush_pipe;
|
GimpBrushPipe *brush_pipe;
|
||||||
GimpBrush *brush;
|
GimpBrush *brush;
|
||||||
GimpTempBuf *temp_buf;
|
GimpTempBuf *temp_buf;
|
||||||
|
gint temp_buf_x = 0;
|
||||||
|
gint temp_buf_y = 0;
|
||||||
|
|
||||||
if (! renderer->viewable)
|
if (! renderer->viewable)
|
||||||
{
|
{
|
||||||
@ -166,12 +174,14 @@ gimp_view_renderer_brush_render_timeout (gpointer data)
|
|||||||
renderer->height);
|
renderer->height);
|
||||||
|
|
||||||
if (temp_buf->width < renderer->width)
|
if (temp_buf->width < renderer->width)
|
||||||
temp_buf->x = (renderer->width - temp_buf->width) / 2;
|
temp_buf_x = (renderer->width - temp_buf->width) / 2;
|
||||||
|
|
||||||
if (temp_buf->height < renderer->height)
|
if (temp_buf->height < renderer->height)
|
||||||
temp_buf->y = (renderer->height - temp_buf->height) / 2;
|
temp_buf_y = (renderer->height - temp_buf->height) / 2;
|
||||||
|
|
||||||
gimp_view_renderer_render_temp_buf (renderer, temp_buf, -1,
|
gimp_view_renderer_render_temp_buf (renderer, temp_buf,
|
||||||
|
temp_buf_x, temp_buf_y,
|
||||||
|
-1,
|
||||||
GIMP_VIEW_BG_WHITE,
|
GIMP_VIEW_BG_WHITE,
|
||||||
GIMP_VIEW_BG_WHITE);
|
GIMP_VIEW_BG_WHITE);
|
||||||
|
|
||||||
|
@ -199,36 +199,41 @@ gimp_view_renderer_drawable_render (GimpViewRenderer *renderer,
|
|||||||
|
|
||||||
if (render_buf)
|
if (render_buf)
|
||||||
{
|
{
|
||||||
|
gint render_buf_x = 0;
|
||||||
|
gint render_buf_y = 0;
|
||||||
|
|
||||||
if (image && ! renderer->is_popup)
|
if (image && ! renderer->is_popup)
|
||||||
{
|
{
|
||||||
if (offset_x != 0)
|
if (offset_x != 0)
|
||||||
render_buf->x =
|
render_buf_x =
|
||||||
ROUND ((((gdouble) renderer->width /
|
ROUND ((((gdouble) renderer->width /
|
||||||
(gdouble) gimp_image_get_width (image)) *
|
(gdouble) gimp_image_get_width (image)) *
|
||||||
(gdouble) offset_x));
|
(gdouble) offset_x));
|
||||||
|
|
||||||
if (offset_y != 0)
|
if (offset_y != 0)
|
||||||
render_buf->y =
|
render_buf_y =
|
||||||
ROUND ((((gdouble) renderer->height /
|
ROUND ((((gdouble) renderer->height /
|
||||||
(gdouble) gimp_image_get_height (image)) *
|
(gdouble) gimp_image_get_height (image)) *
|
||||||
(gdouble) offset_y));
|
(gdouble) offset_y));
|
||||||
|
|
||||||
if (scaling_up)
|
if (scaling_up)
|
||||||
{
|
{
|
||||||
if (render_buf->x < 0) render_buf->x = 0;
|
if (render_buf_x < 0) render_buf_x = 0;
|
||||||
if (render_buf->y < 0) render_buf->y = 0;
|
if (render_buf_y < 0) render_buf_y = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (view_width < width)
|
if (view_width < width)
|
||||||
render_buf->x = (width - view_width) / 2;
|
render_buf_x = (width - view_width) / 2;
|
||||||
|
|
||||||
if (view_height < height)
|
if (view_height < height)
|
||||||
render_buf->y = (height - view_height) / 2;
|
render_buf_y = (height - view_height) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
gimp_view_renderer_render_temp_buf (renderer, render_buf, -1,
|
gimp_view_renderer_render_temp_buf (renderer, render_buf,
|
||||||
|
render_buf_x, render_buf_y,
|
||||||
|
-1,
|
||||||
GIMP_VIEW_BG_CHECKS,
|
GIMP_VIEW_BG_CHECKS,
|
||||||
GIMP_VIEW_BG_CHECKS);
|
GIMP_VIEW_BG_CHECKS);
|
||||||
gimp_temp_buf_unref (render_buf);
|
gimp_temp_buf_unref (render_buf);
|
||||||
|
@ -120,6 +120,8 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
|
|||||||
|
|
||||||
if (render_buf)
|
if (render_buf)
|
||||||
{
|
{
|
||||||
|
gint render_buf_x = 0;
|
||||||
|
gint render_buf_y = 0;
|
||||||
gint component_index = -1;
|
gint component_index = -1;
|
||||||
|
|
||||||
/* xresolution != yresolution */
|
/* xresolution != yresolution */
|
||||||
@ -134,16 +136,17 @@ gimp_view_renderer_image_render (GimpViewRenderer *renderer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (view_width < renderer->width)
|
if (view_width < renderer->width)
|
||||||
render_buf->x = (renderer->width - view_width) / 2;
|
render_buf_x = (renderer->width - view_width) / 2;
|
||||||
|
|
||||||
if (view_height < renderer->height)
|
if (view_height < renderer->height)
|
||||||
render_buf->y = (renderer->height - view_height) / 2;
|
render_buf_y = (renderer->height - view_height) / 2;
|
||||||
|
|
||||||
if (rendererimage->channel != -1)
|
if (rendererimage->channel != -1)
|
||||||
component_index =
|
component_index =
|
||||||
gimp_image_get_component_index (image, rendererimage->channel);
|
gimp_image_get_component_index (image, rendererimage->channel);
|
||||||
|
|
||||||
gimp_view_renderer_render_temp_buf (renderer, render_buf,
|
gimp_view_renderer_render_temp_buf (renderer, render_buf,
|
||||||
|
render_buf_x, render_buf_y,
|
||||||
component_index,
|
component_index,
|
||||||
GIMP_VIEW_BG_CHECKS,
|
GIMP_VIEW_BG_CHECKS,
|
||||||
GIMP_VIEW_BG_WHITE);
|
GIMP_VIEW_BG_WHITE);
|
||||||
|
Reference in New Issue
Block a user