3 * Copyright (C) 2005 Imendio AB
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
23 #include "gdkprivate-quartz.h"
25 static GdkColormap *default_colormap = NULL;
28 gdk_screen_get_display (GdkScreen *screen)
30 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
37 gdk_screen_get_root_window (GdkScreen *screen)
39 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
45 gdk_screen_get_number (GdkScreen *screen)
47 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
53 _gdk_windowing_substitute_screen_number (const gchar *display_name,
56 if (screen_number != 0)
59 return g_strdup (display_name);
63 gdk_screen_get_default_colormap (GdkScreen *screen)
65 return default_colormap;
69 gdk_screen_set_default_colormap (GdkScreen *screen,
70 GdkColormap *colormap)
72 GdkColormap *old_colormap;
74 g_return_if_fail (GDK_IS_SCREEN (screen));
75 g_return_if_fail (GDK_IS_COLORMAP (colormap));
77 old_colormap = default_colormap;
79 default_colormap = g_object_ref (colormap);
82 g_object_unref (old_colormap);
86 gdk_screen_get_width (GdkScreen *screen)
91 NSAutoreleasePool *pool;
93 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
95 pool = [[NSAutoreleasePool alloc] init];
96 array = [NSScreen screens];
99 for (i = 0; i < [array count]; i++)
101 NSRect rect = [[array objectAtIndex:i] frame];
102 width += rect.size.width;
111 gdk_screen_get_height (GdkScreen *screen)
116 NSAutoreleasePool *pool;
118 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
120 pool = [[NSAutoreleasePool alloc] init];
121 array = [NSScreen screens];
124 for (i = 0; i < [array count]; i++)
126 NSRect rect = [[array objectAtIndex:i] frame];
127 height = MAX (height, rect.size.height);
136 get_mm_from_pixels (NSScreen *screen, int pixels)
138 /* userSpaceScaleFactor is in "pixels per point",
139 * 72 is the number of points per inch,
140 * and 25.4 is the number of millimeters per inch.
142 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_3
143 float dpi = [screen userSpaceScaleFactor] * 72.0;
145 float dpi = 96.0 / 72.0;
148 return (pixels / dpi) * 25.4;
152 gdk_screen_get_width_mm (GdkScreen *screen)
157 NSAutoreleasePool *pool;
159 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
161 pool = [[NSAutoreleasePool alloc] init];
162 array = [NSScreen screens];
165 for (i = 0; i < [array count]; i++)
167 NSScreen *screen = [array objectAtIndex:i];
168 NSRect rect = [screen frame];
169 width += get_mm_from_pixels (screen, rect.size.width);
178 gdk_screen_get_height_mm (GdkScreen *screen)
183 NSAutoreleasePool *pool;
185 g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
187 pool = [[NSAutoreleasePool alloc] init];
188 array = [NSScreen screens];
191 for (i = 0; i < [array count]; i++)
193 NSScreen *screen = [array objectAtIndex:i];
194 NSRect rect = [screen frame];
195 gint h = get_mm_from_pixels (screen, rect.size.height);
196 height = MAX (height, h);
205 gdk_screen_get_n_monitors (GdkScreen *screen)
208 GDK_QUARTZ_ALLOC_POOL;
209 NSArray *array = [NSScreen screens];
213 GDK_QUARTZ_RELEASE_POOL;
219 gdk_screen_get_monitor_geometry (GdkScreen *screen,
225 NSAutoreleasePool *pool;
227 g_return_if_fail (GDK_IS_SCREEN (screen));
228 g_return_if_fail (monitor_num < gdk_screen_get_n_monitors (screen));
229 g_return_if_fail (monitor_num >= 0);
231 pool = [[NSAutoreleasePool alloc] init];
232 array = [NSScreen screens];
233 rect = [[array objectAtIndex:monitor_num] frame];
235 dest->x = rect.origin.x;
236 dest->y = rect.origin.y;
237 dest->width = rect.size.width;
238 dest->height = rect.size.height;
244 gdk_screen_make_display_name (GdkScreen *screen)
246 return g_strdup (gdk_display_get_name (_gdk_display));
250 gdk_screen_get_active_window (GdkScreen *screen)
252 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
258 gdk_screen_get_window_stack (GdkScreen *screen)
260 g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
266 gdk_screen_is_composited (GdkScreen *screen)
268 g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);