|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T x
Length: 4112 (0x1010)
Types: TextFile
Names: »xeyes.c«
└─⟦276d19d6e⟧ Bits:30007243 EUUGD5_I: X11R5
└─⟦af7d3f39a⟧ »./mit-2/mit-2.00«
└─⟦0abaffd9e⟧
└─⟦this⟧ »mit/demos/xeyes/xeyes.c«
/* $XConsortium: xeyes.c,v 1.15 91/07/18 16:46:26 rws Exp $ */
/*
* Copyright 1991 Massachusetts Institute of Technology
*
* 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 M.I.T. not be used in advertising or
* publicity pertaining to distribution of the software without specific,
* written prior permission. M.I.T. makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
* 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 <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>
#include "Eyes.h"
#include <stdio.h>
#include "eyes.bit"
#include "eyesmask.bit"
extern void exit();
static void quit();
/* Exit with message describing command line format */
void usage()
{
fprintf(stderr,
"usage: xeyes\n");
fprintf (stderr,
" [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]] [-display [{host}]:[{vs}]]\n");
fprintf(stderr,
" [-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]");
fprintf(stderr, " [-shape | +shape]");
fprintf(stderr, "\n");
fprintf(stderr,
" [-outline {color}] [-center {color}] [-backing {backing-store}]\n");
exit(1);
}
/* Command line options table. Only resources are entered here...there is a
pass over the remaining options after XtParseCommand is let loose. */
static XrmOptionDescRec options[] = {
{"-outline", "*eyes.outline", XrmoptionSepArg, NULL},
{"-center", "*eyes.center", XrmoptionSepArg, NULL},
{"-backing", "*eyes.backingStore", XrmoptionSepArg, NULL},
{"-shape", "*eyes.shapeWindow", XrmoptionNoArg, "TRUE"},
{"+shape", "*eyes.shapeWindow", XrmoptionNoArg, "FALSE"},
};
static XtActionsRec actions[] = {
{"quit", quit}
};
static Atom wm_delete_window;
void main(argc, argv)
int argc;
char **argv;
{
XtAppContext app_context;
Widget toplevel;
Arg arg[2];
Cardinal i;
toplevel = XtAppInitialize(&app_context, "XEyes",
options, XtNumber(options), &argc, argv,
NULL, arg, (Cardinal) 0);
if (argc != 1) usage();
XtAppAddActions(app_context, actions, XtNumber(actions));
XtOverrideTranslations
(toplevel, XtParseTranslationTable ("<Message>WM_PROTOCOLS: quit()"));
i = 0;
XtSetArg (arg[i], XtNiconPixmap,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyes_bits, eyes_width, eyes_height));
i++;
XtSetArg (arg[i], XtNiconMask,
XCreateBitmapFromData (XtDisplay(toplevel),
XtScreen(toplevel)->root,
(char *)eyesmask_bits,
eyesmask_width, eyesmask_height));
i++;
XtSetValues (toplevel, arg, i);
(void) XtCreateManagedWidget ("eyes", eyesWidgetClass, toplevel, NULL, 0);
XtRealizeWidget (toplevel);
wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
False);
(void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
&wm_delete_window, 1);
XtAppMainLoop(app_context);
}
/*ARGSUSED*/
static void quit(w, event, params, num_params)
Widget w;
XEvent *event;
String *params;
Cardinal *num_params;
{
if (event->type == ClientMessage &&
event->xclient.data.l[0] != wm_delete_window) {
XBell(XtDisplay(w), 0);
} else {
XtDestroyApplicationContext(XtWidgetToApplicationContext(w));
exit(0);
}
}