mirror of https://github.com/GNOME/gimp.git
Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/core/gimpbrush.c: don't ask for preview with zero width or height, fixes bug #162232. * app/base/brush-scale.c: remove tabs and trailing whitespace.
This commit is contained in:
parent
286ed38772
commit
15fb7b6f18
|
@ -1,3 +1,11 @@
|
|||
2004-12-24 Bill Skaggs <weskaggs@primate.ucdavis.edu>
|
||||
|
||||
* app/core/gimpbrush.c: don't ask for preview with
|
||||
zero width or height, fixes bug #162232.
|
||||
|
||||
* app/base/brush-scale.c: remove tabs and trailing
|
||||
whitespace.
|
||||
|
||||
2004-12-24 Bill Skaggs <weskaggs@primate.ucdavis.edu>
|
||||
|
||||
* app/actions/documents-commands.c
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
|
||||
MaskBuf *
|
||||
brush_scale_mask (MaskBuf *brush_mask,
|
||||
gint dest_width,
|
||||
gint dest_height)
|
||||
gint dest_width,
|
||||
gint dest_height)
|
||||
{
|
||||
MaskBuf *scale_brush;
|
||||
gint src_width;
|
||||
|
@ -43,7 +43,7 @@ brush_scale_mask (MaskBuf *brush_mask,
|
|||
guchar *src, *dest;
|
||||
|
||||
g_return_val_if_fail (brush_mask != NULL &&
|
||||
dest_width != 0 && dest_height != 0, NULL);
|
||||
dest_width != 0 && dest_height != 0, NULL);
|
||||
|
||||
src_width = brush_mask->width;
|
||||
src_height = brush_mask->height;
|
||||
|
@ -67,102 +67,102 @@ brush_scale_mask (MaskBuf *brush_mask,
|
|||
for (i=0; i<dest_height; i++)
|
||||
{
|
||||
for (j=0; j<dest_width; j++)
|
||||
{
|
||||
value = 0;
|
||||
{
|
||||
value = 0;
|
||||
|
||||
fy = fy0;
|
||||
y = y0;
|
||||
dy = dy0;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += (dx * dy * src[x + src_width * y]) >> 8;
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += dy * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += fx * dy * src[x + src_width * y] >> 8;
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= dy;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
while (fy >= 256)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += dx * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += 256 * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += fx * src[x + src_width * y];
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= 256;
|
||||
}
|
||||
|
||||
if (fy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += (dx * fy * src[x + src_width * y]) >> 8;
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += fy * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += (fx * fy * src[x + src_width * y]) >> 8;
|
||||
dx = 256 - fx;
|
||||
}
|
||||
dy = 256 - fy;
|
||||
}
|
||||
|
||||
*dest++ = MIN ((value / area), 255);
|
||||
|
||||
x0 = x;
|
||||
dx0 = dx;
|
||||
}
|
||||
fy = fy0;
|
||||
y = y0;
|
||||
dy = dy0;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += (dx * dy * src[x + src_width * y]) >> 8;
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += dy * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += fx * dy * src[x + src_width * y] >> 8;
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= dy;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
while (fy >= 256)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += dx * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += 256 * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += fx * src[x + src_width * y];
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= 256;
|
||||
}
|
||||
|
||||
if (fy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
value += (dx * fy * src[x + src_width * y]) >> 8;
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
value += fy * src[x + src_width * y];
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
value += (fx * fy * src[x + src_width * y]) >> 8;
|
||||
dx = 256 - fx;
|
||||
}
|
||||
dy = 256 - fy;
|
||||
}
|
||||
|
||||
*dest++ = MIN ((value / area), 255);
|
||||
|
||||
x0 = x;
|
||||
dx0 = dx;
|
||||
}
|
||||
x0 = 0;
|
||||
dx0 = 0;
|
||||
y0 = y;
|
||||
|
@ -180,8 +180,8 @@ brush_scale_mask (MaskBuf *brush_mask,
|
|||
|
||||
MaskBuf *
|
||||
brush_scale_pixmap (MaskBuf *pixmap,
|
||||
gint dest_width,
|
||||
gint dest_height)
|
||||
gint dest_width,
|
||||
gint dest_height)
|
||||
{
|
||||
MaskBuf *scale_brush;
|
||||
gint src_width;
|
||||
|
@ -196,7 +196,7 @@ brush_scale_pixmap (MaskBuf *pixmap,
|
|||
guchar *src, *src_ptr, *dest;
|
||||
|
||||
g_return_val_if_fail (pixmap != NULL && pixmap->bytes == 3 &&
|
||||
dest_width != 0 && dest_height != 0, NULL);
|
||||
dest_width != 0 && dest_height != 0, NULL);
|
||||
|
||||
src_width = pixmap->width;
|
||||
src_height = pixmap->height;
|
||||
|
@ -220,124 +220,124 @@ brush_scale_pixmap (MaskBuf *pixmap,
|
|||
for (i=0; i<dest_height; i++)
|
||||
{
|
||||
for (j=0; j<dest_width; j++)
|
||||
{
|
||||
value[0] = 0;
|
||||
value[1] = 0;
|
||||
value[2] = 0;
|
||||
{
|
||||
value[0] = 0;
|
||||
value[1] = 0;
|
||||
value[2] = 0;
|
||||
|
||||
fy = fy0;
|
||||
y = y0;
|
||||
dy = dy0;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = (dx * dy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = dy;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = (fx * dy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= dy;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
while (fy >= 256)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = dx;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = 256;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = fx;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= 256;
|
||||
}
|
||||
|
||||
if (fy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = (dx * fy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = fy;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = (fx * fy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
dy = 256 - fy;
|
||||
}
|
||||
|
||||
*dest++ = MIN ((value[0] / area), 255);
|
||||
*dest++ = MIN ((value[1] / area), 255);
|
||||
*dest++ = MIN ((value[2] / area), 255);
|
||||
|
||||
x0 = x;
|
||||
dx0 = dx;
|
||||
}
|
||||
fy = fy0;
|
||||
y = y0;
|
||||
dy = dy0;
|
||||
|
||||
if (dy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = (dx * dy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = dy;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = (fx * dy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= dy;
|
||||
dy = 0;
|
||||
}
|
||||
|
||||
while (fy >= 256)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = dx;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = 256;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = fx;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
y++;
|
||||
fy -= 256;
|
||||
}
|
||||
|
||||
if (fy)
|
||||
{
|
||||
fx = fx0;
|
||||
x = x0;
|
||||
dx = dx0;
|
||||
|
||||
if (dx)
|
||||
{
|
||||
factor = (dx * fy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= dx;
|
||||
dx = 0;
|
||||
}
|
||||
while (fx >= 256)
|
||||
{
|
||||
factor = fy;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
x++;
|
||||
fx -= 256;
|
||||
}
|
||||
if (fx)
|
||||
{
|
||||
factor = (fx * fy) >> 8;
|
||||
src_ptr = src + 3 * (x + y * src_width);
|
||||
ADD_RGB (value, factor, src_ptr);
|
||||
dx = 256 - fx;
|
||||
}
|
||||
dy = 256 - fy;
|
||||
}
|
||||
|
||||
*dest++ = MIN ((value[0] / area), 255);
|
||||
*dest++ = MIN ((value[1] / area), 255);
|
||||
*dest++ = MIN ((value[2] / area), 255);
|
||||
|
||||
x0 = x;
|
||||
dx0 = dx;
|
||||
}
|
||||
x0 = 0;
|
||||
dx0 = 0;
|
||||
y0 = y;
|
||||
|
|
|
@ -263,6 +263,9 @@ gimp_brush_get_new_preview (GimpViewable *viewable,
|
|||
brush_width = (gdouble) brush_width / MAX (ratio_x, ratio_y) + 0.5;
|
||||
brush_height = (gdouble) brush_height / MAX (ratio_x, ratio_y) + 0.5;
|
||||
|
||||
if (brush_width <= 0) brush_width = 1;
|
||||
if (brush_height <= 0) brush_height = 1;
|
||||
|
||||
mask_buf = brush_scale_mask (mask_buf, brush_width, brush_height);
|
||||
|
||||
if (pixmap_buf)
|
||||
|
@ -545,6 +548,33 @@ gimp_brush_load_brush (gint fd,
|
|||
|
||||
/* Check for correct file format */
|
||||
|
||||
if (header.width == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Width = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (header.height == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Height = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (header.bytes == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Bytes = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (header.version)
|
||||
{
|
||||
case 1:
|
||||
|
|
|
@ -263,6 +263,9 @@ gimp_brush_get_new_preview (GimpViewable *viewable,
|
|||
brush_width = (gdouble) brush_width / MAX (ratio_x, ratio_y) + 0.5;
|
||||
brush_height = (gdouble) brush_height / MAX (ratio_x, ratio_y) + 0.5;
|
||||
|
||||
if (brush_width <= 0) brush_width = 1;
|
||||
if (brush_height <= 0) brush_height = 1;
|
||||
|
||||
mask_buf = brush_scale_mask (mask_buf, brush_width, brush_height);
|
||||
|
||||
if (pixmap_buf)
|
||||
|
@ -545,6 +548,33 @@ gimp_brush_load_brush (gint fd,
|
|||
|
||||
/* Check for correct file format */
|
||||
|
||||
if (header.width == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Width = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (header.height == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Height = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (header.bytes == 0)
|
||||
{
|
||||
g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_READ,
|
||||
_("Fatal parse error in brush file '%s': "
|
||||
"Bytes = 0."),
|
||||
gimp_filename_to_utf8 (filename));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
switch (header.version)
|
||||
{
|
||||
case 1:
|
||||
|
|
Loading…
Reference in New Issue