]> Pileus Git - ~andy/gtk/blob - gdk/win32/gdkscreen-win32.c
Change FSF Address
[~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, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19 #include "gdk.h"
20 #include "gdkprivate-win32.h"
21 #include "gdkscreenprivate.h"
22 #include "gdkwin32screen.h"
23
24 struct _GdkWin32Screen
25 {
26   GdkScreen parent_instance;
27 };
28
29 struct _GdkWin32ScreenClass
30 {
31   GdkScreenClass parent_class;
32 };
33
34 G_DEFINE_TYPE (GdkWin32Screen, gdk_win32_screen, GDK_TYPE_SCREEN)
35
36 static void
37 gdk_win32_screen_init (GdkWin32Screen *display)
38 {
39 }
40
41 static GdkDisplay *
42 gdk_win32_screen_get_display (GdkScreen *screen)
43 {
44   return _gdk_display;
45 }
46
47 static gint
48 gdk_win32_screen_get_width (GdkScreen *screen)
49 {
50   return GDK_WINDOW (_gdk_root)->width;
51 }
52
53 static gint
54 gdk_win32_screen_get_height (GdkScreen *screen)
55 {
56   return GDK_WINDOW (_gdk_root)->height;
57 }
58
59 static gint
60 gdk_win32_screen_get_width_mm (GdkScreen *screen)
61 {
62   return (double) gdk_screen_get_width (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSX) * 25.4;
63 }
64
65 static gint
66 gdk_win32_screen_get_height_mm (GdkScreen *screen)
67 {
68   return (double) gdk_screen_get_height (screen) / GetDeviceCaps (_gdk_display_hdc, LOGPIXELSY) * 25.4;
69 }
70
71 static GdkWindow *
72 gdk_win32_screen_get_root_window (GdkScreen *screen)
73 {
74   return _gdk_root;
75 }
76
77 static gint
78 gdk_win32_screen_get_n_monitors (GdkScreen *screen)
79 {
80   g_return_val_if_fail (screen == _gdk_screen, 0);
81
82   return _gdk_num_monitors;
83 }
84
85 static gint
86 gdk_win32_screen_get_primary_monitor (GdkScreen *screen)
87 {
88   g_return_val_if_fail (screen == _gdk_screen, 0);
89
90   return 0;
91 }
92
93 static gint
94 gdk_win32_screen_get_monitor_width_mm (GdkScreen *screen,
95                                        gint       num_monitor)
96 {
97   g_return_val_if_fail (screen == _gdk_screen, 0);
98   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
99
100   return _gdk_monitors[num_monitor].width_mm;
101 }
102
103 static gint
104 gdk_win32_screen_get_monitor_height_mm (GdkScreen *screen,
105                                         gint       num_monitor)
106 {
107   g_return_val_if_fail (screen == _gdk_screen, 0);
108   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
109
110   return _gdk_monitors[num_monitor].height_mm;
111 }
112
113 static gchar *
114 gdk_win32_screen_get_monitor_plug_name (GdkScreen *screen,
115                                         gint       num_monitor)
116 {
117   g_return_val_if_fail (screen == _gdk_screen, 0);
118   g_return_val_if_fail (num_monitor < _gdk_num_monitors, 0);
119
120   return g_strdup (_gdk_monitors[num_monitor].name);
121 }
122
123 static void
124 gdk_win32_screen_get_monitor_geometry (GdkScreen    *screen,
125                                        gint          num_monitor,
126                                        GdkRectangle *dest)
127 {
128   g_return_if_fail (screen == _gdk_screen);
129   g_return_if_fail (num_monitor < _gdk_num_monitors);
130
131   *dest = _gdk_monitors[num_monitor].rect;
132 }
133
134 static GdkVisual *
135 gdk_win32_screen_get_rgba_visual (GdkScreen *screen)
136 {
137   g_return_val_if_fail (screen == _gdk_screen, NULL);
138
139   return NULL;
140 }
141
142 static gint
143 gdk_win32_screen_get_number (GdkScreen *screen)
144 {
145   g_return_val_if_fail (screen == _gdk_screen, 0);
146
147   return 0;
148 }
149
150 gchar *
151 _gdk_windowing_substitute_screen_number (const gchar *display_name,
152                                          int          screen_number)
153 {
154   if (screen_number != 0)
155     return NULL;
156
157   return g_strdup (display_name);
158 }
159
160 static gchar *
161 gdk_win32_screen_make_display_name (GdkScreen *screen)
162 {
163   return g_strdup (gdk_display_get_name (_gdk_display));
164 }
165
166 static GdkWindow *
167 gdk_win32_screen_get_active_window (GdkScreen *screen)
168 {
169   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
170
171   return NULL;
172 }
173
174 static GList *
175 gdk_win32_screen_get_window_stack (GdkScreen *screen)
176 {
177   g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
178
179   return NULL;
180 }
181
182 static gboolean
183 gdk_win32_screen_is_composited (GdkScreen *screen)
184 {
185   g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
186
187   return FALSE;
188 }
189
190 static void
191 gdk_win32_screen_finalize (GObject *object)
192 {
193 }
194
195 static void
196 gdk_win32_screen_dispose (GObject *object)
197 {
198 }
199
200 static void
201 gdk_win32_screen_class_init (GdkWin32ScreenClass *klass)
202 {
203   GObjectClass *object_class = G_OBJECT_CLASS (klass);
204   GdkScreenClass *screen_class = GDK_SCREEN_CLASS (klass);
205
206   object_class->dispose = gdk_win32_screen_dispose;
207   object_class->finalize = gdk_win32_screen_finalize;
208
209   screen_class->get_display = gdk_win32_screen_get_display;
210   screen_class->get_width = gdk_win32_screen_get_width;
211   screen_class->get_height = gdk_win32_screen_get_height;
212   screen_class->get_width_mm = gdk_win32_screen_get_width_mm;
213   screen_class->get_height_mm = gdk_win32_screen_get_height_mm;
214   screen_class->get_number = gdk_win32_screen_get_number;
215   screen_class->get_root_window = gdk_win32_screen_get_root_window;
216   screen_class->get_n_monitors = gdk_win32_screen_get_n_monitors;
217   screen_class->get_primary_monitor = gdk_win32_screen_get_primary_monitor;
218   screen_class->get_monitor_width_mm = gdk_win32_screen_get_monitor_width_mm;
219   screen_class->get_monitor_height_mm = gdk_win32_screen_get_monitor_height_mm;
220   screen_class->get_monitor_plug_name = gdk_win32_screen_get_monitor_plug_name;
221   screen_class->get_monitor_geometry = gdk_win32_screen_get_monitor_geometry;
222   screen_class->get_monitor_workarea = gdk_win32_screen_get_monitor_geometry;
223   screen_class->get_system_visual = _gdk_win32_screen_get_system_visual;
224   screen_class->get_rgba_visual = gdk_win32_screen_get_rgba_visual;
225   screen_class->is_composited = gdk_win32_screen_is_composited;
226   screen_class->make_display_name = gdk_win32_screen_make_display_name;
227   screen_class->get_active_window = gdk_win32_screen_get_active_window;
228   screen_class->get_window_stack = gdk_win32_screen_get_window_stack;
229   screen_class->get_setting = _gdk_win32_screen_get_setting;
230   screen_class->visual_get_best_depth = _gdk_win32_screen_visual_get_best_depth;
231   screen_class->visual_get_best_type = _gdk_win32_screen_visual_get_best_type;
232   screen_class->visual_get_best = _gdk_win32_screen_visual_get_best;
233   screen_class->visual_get_best_with_depth = _gdk_win32_screen_visual_get_best_with_depth;
234   screen_class->visual_get_best_with_type = _gdk_win32_screen_visual_get_best_with_type;
235   screen_class->visual_get_best_with_both = _gdk_win32_screen_visual_get_best_with_both;
236   screen_class->query_depths = _gdk_win32_screen_query_depths;
237   screen_class->query_visual_types = _gdk_win32_screen_query_visual_types;
238   screen_class->list_visuals = _gdk_win32_screen_list_visuals;
239 }