]> Pileus Git - ~andy/gtk/blob - gdk/win32/gdkscreen-win32.c
6ee2242a22df78c04bd6a36f17c3927ac3994d00
[~andy/gtk] / gdk / win32 / gdkscreen-win32.c
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2002 Hans Breuer
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 #include "config.h"
21 #include "gdk.h"
22 #include "gdkprivate-win32.h"
23 #include "gdkscreenprivate.h"
24 #include "gdkwin32screen.h"
25
26 struct _GdkWin32Screen
27 {
28   GdkScreen parent_instance;
29 };
30
31 struct _GdkWin32ScreenClass
32 {
33   GdkScreenClass parent_class;
34 };
35
36 G_DEFINE_TYPE (GdkWin32Screen, gdk_win32_screen, GDK_TYPE_SCREEN)
37
38 static void
39 gdk_win32_screen_init (GdkWin32Screen *display)
40 {
41 }
42
43 static GdkDisplay *
44 gdk_win32_screen_get_display (GdkScreen *screen)
45 {
46   return _gdk_display;
47 }
48
49 static gint
50 gdk_win32_screen_get_width (GdkScreen *screen)
51 {
52   return GDK_WINDOW (_gdk_root)->width;
53 }
54
55 static gint
56 gdk_win32_screen_get_height (GdkScreen *screen)
57 {
58   return GDK_WINDOW (_gdk_root)->height;
59 }
60
61 static gint
62 gdk_win32_screen_get_width_mm (GdkScreen *screen)
63 {
64   return (double) gdk_screen_get_width (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSX) * 25.4;
65 }
66
67 static gint
68 gdk_win32_screen_get_height_mm (GdkScreen *screen)
69 {
70   return (double) gdk_screen_get_height (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY) * 25.4;
71 }
72
73 static GdkWindow *
74 gdk_win32_screen_get_root_window (GdkScreen *screen)
75 {
76   return _gdk_root;
77 }
78
79 static gint
80 gdk_win32_screen_get_n_monitors (GdkScreen *screen)
81 {
82   g_return_val_if_fail (screen == _gdk_screen, 0);
83
84   return _gdk_num_monitors;
85 }
86
87 static gint
88 gdk_win32_screen_get_primary_monitor (GdkScreen *screen)
89 {
90   g_return_val_if_fail (screen == _gdk_screen, 0);
91
92   return 0;
93 }
94
95 static gint
96 gdk_win32_screen_get_monitor_width_mm (GdkScreen *screen,
97                                        gint       num_monitor)
98 {
99   g_return_val_if_fail (screen == _gdk_screen, 0);
100   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
101
102   return _gdk_monitors[num_monitor].width_mm;
103 }
104
105 static gint
106 gdk_win32_screen_get_monitor_height_mm (GdkScreen *screen,
107                                         gint       num_monitor)
108 {
109   g_return_val_if_fail (screen == _gdk_screen, 0);
110   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
111
112   return _gdk_monitors[num_monitor].height_mm;
113 }
114
115 static gchar *
116 gdk_win32_screen_get_monitor_plug_name (GdkScreen *screen,
117                                         gint       num_monitor)
118 {
119   g_return_val_if_fail (screen == _gdk_screen, 0);
120   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
121
122   return g_strdup (_gdk_monitors[num_monitor].name);
123 }
124
125 static void
126 gdk_win32_screen_get_monitor_geometry (GdkScreen    *screen,
127                                        gint          num_monitor,
128                                        GdkRectangle *dest)
129 {
130   g_return_if_fail (screen == _gdk_screen);
131   g_return_if_fail (num_monitor < _gdk_num_monitors);
132
133   *dest = _gdk_monitors[num_monitor].rect;
134 }
135
136 static GdkVisual *
137 gdk_win32_screen_get_rgba_visual (GdkScreen *screen)
138 {
139   g_return_val_if_fail (screen == _gdk_screen, NULL);
140
141   return NULL;
142 }
143
144 static gint
145 gdk_win32_screen_get_number (GdkScreen *screen)
146 {
147   g_return_val_if_fail (screen == _gdk_screen, 0);
148
149   return 0;
150 }
151
152 gchar *
153 _gdk_windowing_substitute_screen_number (const gchar *display_name,
154                                          int          screen_number)
155 {
156   if (screen_number != 0)
157     return NULL;
158
159   return g_strdup (display_name);
160 }
161
162 static gchar *
163 gdk_win32_screen_make_display_name (GdkScreen *screen)
164 {
165   return g_strdup (gdk_display_get_name (_gdk_display));
166 }
167
168 static GdkWindow *
169 gdk_win32_screen_get_active_window (GdkScreen *screen)
170 {
171   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
172
173   return NULL;
174 }
175
176 static GList *
177 gdk_win32_screen_get_window_stack (GdkScreen *screen)
178 {
179   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
180
181   return NULL;
182 }
183
184 static gboolean
185 gdk_win32_screen_is_composited (GdkScreen *screen)
186 {
187   g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
188
189   return FALSE;
190 }
191
192 static void
193 gdk_win32_screen_finalize (GObject *object)
194 {
195 }
196
197 static void
198 gdk_win32_screen_dispose (GObject *object)
199 {
200 }
201
202 static void
203 gdk_win32_screen_class_init (GdkWin32ScreenClass *klass)
204 {
205   GObjectClass *object_class = G_OBJECT_CLASS (klass);
206   GdkScreenClass *screen_class = GDK_SCREEN_CLASS (klass);
207
208   object_class->dispose = gdk_win32_screen_dispose;
209   object_class->finalize = gdk_win32_screen_finalize;
210
211   screen_class->get_display = gdk_win32_screen_get_display;
212   screen_class->get_width = gdk_win32_screen_get_width;
213   screen_class->get_height = gdk_win32_screen_get_height;
214   screen_class->get_width_mm = gdk_win32_screen_get_width_mm;
215   screen_class->get_height_mm = gdk_win32_screen_get_height_mm;
216   screen_class->get_number = gdk_win32_screen_get_number;
217   screen_class->get_root_window = gdk_win32_screen_get_root_window;
218   screen_class->get_n_monitors = gdk_win32_screen_get_n_monitors;
219   screen_class->get_primary_monitor = gdk_win32_screen_get_primary_monitor;
220   screen_class->get_monitor_width_mm = gdk_win32_screen_get_monitor_width_mm;
221   screen_class->get_monitor_height_mm = gdk_win32_screen_get_monitor_height_mm;
222   screen_class->get_monitor_plug_name = gdk_win32_screen_get_monitor_plug_name;
223   screen_class->get_monitor_geometry = gdk_win32_screen_get_monitor_geometry;
224   screen_class->get_monitor_workarea = gdk_win32_screen_get_monitor_geometry;
225   screen_class->get_system_visual = _gdk_win32_screen_get_system_visual;
226   screen_class->get_rgba_visual = gdk_win32_screen_get_rgba_visual;
227   screen_class->is_composited = gdk_win32_screen_is_composited;
228   screen_class->make_display_name = gdk_win32_screen_make_display_name;
229   screen_class->get_active_window = gdk_win32_screen_get_active_window;
230   screen_class->get_window_stack = gdk_win32_screen_get_window_stack;
231   screen_class->get_setting = _gdk_win32_screen_get_setting;
232   screen_class->visual_get_best_depth = _gdk_win32_screen_visual_get_best_depth;
233   screen_class->visual_get_best_type = _gdk_win32_screen_visual_get_best_type;
234   screen_class->visual_get_best = _gdk_win32_screen_visual_get_best;
235   screen_class->visual_get_best_with_depth = _gdk_win32_screen_visual_get_best_with_depth;
236   screen_class->visual_get_best_with_type = _gdk_win32_screen_visual_get_best_with_type;
237   screen_class->visual_get_best_with_both = _gdk_win32_screen_visual_get_best_with_both;
238   screen_class->query_depths = _gdk_win32_screen_query_depths;
239   screen_class->query_visual_types = _gdk_win32_screen_query_visual_types;
240   screen_class->list_visuals = _gdk_win32_screen_list_visuals;
241 }