]> Pileus Git - ~andy/gtk/blob - gdk/gdkcc.h
moved back to a sane value!
[~andy/gtk] / gdk / gdkcc.h
1 #ifndef __GDK_CC_H__
2 #define __GDK_CC_H__
3
4 #include <gdk/gdktypes.h>
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* __cplusplus */
9
10 typedef struct _GdkColorContextDither GdkColorContextDither;
11 typedef struct _GdkColorContext GdkColorContext;
12
13
14 /* Color Context modes.
15  *
16  * GDK_CC_MODE_UNDEFINED - unknown
17  * GDK_CC_MODE_BW        - default B/W
18  * GDK_CC_MODE_STD_CMAP  - has a standard colormap
19  * GDK_CC_MODE_TRUE      - is a TrueColor/DirectColor visual
20  * GDK_CC_MODE_MY_GRAY   - my grayramp
21  * GDK_CC_MODE_PALETTE   - has a pre-allocated palette
22  */ 
23
24 typedef enum
25 {
26   GDK_CC_MODE_UNDEFINED,
27   GDK_CC_MODE_BW,
28   GDK_CC_MODE_STD_CMAP,
29   GDK_CC_MODE_TRUE,
30   GDK_CC_MODE_MY_GRAY,
31   GDK_CC_MODE_PALETTE
32 } GdkColorContextMode;
33
34 struct _GdkColorContextDither
35 {
36   gint fast_rgb[32][32][32]; /* quick look-up table for faster rendering */
37   gint fast_err[32][32][32]; /* internal RGB error information */
38   gint fast_erg[32][32][32];
39   gint fast_erb[32][32][32];
40 };
41
42 struct _GdkColorContext
43 {
44   GdkVisual *visual;
45   GdkColormap *colormap;
46
47   gint num_colors;              /* available no. of colors in colormap */
48   gint max_colors;              /* maximum no. of colors */
49   gint num_allocated;           /* no. of allocated colors */
50
51   GdkColorContextMode mode;
52   gint need_to_free_colormap;
53   GdkAtom std_cmap_atom;
54
55   gulong *clut;                 /* color look-up table */
56   GdkColor *cmap;               /* colormap */
57
58   GHashTable *color_hash;       /* hash table of allocated colors */
59   GdkColor *palette;            /* preallocated palette */
60   gint num_palette;             /* size of palette */
61
62   GdkColorContextDither *fast_dither;   /* fast dither matrix */
63
64   struct
65   {
66     gint red;
67     gint green;
68     gint blue;
69   } shifts;
70
71   struct
72   {
73     gulong red;
74     gulong green;
75     gulong blue;
76   } masks;
77
78   struct
79   {
80     gint red;
81     gint green;
82     gint blue;
83   } bits;
84
85   gulong max_entry;
86
87   gulong black_pixel;
88   gulong white_pixel;
89 };
90
91 GdkColorContext *gdk_color_context_new                    (GdkVisual   *visual,
92                                                            GdkColormap *colormap);
93
94 GdkColorContext *gdk_color_context_new_mono               (GdkVisual   *visual,
95                                                            GdkColormap *colormap);
96
97 void             gdk_color_context_free                   (GdkColorContext *cc);
98
99 gulong           gdk_color_context_get_pixel              (GdkColorContext *cc,
100                                                            gushort          red,
101                                                            gushort          green,
102                                                            gushort          blue,
103                                                            gint            *failed);
104 void             gdk_color_context_get_pixels             (GdkColorContext *cc,
105                                                            gushort         *reds,
106                                                            gushort         *greens,
107                                                            gushort         *blues,
108                                                            gint             ncolors,
109                                                            gulong          *colors,
110                                                            gint            *nallocated);
111 void             gdk_color_context_get_pixels_incremental (GdkColorContext *cc,
112                                                            gushort         *reds,
113                                                            gushort         *greens,
114                                                            gushort         *blues,
115                                                            gint             ncolors,
116                                                            gint            *used,
117                                                            gulong          *colors,
118                                                            gint            *nallocated);
119
120 gint             gdk_color_context_query_color            (GdkColorContext *cc,
121                                                            GdkColor        *color);
122 gint             gdk_color_context_query_colors           (GdkColorContext *cc,
123                                                            GdkColor        *colors,
124                                                            gint             num_colors);
125
126 gint             gdk_color_context_add_palette            (GdkColorContext *cc,
127                                                            GdkColor        *palette,
128                                                            gint             num_palette);
129
130 void             gdk_color_context_init_dither            (GdkColorContext *cc);
131 void             gdk_color_context_free_dither            (GdkColorContext *cc);
132
133 gulong           gdk_color_context_get_pixel_from_palette (GdkColorContext *cc,
134                                                            gushort         *red,
135                                                            gushort         *green,
136                                                            gushort         *blue,
137                                                            gint            *failed);
138 guchar           gdk_color_context_get_index_from_palette (GdkColorContext *cc,
139                                                            gint            *red,
140                                                            gint            *green,
141                                                            gint            *blue,
142                                                            gint            *failed);
143
144
145 #ifdef __cplusplus
146 }
147 #endif /* __cplusplus */
148
149 #endif /* __GDK_CC_H__ */