gtk+ r21029 - in trunk: . gdk/quartz



Author: rhult
Date: Thu Aug  7 08:14:12 2008
New Revision: 21029
URL: http://svn.gnome.org/viewvc/gtk+?rev=21029&view=rev

Log:
2008-08-07  Richard Hult  <richard imendio com>

	* gdk/quartz/gdkscreen-quartz.c: (gdk_screen_get_monitor_plug_name)
	(gdk_screen_get_monitor_height_mm, gdk_screen_get_monitor_width_mm):
	Implement those, fixes loading python bindings.


Modified:
   trunk/ChangeLog
   trunk/gdk/quartz/gdkscreen-quartz.c

Modified: trunk/gdk/quartz/gdkscreen-quartz.c
==============================================================================
--- trunk/gdk/quartz/gdkscreen-quartz.c	(original)
+++ trunk/gdk/quartz/gdkscreen-quartz.c	Thu Aug  7 08:14:12 2008
@@ -212,30 +212,80 @@
   return n;
 }
 
-void
-gdk_screen_get_monitor_geometry (GdkScreen    *screen, 
-				 gint          monitor_num,
-				 GdkRectangle *dest)
+static void
+screen_get_monitor_geometry (GdkScreen    *screen, 
+                             gint          monitor_num,
+                             GdkRectangle *dest,
+                             gboolean      in_mm)
 {
   NSArray *array;
+  NSScreen *nsscreen;
   NSRect rect;
 
-  g_return_if_fail (GDK_IS_SCREEN (screen));
-  g_return_if_fail (monitor_num < gdk_screen_get_n_monitors (screen));
-  g_return_if_fail (monitor_num >= 0);
-
   GDK_QUARTZ_ALLOC_POOL;
+
   array = [NSScreen screens];
-  rect = [[array objectAtIndex:monitor_num] frame];
+  nsscreen = [array objectAtIndex:monitor_num];
+  rect = [nsscreen frame];
   
   dest->x = rect.origin.x;
   dest->y = rect.origin.y;
   dest->width = rect.size.width;
   dest->height = rect.size.height;
 
+  if (in_mm)
+    {
+      dest->x = get_mm_from_pixels (nsscreen, dest->x);
+      dest->y = get_mm_from_pixels (nsscreen, dest->y);
+      dest->width = get_mm_from_pixels (nsscreen, dest->width);
+      dest->height = get_mm_from_pixels (nsscreen, dest->height);
+    }
+
   GDK_QUARTZ_RELEASE_POOL;
 }
 
+gint
+gdk_screen_get_monitor_width_mm	(GdkScreen *screen,
+				 gint       monitor_num)
+{
+  GdkRectangle rect;
+
+  screen_get_monitor_geometry (screen, monitor_num, &rect, TRUE);
+
+  return rect.width;
+}
+
+gint
+gdk_screen_get_monitor_height_mm (GdkScreen *screen,
+                                  gint       monitor_num)
+{
+  GdkRectangle rect;
+
+  screen_get_monitor_geometry (screen, monitor_num, &rect, TRUE);
+
+  return rect.height;
+}
+
+gchar *
+gdk_screen_get_monitor_plug_name (GdkScreen *screen,
+				  gint       monitor_num)
+{
+  /* FIXME: Is there some useful name we could use here? */
+  return NULL;
+}
+
+void
+gdk_screen_get_monitor_geometry (GdkScreen    *screen, 
+				 gint          monitor_num,
+				 GdkRectangle *dest)
+{
+  g_return_if_fail (GDK_IS_SCREEN (screen));
+  g_return_if_fail (monitor_num < gdk_screen_get_n_monitors (screen));
+  g_return_if_fail (monitor_num >= 0);
+
+  screen_get_monitor_geometry (screen, monitor_num, dest, FALSE);
+}
+
 gchar *
 gdk_screen_make_display_name (GdkScreen *screen)
 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]