summaryrefslogtreecommitdiff
path: root/gdk/gdkscreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdk/gdkscreen.c')
-rw-r--r--gdk/gdkscreen.c336
1 files changed, 336 insertions, 0 deletions
diff --git a/gdk/gdkscreen.c b/gdk/gdkscreen.c
new file mode 100644
index 000000000..f1097fd16
--- /dev/null
+++ b/gdk/gdkscreen.c
@@ -0,0 +1,336 @@
+/*
+ * gdkscreen.c
+ *
+ * Copyright 2001 Sun Microsystems Inc.
+ *
+ * Erwann Chenede <erwann.chenede@sun.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "gdkscreen.h"
+#include "gdkcolor.h"
+
+GType
+gdk_screen_get_type (void)
+{
+ static GType object_type = 0;
+
+ if (!object_type)
+ {
+ static const GTypeInfo object_info =
+ {
+ sizeof (GdkScreenClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (GdkScreen),
+ 0, /* n_preallocs */
+ (GInstanceInitFunc) NULL,
+ };
+
+ object_type = g_type_register_static (G_TYPE_OBJECT,
+ "GdkScreen", &object_info, 0);
+ }
+
+ return object_type;
+}
+
+/**
+ * gdk_screen_get_default_colormap:
+ * @screen: a #GdkScreen
+ *
+ * Gets the default colormap for @screen.
+ *
+ * Returns: the default #GdkColormap.
+ **/
+GdkColormap *
+gdk_screen_get_default_colormap (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_default_colormap (screen);
+}
+
+/**
+ * gdk_screen_set_default_colormap:
+ * @screen: a #GdkScreen
+ * @colormap: a #GdkColormap
+ *
+ * Sets the default @colormap for @screen.
+ **/
+void
+gdk_screen_set_default_colormap (GdkScreen *screen,
+ GdkColormap *colormap)
+{
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+ g_return_if_fail (GDK_IS_COLORMAP (colormap));
+
+ GDK_SCREEN_GET_CLASS (screen)->set_default_colormap (screen, colormap);
+}
+
+/**
+ * gdk_screen_get_root_window:
+ * @screen: a #GdkScreen
+ *
+ * Gets the root window of @screen.
+ *
+ * Returns: the root window
+ **/
+GdkWindow *
+gdk_screen_get_root_window (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_root_window (screen);
+}
+
+/**
+ * gdk_screen_get_display:
+ * @screen: a #GdkScreen
+ *
+ * Gets the display to which the @screen belongs.
+ *
+ * Returns: the display to which @screen belongs
+ **/
+GdkDisplay *
+gdk_screen_get_display (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_display (screen);
+}
+
+/**
+ * gdk_screen_get_number:
+ * @screen: a #GdkScreen
+ *
+ * Gets the index of @screen among the screens in the display
+ * to which it belongs. (See gdk_screen_get_display())
+ *
+ * Returns: the index
+ **/
+gint
+gdk_screen_get_number (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_screen_num (screen);
+}
+
+/**
+ * gdk_screen_get_window_at_pointer:
+ * @screen: a #GdkScreen
+ * @win_x: return location for origin of the window under the pointer
+ * @win_y: return location for origin of the window under the pointer
+ *
+ * Obtains the window underneath the mouse pointer, returning the location
+ * of that window in @win_x, @win_y for @screen. Returns %NULL if the window
+ * under the mouse pointer is not known to GDK (for example, belongs to
+ * another application).
+ *
+ * Returns: the window under the mouse pointer, or %NULL
+ **/
+GdkWindow *
+gdk_screen_get_window_at_pointer (GdkScreen *screen,
+ gint *win_x,
+ gint *win_y)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_window_at_pointer (screen, win_x, win_y);
+}
+
+/**
+ * gdk_screen_get_width:
+ * @screen: a #GdkScreen
+ *
+ * Gets the width of @screen in pixels
+ *
+ * Returns: the width of @screen in pixels.
+ **/
+gint
+gdk_screen_get_width (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_width (screen);
+}
+
+/**
+ * gdk_screen_get_height:
+ * @screen: a #GdkScreen
+ *
+ * Gets the height of @screen in pixels
+ *
+ * Returns: the height of @screen in pixels.
+ **/
+gint
+gdk_screen_get_height (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_height (screen);
+}
+
+/**
+ * gdk_screen_get_width_mm:
+ * @screen: a #GdkScreen
+ *
+ * Gets the width of @screen in millimeters.
+ * Note that on some X servers this value will not be correct.
+ *
+ * Returns: the width of @screen in pixels.
+ **/
+gint
+gdk_screen_get_width_mm (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_width_mm (screen);
+}
+
+/**
+ * gdk_screen_get_height_mm:
+ * @screen: a #GdkScreen
+ *
+ * Returns the height of @screen in millimeters.
+ * Note that on some X servers this value will not be correct.
+ *
+ * Returns: the heigth of @screen in pixels.
+ **/
+gint
+gdk_screen_get_height_mm (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_height_mm (screen);
+}
+
+/**
+ * gdk_screen_close:
+ * @screen: a #GdkScreen
+ *
+ * Closes the @screen connection and cleanup its resources.
+ * Note that this function is called automatically by gdk_display_close().
+ **/
+void
+gdk_screen_close (GdkScreen *screen)
+{
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+
+ g_object_run_dispose (G_OBJECT (screen));
+}
+
+/**
+ * gdk_screen_use_virtual_screen:
+ * @screen : a #GdkScreen.
+ *
+ * Determines whether @screen is uses multiple monitors as
+ * a single virtual screen (e.g. Xinerama mode under X).
+ *
+ * Returns: %TRUE if multiple monitors are used as a single screen
+ ***/
+gboolean
+gdk_screen_use_virtual_screen (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE);
+
+ return GDK_SCREEN_GET_CLASS (screen)->use_virtual_screen (screen);
+}
+
+/**
+ * gdk_screen_get_n_monitors:
+ * @screen : a #GdkScreen.
+ *
+ * Returns the number of monitors being part of the virtual screen
+ *
+ * Returns: number of monitors part of the virtual screen or
+ * 0 if @screen is not in virtual screen mode.
+ **/
+gint
+gdk_screen_get_n_monitors (GdkScreen *screen)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_n_monitors (screen);
+}
+
+/**
+ * gdk_screen_get_monitor_geometry:
+ * @screen : a #GdkScreen.
+ * @monitor_num: the monitor number.
+ *
+ * Returns a #GdkRectangle representing the size and start
+ * coordinates of the individual monitor within the the entire virtual
+ * screen.
+ *
+ * Note that the virtual screen coordinates can be retrieved via
+ * gdk_screen_get_width() and gdk_screen_get_height().
+ *
+ * Returns: the size and start position of the monitor wrt to
+ * the virtual screen.
+ **/
+GdkRectangle *
+gdk_screen_get_monitor_geometry (GdkScreen *screen,
+ gint monitor_num)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_monitor_geometry (screen, monitor_num);
+}
+
+/**
+ * gdk_screen_get_monitor_at_point:
+ * @screen : a #GdkScreen.
+ * @x : the x coordinate in the virtual screen.
+ * @y : the y coordinate in the virtual screen.
+ *
+ * Returns the monitor number in which the point (@x,@y) is located.
+ *
+ * Returns: the monitor number in which the point (@x,@y) belong, or
+ * -1 if the point is not in any monitor.
+ **/
+gint
+gdk_screen_get_monitor_at_point (GdkScreen *screen,
+ gint x,
+ gint y)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_monitor_at_point (screen, x,y);
+}
+
+/**
+ * gdk_screen_get_monitor_num_at_window:
+ * @screen : a #GdkScreen.
+ * @anid : a #GdkDrawable ID.
+ *
+ * Returns the monitor number in which the largest area of the bounding rectangle
+ * of @anid resides.
+ *
+ * Returns: the monitor number in which most of @anid is located.
+ **/
+gint
+gdk_screen_get_monitor_at_window (GdkScreen *screen,
+ GdkNativeWindow anid)
+{
+ g_return_val_if_fail (GDK_IS_SCREEN (screen), -1);
+
+ return GDK_SCREEN_GET_CLASS (screen)->get_monitor_at_window (screen, anid);
+}