⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdkscreen-x11.c

📁 linux下电话本所依赖的一些图形库
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * gdkscreen-x11.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 <config.h>#include <stdlib.h>#include <string.h>#include <glib.h>#include "gdkscreen.h"#include "gdkscreen-x11.h"#include "gdkdisplay.h"#include "gdkdisplay-x11.h"#include "gdkx.h"#include "gdkalias.h"#ifdef HAVE_SOLARIS_XINERAMA#include <X11/extensions/xinerama.h>#endif#ifdef HAVE_XFREE_XINERAMA#include <X11/extensions/Xinerama.h>#endif#ifdef HAVE_RANDR#include <X11/extensions/Xrandr.h>#endifstatic void         gdk_screen_x11_class_init  (GdkScreenX11Class *klass);static void         gdk_screen_x11_dispose     (GObject		  *object);static void         gdk_screen_x11_finalize    (GObject		  *object);static void	    init_xinerama_support      (GdkScreen	  *screen);static void	    init_randr_support	       (GdkScreen	  *screen);enum{  WINDOW_MANAGER_CHANGED,  LAST_SIGNAL};static gpointer parent_class = NULL;static guint signals[LAST_SIGNAL] = { 0 };GType_gdk_screen_x11_get_type (void){  static GType object_type = 0;  if (!object_type)    {      static const GTypeInfo object_info =	{	  sizeof (GdkScreenX11Class),	  (GBaseInitFunc) NULL,	  (GBaseFinalizeFunc) NULL,	  (GClassInitFunc) gdk_screen_x11_class_init,	  NULL,			/* class_finalize */	  NULL,			/* class_data */	  sizeof (GdkScreenX11),	  0,			/* n_preallocs */	  (GInstanceInitFunc) NULL,	};      object_type = g_type_register_static (GDK_TYPE_SCREEN,					    "GdkScreenX11",					    &object_info, 0);    }  return object_type;}static voidgdk_screen_x11_class_init (GdkScreenX11Class *klass){  GObjectClass *object_class = G_OBJECT_CLASS (klass);    object_class->dispose = gdk_screen_x11_dispose;  object_class->finalize = gdk_screen_x11_finalize;  parent_class = g_type_class_peek_parent (klass);  signals[WINDOW_MANAGER_CHANGED] =    g_signal_new ("window_manager_changed",                  G_OBJECT_CLASS_TYPE (object_class),                  G_SIGNAL_RUN_LAST,                  G_STRUCT_OFFSET (GdkScreenX11Class, window_manager_changed),                  NULL, NULL,                  g_cclosure_marshal_VOID__VOID,                  G_TYPE_NONE,                  0);}/** * gdk_screen_get_display: * @screen: a #GdkScreen * * Gets the display to which the @screen belongs. *  * Returns: the display to which @screen belongs * * Since: 2.2 **/GdkDisplay *gdk_screen_get_display (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);  return GDK_SCREEN_X11 (screen)->display;}/** * gdk_screen_get_width: * @screen: a #GdkScreen * * Gets the width of @screen in pixels *  * Returns: the width of @screen in pixels. * * Since: 2.2 **/gintgdk_screen_get_width (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);  return WidthOfScreen (GDK_SCREEN_X11 (screen)->xscreen);}/** * gdk_screen_get_height: * @screen: a #GdkScreen * * Gets the height of @screen in pixels *  * Returns: the height of @screen in pixels. * * Since: 2.2 **/gintgdk_screen_get_height (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);  return HeightOfScreen (GDK_SCREEN_X11 (screen)->xscreen);}/** * 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 millimeters. * * Since: 2.2 **/gintgdk_screen_get_width_mm (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);    return WidthMMOfScreen (GDK_SCREEN_X11 (screen)->xscreen);}/** * 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 millimeters. * * Since: 2.2 **/gintgdk_screen_get_height_mm (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);  return HeightMMOfScreen (GDK_SCREEN_X11 (screen)->xscreen);}/** * 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 * * Since: 2.2 **/gintgdk_screen_get_number (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);      return GDK_SCREEN_X11 (screen)->screen_num;}/** * gdk_screen_get_root_window: * @screen: a #GdkScreen * * Gets the root window of @screen.  *  * Returns: the root window * * Since: 2.2 **/GdkWindow *gdk_screen_get_root_window (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);  return GDK_SCREEN_X11 (screen)->root_window;}/** * gdk_screen_get_default_colormap: * @screen: a #GdkScreen * * Gets the default colormap for @screen. *  * Returns: the default #GdkColormap. * * Since: 2.2 **/GdkColormap *gdk_screen_get_default_colormap (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);  return GDK_SCREEN_X11 (screen)->default_colormap;}/** * gdk_screen_set_default_colormap: * @screen: a #GdkScreen * @colormap: a #GdkColormap * * Sets the default @colormap for @screen. * * Since: 2.2 **/voidgdk_screen_set_default_colormap (GdkScreen   *screen,				 GdkColormap *colormap){  GdkColormap *old_colormap;    g_return_if_fail (GDK_IS_SCREEN (screen));  g_return_if_fail (GDK_IS_COLORMAP (colormap));  old_colormap = GDK_SCREEN_X11 (screen)->default_colormap;  GDK_SCREEN_X11 (screen)->default_colormap = g_object_ref (colormap);    if (old_colormap)    g_object_unref (old_colormap);}static voidgdk_screen_x11_dispose (GObject *object){  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (object);  _gdk_x11_events_uninit_screen (GDK_SCREEN (object));  g_object_unref (screen_x11->default_colormap);  screen_x11->default_colormap = NULL;    screen_x11->root_window = NULL;  screen_x11->xdisplay = NULL;  screen_x11->xscreen = NULL;  screen_x11->screen_num = -1;  screen_x11->xroot_window = None;  screen_x11->wmspec_check_window = None;    G_OBJECT_CLASS (parent_class)->dispose (object);}static voidgdk_screen_x11_finalize (GObject *object){  GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (object);  /* int i; */  g_object_unref (screen_x11->root_window);  if (screen_x11->renderer)    g_object_unref (screen_x11->renderer);    /* Visual Part (Need to implement finalize for Visuals for a clean   * finalize) */  /* for (i=0;i<screen_x11->nvisuals;i++)    g_object_unref (screen_x11->visuals[i]);*/  g_free (screen_x11->visuals);  g_hash_table_destroy (screen_x11->visual_hash);  g_free (screen_x11->window_manager_name);    g_hash_table_destroy (screen_x11->colormap_hash);  /* X settings */  g_free (screen_x11->xsettings_client);  g_free (screen_x11->monitors);    G_OBJECT_CLASS (parent_class)->finalize (object);}/** * gdk_screen_get_n_monitors: * @screen: a #GdkScreen. * * Returns the number of monitors which @screen consists of. * * Returns: number of monitors which @screen consists of. * * Since: 2.2 **/gint gdk_screen_get_n_monitors (GdkScreen *screen){  g_return_val_if_fail (GDK_IS_SCREEN (screen), 0);    return GDK_SCREEN_X11 (screen)->num_monitors;}/** * gdk_screen_get_monitor_geometry: * @screen : a #GdkScreen. * @monitor_num: the monitor number.  * @dest : a #GdkRectangle to be filled with the monitor geometry * * Retrieves the #GdkRectangle representing the size and position of  * the individual monitor within the entire screen area. *  * Note that the size of the entire screen area can be retrieved via  * gdk_screen_get_width() and gdk_screen_get_height().

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -