1997-11-25 06:05:25 +08:00
|
|
|
/* The GIMP -- an image manipulation program
|
|
|
|
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
1998-04-13 13:44:11 +08:00
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
1997-11-25 06:05:25 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __PAINT_FUNCS_H__
|
|
|
|
#define __PAINT_FUNCS_H__
|
|
|
|
|
|
|
|
|
|
|
|
/* Called initially to setup accelerated rendering features */
|
|
|
|
void paint_funcs_setup (void);
|
|
|
|
void paint_funcs_free (void);
|
|
|
|
|
|
|
|
|
|
|
|
/* Paint functions */
|
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void color_pixels (guchar *dest, const guchar *color,
|
|
|
|
guint w, guint bytes);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void blend_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
guchar blend, guint w,
|
|
|
|
guint bytes, guint has_alpha);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void shade_pixels (const guchar *src, guchar *dest,
|
|
|
|
const guchar *color,
|
|
|
|
guchar rblend, guint w,
|
|
|
|
guint bytes, guint has_alpha);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void extract_alpha_pixels (const guchar *src,
|
|
|
|
const guchar *mask,
|
|
|
|
guchar *dest,
|
|
|
|
guint w, guint bytes);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void swap_pixels (guchar *src, guchar *dest,
|
|
|
|
guint length);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void scale_pixels (const guchar *src, guchar *dest,
|
|
|
|
guint length, int scale);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void add_alpha_pixels (const guchar *src, guchar *dest,
|
|
|
|
guint length, guint bytes);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void flatten_pixels (const guchar *src, guchar *dest,
|
|
|
|
const guchar *bg, guint length, guint bytes);
|
1998-09-15 09:53:40 +08:00
|
|
|
|
2001-11-28 06:40:58 +08:00
|
|
|
void gray_to_rgb_pixels (const guchar *src, guchar *dest,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
/* apply the mask data to the alpha channel of the pixel data */
|
2001-11-28 06:40:58 +08:00
|
|
|
void apply_mask_to_alpha_channel (guchar *src,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine the mask data with the alpha channel of the pixel data */
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_mask_and_alpha_channel (guchar *src,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
/* copy gray pixels to intensity-alpha pixels. This function
|
|
|
|
* essentially takes a source that is only a grayscale image and
|
|
|
|
* copies it to the destination, expanding to RGB if necessary and
|
|
|
|
* adding an alpha channel. (OPAQUE)
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void copy_gray_to_inten_a_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* lay down the initial pixels in the case of only one
|
|
|
|
* channel being visible and no layers...In this singular
|
|
|
|
* case, we want to display a grayscale image w/o transparency
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void initial_channel_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* lay down the initial pixels in the case of an indexed image.
|
|
|
|
* This process obviously requires no composition
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void initial_indexed_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *cmap,
|
|
|
|
guint length);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* lay down the initial pixels in the case of an indexed image.
|
|
|
|
* This process obviously requires no composition
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void initial_indexed_a_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
const guchar *cmap,
|
|
|
|
guint opacity, guint length);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* lay down the initial pixels for the base layer.
|
|
|
|
* This process obviously requires no composition.
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void initial_inten_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, const int *affect,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* lay down the initial pixels for the base layer.
|
|
|
|
* This process obviously requires no composition.
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void initial_inten_a_pixels (const guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, const int *affect,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine indexed images with an optional mask which
|
|
|
|
* is interpreted as binary...destination is indexed...
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_indexed_and_indexed_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, const int *affect,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine indexed images with indexed-alpha images
|
|
|
|
* result is an indexed image
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_indexed_and_indexed_a_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity,
|
|
|
|
const int *affect,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine indexed-alpha images with indexed-alpha images
|
|
|
|
* result is an indexed-alpha image. use this for painting
|
|
|
|
* to an indexed floating sel
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_indexed_a_and_indexed_a_pixels(const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity,
|
1998-09-15 09:53:40 +08:00
|
|
|
const int *affect,
|
2001-11-28 06:40:58 +08:00
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine intensity with indexed, destination is
|
|
|
|
* intensity-alpha...use this for an indexed floating sel
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_a_and_indexed_a_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
const guchar *cmap,
|
|
|
|
guint opacity,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine RGB image with RGB or GRAY with GRAY
|
|
|
|
* destination is intensity-only...
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_and_inten_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity,
|
|
|
|
const gboolean *affect,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine an RGBA or GRAYA image with an RGB or GRAY image
|
|
|
|
* destination is intensity-only...
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_and_inten_a_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity,
|
|
|
|
const gboolean *affect,
|
|
|
|
guint length, guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine an RGB or GRAY image with an RGBA or GRAYA image
|
|
|
|
* destination is intensity-alpha...
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_a_and_inten_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity, const int *affect,
|
|
|
|
guint mode_affect, guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine an RGBA or GRAYA image with an RGBA or GRAYA image
|
|
|
|
* destination is of course intensity-alpha...
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_a_and_inten_a_pixels (const guchar *src1,
|
|
|
|
const guchar *src2,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
guint opacity,
|
|
|
|
const gboolean *affect,
|
|
|
|
guint mode_affect,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* combine a channel with intensity-alpha pixels based
|
|
|
|
* on some opacity, and a channel color...
|
|
|
|
* destination is intensity-alpha
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_inten_a_and_channel_mask_pixels(const guchar *src,
|
|
|
|
const guchar *channel,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *col,
|
|
|
|
guint opacity,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
|
|
|
|
|
|
|
void combine_inten_a_and_channel_selection_pixels(const guchar *src,
|
|
|
|
const guchar *channel,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *col,
|
|
|
|
guint opacity,
|
|
|
|
guint length,
|
|
|
|
guint bytes);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* extract information from intensity pixels based on
|
|
|
|
* a mask.
|
|
|
|
*/
|
2001-11-28 06:40:58 +08:00
|
|
|
void extract_from_inten_pixels (guchar *src,
|
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
const guchar *bg,
|
|
|
|
guint cut,
|
|
|
|
guint length,
|
|
|
|
guint bytes,
|
|
|
|
guint has_alpha);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* extract information from indexed pixels based on
|
|
|
|
* a mask.
|
|
|
|
*/
|
2002-02-12 19:32:56 +08:00
|
|
|
void extract_from_indexed_pixels (guchar *src,
|
2001-11-28 06:40:58 +08:00
|
|
|
guchar *dest,
|
|
|
|
const guchar *mask,
|
|
|
|
const guchar *cmap,
|
|
|
|
const guchar *bg,
|
|
|
|
guint cut,
|
|
|
|
guint length,
|
|
|
|
guint bytes,
|
|
|
|
guint has_alpha);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
/* variable source to RGB color mapping
|
|
|
|
* src_type == 0 (RGB)
|
|
|
|
* src_type == 1 (GRAY)
|
|
|
|
* src_type == 2 (INDEXED)
|
|
|
|
*/
|
2002-02-12 19:32:56 +08:00
|
|
|
void map_to_color (guint src_type,
|
2001-11-28 06:40:58 +08:00
|
|
|
const guchar *cmap,
|
|
|
|
const guchar *src,
|
|
|
|
guchar *rgb);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* Region functions */
|
1998-09-15 09:53:40 +08:00
|
|
|
void color_region (PixelRegion *dest,
|
2001-11-28 06:40:58 +08:00
|
|
|
const guchar *color);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
|
|
|
|
void blend_region (PixelRegion *, PixelRegion *,
|
|
|
|
PixelRegion *, int);
|
|
|
|
|
|
|
|
void shade_region (PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
guchar *, int);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
void copy_region (PixelRegion *, PixelRegion *);
|
|
|
|
|
|
|
|
void add_alpha_region (PixelRegion *, PixelRegion *);
|
|
|
|
|
|
|
|
void flatten_region (PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
guchar *);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
void extract_alpha_region (PixelRegion *, PixelRegion *,
|
|
|
|
PixelRegion *);
|
|
|
|
|
|
|
|
void extract_from_region (PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
PixelRegion *, guchar *,
|
|
|
|
guchar *, guint, guint, guint);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
|
Actually use the enum types GimpImageType, GimpImageBaseType,
* app/*.[ch]: Actually use the enum types GimpImageType,
GimpImageBaseType, LayerModeEffects, PaintApplicationMode,
BrushApplicationMode, GimpFillType and ConvertPaletteType, instead
of just int or gint. Hopefully I catched most of the places
where these should be used.
Add an enum ConvolutionType, suffix the too general constants
NORMAL, ABSOLUTE and NEGATIVE with _CONVOL. Use NORMAL_MODE
instead of NORMAL in some places (this was what was intended). Fix
some minor gccisms.
* app/apptypes.h: New file. This file contains the above
enumeration types, and some opaque struct typedefs. It was
necessary to collect these in one header that doesn't include
other headers, because when we started using the above mentioned
types in the headers, all hell broke loose because of the
spaghetti-like cross-inclusion mess between headers.
(An example: Header A includes header B, which includes header C
which includes A. B uses a type defined in A. This is not defined,
because A hasn't defined it yet at the point where it includes B,
and A included from B of course is skipped as we already are
reading A.)
1999-08-19 07:41:39 +08:00
|
|
|
void convolve_region (PixelRegion *,
|
|
|
|
PixelRegion *,
|
|
|
|
int *, int, int,
|
2001-12-09 07:12:59 +08:00
|
|
|
GimpConvolutionType);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
1997-12-08 09:13:10 +08:00
|
|
|
void multiply_alpha_region (PixelRegion *);
|
|
|
|
|
|
|
|
void separate_alpha_region (PixelRegion *);
|
|
|
|
|
1999-05-07 07:10:29 +08:00
|
|
|
void gaussian_blur_region (PixelRegion *, double, double);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
1999-05-05 17:10:35 +08:00
|
|
|
void border_region (PixelRegion *, gint16, gint16);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2002-02-12 10:31:45 +08:00
|
|
|
void scale_region (PixelRegion *, PixelRegion *,
|
|
|
|
GimpInterpolationType);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
void subsample_region (PixelRegion *, PixelRegion *,
|
|
|
|
int);
|
|
|
|
|
|
|
|
float shapeburst_region (PixelRegion *, PixelRegion *);
|
|
|
|
|
2002-02-12 19:32:56 +08:00
|
|
|
void thin_region (PixelRegion *, gint16 xradius,
|
|
|
|
gint16 yradius, int edge_lock);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
2002-02-12 19:32:56 +08:00
|
|
|
void fatten_region (PixelRegion *,
|
|
|
|
gint16 xradius, gint16 yradius);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
void swap_region (PixelRegion *, PixelRegion *);
|
|
|
|
|
|
|
|
|
|
|
|
/* Apply a mask to an image's alpha channel */
|
2001-11-28 06:40:58 +08:00
|
|
|
void apply_mask_to_region (PixelRegion *, PixelRegion *, guint);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* Combine a mask with an image's alpha channel */
|
2001-11-28 06:40:58 +08:00
|
|
|
void combine_mask_and_region (PixelRegion *, PixelRegion *, guint);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
/* Copy a gray image to an intensity-alpha region */
|
|
|
|
void copy_gray_to_region (PixelRegion *, PixelRegion *);
|
|
|
|
|
|
|
|
|
Actually use the enum types GimpImageType, GimpImageBaseType,
* app/*.[ch]: Actually use the enum types GimpImageType,
GimpImageBaseType, LayerModeEffects, PaintApplicationMode,
BrushApplicationMode, GimpFillType and ConvertPaletteType, instead
of just int or gint. Hopefully I catched most of the places
where these should be used.
Add an enum ConvolutionType, suffix the too general constants
NORMAL, ABSOLUTE and NEGATIVE with _CONVOL. Use NORMAL_MODE
instead of NORMAL in some places (this was what was intended). Fix
some minor gccisms.
* app/apptypes.h: New file. This file contains the above
enumeration types, and some opaque struct typedefs. It was
necessary to collect these in one header that doesn't include
other headers, because when we started using the above mentioned
types in the headers, all hell broke loose because of the
spaghetti-like cross-inclusion mess between headers.
(An example: Header A includes header B, which includes header C
which includes A. B uses a type defined in A. This is not defined,
because A hasn't defined it yet at the point where it includes B,
and A included from B of course is skipped as we already are
reading A.)
1999-08-19 07:41:39 +08:00
|
|
|
void initial_region (PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
PixelRegion *, guchar *,
|
2001-12-09 07:12:59 +08:00
|
|
|
int, GimpLayerModeEffects, int *,
|
2001-11-20 01:21:03 +08:00
|
|
|
CombinationMode);
|
Actually use the enum types GimpImageType, GimpImageBaseType,
* app/*.[ch]: Actually use the enum types GimpImageType,
GimpImageBaseType, LayerModeEffects, PaintApplicationMode,
BrushApplicationMode, GimpFillType and ConvertPaletteType, instead
of just int or gint. Hopefully I catched most of the places
where these should be used.
Add an enum ConvolutionType, suffix the too general constants
NORMAL, ABSOLUTE and NEGATIVE with _CONVOL. Use NORMAL_MODE
instead of NORMAL in some places (this was what was intended). Fix
some minor gccisms.
* app/apptypes.h: New file. This file contains the above
enumeration types, and some opaque struct typedefs. It was
necessary to collect these in one header that doesn't include
other headers, because when we started using the above mentioned
types in the headers, all hell broke loose because of the
spaghetti-like cross-inclusion mess between headers.
(An example: Header A includes header B, which includes header C
which includes A. B uses a type defined in A. This is not defined,
because A hasn't defined it yet at the point where it includes B,
and A included from B of course is skipped as we already are
reading A.)
1999-08-19 07:41:39 +08:00
|
|
|
|
|
|
|
void combine_regions (PixelRegion *, PixelRegion *,
|
|
|
|
PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
guchar *, guint,
|
2001-12-09 07:12:59 +08:00
|
|
|
GimpLayerModeEffects,
|
2001-11-20 01:21:03 +08:00
|
|
|
int *, CombinationMode);
|
Actually use the enum types GimpImageType, GimpImageBaseType,
* app/*.[ch]: Actually use the enum types GimpImageType,
GimpImageBaseType, LayerModeEffects, PaintApplicationMode,
BrushApplicationMode, GimpFillType and ConvertPaletteType, instead
of just int or gint. Hopefully I catched most of the places
where these should be used.
Add an enum ConvolutionType, suffix the too general constants
NORMAL, ABSOLUTE and NEGATIVE with _CONVOL. Use NORMAL_MODE
instead of NORMAL in some places (this was what was intended). Fix
some minor gccisms.
* app/apptypes.h: New file. This file contains the above
enumeration types, and some opaque struct typedefs. It was
necessary to collect these in one header that doesn't include
other headers, because when we started using the above mentioned
types in the headers, all hell broke loose because of the
spaghetti-like cross-inclusion mess between headers.
(An example: Header A includes header B, which includes header C
which includes A. B uses a type defined in A. This is not defined,
because A hasn't defined it yet at the point where it includes B,
and A included from B of course is skipped as we already are
reading A.)
1999-08-19 07:41:39 +08:00
|
|
|
|
|
|
|
void combine_regions_replace (PixelRegion *, PixelRegion *,
|
|
|
|
PixelRegion *, PixelRegion *,
|
2001-11-28 06:40:58 +08:00
|
|
|
guchar *,
|
2001-11-20 01:21:03 +08:00
|
|
|
guint, int *, CombinationMode);
|
1997-11-25 06:05:25 +08:00
|
|
|
|
|
|
|
#endif /* __PAINT_FUNCS_H__ */
|