diff options
Diffstat (limited to 'mail/xpbiff/files/LocPixmap.c')
-rw-r--r-- | mail/xpbiff/files/LocPixmap.c | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/mail/xpbiff/files/LocPixmap.c b/mail/xpbiff/files/LocPixmap.c deleted file mode 100644 index 7c89f3b5d32f..000000000000 --- a/mail/xpbiff/files/LocPixmap.c +++ /dev/null @@ -1,242 +0,0 @@ -/* Change for xpbiff by Yoshikazu Yamamoto(y-yamamt@ics.es.osaka-u.ac.jp) at Oct 19, 1993 */ - -/* * Last edited: Sep 17 14:39 1991 (mallet) */ -/* - * $FreeBSD$ - * - * Copyright 1991 Lionel Mallet - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, 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 Lionel MALLET not be used in advertising - * or publicity pertaining to distribution of the software without specific, - * written prior permission. Lionel MALLET makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * Lionel MALLET DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS, IN NO EVENT SHALL Lionel MALLET 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. - * - * Author: Lionel Mallet - SIMULOG - */ - -#include <X11/Xlib.h> -#include <X11/Xresource.h> -#include <X11/Xutil.h> -#include <X11/StringDefs.h> -#include <sys/param.h> /* get MAXPATHLEN if possible */ -#ifndef MAXPATHLEN -#define MAXPATHLEN 256 -#endif - -#include <X11/Xmu/CvtCache.h> -#include <X11/xpm.h> -#include <X11/Xmu/Drawing.h> - - -/* - * LocatePixmapFile - read a pixmap file using the normal defaults - */ - -static char **split_path_string(); - -Pixmap LocatePixmapFile (screen, name, srcname, srcnamelen, - widthp, heightp, mask) - Screen *screen; - char *name; - char *srcname; /* RETURN */ - int srcnamelen; - int *widthp, *heightp; /* RETURN */ - Pixmap *mask; /* RETURN */ -{ - Display *dpy = DisplayOfScreen (screen); - Window root = RootWindowOfScreen (screen); - Bool try_plain_name = True; - XmuCvtCache *cache = _XmuCCLookupDisplay (dpy); - char **file_paths; - char filename[MAXPATHLEN]; - unsigned int width, height; - int xhot, yhot; - int i; - - - /* - * look in cache for pixmap path - */ - if (cache) { - if (!cache->string_to_bitmap.bitmapFilePath) { - XrmName xrm_name[2]; - XrmClass xrm_class[2]; - XrmRepresentation rep_type; - XrmValue value; - - xrm_name[0] = XrmStringToName ("bitmapFilePath"); - xrm_name[1] = NULL; - xrm_class[0] = XrmStringToClass ("BitmapFilePath"); - xrm_class[1] = NULL; - /* - * XXX - warning, derefing Display * until XDisplayDatabase - */ - if (!XrmGetDatabase(dpy)) { - /* what a hack; need to initialize dpy->db */ - (void) XGetDefault (dpy, "", ""); - } - if (XrmQGetResource (XrmGetDatabase(dpy), xrm_name, xrm_class, - &rep_type, &value) && - rep_type == XrmStringToQuark(XtRString)) { - cache->string_to_bitmap.bitmapFilePath = - split_path_string (value.addr); - } - } - file_paths = cache->string_to_bitmap.bitmapFilePath; - } - - - /* - * Search order: - * 1. name if it begins with / or ./ - * 2. "each prefix in file_paths"/name - * 3. BITMAPDIR/name - * 4. name if didn't begin with / or . - */ - -#ifndef BITMAPDIR -#define BITMAPDIR "/usr/include/X11/bitmaps" -#endif - - for (i = 1; i <= 4; i++) { - char *fn = filename; - Pixmap pixmap; - XpmAttributes attributes; - unsigned char *data; - - switch (i) { - case 1: - if (!(name[0] == '/' || (name[0] == '.') && name[1] == '/')) - continue; - fn = name; - try_plain_name = False; - break; - case 2: - if (file_paths && *file_paths) { - sprintf (filename, "%s/%s", *file_paths, name); - file_paths++; - i--; - break; - } - continue; - case 3: - sprintf (filename, "%s/%s", BITMAPDIR, name); - break; - case 4: - if (!try_plain_name) continue; - fn = name; - break; - } - - data = NULL; - pixmap = None; - if (XmuReadBitmapDataFromFile (fn, &width, &height, &data, - &xhot, &yhot) == BitmapSuccess) { - pixmap = XCreatePixmapFromBitmapData (dpy, root, (char *) data, - width, height, - (unsigned long) 1, - (unsigned long) 0, - (unsigned int) 1); - XFree ((char *)data); - if (pixmap != None) { - if (widthp) *widthp = (int)width; - if (heightp) *heightp = (int)height; - if (srcname && srcnamelen > 0) { - strncpy (srcname, fn, srcnamelen - 1); - srcname[srcnamelen - 1] = '\0'; - } - *mask = None; - return pixmap; - } - } - attributes.visual = DefaultVisualOfScreen (screen); - attributes.colormap = DefaultColormapOfScreen (screen); - attributes.depth = DefaultDepthOfScreen (screen); - attributes.colorsymbols = (ColorSymbol *)NULL; - attributes.numsymbols = 0; - attributes.valuemask = XpmVisual | XpmColormap | XpmDepth; - if (pixmap == None && - XpmReadPixmapFile (dpy, root, fn, &pixmap, mask, - &attributes) == XpmPixmapSuccess) { - if (widthp) *widthp = (int)attributes.width; - if (heightp) *heightp = (int)attributes.height; - if (srcname && srcnamelen > 0) { - strncpy (srcname, fn, srcnamelen - 1); - srcname[srcnamelen - 1] = '\0'; - } - XpmFreeAttributes(&attributes); - return pixmap; - } - } - *mask = None; - return None; -} - - -/* - * split_path_string - split a colon-separated list into its constituent - * parts; to release, free list[0] and list. - */ -static char **split_path_string (src) - register char *src; -{ - int nelems = 1; - register char *dst; - char **elemlist, **elem; - - /* count the number of elements */ - for (dst = src; *dst; dst++) if (*dst == ':') nelems++; - - /* get memory for everything */ - dst = (char *) malloc (dst - src + 1); - if (!dst) return NULL; - elemlist = (char **) calloc ((nelems + 1), sizeof (char *)); - if (!elemlist) { - free (dst); - return NULL; - } - - /* copy to new list and walk up nulling colons and setting list pointers */ - strcpy (dst, src); - for (elem = elemlist, src = dst; *src; src++) { - if (*src == ':') { - *elem++ = dst; - *src = '\0'; - dst = src + 1; - } - } - *elem = dst; - - return elemlist; -} - -/* -void _XmuStringToBitmapInitCache (c) - register XmuCvtCache *c; -{ - c->string_to_bitmap.bitmapFilePath = NULL; -} - -void _XmuStringToBitmapFreeCache (c) - register XmuCvtCache *c; -{ - if (c->string_to_bitmap.bitmapFilePath) { - if (c->string_to_bitmap.bitmapFilePath[0]) - free (c->string_to_bitmap.bitmapFilePath[0]); - free ((char *) (c->string_to_bitmap.bitmapFilePath)); - } -} -*/ |