1 
2 #ifndef __CS_SCREEN_H
3 #define __CS_SCREEN_H
4 
5 #include <gtk/gtk.h>
6 #include <gdk/gdk.h>
7 #include <gdk/gdkx.h>
8 
9 G_BEGIN_DECLS
10 
11 #define CS_TYPE_SCREEN         (cs_screen_get_type ())
12 #define CS_SCREEN(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), CS_TYPE_SCREEN, CsScreen))
13 #define CS_SCREEN_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), CS_TYPE_SCREEN, CsScreenClass))
14 #define CS_IS_SCREEN(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), CS_TYPE_SCREEN))
15 #define CS_IS_SCREEN_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), CS_TYPE_SCREEN))
16 #define CS_SCREEN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), CS_TYPE_SCREEN, CsScreenClass))
17 
18 typedef struct _CsMonitorInfo CsMonitorInfo;
19 
20 struct _CsMonitorInfo
21 {
22   int number;
23   GdkRectangle rect;
24   gboolean is_primary;
25   XID output; /* The primary or first output for this crtc, None if no xrandr */
26 };
27 
28 typedef struct
29 {
30     GObject        obj;
31 
32     GdkRectangle rect;
33 
34     GdkScreen     *gdk_screen;
35 
36     CsMonitorInfo *monitor_infos;
37 
38     gint primary_monitor_index;
39     gint n_monitor_infos;
40 
41     gulong monitors_changed_id;
42     gulong screen_size_changed_id;
43     gulong composited_changed_id;
44 
45     gboolean low_res;
46     gint smallest_width;
47     gint smallest_height;
48 } CsScreen;
49 
50 typedef struct
51 {
52     GObjectClass    parent_class;
53 } CsScreenClass;
54 
55 GType                        cs_screen_get_type           (void);
56 
57 CsScreen                    *cs_screen_new (gboolean debug);
58 
59 void                         cs_screen_get_monitor_geometry (CsScreen     *screen,
60                                                              gint          monitor,
61                                                              GdkRectangle *geometry);
62 
63 void                         cs_screen_get_screen_geometry (CsScreen     *screen,
64                                                             GdkRectangle *geometry);
65 
66 gint                         cs_screen_get_primary_monitor (CsScreen *screen);
67 
68 gint                         cs_screen_get_n_monitors (CsScreen *screen);
69 
70 gint                         cs_screen_get_mouse_monitor (CsScreen *screen);
71 
72 gboolean                     cs_screen_get_low_res_mode (CsScreen *screen);
73 
74 void                         cs_screen_get_smallest_monitor_sizes (CsScreen *screen,
75                                                                    gint     *width,
76                                                                    gint     *height);
77 
78 void                         cs_screen_place_pointer_in_primary_monitor (CsScreen *screen);
79 
80 void                         cs_screen_reset_screensaver (void);
81 
82 void                         cs_screen_nuke_focus (void);
83 
84 G_END_DECLS
85 
86 #endif /* __CS_SCREEN_H */
87