summaryrefslogtreecommitdiff
path: root/gdk/gdkvisual.h
blob: f081ab27d927024b05084685d00d8ea11bdcfcdb (plain)
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
#ifndef __GDK_VISUAL_H__
#define __GDK_VISUAL_H__

#include <gdk/gdktypes.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#define GDK_TYPE_VISUAL gdk_visual_get_type ()

/* Types of visuals.
 *   StaticGray:
 *   Grayscale:
 *   StaticColor:
 *   PseudoColor:
 *   TrueColor:
 *   DirectColor:
 */
typedef enum
{
  GDK_VISUAL_STATIC_GRAY,
  GDK_VISUAL_GRAYSCALE,
  GDK_VISUAL_STATIC_COLOR,
  GDK_VISUAL_PSEUDO_COLOR,
  GDK_VISUAL_TRUE_COLOR,
  GDK_VISUAL_DIRECT_COLOR
} GdkVisualType;

/* The visual type.
 *   "type" is the type of visual this is (PseudoColor, TrueColor, etc).
 *   "depth" is the bit depth of this visual.
 *   "colormap_size" is the size of a colormap for this visual.
 *   "bits_per_rgb" is the number of significant bits per red, green and blue.
 *  The red, green and blue masks, shifts and precisions refer
 *   to value needed to calculate pixel values in TrueColor and DirectColor
 *   visuals. The "mask" is the significant bits within the pixel. The
 *   "shift" is the number of bits left we must shift a primary for it
 *   to be in position (according to the "mask"). "prec" refers to how
 *   much precision the pixel value contains for a particular primary.
 */
struct _GdkVisual
{
  GdkScreen *screen;
  GdkVisualType type;
  gint depth;
  GdkByteOrder byte_order;
  gint colormap_size;
  gint bits_per_rgb;

  guint32 red_mask;
  gint red_shift;
  gint red_prec;

  guint32 green_mask;
  gint green_shift;
  gint green_prec;

  guint32 blue_mask;
  gint blue_shift;
  gint blue_prec;
};

GType         gdk_visual_get_type		   (void);
gint	      gdk_visual_get_best_depth_for_screen (GdkScreen * scr);
gint	      gdk_visual_get_best_depth		   (void);
GdkVisualType gdk_visual_get_best_type_for_screen  (GdkScreen * scr);
GdkVisualType gdk_visual_get_best_type	           (void);
GdkVisual*    gdk_visual_get_system	           (void);
GdkVisual*    gdk_visual_get_best_for_screen	   (GdkScreen * scr);
GdkVisual*    gdk_visual_get_best	           (void);
GdkVisual*    gdk_visual_get_best_with_depth_for_screen (GdkScreen * scr,
							 gint depth);
GdkVisual*    gdk_visual_get_best_with_depth (gint	     depth);
GdkVisual*    gdk_visual_get_best_with_type_for_screen (GdkScreen * scr,
							GdkVisualType visual_type);
GdkVisual*    gdk_visual_get_best_with_type  (GdkVisualType  visual_type);
GdkVisual*    gdk_visual_get_best_with_both_for_screen (GdkScreen * scr,
							gint depth,
						        GdkVisualType visual_type);
GdkVisual*    gdk_visual_get_best_with_both  (gint	     depth,
					      GdkVisualType  visual_type);

GdkVisual *   gdk_visual_get_system_for_screen (GdkScreen * scr);

/* Actually, these are no-ops... */
GdkVisual* gdk_visual_ref (GdkVisual *visual);
void	   gdk_visual_unref (GdkVisual *visual);

void gdk_query_depths_for_screen (GdkScreen * scr,
				  gint ** depths,
				  gint * count);

void gdk_query_depths	    (gint	    **depths,
			     gint	     *count);
void gdk_query_visual_types_for_screen (GdkScreen * scr,
					GdkVisualType ** visual_types,
					gint * count);
void gdk_query_visual_types (GdkVisualType  **visual_types,
			     gint	     *count);

GList* gdk_list_visuals (void);

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __GDK_VISUAL_H__ */