added "gint bytes" to the GimpPreviewRenderer struct and pass it to
2003-03-01 Michael Natterer <mitch@gimp.org> * app/widgets/gimppreviewrenderer.[ch]: added "gint bytes" to the GimpPreviewRenderer struct and pass it to gimp_preview_render_to_buffer(). * app/widgets/gimppreviewrendererbrush.[ch]: render the indicators to the renderer's buffer, not to the TempBuf so they always appear in the corner again. Misc cleanups: * app/core/gimpbuffer.c (gimp_buffer_get_new_preview) * app/core/gimppattern.c (gimp_pattern_get_new_preview): no need to center the TempBuf if smaller than requested because GimpPreviewRenderer::render()'s default implementation adjusts the offsets itself. * app/widgets/gimppreview.c (gimp_preview_set_viewable): no need to update ourselves after we changed the renderer because the renderer's signal will update us. * app/widgets/gimppreviewrenderer.c (gimp_preview_renderer_draw): replaced my stupid buf_rect calculation overkill by something simple that does the same.
This commit is contained in:
parent
48bf4fb7b2
commit
251f6b0483
12 changed files with 122 additions and 124 deletions
26
ChangeLog
26
ChangeLog
|
|
@ -1,3 +1,29 @@
|
|||
2003-03-01 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/widgets/gimppreviewrenderer.[ch]: added "gint bytes" to the
|
||||
GimpPreviewRenderer struct and pass it to
|
||||
gimp_preview_render_to_buffer().
|
||||
|
||||
* app/widgets/gimppreviewrendererbrush.[ch]: render the indicators
|
||||
to the renderer's buffer, not to the TempBuf so they always appear
|
||||
in the corner again.
|
||||
|
||||
Misc cleanups:
|
||||
|
||||
* app/core/gimpbuffer.c (gimp_buffer_get_new_preview)
|
||||
* app/core/gimppattern.c (gimp_pattern_get_new_preview): no need
|
||||
to center the TempBuf if smaller than requested because
|
||||
GimpPreviewRenderer::render()'s default implementation adjusts the
|
||||
offsets itself.
|
||||
|
||||
* app/widgets/gimppreview.c (gimp_preview_set_viewable): no need
|
||||
to update ourselves after we changed the renderer because the
|
||||
renderer's signal will update us.
|
||||
|
||||
* app/widgets/gimppreviewrenderer.c (gimp_preview_renderer_draw):
|
||||
replaced my stupid buf_rect calculation overkill by something
|
||||
simple that does the same.
|
||||
|
||||
2003-03-01 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/core/gimpbuffer.c: don't scale the preview up if the
|
||||
|
|
|
|||
|
|
@ -269,12 +269,6 @@ gimp_buffer_get_new_preview (GimpViewable *viewable,
|
|||
copy_region (&srcPR, &destPR);
|
||||
}
|
||||
|
||||
if (buffer_width < width)
|
||||
temp_buf->x = (width - buffer_width) / 2;
|
||||
|
||||
if (buffer_height < height)
|
||||
temp_buf->y = (height - buffer_height) / 2;
|
||||
|
||||
return temp_buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -213,12 +213,6 @@ gimp_pattern_get_new_preview (GimpViewable *viewable,
|
|||
temp_buf_copy_area (pattern->mask, temp_buf,
|
||||
0, 0, copy_width, copy_height, 0, 0);
|
||||
|
||||
if (width > copy_width)
|
||||
temp_buf->x = (width - copy_width) / 2;
|
||||
|
||||
if (height > copy_height)
|
||||
temp_buf->y = (height - copy_height) / 2;
|
||||
|
||||
return temp_buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -213,12 +213,6 @@ gimp_pattern_get_new_preview (GimpViewable *viewable,
|
|||
temp_buf_copy_area (pattern->mask, temp_buf,
|
||||
0, 0, copy_width, copy_height, 0, 0);
|
||||
|
||||
if (width > copy_width)
|
||||
temp_buf->x = (width - copy_width) / 2;
|
||||
|
||||
if (height > copy_height)
|
||||
temp_buf->y = (height - copy_height) / 2;
|
||||
|
||||
return temp_buf;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -590,8 +590,6 @@ gimp_preview_set_viewable (GimpPreview *preview,
|
|||
{
|
||||
g_object_add_weak_pointer (G_OBJECT (preview->viewable),
|
||||
(gpointer *) &preview->viewable);
|
||||
|
||||
gimp_preview_update (preview);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,9 +48,6 @@
|
|||
#include "gimppreviewrenderer-utils.h"
|
||||
|
||||
|
||||
#define PREVIEW_BYTES 3
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
UPDATE,
|
||||
|
|
@ -143,6 +140,7 @@ gimp_preview_renderer_init (GimpPreviewRenderer *renderer)
|
|||
|
||||
renderer->buffer = NULL;
|
||||
renderer->rowstride = 0;
|
||||
renderer->bytes = 3;
|
||||
|
||||
renderer->no_preview_pixbuf = NULL;
|
||||
|
||||
|
|
@ -392,7 +390,7 @@ gimp_preview_renderer_set_size_full (GimpPreviewRenderer *renderer,
|
|||
renderer->height = height;
|
||||
renderer->border_width = border_width;
|
||||
|
||||
renderer->rowstride = (renderer->width * PREVIEW_BYTES + 3) & ~3;
|
||||
renderer->rowstride = (renderer->width * renderer->bytes + 3) & ~3;
|
||||
|
||||
if (renderer->buffer)
|
||||
{
|
||||
|
|
@ -543,17 +541,10 @@ gimp_preview_renderer_draw (GimpPreviewRenderer *renderer,
|
|||
}
|
||||
else if (renderer->buffer)
|
||||
{
|
||||
if (renderer->border_width > 0)
|
||||
{
|
||||
buf_rect.x = border_rect.x + renderer->border_width;
|
||||
buf_rect.y = border_rect.y + renderer->border_width;
|
||||
buf_rect.width = border_rect.width - 2 * renderer->border_width;
|
||||
buf_rect.height = border_rect.height - 2 * renderer->border_width;
|
||||
}
|
||||
else
|
||||
{
|
||||
buf_rect = border_rect;
|
||||
}
|
||||
buf_rect.x = border_rect.x + renderer->border_width;
|
||||
buf_rect.y = border_rect.y + renderer->border_width;
|
||||
buf_rect.width = renderer->width;
|
||||
buf_rect.height = renderer->height;
|
||||
|
||||
if (gdk_rectangle_intersect (&buf_rect, expose_area, &render_rect))
|
||||
{
|
||||
|
|
@ -561,7 +552,7 @@ gimp_preview_renderer_draw (GimpPreviewRenderer *renderer,
|
|||
|
||||
buf = (renderer->buffer +
|
||||
(render_rect.y - buf_rect.y) * renderer->rowstride +
|
||||
(render_rect.x - buf_rect.x) * PREVIEW_BYTES);
|
||||
(render_rect.x - buf_rect.x) * renderer->bytes);
|
||||
|
||||
gdk_draw_rgb_image_dithalign (window,
|
||||
widget->style->black_gc,
|
||||
|
|
@ -762,7 +753,8 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
guchar *dest_buffer,
|
||||
gint dest_width,
|
||||
gint dest_height,
|
||||
gint dest_rowstride)
|
||||
gint dest_rowstride,
|
||||
gint dest_bytes)
|
||||
{
|
||||
guchar *src, *s;
|
||||
guchar *cb;
|
||||
|
|
@ -860,8 +852,8 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
{
|
||||
/* Handle the leading transparency */
|
||||
for (j = 0; j < x1; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
|
||||
/* The stuff in the middle */
|
||||
s = src;
|
||||
|
|
@ -914,21 +906,21 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
|
||||
/* Handle the trailing transparency */
|
||||
for (j = x2; j < dest_width; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
|
||||
src += rowstride;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; j < dest_width; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
}
|
||||
|
||||
memcpy (dest_buffer + i * dest_rowstride,
|
||||
render_temp_buf,
|
||||
dest_width * PREVIEW_BYTES);
|
||||
dest_width * dest_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -949,7 +941,8 @@ gimp_preview_renderer_render_preview (GimpPreviewRenderer *renderer,
|
|||
renderer->buffer,
|
||||
renderer->width,
|
||||
renderer->height,
|
||||
renderer->rowstride);
|
||||
renderer->rowstride,
|
||||
renderer->bytes);
|
||||
|
||||
renderer->needs_render = FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ struct _GimpPreviewRenderer
|
|||
/*< private >*/
|
||||
guchar *buffer;
|
||||
gint rowstride;
|
||||
gint bytes;
|
||||
|
||||
GdkPixbuf *no_preview_pixbuf;
|
||||
|
||||
|
|
@ -124,7 +125,8 @@ void gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
guchar *dest_buffer,
|
||||
gint dest_width,
|
||||
gint dest_height,
|
||||
gint dest_rowstride);
|
||||
gint dest_rowstride,
|
||||
gint dest_bytes);
|
||||
void gimp_preview_renderer_render_preview (GimpPreviewRenderer *renderer,
|
||||
TempBuf *temp_buf,
|
||||
gint channel,
|
||||
|
|
|
|||
|
|
@ -174,11 +174,17 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
return;
|
||||
}
|
||||
|
||||
gimp_preview_renderer_render_preview (renderer, temp_buf, -1,
|
||||
GIMP_PREVIEW_BG_WHITE,
|
||||
GIMP_PREVIEW_BG_WHITE);
|
||||
|
||||
temp_buf_free (temp_buf);
|
||||
|
||||
#define INDICATOR_WIDTH 7
|
||||
#define INDICATOR_HEIGHT 7
|
||||
|
||||
if (temp_buf->width >= INDICATOR_WIDTH &&
|
||||
temp_buf->height >= INDICATOR_HEIGHT &&
|
||||
if (renderer->width >= INDICATOR_WIDTH * 2 &&
|
||||
renderer->height >= INDICATOR_HEIGHT * 2&&
|
||||
(renderer->width < brush_width ||
|
||||
renderer->height < brush_height ||
|
||||
GIMP_IS_BRUSH_PIPE (brush)))
|
||||
|
|
@ -225,6 +231,7 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
#undef RED
|
||||
|
||||
guchar *buf;
|
||||
guchar *b;
|
||||
gint x, y;
|
||||
gint offset_x;
|
||||
gint offset_y;
|
||||
|
|
@ -232,60 +239,55 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
gboolean pipe;
|
||||
gboolean scale;
|
||||
|
||||
buf = temp_buf_data (temp_buf);
|
||||
offset_x = renderer->width - INDICATOR_WIDTH;
|
||||
offset_y = renderer->height - INDICATOR_HEIGHT;
|
||||
|
||||
offset_x = temp_buf->width - INDICATOR_WIDTH;
|
||||
offset_y = temp_buf->height - INDICATOR_HEIGHT;
|
||||
|
||||
buf += (offset_y * temp_buf->width + offset_x) * temp_buf->bytes;
|
||||
buf = renderer->buffer + (offset_y * renderer->rowstride +
|
||||
offset_x * renderer->bytes);
|
||||
|
||||
pipe = GIMP_IS_BRUSH_PIPE (brush);
|
||||
scale = (renderer->width < brush_width ||
|
||||
renderer->height < brush_height);
|
||||
alpha = (temp_buf->bytes == 4);
|
||||
alpha = (renderer->bytes == 4);
|
||||
|
||||
for (y = 0; y < INDICATOR_HEIGHT; y++)
|
||||
{
|
||||
b = buf;
|
||||
|
||||
for (x = 0; x < INDICATOR_WIDTH; x++)
|
||||
{
|
||||
if (scale)
|
||||
{
|
||||
if (pipe)
|
||||
{
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][0];
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][1];
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][2];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][0];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][1];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][2];
|
||||
}
|
||||
else
|
||||
{
|
||||
*buf++ = scale_indicator_bits[y][x][0];
|
||||
*buf++ = scale_indicator_bits[y][x][1];
|
||||
*buf++ = scale_indicator_bits[y][x][2];
|
||||
*b++ = scale_indicator_bits[y][x][0];
|
||||
*b++ = scale_indicator_bits[y][x][1];
|
||||
*b++ = scale_indicator_bits[y][x][2];
|
||||
}
|
||||
}
|
||||
else if (pipe)
|
||||
{
|
||||
*buf++ = pipe_indicator_bits[y][x][0];
|
||||
*buf++ = pipe_indicator_bits[y][x][1];
|
||||
*buf++ = pipe_indicator_bits[y][x][2];
|
||||
*b++ = pipe_indicator_bits[y][x][0];
|
||||
*b++ = pipe_indicator_bits[y][x][1];
|
||||
*b++ = pipe_indicator_bits[y][x][2];
|
||||
}
|
||||
|
||||
if (alpha)
|
||||
*buf++ = 255;
|
||||
*b++ = 255;
|
||||
}
|
||||
|
||||
buf += (temp_buf->width - INDICATOR_WIDTH) * temp_buf->bytes;
|
||||
buf += renderer->rowstride;
|
||||
}
|
||||
}
|
||||
|
||||
#undef INDICATOR_WIDTH
|
||||
#undef INDICATOR_HEIGHT
|
||||
|
||||
gimp_preview_renderer_render_preview (renderer, temp_buf, -1,
|
||||
GIMP_PREVIEW_BG_WHITE,
|
||||
GIMP_PREVIEW_BG_WHITE);
|
||||
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
|||
|
|
@ -590,8 +590,6 @@ gimp_preview_set_viewable (GimpPreview *preview,
|
|||
{
|
||||
g_object_add_weak_pointer (G_OBJECT (preview->viewable),
|
||||
(gpointer *) &preview->viewable);
|
||||
|
||||
gimp_preview_update (preview);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,9 +48,6 @@
|
|||
#include "gimppreviewrenderer-utils.h"
|
||||
|
||||
|
||||
#define PREVIEW_BYTES 3
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
UPDATE,
|
||||
|
|
@ -143,6 +140,7 @@ gimp_preview_renderer_init (GimpPreviewRenderer *renderer)
|
|||
|
||||
renderer->buffer = NULL;
|
||||
renderer->rowstride = 0;
|
||||
renderer->bytes = 3;
|
||||
|
||||
renderer->no_preview_pixbuf = NULL;
|
||||
|
||||
|
|
@ -392,7 +390,7 @@ gimp_preview_renderer_set_size_full (GimpPreviewRenderer *renderer,
|
|||
renderer->height = height;
|
||||
renderer->border_width = border_width;
|
||||
|
||||
renderer->rowstride = (renderer->width * PREVIEW_BYTES + 3) & ~3;
|
||||
renderer->rowstride = (renderer->width * renderer->bytes + 3) & ~3;
|
||||
|
||||
if (renderer->buffer)
|
||||
{
|
||||
|
|
@ -543,17 +541,10 @@ gimp_preview_renderer_draw (GimpPreviewRenderer *renderer,
|
|||
}
|
||||
else if (renderer->buffer)
|
||||
{
|
||||
if (renderer->border_width > 0)
|
||||
{
|
||||
buf_rect.x = border_rect.x + renderer->border_width;
|
||||
buf_rect.y = border_rect.y + renderer->border_width;
|
||||
buf_rect.width = border_rect.width - 2 * renderer->border_width;
|
||||
buf_rect.height = border_rect.height - 2 * renderer->border_width;
|
||||
}
|
||||
else
|
||||
{
|
||||
buf_rect = border_rect;
|
||||
}
|
||||
buf_rect.x = border_rect.x + renderer->border_width;
|
||||
buf_rect.y = border_rect.y + renderer->border_width;
|
||||
buf_rect.width = renderer->width;
|
||||
buf_rect.height = renderer->height;
|
||||
|
||||
if (gdk_rectangle_intersect (&buf_rect, expose_area, &render_rect))
|
||||
{
|
||||
|
|
@ -561,7 +552,7 @@ gimp_preview_renderer_draw (GimpPreviewRenderer *renderer,
|
|||
|
||||
buf = (renderer->buffer +
|
||||
(render_rect.y - buf_rect.y) * renderer->rowstride +
|
||||
(render_rect.x - buf_rect.x) * PREVIEW_BYTES);
|
||||
(render_rect.x - buf_rect.x) * renderer->bytes);
|
||||
|
||||
gdk_draw_rgb_image_dithalign (window,
|
||||
widget->style->black_gc,
|
||||
|
|
@ -762,7 +753,8 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
guchar *dest_buffer,
|
||||
gint dest_width,
|
||||
gint dest_height,
|
||||
gint dest_rowstride)
|
||||
gint dest_rowstride,
|
||||
gint dest_bytes)
|
||||
{
|
||||
guchar *src, *s;
|
||||
guchar *cb;
|
||||
|
|
@ -860,8 +852,8 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
{
|
||||
/* Handle the leading transparency */
|
||||
for (j = 0; j < x1; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
|
||||
/* The stuff in the middle */
|
||||
s = src;
|
||||
|
|
@ -914,21 +906,21 @@ gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
|
||||
/* Handle the trailing transparency */
|
||||
for (j = x2; j < dest_width; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
|
||||
src += rowstride;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (j = 0; j < dest_width; j++)
|
||||
for (b = 0; b < PREVIEW_BYTES; b++)
|
||||
render_temp_buf[j * PREVIEW_BYTES + b] = cb[j * 3 + b];
|
||||
for (b = 0; b < dest_bytes; b++)
|
||||
render_temp_buf[j * dest_bytes + b] = cb[j * 3 + b];
|
||||
}
|
||||
|
||||
memcpy (dest_buffer + i * dest_rowstride,
|
||||
render_temp_buf,
|
||||
dest_width * PREVIEW_BYTES);
|
||||
dest_width * dest_bytes);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -949,7 +941,8 @@ gimp_preview_renderer_render_preview (GimpPreviewRenderer *renderer,
|
|||
renderer->buffer,
|
||||
renderer->width,
|
||||
renderer->height,
|
||||
renderer->rowstride);
|
||||
renderer->rowstride,
|
||||
renderer->bytes);
|
||||
|
||||
renderer->needs_render = FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ struct _GimpPreviewRenderer
|
|||
/*< private >*/
|
||||
guchar *buffer;
|
||||
gint rowstride;
|
||||
gint bytes;
|
||||
|
||||
GdkPixbuf *no_preview_pixbuf;
|
||||
|
||||
|
|
@ -124,7 +125,8 @@ void gimp_preview_render_to_buffer (TempBuf *temp_buf,
|
|||
guchar *dest_buffer,
|
||||
gint dest_width,
|
||||
gint dest_height,
|
||||
gint dest_rowstride);
|
||||
gint dest_rowstride,
|
||||
gint dest_bytes);
|
||||
void gimp_preview_renderer_render_preview (GimpPreviewRenderer *renderer,
|
||||
TempBuf *temp_buf,
|
||||
gint channel,
|
||||
|
|
|
|||
|
|
@ -174,11 +174,17 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
return;
|
||||
}
|
||||
|
||||
gimp_preview_renderer_render_preview (renderer, temp_buf, -1,
|
||||
GIMP_PREVIEW_BG_WHITE,
|
||||
GIMP_PREVIEW_BG_WHITE);
|
||||
|
||||
temp_buf_free (temp_buf);
|
||||
|
||||
#define INDICATOR_WIDTH 7
|
||||
#define INDICATOR_HEIGHT 7
|
||||
|
||||
if (temp_buf->width >= INDICATOR_WIDTH &&
|
||||
temp_buf->height >= INDICATOR_HEIGHT &&
|
||||
if (renderer->width >= INDICATOR_WIDTH * 2 &&
|
||||
renderer->height >= INDICATOR_HEIGHT * 2&&
|
||||
(renderer->width < brush_width ||
|
||||
renderer->height < brush_height ||
|
||||
GIMP_IS_BRUSH_PIPE (brush)))
|
||||
|
|
@ -225,6 +231,7 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
#undef RED
|
||||
|
||||
guchar *buf;
|
||||
guchar *b;
|
||||
gint x, y;
|
||||
gint offset_x;
|
||||
gint offset_y;
|
||||
|
|
@ -232,60 +239,55 @@ gimp_preview_renderer_brush_render (GimpPreviewRenderer *renderer,
|
|||
gboolean pipe;
|
||||
gboolean scale;
|
||||
|
||||
buf = temp_buf_data (temp_buf);
|
||||
offset_x = renderer->width - INDICATOR_WIDTH;
|
||||
offset_y = renderer->height - INDICATOR_HEIGHT;
|
||||
|
||||
offset_x = temp_buf->width - INDICATOR_WIDTH;
|
||||
offset_y = temp_buf->height - INDICATOR_HEIGHT;
|
||||
|
||||
buf += (offset_y * temp_buf->width + offset_x) * temp_buf->bytes;
|
||||
buf = renderer->buffer + (offset_y * renderer->rowstride +
|
||||
offset_x * renderer->bytes);
|
||||
|
||||
pipe = GIMP_IS_BRUSH_PIPE (brush);
|
||||
scale = (renderer->width < brush_width ||
|
||||
renderer->height < brush_height);
|
||||
alpha = (temp_buf->bytes == 4);
|
||||
alpha = (renderer->bytes == 4);
|
||||
|
||||
for (y = 0; y < INDICATOR_HEIGHT; y++)
|
||||
{
|
||||
b = buf;
|
||||
|
||||
for (x = 0; x < INDICATOR_WIDTH; x++)
|
||||
{
|
||||
if (scale)
|
||||
{
|
||||
if (pipe)
|
||||
{
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][0];
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][1];
|
||||
*buf++ = scale_pipe_indicator_bits[y][x][2];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][0];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][1];
|
||||
*b++ = scale_pipe_indicator_bits[y][x][2];
|
||||
}
|
||||
else
|
||||
{
|
||||
*buf++ = scale_indicator_bits[y][x][0];
|
||||
*buf++ = scale_indicator_bits[y][x][1];
|
||||
*buf++ = scale_indicator_bits[y][x][2];
|
||||
*b++ = scale_indicator_bits[y][x][0];
|
||||
*b++ = scale_indicator_bits[y][x][1];
|
||||
*b++ = scale_indicator_bits[y][x][2];
|
||||
}
|
||||
}
|
||||
else if (pipe)
|
||||
{
|
||||
*buf++ = pipe_indicator_bits[y][x][0];
|
||||
*buf++ = pipe_indicator_bits[y][x][1];
|
||||
*buf++ = pipe_indicator_bits[y][x][2];
|
||||
*b++ = pipe_indicator_bits[y][x][0];
|
||||
*b++ = pipe_indicator_bits[y][x][1];
|
||||
*b++ = pipe_indicator_bits[y][x][2];
|
||||
}
|
||||
|
||||
if (alpha)
|
||||
*buf++ = 255;
|
||||
*b++ = 255;
|
||||
}
|
||||
|
||||
buf += (temp_buf->width - INDICATOR_WIDTH) * temp_buf->bytes;
|
||||
buf += renderer->rowstride;
|
||||
}
|
||||
}
|
||||
|
||||
#undef INDICATOR_WIDTH
|
||||
#undef INDICATOR_HEIGHT
|
||||
|
||||
gimp_preview_renderer_render_preview (renderer, temp_buf, -1,
|
||||
GIMP_PREVIEW_BG_WHITE,
|
||||
GIMP_PREVIEW_BG_WHITE);
|
||||
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
|
|
|||
Loading…
Reference in a new issue