~ubuntu-branches/ubuntu/dapper/gimp/dapper-security

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* LIBGIMP - The GIMP Library
 * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#ifndef __GIMP_RGB_H__
#define __GIMP_RGB_H__

G_BEGIN_DECLS

/* For information look into the C source or the html documentation */


#define GIMP_TYPE_RGB               (gimp_rgb_get_type ())
#define GIMP_VALUE_HOLDS_RGB(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_RGB))

GType   gimp_rgb_get_type           (void) G_GNUC_CONST;


/*  RGB and RGBA color types and operations taken from LibGCK  */

typedef enum
{
  GIMP_RGB_COMPOSITE_NONE = 0,
  GIMP_RGB_COMPOSITE_NORMAL,
  GIMP_RGB_COMPOSITE_BEHIND
} GimpRGBCompositeMode;


void      gimp_rgb_set         (GimpRGB       *rgb,
                                gdouble        red,
                                gdouble        green,
                                gdouble        blue);
void      gimp_rgb_set_alpha   (GimpRGB       *rgb,
                                gdouble        alpha);

void      gimp_rgb_set_uchar   (GimpRGB       *rgb,
                                guchar         red,
                                guchar         green,
                                guchar         blue);
void      gimp_rgb_get_uchar   (const GimpRGB *rgb,
                                guchar        *red,
                                guchar        *green,
                                guchar        *blue);

gboolean  gimp_rgb_parse_name  (GimpRGB       *rgb,
                                const gchar   *name,
                                gint           len);
gboolean  gimp_rgb_parse_hex   (GimpRGB       *rgb,
                                const gchar   *hex,
                                gint           len);
gboolean  gimp_rgb_parse_css   (GimpRGB       *rgb,
                                const gchar   *css,
                                gint           len);

void      gimp_rgb_add         (GimpRGB       *rgb1,
                                const GimpRGB *rgb2);
void      gimp_rgb_subtract    (GimpRGB       *rgb1,
                                const GimpRGB *rgb2);
void      gimp_rgb_multiply    (GimpRGB       *rgb1,
                                gdouble        factor);
gdouble   gimp_rgb_distance    (const GimpRGB *rgb1,
                                const GimpRGB *rgb2);

gdouble   gimp_rgb_max         (const GimpRGB *rgb);
gdouble   gimp_rgb_min         (const GimpRGB *rgb);
void      gimp_rgb_clamp       (GimpRGB       *rgb);

void      gimp_rgb_gamma       (GimpRGB       *rgb,
 			        gdouble        gamma);

gdouble   gimp_rgb_intensity        (const GimpRGB *rgb);
guchar    gimp_rgb_intensity_uchar  (const GimpRGB *rgb);

void      gimp_rgb_composite   (GimpRGB              *color1,
                                const GimpRGB        *color2,
                                GimpRGBCompositeMode  mode);

/*  access to the list of color names  */
gint      gimp_rgb_list_names  (const gchar ***names,
                                GimpRGB      **colors);


void      gimp_rgba_set        (GimpRGB       *rgba,
                                gdouble        red,
                                gdouble        green,
                                gdouble        blue,
                                gdouble        alpha);

void      gimp_rgba_set_uchar  (GimpRGB       *rgba,
                                guchar         red,
                                guchar         green,
                                guchar         blue,
                                 guchar         alpha);
void      gimp_rgba_get_uchar  (const GimpRGB *rgba,
                                guchar        *red,
                                guchar        *green,
                                guchar        *blue,
                                guchar        *alpha);

gboolean  gimp_rgba_parse_css  (GimpRGB       *rgba,
                                const gchar   *css,
                                gint           len);

void      gimp_rgba_add        (GimpRGB       *rgba1,
                                const GimpRGB *rgba2);
void      gimp_rgba_subtract   (GimpRGB       *rgba1,
                                const GimpRGB *rgba2);
void      gimp_rgba_multiply   (GimpRGB       *rgba,
                                gdouble        factor);

gdouble   gimp_rgba_distance   (const GimpRGB *rgba1,
			        const GimpRGB *rgba2);



/*  Map RGB to intensity  */

#define GIMP_RGB_INTENSITY_RED    0.30
#define GIMP_RGB_INTENSITY_GREEN  0.59
#define GIMP_RGB_INTENSITY_BLUE   0.11
#define GIMP_RGB_INTENSITY(r,g,b) ((r) * GIMP_RGB_INTENSITY_RED   + \
			           (g) * GIMP_RGB_INTENSITY_GREEN + \
			           (b) * GIMP_RGB_INTENSITY_BLUE)


G_END_DECLS

#endif  /* __GIMP_RGB_H__ */