summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dsimple.c328
-rw-r--r--dsimple.h29
2 files changed, 6 insertions, 351 deletions
diff --git a/dsimple.c b/dsimple.c
index 9139b00..ff1594d 100644
--- a/dsimple.c
+++ b/dsimple.c
@@ -98,7 +98,7 @@ Realloc(char *ptr, int size)
* Get_Display_Name (argc, argv) Look for -display, -d, or host:dpy (obselete)
* If found, remove it from command line. Don't go past a lone -.
*/
-char *
+static char *
Get_Display_Name(int *pargc/* MODIFIED */, char **argv/* MODIFIED */)
{
int argc = *pargc;
@@ -133,7 +133,7 @@ Get_Display_Name(int *pargc/* MODIFIED */, char **argv/* MODIFIED */)
* Open_Display: Routine to open a display with correct error handling.
* Does not require dpy or screen defined on entry.
*/
-Display *
+static Display *
Open_Display(char *display_name)
{
Display *d;
@@ -179,330 +179,6 @@ void Close_Display(void)
/*
- * Open_Font: This routine opens a font with error handling.
- */
-XFontStruct *
-Open_Font(char *name)
-{
- XFontStruct *font;
-
- if (!(font=XLoadQueryFont(dpy, name)))
- Fatal_Error("Unable to open font %s!", name);
-
- return(font);
-}
-
-
-/*
- * Beep: Routine to beep the display.
- */
-void Beep(void)
-{
- XBell(dpy, 50);
-}
-
-
-/*
- * ReadBitmapFile: same as XReadBitmapFile except it returns the bitmap
- * directly and handles errors using Fatal_Error.
- */
-static void
-_bitmap_error(int status, char *filename)
-{
- if (status == BitmapOpenFailed)
- Fatal_Error("Can't open file %s!", filename);
- else if (status == BitmapFileInvalid)
- Fatal_Error("file %s: Bad bitmap format.", filename);
- else
- Fatal_Error("Out of memory!");
-}
-
-Pixmap
-ReadBitmapFile(Drawable d, char *filename,
- int *width, int *height, int *x_hot, int *y_hot)
-{
- Pixmap bitmap;
- int status;
-
- status = XReadBitmapFile(dpy, RootWindow(dpy, screen), filename,
- (unsigned int *)width, (unsigned int *)height,
- &bitmap, x_hot, y_hot);
- if (status != BitmapSuccess)
- _bitmap_error(status, filename);
-
- return(bitmap);
-}
-
-
-/*
- * WriteBitmapFile: same as XWriteBitmapFile except it handles errors
- * using Fatal_Error.
- */
-void
-WriteBitmapFile(char *filename, Pixmap bitmap,
- int width, int height, int x_hot, int y_hot)
-{
- int status;
-
- status= XWriteBitmapFile(dpy, filename, bitmap, width, height, x_hot,
- y_hot);
- if (status != BitmapSuccess)
- _bitmap_error(status, filename);
-}
-
-
-/*
- * Select_Window_Args: a rountine to provide a common interface for
- * applications that need to allow the user to select one
- * window on the screen for special consideration.
- * This routine implements the following command line
- * arguments:
- *
- * -root Selects the root window.
- * -id <id> Selects window with id <id>. <id> may
- * be either in decimal or hex.
- * -name <name> Selects the window with name <name>.
- *
- * Call as Select_Window_Args(&argc, argv) in main before
- * parsing any of your program's command line arguments.
- * Select_Window_Args will remove its arguments so that
- * your program does not have to worry about them.
- * The window returned is the window selected or 0 if
- * none of the above arguments was present. If 0 is
- * returned, Select_Window should probably be called after
- * all command line arguments, and other setup is done.
- * For examples of usage, see xwininfo, xwd, or xprop.
- */
-Window Select_Window_Args(int *rargc, char **argv)
-#define ARGC (*rargc)
-{
- int nargc=1;
- int argc;
- char **nargv;
- Window w=0;
-
- nargv = argv+1; argc = ARGC;
-#define OPTION argv[0]
-#define NXTOPTP ++argv, --argc>0
-#define NXTOPT if (++argv, --argc==0) usage()
-#define COPYOPT nargv++[0]=OPTION, nargc++
-
- while (NXTOPTP) {
- if (!strcmp(OPTION, "-")) {
- COPYOPT;
- while (NXTOPTP)
- COPYOPT;
- break;
- }
- if (!strcmp(OPTION, "-root")) {
- w=RootWindow(dpy, screen);
- continue;
- }
- if (!strcmp(OPTION, "-name")) {
- NXTOPT;
- w = Window_With_Name(dpy, RootWindow(dpy, screen),
- OPTION);
- if (!w)
- Fatal_Error("No window with name %s exists!",OPTION);
- continue;
- }
- if (!strcmp(OPTION, "-id")) {
- NXTOPT;
- w=0;
- sscanf(OPTION, "0x%lx", &w);
- if (!w)
- sscanf(OPTION, "%lu", &w);
- if (!w)
- Fatal_Error("Invalid window id format: %s.", OPTION);
- continue;
- }
- COPYOPT;
- }
- ARGC = nargc;
-
- return(w);
-}
-
-/*
- * Other_stuff: A group of routines which do common X11 tasks.
- *
- * Written by Mark Lillibridge. Last updated 7/1/87
- */
-
-/*
- * Resolve_Color: This routine takes a color name and returns the pixel #
- * that when used in the window w will be of color name.
- * (WARNING: The colormap of w MAY be modified! )
- * If colors are run out of, only the first n colors will be
- * as correct as the hardware can make them where n depends
- * on the display. This routine does not require wind to
- * be defined.
- */
-unsigned long
-Resolve_Color(Window w, char *name)
-{
- XColor c;
- Colormap colormap;
- XWindowAttributes wind_info;
-
- /*
- * The following is a hack to insure machines without a rgb table
- * handle at least white & black right.
- */
- if (!strcmp(name, "white"))
- name="#ffffffffffff";
- if (!strcmp(name, "black"))
- name="#000000000000";
-
- XGetWindowAttributes(dpy, w, &wind_info);
- colormap = wind_info.colormap;
-
- if (!XParseColor(dpy, colormap, name, &c))
- Fatal_Error("Bad color format '%s'.", name);
-
- if (!XAllocColor(dpy, colormap, &c))
- Fatal_Error("XAllocColor failed!");
-
- return(c.pixel);
-}
-
-
-/*
- * Bitmap_To_Pixmap: Convert a bitmap to a 2 colored pixmap. The colors come
- * from the foreground and background colors of the gc.
- * Width and height are required solely for efficiency.
- * If needed, they can be obtained via. XGetGeometry.
- */
-Pixmap
-Bitmap_To_Pixmap(Display *dpy, Drawable d, GC gc,
- Pixmap bitmap, int width, int height)
-{
- Pixmap pix;
- int x;
- unsigned int i, depth;
- Drawable root;
-
- if (!XGetGeometry(dpy, d, &root, &x, &x, &i, &i, &i, &depth))
- return(0);
-
- pix = XCreatePixmap(dpy, d, width, height, (int)depth);
-
- XCopyPlane(dpy, bitmap, pix, gc, 0, 0, width, height, 0, 0, 1);
-
- return(pix);
-}
-
-
-/*
- * blip: a debugging routine. Prints Blip! on stderr with flushing.
- */
-void blip(void)
-{
- fflush(stdout);
- fprintf(stderr, "blip!\n");
- fflush(stderr);
-}
-
-
-/*
- * Routine to let user select a window using the mouse
- */
-
-Window
-Select_Window(Display *dpy)
-{
- int status;
- Cursor cursor;
- XEvent event;
- Window target_win = None, root = RootWindow(dpy,screen);
- int buttons = 0;
-
- /* Make the target cursor */
- cursor = XCreateFontCursor(dpy, XC_crosshair);
-
- /* Grab the pointer using target cursor, letting it room all over */
- status = XGrabPointer(dpy, root, False,
- ButtonPressMask|ButtonReleaseMask, GrabModeSync,
- GrabModeAsync, root, cursor, CurrentTime);
- if (status != GrabSuccess) Fatal_Error("Can't grab the mouse.");
-
- /* Let the user select a window... */
- while ((target_win == None) || (buttons != 0)) {
- /* allow one more event */
- XAllowEvents(dpy, SyncPointer, CurrentTime);
- XWindowEvent(dpy, root, ButtonPressMask|ButtonReleaseMask, &event);
- switch (event.type) {
- case ButtonPress:
- if (target_win == None) {
- target_win = event.xbutton.subwindow; /* window selected */
- if (target_win == None) target_win = root;
- }
- buttons++;
- break;
- case ButtonRelease:
- if (buttons > 0) /* there may have been some down before we started */
- buttons--;
- break;
- }
- }
-
- XUngrabPointer(dpy, CurrentTime); /* Done with pointer */
-
- return(target_win);
-}
-
-
-/*
- * Window_With_Name: routine to locate a window with a given name on a display.
- * If no window with the given name is found, 0 is returned.
- * If more than one window has the given name, the first
- * one found will be returned. Only top and its subwindows
- * are looked at. Normally, top should be the RootWindow.
- */
-Window
-Window_With_Name(Display *dpy, Window top, char *name)
-{
- Window *children, dummy;
- unsigned int nchildren;
- int i;
- Window w=0;
- char *window_name;
-
- if (XFetchName(dpy, top, &window_name) && !strcmp(window_name, name))
- return(top);
-
- if (!XQueryTree(dpy, top, &dummy, &dummy, &children, &nchildren))
- return(0);
-
- for (i=0; i<nchildren; i++) {
- w = Window_With_Name(dpy, children[i], name);
- if (w)
- break;
- }
- if (children) XFree ((char *)children);
- return(w);
-}
-
-/*
- * outl: a debugging routine. Flushes stdout then prints a message on stderr
- * and flushes stderr. Used to print messages when past certain points
- * in code so we can tell where we are. Outl may be invoked like
- * printf with up to 7 arguments.
- */
-void
-outl(char *msg, ...)
-{
- va_list args;
- fflush(stdout);
- va_start(args, msg);
- vfprintf(stderr, msg, args);
- va_end(args);
- fprintf(stderr, "\n");
- fflush(stderr);
-}
-
-
-/*
* Standard fatal error routine - call like printf but maximum of 7 arguments.
* Does not require dpy or screen defined.
*/
diff --git a/dsimple.h b/dsimple.h
index c0c04cf..e49837c 100644
--- a/dsimple.h
+++ b/dsimple.h
@@ -29,10 +29,10 @@ from The Open Group.
/* $XFree86: xc/programs/xlsfonts/dsimple.h,v 1.8 2002/12/24 17:43:01 tsi Exp $ */
/*
- * Just_display.h: This file contains the definitions needed to use the
- * functions in just_display.c. It also declares the global
+ * dsimple.h: This file contains the definitions needed to use the
+ * functions in dsimple.c. It also declares the global
* variables dpy, screen, and program_name which are needed to
- * use just_display.c.
+ * use dsimple.c.
*
* Written by Mark Lillibridge. Last updated 7/1/87
*
@@ -56,40 +56,19 @@ extern int screen; /* The current screen */
#define INIT_NAME program_name=argv[0] /* use this in main to setup
program_name */
- /* Declaritions for functions in just_display.c */
+/* Declarations for functions in dsimple.c */
char *Malloc(unsigned);
char *Realloc(char *, int);
-char *Get_Display_Name(int *, char **);
-Display *Open_Display(char *);
void Setup_Display_And_Screen(int *, char **);
void Close_Display(void);
-XFontStruct *Open_Font(char *);
-void Beep(void);
-Pixmap ReadBitmapFile(Drawable, char *, int *, int *, int *, int *);
-void WriteBitmapFile(char *, Pixmap, int, int, int, int);
-Window Select_Window_Args(int *, char **);
void usage(void);
#define X_USAGE "[host:display]" /* X arguments handled by
Get_Display_Name */
-/*
- * Other_stuff.h: Definitions of routines in other_stuff.
- *
- * Written by Mark Lillibridge. Last updated 7/1/87
- *
- * Send bugs, etc. to chariot@athena.mit.edu.
- */
-
-unsigned long Resolve_Color(Window, char *);
-Pixmap Bitmap_To_Pixmap(Display *, Drawable, GC, Pixmap, int, int);
-Window Select_Window(Display *);
-void blip(void);
-Window Window_With_Name(Display *, Window, char *);
#ifdef __GNUC__
void Fatal_Error(char *, ...) __attribute__((__noreturn__));
#else
void Fatal_Error(char *, ...);
#endif
-void outl(char *, ...);