1 /*
2  * Copyright (c) 2004 by the gtk2-perl team (see the file AUTHORS)
3  *
4  * Licensed under the LGPL, see LICENSE file for more information.
5  *
6  * $Id$
7  */
8 
9 #include "gtk2perl.h"
10 
11 MODULE = Gtk2::Gdk::Visual	PACKAGE = Gtk2::Gdk	PREFIX = gdk_
12 
13 =for apidoc
14 Returns a list of depths.
15 =cut
16 ## void gdk_query_depths (gint **depths, gint *count)
17 void
18 gdk_query_depths (class)
19     PREINIT:
20 	gint *depths = NULL;
21 	gint i, count = 0;
22     PPCODE:
23 	gdk_query_depths (&depths, &count);
24 
25 	if (count <= 0 || depths == NULL)
26 		XSRETURN_EMPTY;
27 
28 	EXTEND (sp, count);
29 
30 	for (i = 0; i < count; i++)
31 		PUSHs (sv_2mortal (newSViv (depths[i])));
32 
33 ## void gdk_query_visual_types (GdkVisualType **visual_types, gint *count)
34 void
35 gdk_query_visual_types (class)
36     PREINIT:
37 	GdkVisualType *visual_types = NULL;
38 	gint i, count = 0;
39     PPCODE:
40 	gdk_query_visual_types (&visual_types, &count);
41 
42 	if (count <= 0 || visual_types == NULL)
43 		XSRETURN_EMPTY;
44 
45 	EXTEND (sp, count);
46 
47 	for (i = 0; i < count; i++)
48 		PUSHs (sv_2mortal (newSVGdkVisualType (visual_types[i])));
49 
50 ## GList* gdk_list_visuals (void)
51 void
52 gdk_list_visuals (class)
53     PREINIT:
54 	GList *i, *visuals = NULL;
55     PPCODE:
56 	PERL_UNUSED_VAR (ax);
57 	visuals = gdk_list_visuals ();
58 	for (i = visuals; i != NULL; i = i->next)
59 		XPUSHs (sv_2mortal (newSVGdkVisual (i->data)));
60 	g_list_free (visuals);
61 
62 MODULE = Gtk2::Gdk::Visual	PACKAGE = Gtk2::Gdk::Visual	PREFIX = gdk_visual_
63 
64 ## gint gdk_visual_get_best_depth (void)
65 gint
66 gdk_visual_get_best_depth (class)
67     C_ARGS:
68 	/* void */
69 
70 ## GdkVisualType gdk_visual_get_best_type (void)
71 GdkVisualType
72 gdk_visual_get_best_type (class)
73     C_ARGS:
74 	/* void */
75 
76 ## GdkVisual* gdk_visual_get_system (void)
77 GdkVisual*
78 gdk_visual_get_system (class)
79     C_ARGS:
80 	/* void */
81 
82 ## GdkVisual* gdk_visual_get_best (void)
83 GdkVisual*
84 gdk_visual_get_best (class)
85     C_ARGS:
86 	/* void */
87 
88 ## GdkVisual* gdk_visual_get_best_with_depth (gint depth)
89 GdkVisual_ornull*
90 gdk_visual_get_best_with_depth (class, depth)
91 	gint depth
92     C_ARGS:
93 	depth
94 
95 ## GdkVisual* gdk_visual_get_best_with_type (GdkVisualType visual_type)
96 GdkVisual_ornull*
97 gdk_visual_get_best_with_type (class, visual_type)
98 	GdkVisualType visual_type
99     C_ARGS:
100 	visual_type
101 
102 ## GdkVisual* gdk_visual_get_best_with_both (gint depth, GdkVisualType visual_type)
103 GdkVisual_ornull*
104 gdk_visual_get_best_with_both (class, depth, visual_type)
105 	gint depth
106 	GdkVisualType visual_type
107     C_ARGS:
108 	depth, visual_type
109 
110 #if GTK_CHECK_VERSION(2, 2, 0)
111 
112 ## GdkScreen* gdk_visual_get_screen (GdkVisual *visual)
113 GdkScreen*
114 gdk_visual_get_screen (visual)
115 	GdkVisual *visual
116 
117 #endif
118 
119 # --------------------------------------------------------------------------- #
120 
121 GdkVisualType
122 type (visual)
123 	GdkVisual *visual
124     CODE:
125 	RETVAL = visual->type;
126     OUTPUT:
127 	RETVAL
128 
129 GdkByteOrder
130 byte_order (visual)
131 	GdkVisual *visual
132     CODE:
133 	RETVAL = visual->byte_order;
134     OUTPUT:
135 	RETVAL
136 
137 gint
138 depth (visual)
139 	GdkVisual *visual
140     ALIAS:
141 	colormap_size = 1
142 	bits_per_rgb = 2
143 	red_shift = 3
144 	red_prec = 4
145 	green_shift = 5
146 	green_prec = 6
147 	blue_shift = 7
148 	blue_prec = 8
149     CODE:
150 	RETVAL = 0; /* -W */
151 	switch (ix) {
152 		case 0: RETVAL = visual->depth; break;
153 		case 1: RETVAL = visual->colormap_size; break;
154 		case 2: RETVAL = visual->bits_per_rgb; break;
155 		case 3: RETVAL = visual->red_shift; break;
156 		case 4: RETVAL = visual->red_prec; break;
157 		case 5: RETVAL = visual->green_shift; break;
158 		case 6: RETVAL = visual->green_prec; break;
159 		case 7: RETVAL = visual->blue_shift; break;
160 		case 8: RETVAL = visual->blue_prec; break;
161 		default: g_assert_not_reached ();
162 	}
163     OUTPUT:
164 	RETVAL
165 
166 guint32
167 red_mask (visual)
168 	GdkVisual *visual
169     ALIAS:
170 	green_mask = 1
171 	blue_mask = 2
172     CODE:
173 	RETVAL = 0; /* -W */
174 	switch (ix) {
175 		case 0: RETVAL = visual->red_mask; break;
176 		case 1: RETVAL = visual->green_mask; break;
177 		case 2: RETVAL = visual->blue_mask; break;
178 		default: g_assert_not_reached();
179 	}
180     OUTPUT:
181 	RETVAL
182 
183 #if GTK_CHECK_VERSION (2, 22, 0)
184 
185 void gdk_visual_get_blue_pixel_details (GdkVisual *visual, OUTLIST guint32 mask, OUTLIST gint shift, OUTLIST gint precision);
186 
187 void gdk_visual_get_green_pixel_details (GdkVisual *visual, OUTLIST guint32 mask, OUTLIST gint shift, OUTLIST gint precision);
188 
189 void gdk_visual_get_red_pixel_details (GdkVisual *visual, OUTLIST guint32 mask, OUTLIST gint shift, OUTLIST gint precision);
190 
191 gint gdk_visual_get_bits_per_rgb (GdkVisual *visual);
192 
193 GdkByteOrder gdk_visual_get_byte_order (GdkVisual *visual);
194 
195 gint gdk_visual_get_colormap_size (GdkVisual *visual);
196 
197 gint gdk_visual_get_depth (GdkVisual *visual);
198 
199 GdkVisualType gdk_visual_get_visual_type (GdkVisual *visual);
200 
201 #endif /* 2.22 */
202