1use gdk_sys;
6use glib::translate::*;
7use std::fmt;
8use std::mem;
9use ByteOrder;
10use Screen;
11use VisualType;
12
13glib_wrapper! {
14 pub struct Visual(Object<gdk_sys::GdkVisual, VisualClass>);
15
16 match fn {
17 get_type => || gdk_sys::gdk_visual_get_type(),
18 }
19}
20
21impl Visual {
22 #[cfg_attr(feature = "v3_22", deprecated)]
23 pub fn get_bits_per_rgb(&self) -> i32 {
24 unsafe { gdk_sys::gdk_visual_get_bits_per_rgb(self.to_glib_none().0) }
25 }
26
27 pub fn get_blue_pixel_details(&self) -> (u32, i32, i32) {
28 unsafe {
29 let mut mask = mem::uninitialized();
30 let mut shift = mem::uninitialized();
31 let mut precision = mem::uninitialized();
32 gdk_sys::gdk_visual_get_blue_pixel_details(
33 self.to_glib_none().0,
34 &mut mask,
35 &mut shift,
36 &mut precision,
37 );
38 (mask, shift, precision)
39 }
40 }
41
42 #[cfg_attr(feature = "v3_22", deprecated)]
43 pub fn get_byte_order(&self) -> ByteOrder {
44 unsafe { from_glib(gdk_sys::gdk_visual_get_byte_order(self.to_glib_none().0)) }
45 }
46
47 #[cfg_attr(feature = "v3_22", deprecated)]
48 pub fn get_colormap_size(&self) -> i32 {
49 unsafe { gdk_sys::gdk_visual_get_colormap_size(self.to_glib_none().0) }
50 }
51
52 pub fn get_depth(&self) -> i32 {
53 unsafe { gdk_sys::gdk_visual_get_depth(self.to_glib_none().0) }
54 }
55
56 pub fn get_green_pixel_details(&self) -> (u32, i32, i32) {
57 unsafe {
58 let mut mask = mem::uninitialized();
59 let mut shift = mem::uninitialized();
60 let mut precision = mem::uninitialized();
61 gdk_sys::gdk_visual_get_green_pixel_details(
62 self.to_glib_none().0,
63 &mut mask,
64 &mut shift,
65 &mut precision,
66 );
67 (mask, shift, precision)
68 }
69 }
70
71 pub fn get_red_pixel_details(&self) -> (u32, i32, i32) {
72 unsafe {
73 let mut mask = mem::uninitialized();
74 let mut shift = mem::uninitialized();
75 let mut precision = mem::uninitialized();
76 gdk_sys::gdk_visual_get_red_pixel_details(
77 self.to_glib_none().0,
78 &mut mask,
79 &mut shift,
80 &mut precision,
81 );
82 (mask, shift, precision)
83 }
84 }
85
86 pub fn get_screen(&self) -> Screen {
87 unsafe { from_glib_none(gdk_sys::gdk_visual_get_screen(self.to_glib_none().0)) }
88 }
89
90 pub fn get_visual_type(&self) -> VisualType {
91 unsafe { from_glib(gdk_sys::gdk_visual_get_visual_type(self.to_glib_none().0)) }
92 }
93
94 #[cfg_attr(feature = "v3_22", deprecated)]
95 pub fn get_best() -> Visual {
96 assert_initialized_main_thread!();
97 unsafe { from_glib_none(gdk_sys::gdk_visual_get_best()) }
98 }
99
100 #[cfg_attr(feature = "v3_22", deprecated)]
101 pub fn get_best_depth() -> i32 {
102 assert_initialized_main_thread!();
103 unsafe { gdk_sys::gdk_visual_get_best_depth() }
104 }
105
106 #[cfg_attr(feature = "v3_22", deprecated)]
107 pub fn get_best_type() -> VisualType {
108 assert_initialized_main_thread!();
109 unsafe { from_glib(gdk_sys::gdk_visual_get_best_type()) }
110 }
111
112 #[cfg_attr(feature = "v3_22", deprecated)]
113 pub fn get_best_with_both(depth: i32, visual_type: VisualType) -> Option<Visual> {
114 assert_initialized_main_thread!();
115 unsafe {
116 from_glib_none(gdk_sys::gdk_visual_get_best_with_both(
117 depth,
118 visual_type.to_glib(),
119 ))
120 }
121 }
122
123 #[cfg_attr(feature = "v3_22", deprecated)]
124 pub fn get_best_with_depth(depth: i32) -> Option<Visual> {
125 assert_initialized_main_thread!();
126 unsafe { from_glib_none(gdk_sys::gdk_visual_get_best_with_depth(depth)) }
127 }
128
129 #[cfg_attr(feature = "v3_22", deprecated)]
130 pub fn get_best_with_type(visual_type: VisualType) -> Option<Visual> {
131 assert_initialized_main_thread!();
132 unsafe {
133 from_glib_none(gdk_sys::gdk_visual_get_best_with_type(
134 visual_type.to_glib(),
135 ))
136 }
137 }
138
139 #[cfg_attr(feature = "v3_22", deprecated)]
140 pub fn get_system() -> Visual {
141 assert_initialized_main_thread!();
142 unsafe { from_glib_none(gdk_sys::gdk_visual_get_system()) }
143 }
144}
145
146impl fmt::Display for Visual {
147 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
148 write!(f, "Visual")
149 }
150}