aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/Xcursor/display.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/Xcursor/display.c')
-rw-r--r--nx-X11/lib/Xcursor/display.c382
1 files changed, 0 insertions, 382 deletions
diff --git a/nx-X11/lib/Xcursor/display.c b/nx-X11/lib/Xcursor/display.c
deleted file mode 100644
index ef941257f..000000000
--- a/nx-X11/lib/Xcursor/display.c
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- * $Id: display.c,v 1.6 2005/10/19 22:26:55 ajax Exp $
- *
- * Copyright © 2002 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "xcursorint.h"
-#include <X11/Xlibint.h>
-#include <ctype.h>
-
-static XcursorDisplayInfo *_XcursorDisplayInfo;
-
-static void
-_XcursorFreeDisplayInfo (XcursorDisplayInfo *info)
-{
- if (info->theme)
- free (info->theme);
-
- if (info->theme_from_config)
- free (info->theme_from_config);
-
- free (info);
-}
-
-static int
-_XcursorCloseDisplay (Display *dpy, XExtCodes *codes)
-{
- XcursorDisplayInfo *info, **prev;
-
- /*
- * Unhook from the global list
- */
- _XLockMutex (_Xglobal_lock);
- for (prev = &_XcursorDisplayInfo; (info = *prev); prev = &(*prev)->next)
- if (info->display == dpy)
- {
- *prev = info->next;
- break;
- }
- _XUnlockMutex (_Xglobal_lock);
-
- _XcursorFreeDisplayInfo (info);
- return 0;
-}
-
-static int
-_XcursorDefaultParseBool (char *v)
-{
- char c0, c1;
-
- c0 = *v;
- if (isupper ((int)c0))
- c0 = tolower (c0);
- if (c0 == 't' || c0 == 'y' || c0 == '1')
- return 1;
- if (c0 == 'f' || c0 == 'n' || c0 == '0')
- return 0;
- if (c0 == 'o')
- {
- c1 = v[1];
- if (isupper ((int)c1))
- c1 = tolower (c1);
- if (c1 == 'n')
- return 1;
- if (c1 == 'f')
- return 0;
- }
- return -1;
-}
-
-XcursorDisplayInfo *
-_XcursorGetDisplayInfo (Display *dpy)
-{
- XcursorDisplayInfo *info, **prev, *old;
- int event_base, error_base;
- int major, minor;
- char *v;
- int i;
-
- _XLockMutex (_Xglobal_lock);
- for (prev = &_XcursorDisplayInfo; (info = *prev); prev = &(*prev)->next)
- {
- if (info->display == dpy)
- {
- /*
- * MRU the list
- */
- if (prev != &_XcursorDisplayInfo)
- {
- *prev = info->next;
- info->next = _XcursorDisplayInfo;
- _XcursorDisplayInfo = info;
- }
- break;
- }
- }
- _XUnlockMutex (_Xglobal_lock);
- if (info)
- return info;
- info = (XcursorDisplayInfo *) malloc (sizeof (XcursorDisplayInfo));
- if (!info)
- return 0;
- info->next = 0;
- info->display = dpy;
-
- info->codes = XAddExtension (dpy);
- if (!info->codes)
- {
- free (info);
- return 0;
- }
- (void) XESetCloseDisplay (dpy, info->codes->extension, _XcursorCloseDisplay);
-
- /*
- * Check whether the display supports the Render CreateCursor request
- */
- info->has_render_cursor = XcursorFalse;
- info->has_anim_cursor = XcursorFalse;
- if (XRenderQueryExtension (dpy, &event_base, &error_base) &&
- XRenderQueryVersion (dpy, &major, &minor))
- {
- if (major > 0 || minor >= 5)
- {
- info->has_render_cursor = XcursorTrue;
- v = getenv ("XCURSOR_CORE");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "core");
- if (v && _XcursorDefaultParseBool (v) == 1)
- info->has_render_cursor = XcursorFalse;
- }
- if (info->has_render_cursor && (major > 0 || minor >= 8))
- {
- info->has_anim_cursor = XcursorTrue;
- v = getenv ("XCURSOR_ANIM");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "anim");
- if (v && _XcursorDefaultParseBool (v) == 0)
- info->has_anim_cursor = XcursorFalse;
- }
- }
-
- info->size = 0;
-
- /*
- * Get desired cursor size
- */
- v = getenv ("XCURSOR_SIZE");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "size");
- if (v)
- info->size = atoi (v);
-
- /*
- * Use the Xft size to guess a size; make cursors 16 "points" tall
- */
- if (info->size == 0)
- {
- int dpi = 0;
- v = XGetDefault (dpy, "Xft", "dpi");
- if (v)
- dpi = atoi (v);
- if (dpi)
- info->size = dpi * 16 / 72;
- }
-
- /*
- * Use display size to guess a size
- */
- if (info->size == 0)
- {
- int dim;
-
- if (DisplayHeight (dpy, DefaultScreen (dpy)) <
- DisplayWidth (dpy, DefaultScreen (dpy)))
- dim = DisplayHeight (dpy, DefaultScreen (dpy));
- else
- dim = DisplayWidth (dpy, DefaultScreen (dpy));
- /*
- * 16 pixels on a display of dimension 768
- */
- info->size = dim / 48;
- }
-
- info->theme = 0;
- info->theme_from_config = 0;
-
- /*
- * Get the desired theme
- */
- v = getenv ("XCURSOR_THEME");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "theme");
- if (v)
- {
- int len;
-
- len = strlen (v) + 1;
-
- info->theme = malloc (len);
- if (info->theme)
- strcpy (info->theme, v);
-
- info->theme_from_config = malloc (len);
- if (info->theme_from_config)
- strcpy (info->theme_from_config, v);
- }
-
- /*
- * Get the desired dither
- */
- info->dither = XcursorDitherThreshold;
- v = getenv ("XCURSOR_DITHER");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "dither");
- if (v)
- {
- if (!strcmp (v, "threshold"))
- info->dither = XcursorDitherThreshold;
- if (!strcmp (v, "median"))
- info->dither = XcursorDitherMedian;
- if (!strcmp (v, "ordered"))
- info->dither = XcursorDitherOrdered;
- if (!strcmp (v, "diffuse"))
- info->dither = XcursorDitherDiffuse;
- }
-
- info->theme_core = False;
- /*
- * Find out if core cursors should
- * be themed
- */
- v = getenv ("XCURSOR_THEME_CORE");
- if (!v)
- v = XGetDefault (dpy, "Xcursor", "theme_core");
- if (v)
- {
- i = _XcursorDefaultParseBool (v);
- if (i >= 0)
- info->theme_core = i;
- }
-
- info->fonts = 0;
- for (i = 0; i < NUM_BITMAPS; i++)
- info->bitmaps[i].bitmap = None;
-
- /*
- * Link new info info list, making sure another
- * thread hasn't inserted something into the list while
- * this one was busy setting up the data
- */
- _XLockMutex (_Xglobal_lock);
- for (old = _XcursorDisplayInfo; old; old = old->next)
- if (old->display == dpy)
- break;
- if (old)
- {
- _XcursorFreeDisplayInfo (info);
- info = old;
- }
- else
- {
- info->next = _XcursorDisplayInfo;
- _XcursorDisplayInfo = info;
- }
- _XUnlockMutex (_Xglobal_lock);
-
- return info;
-}
-
-XcursorBool
-XcursorSupportsARGB (Display *dpy)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- return info && info->has_render_cursor;
-}
-
-XcursorBool
-XcursorSupportsAnim (Display *dpy)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- return info && info->has_anim_cursor;
-}
-
-XcursorBool
-XcursorSetDefaultSize (Display *dpy, int size)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- if (!info)
- return XcursorFalse;
- info->size = size;
- return XcursorTrue;
-}
-
-int
-XcursorGetDefaultSize (Display *dpy)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- if (!info)
- return 0;
- return info->size;
-}
-
-XcursorBool
-XcursorSetTheme (Display *dpy, const char *theme)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
- char *copy;
-
- if (!info)
- return XcursorFalse;
-
- if (!theme)
- theme = info->theme_from_config;
-
- if (theme)
- {
- copy = malloc (strlen (theme) + 1);
- if (!copy)
- return XcursorFalse;
- strcpy (copy, theme);
- }
- else
- copy = 0;
- if (info->theme)
- free (info->theme);
- info->theme = copy;
- return XcursorTrue;
-}
-
-char *
-XcursorGetTheme (Display *dpy)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- if (!info)
- return 0;
- return info->theme;
-}
-
-XcursorBool
-XcursorGetThemeCore (Display *dpy)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- if (!info)
- return XcursorFalse;
- return info->theme_core;
-
-}
-
-XcursorBool
-XcursorSetThemeCore (Display *dpy, XcursorBool theme_core)
-{
- XcursorDisplayInfo *info = _XcursorGetDisplayInfo (dpy);
-
- if (!info)
- return XcursorFalse;
- info->theme_core = theme_core;
- return XcursorTrue;
-}