use gimp_message where appropriate

--Sven
This commit is contained in:
Sven Neumann 1999-10-16 03:51:45 +00:00
parent ba3f196538
commit e192fcfe43
3 changed files with 896 additions and 798 deletions

View File

@ -1,3 +1,8 @@
Sat Oct 16 05:48:44 MEST 1999 Sven Neumann <sven@gimp.org>
* plug-ins/common/compose.c
* plug-ins/common/decompose.c: use gimp_message where appropriate
Thu Oct 14 13:31:59 MEST 1999 Sven Neumann <sven@gimp.org> Thu Oct 14 13:31:59 MEST 1999 Sven Neumann <sven@gimp.org>
* plug-ins/common/sunras.c * plug-ins/common/sunras.c

View File

@ -256,7 +256,7 @@ static void show_message (const char *message)
{ {
if (run_mode == RUN_INTERACTIVE) if (run_mode == RUN_INTERACTIVE)
g_message (message); gimp_message (message);
else else
printf ("%s\n", message); printf ("%s\n", message);
} }
@ -383,8 +383,8 @@ static gint32
compose (char *compose_type, compose (char *compose_type,
gint32 *compose_ID, gint32 *compose_ID,
int compose_by_drawable) int compose_by_drawable)
{
{int width, height, tile_height, scan_lines; int width, height, tile_height, scan_lines;
int num_images, compose_idx, incr_src[MAX_COMPOSE_IMAGES]; int num_images, compose_idx, incr_src[MAX_COMPOSE_IMAGES];
int i, j; int i, j;
gint num_layers; gint num_layers;
@ -494,7 +494,8 @@ compose (char *compose_type,
dst = (unsigned char *)g_malloc (tile_height * width * drawable_dst->bpp); dst = (unsigned char *)g_malloc (tile_height * width * drawable_dst->bpp);
if (dst == NULL) if (dst == NULL)
{ {
for (j = 0; j < num_images; j++) g_free (src[j]); for (j = 0; j < num_images; j++)
g_free (src[j]);
show_message (_("compose: not enough memory")); show_message (_("compose: not enough memory"));
return (-1); return (-1);
} }
@ -545,8 +546,8 @@ create_new_image (char *filename,
gint32 *layer_ID, gint32 *layer_ID,
GDrawable **drawable, GDrawable **drawable,
GPixelRgn *pixel_rgn) GPixelRgn *pixel_rgn)
{
{gint32 image_ID; gint32 image_ID;
GImageType gitype; GImageType gitype;
if ((gdtype == GRAY_IMAGE) || (gdtype == GRAYA_IMAGE)) if ((gdtype == GRAY_IMAGE) || (gdtype == GRAYA_IMAGE))
@ -573,9 +574,11 @@ create_new_image (char *filename,
/* Compare two strings ignoring case (could also be done by strcasecmp() */ /* Compare two strings ignoring case (could also be done by strcasecmp() */
/* but is it available everywhere ?) */ /* but is it available everywhere ?) */
static int cmp_icase (char *s1, char *s2) static int
cmp_icase (char *s1,
{int c1, c2; char *s2)
{
int c1, c2;
c1 = toupper (*s1); c2 = toupper (*s2); c1 = toupper (*s1); c2 = toupper (*s2);
while (*s1 && *s2) while (*s1 && *s2)
@ -592,8 +595,8 @@ compose_rgb (unsigned char **src,
int *incr_src, int *incr_src,
int numpix, int numpix,
unsigned char *dst) unsigned char *dst)
{
{register unsigned char *red_src = src[0]; register unsigned char *red_src = src[0];
register unsigned char *green_src = src[1]; register unsigned char *green_src = src[1];
register unsigned char *blue_src = src[2]; register unsigned char *blue_src = src[2];
register unsigned char *rgb_dst = dst; register unsigned char *rgb_dst = dst;
@ -626,8 +629,8 @@ compose_rgba (unsigned char **src,
int *incr_src, int *incr_src,
int numpix, int numpix,
unsigned char *dst) unsigned char *dst)
{
{register unsigned char *red_src = src[0]; register unsigned char *red_src = src[0];
register unsigned char *green_src = src[1]; register unsigned char *green_src = src[1];
register unsigned char *blue_src = src[2]; register unsigned char *blue_src = src[2];
register unsigned char *alpha_src = src[3]; register unsigned char *alpha_src = src[3];
@ -665,8 +668,8 @@ compose_hsv (unsigned char **src,
int *incr_src, int *incr_src,
int numpix, int numpix,
unsigned char *dst) unsigned char *dst)
{
{register unsigned char *hue_src = src[0]; register unsigned char *hue_src = src[0];
register unsigned char *sat_src = src[1]; register unsigned char *sat_src = src[1];
register unsigned char *val_src = src[2]; register unsigned char *val_src = src[2];
register unsigned char *rgb_dst = dst; register unsigned char *rgb_dst = dst;
@ -689,8 +692,8 @@ compose_cmy (unsigned char **src,
int *incr_src, int *incr_src,
int numpix, int numpix,
unsigned char *dst) unsigned char *dst)
{
{register unsigned char *cyan_src = src[0]; register unsigned char *cyan_src = src[0];
register unsigned char *magenta_src = src[1]; register unsigned char *magenta_src = src[1];
register unsigned char *yellow_src = src[2]; register unsigned char *yellow_src = src[2];
register unsigned char *rgb_dst = dst; register unsigned char *rgb_dst = dst;
@ -698,7 +701,7 @@ compose_cmy (unsigned char **src,
int cyan_incr = incr_src[0], magenta_incr = incr_src[1], int cyan_incr = incr_src[0], magenta_incr = incr_src[1],
yellow_incr = incr_src[2]; yellow_incr = incr_src[2];
if ( (cyan_incr == 1) && (magenta_incr == 1) && (yellow_incr == 1)) if ((cyan_incr == 1) && (magenta_incr == 1) && (yellow_incr == 1))
{ {
while (count-- > 0) while (count-- > 0)
{ {
@ -727,8 +730,8 @@ compose_cmyk (unsigned char **src,
int *incr_src, int *incr_src,
int numpix, int numpix,
unsigned char *dst) unsigned char *dst)
{
{register unsigned char *cyan_src = src[0]; register unsigned char *cyan_src = src[0];
register unsigned char *magenta_src = src[1]; register unsigned char *magenta_src = src[1];
register unsigned char *yellow_src = src[2]; register unsigned char *yellow_src = src[2];
register unsigned char *black_src = src[3]; register unsigned char *black_src = src[3];
@ -935,8 +938,8 @@ hsv_to_rgb (unsigned char *h,
unsigned char *s, unsigned char *s,
unsigned char *v, unsigned char *v,
unsigned char *rgb) unsigned char *rgb)
{
{double hue, sat, val; double hue, sat, val;
double f, p, q, t; double f, p, q, t;
int red, green, blue; int red, green, blue;
@ -993,9 +996,20 @@ hsv_to_rgb (unsigned char *h,
blue = 0; blue = 0;
break; break;
} }
if (red < 0) red = 0; else if (red > 255) red = 255;
if (green < 0) green = 0; else if (green > 255) green = 255; if (red < 0)
if (blue < 0) blue = 0; else if (blue > 255) blue = 255; red = 0;
else if (red > 255)
red = 255;
if (green < 0)
green = 0;
else if (green > 255)
green = 255;
if (blue < 0)
blue = 0;
else if (blue > 255)
blue = 255;
rgb[0] = (unsigned char)red; rgb[0] = (unsigned char)red;
rgb[1] = (unsigned char)green; rgb[1] = (unsigned char)green;
rgb[2] = (unsigned char)blue; rgb[2] = (unsigned char)blue;
@ -1010,7 +1024,7 @@ check_gray (gint32 image_id,
gpointer data) gpointer data)
{ {
return ( (gimp_image_base_type (image_id) == GRAY) return ((gimp_image_base_type (image_id) == GRAY)
&& (gimp_image_width (image_id) == composeint.width) && (gimp_image_width (image_id) == composeint.width)
&& (gimp_image_height (image_id) == composeint.height)); && (gimp_image_height (image_id) == composeint.height));
} }
@ -1081,3 +1095,11 @@ compose_type_toggle_update (GtkWidget *widget,
else else
*toggle_val = FALSE; *toggle_val = FALSE;
} }

View File

@ -229,7 +229,7 @@ query ()
static void show_message (const char *message) static void show_message (const char *message)
{ {
if (run_mode == RUN_INTERACTIVE) if (run_mode == RUN_INTERACTIVE)
g_message (message); gimp_message (message);
else else
printf ("%s\n", message); printf ("%s\n", message);
} }
@ -345,7 +345,6 @@ decompose (gint32 image_ID,
gint32 drawable_ID, gint32 drawable_ID,
char *extract_type, char *extract_type,
gint32 *image_ID_dst) gint32 *image_ID_dst)
{ {
int i, j, extract_idx, scan_lines; int i, j, extract_idx, scan_lines;
int height, width, tile_height, num_images; int height, width, tile_height, num_images;
@ -374,8 +373,8 @@ decompose (gint32 image_ID,
show_message (_("decompose: not an RGB image")); show_message (_("decompose: not an RGB image"));
return (-1); return (-1);
} }
if ( (extract[extract_idx].extract_fun == extract_alpha) if ((extract[extract_idx].extract_fun == extract_alpha) &&
&& (!gimp_drawable_has_alpha (drawable_ID))) (!gimp_drawable_has_alpha (drawable_ID)))
{ {
show_message (_("decompose: No alpha channel available")); show_message (_("decompose: No alpha channel available"));
return (-1); return (-1);
@ -393,7 +392,8 @@ decompose (gint32 image_ID,
/* Create all new gray images */ /* Create all new gray images */
num_images = extract[extract_idx].num_images; num_images = extract[extract_idx].num_images;
if (num_images > MAX_EXTRACT_IMAGES) num_images = MAX_EXTRACT_IMAGES; if (num_images > MAX_EXTRACT_IMAGES)
num_images = MAX_EXTRACT_IMAGES;
for (j = 0; j < num_images; j++) for (j = 0; j < num_images; j++)
{ {
@ -458,13 +458,16 @@ create_new_image (char *filename,
gint32 *layer_ID, gint32 *layer_ID,
GDrawable **drawable, GDrawable **drawable,
GPixelRgn *pixel_rgn) GPixelRgn *pixel_rgn)
{
{gint32 image_ID; gint32 image_ID;
GDrawableType gdtype; GDrawableType gdtype;
if (type == GRAY) gdtype = GRAY_IMAGE; if (type == GRAY)
else if (type == INDEXED) gdtype = INDEXED_IMAGE; gdtype = GRAY_IMAGE;
else gdtype = RGB_IMAGE; else if (type == INDEXED)
gdtype = INDEXED_IMAGE;
else
gdtype = RGB_IMAGE;
image_ID = gimp_image_new (width, height, type); image_ID = gimp_image_new (width, height, type);
gimp_image_set_filename (image_ID, filename); gimp_image_set_filename (image_ID, filename);
@ -483,14 +486,17 @@ create_new_image (char *filename,
/* Compare two strings ignoring case (could also be done by strcasecmp() */ /* Compare two strings ignoring case (could also be done by strcasecmp() */
/* but is it available everywhere ?) */ /* but is it available everywhere ?) */
static int cmp_icase (char *s1, char *s2) static int
cmp_icase (char *s1,
{int c1, c2; char *s2)
{
int c1, c2;
c1 = toupper (*s1); c2 = toupper (*s2); c1 = toupper (*s1); c2 = toupper (*s2);
while (*s1 && *s2) while (*s1 && *s2)
{ {
if (c1 != c2) return (c2 - c1); if (c1 != c2)
return (c2 - c1);
c1 = toupper (*(++s1)); c2 = toupper (*(++s2)); c1 = toupper (*(++s1)); c2 = toupper (*(++s2));
} }
return (c2 - c1); return (c2 - c1);
@ -500,8 +506,13 @@ static int cmp_icase (char *s1, char *s2)
/* Convert RGB to HSV. This routine was taken from decompose plug-in /* Convert RGB to HSV. This routine was taken from decompose plug-in
of GIMP V 0.54 and modified a little bit. of GIMP V 0.54 and modified a little bit.
*/ */
static void rgb_to_hsv (unsigned char *r, unsigned char *g, unsigned char *b, static void
unsigned char *h, unsigned char *s, unsigned char *v) rgb_to_hsv (unsigned char *r,
unsigned char *g,
unsigned char *b,
unsigned char *h,
unsigned char *s,
unsigned char *v)
{ {
int red = (int)*r, green = (int)*g, blue = (int)*b; int red = (int)*r, green = (int)*g, blue = (int)*b;
@ -569,10 +580,13 @@ static void rgb_to_hsv (unsigned char *r, unsigned char *g, unsigned char *b,
/* Extract functions */ /* Extract functions */
static void extract_rgb (unsigned char *src, int bpp, int numpix, static void
extract_rgb (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *red_dst = dst[0]; register unsigned char *red_dst = dst[0];
register unsigned char *green_dst = dst[1]; register unsigned char *green_dst = dst[1];
register unsigned char *blue_dst = dst[2]; register unsigned char *blue_dst = dst[2];
@ -588,10 +602,13 @@ static void extract_rgb (unsigned char *src, int bpp, int numpix,
} }
static void extract_red (unsigned char *src, int bpp, int numpix, static void
extract_red (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *red_dst = dst[0]; register unsigned char *red_dst = dst[0];
register int count = numpix, offset = bpp; register int count = numpix, offset = bpp;
@ -603,10 +620,13 @@ static void extract_red (unsigned char *src, int bpp, int numpix,
} }
static void extract_green (unsigned char *src, int bpp, int numpix, static void
extract_green (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src+1; register unsigned char *rgb_src = src+1;
register unsigned char *green_dst = dst[0]; register unsigned char *green_dst = dst[0];
register int count = numpix, offset = bpp; register int count = numpix, offset = bpp;
@ -618,10 +638,13 @@ static void extract_green (unsigned char *src, int bpp, int numpix,
} }
static void extract_blue (unsigned char *src, int bpp, int numpix, static void
extract_blue (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src+2; register unsigned char *rgb_src = src+2;
register unsigned char *blue_dst = dst[0]; register unsigned char *blue_dst = dst[0];
register int count = numpix, offset = bpp; register int count = numpix, offset = bpp;
@ -633,10 +656,13 @@ static void extract_blue (unsigned char *src, int bpp, int numpix,
} }
static void extract_alpha (unsigned char *src, int bpp, int numpix, static void
extract_alpha (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src+3; register unsigned char *rgb_src = src+3;
register unsigned char *alpha_dst = dst[0]; register unsigned char *alpha_dst = dst[0];
register int count = numpix, offset = bpp; register int count = numpix, offset = bpp;
@ -648,10 +674,13 @@ static void extract_alpha (unsigned char *src, int bpp, int numpix,
} }
static void extract_cmy (unsigned char *src, int bpp, int numpix, static void
extract_cmy (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *cyan_dst = dst[0]; register unsigned char *cyan_dst = dst[0];
register unsigned char *magenta_dst = dst[1]; register unsigned char *magenta_dst = dst[1];
register unsigned char *yellow_dst = dst[2]; register unsigned char *yellow_dst = dst[2];
@ -667,10 +696,13 @@ static void extract_cmy (unsigned char *src, int bpp, int numpix,
} }
static void extract_hsv (unsigned char *src, int bpp, int numpix, static void
extract_hsv (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *hue_dst = dst[0]; register unsigned char *hue_dst = dst[0];
register unsigned char *sat_dst = dst[1]; register unsigned char *sat_dst = dst[1];
register unsigned char *val_dst = dst[2]; register unsigned char *val_dst = dst[2];
@ -684,10 +716,13 @@ static void extract_hsv (unsigned char *src, int bpp, int numpix,
} }
static void extract_hue (unsigned char *src, int bpp, int numpix, static void
extract_hue (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *hue_dst = dst[0]; register unsigned char *hue_dst = dst[0];
unsigned char dmy; unsigned char dmy;
unsigned char *dummy = &dmy; unsigned char *dummy = &dmy;
@ -701,10 +736,13 @@ static void extract_hue (unsigned char *src, int bpp, int numpix,
} }
static void extract_sat (unsigned char *src, int bpp, int numpix, static void
extract_sat (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *sat_dst = dst[0]; register unsigned char *sat_dst = dst[0];
unsigned char dmy; unsigned char dmy;
unsigned char *dummy = &dmy; unsigned char *dummy = &dmy;
@ -718,10 +756,13 @@ static void extract_sat (unsigned char *src, int bpp, int numpix,
} }
static void extract_val (unsigned char *src, int bpp, int numpix, static void
extract_val (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *val_dst = dst[0]; register unsigned char *val_dst = dst[0];
unsigned char dmy; unsigned char dmy;
unsigned char *dummy = &dmy; unsigned char *dummy = &dmy;
@ -735,10 +776,13 @@ static void extract_val (unsigned char *src, int bpp, int numpix,
} }
static void extract_cyan (unsigned char *src, int bpp, int numpix, static void
extract_cyan (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *cyan_dst = dst[0]; register unsigned char *cyan_dst = dst[0];
register int count = numpix, offset = bpp-1; register int count = numpix, offset = bpp-1;
@ -750,10 +794,13 @@ static void extract_cyan (unsigned char *src, int bpp, int numpix,
} }
static void extract_magenta (unsigned char *src, int bpp, int numpix, static void
extract_magenta (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src+1; register unsigned char *rgb_src = src+1;
register unsigned char *magenta_dst = dst[0]; register unsigned char *magenta_dst = dst[0];
register int count = numpix, offset = bpp-1; register int count = numpix, offset = bpp-1;
@ -765,10 +812,13 @@ static void extract_magenta (unsigned char *src, int bpp, int numpix,
} }
static void extract_yellow (unsigned char *src, int bpp, int numpix, static void
extract_yellow (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src+2; register unsigned char *rgb_src = src+2;
register unsigned char *yellow_dst = dst[0]; register unsigned char *yellow_dst = dst[0];
register int count = numpix, offset = bpp-1; register int count = numpix, offset = bpp-1;
@ -780,10 +830,14 @@ static void extract_yellow (unsigned char *src, int bpp, int numpix,
} }
static void extract_cmyk (unsigned char *src, int bpp, int numpix, static void
extract_cmyk (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{register unsigned char *rgb_src = src; {
register unsigned char *rgb_src = src;
register unsigned char *cyan_dst = dst[0]; register unsigned char *cyan_dst = dst[0];
register unsigned char *magenta_dst = dst[1]; register unsigned char *magenta_dst = dst[1];
register unsigned char *yellow_dst = dst[2]; register unsigned char *yellow_dst = dst[2];
@ -795,9 +849,11 @@ static void extract_cmyk (unsigned char *src, int bpp, int numpix,
{ {
*cyan_dst = k = 255 - *(rgb_src++); *cyan_dst = k = 255 - *(rgb_src++);
*magenta_dst = s = 255 - *(rgb_src++); *magenta_dst = s = 255 - *(rgb_src++);
if (s < k) k = s; if (s < k)
k = s;
*yellow_dst = s = 255 - *(rgb_src++); *yellow_dst = s = 255 - *(rgb_src++);
if (s < k) k = s; /* Black intensity is minimum of c, m, y */ if (s < k)
k = s; /* Black intensity is minimum of c, m, y */
if (k) if (k)
{ {
*cyan_dst -= k; /* Remove common part of c, m, y */ *cyan_dst -= k; /* Remove common part of c, m, y */
@ -814,10 +870,13 @@ static void extract_cmyk (unsigned char *src, int bpp, int numpix,
} }
static void extract_cyank (unsigned char *src, int bpp, int numpix, static void
extract_cyank (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *cyan_dst = dst[0]; register unsigned char *cyan_dst = dst[0];
register unsigned char s, k; register unsigned char s, k;
register int count = numpix, offset = bpp-3; register int count = numpix, offset = bpp-3;
@ -837,10 +896,13 @@ static void extract_cyank (unsigned char *src, int bpp, int numpix,
} }
static void extract_magentak (unsigned char *src, int bpp, int numpix, static void
extract_magentak (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{
{register unsigned char *rgb_src = src; register unsigned char *rgb_src = src;
register unsigned char *magenta_dst = dst[0]; register unsigned char *magenta_dst = dst[0];
register unsigned char s, k; register unsigned char s, k;
register int count = numpix, offset = bpp-3; register int count = numpix, offset = bpp-3;
@ -849,10 +911,13 @@ static void extract_magentak (unsigned char *src, int bpp, int numpix,
{ {
k = 255 - *(rgb_src++); /* cyan */ k = 255 - *(rgb_src++); /* cyan */
*magenta_dst = s = 255 - *(rgb_src++); /* magenta */ *magenta_dst = s = 255 - *(rgb_src++); /* magenta */
if (s < k) k = s; if (s < k)
k = s;
s = 255 - *(rgb_src++); /* yellow */ s = 255 - *(rgb_src++); /* yellow */
if (s < k) k = s; if (s < k)
if (k) *magenta_dst -= k; k = s;
if (k)
*magenta_dst -= k;
magenta_dst++; magenta_dst++;
rgb_src += offset; rgb_src += offset;
@ -860,10 +925,14 @@ static void extract_magentak (unsigned char *src, int bpp, int numpix,
} }
static void extract_yellowk (unsigned char *src, int bpp, int numpix, static void
extract_yellowk (unsigned char *src,
int bpp,
int numpix,
unsigned char **dst) unsigned char **dst)
{register unsigned char *rgb_src = src; {
register unsigned char *rgb_src = src;
register unsigned char *yellow_dst = dst[0]; register unsigned char *yellow_dst = dst[0];
register unsigned char s, k; register unsigned char s, k;
register int count = numpix, offset = bpp-3; register int count = numpix, offset = bpp-3;
@ -874,8 +943,10 @@ static void extract_yellowk (unsigned char *src, int bpp, int numpix,
s = 255 - *(rgb_src++); /* magenta */ s = 255 - *(rgb_src++); /* magenta */
if (s < k) k = s; if (s < k) k = s;
*yellow_dst = s = 255 - *(rgb_src++); *yellow_dst = s = 255 - *(rgb_src++);
if (s < k) k = s; if (s < k)
if (k) *yellow_dst -= k; k = s;
if (k)
*yellow_dst -= k;
yellow_dst++; yellow_dst++;
rgb_src += offset; rgb_src += offset;