[comp.sources.x] v05i042: XView example programs, Part04/06

argv@sun.com (Dan Heller) (12/08/89)

Submitted-by: Dan Heller <argv@sun.com>
Posting-number: Volume 5, Issue 42
Archive-name: xview.demos/part04



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# If this archive is complete, you will see the following message at the end:
#		"End of archive 4 (of 6)."
# Contents:  xview.demos/color/cardback.icon xview.demos/color/color.c
#   xview.demos/cursor/hot_spot.c xview.demos/fonts/simple_font.c
#   xview.demos/fonts/type_font.c xview.demos/icons/closed.icon
#   xview.demos/menus/menu.c xview.demos/menus/simple_menu.c
#   xview.demos/menus/xv_menu.c xview.demos/misc/fullscreen.c
#   xview.demos/notice/trigger_notice.c xview.demos/notifier/animate.c
#   xview.demos/panels/Imakefile xview.demos/panels/list_glyphs.c
#   xview.demos/panels/panel_repaint.c
#   xview.demos/seln_svc/seln_line.c
#   xview.demos/seln_svc/simple_seln.c
#   xview.demos/sv_compat/gray_stencil.pr
#   xview.demos/sv_compat/pw_draw.c
# Wrapped by argv@island on Thu Dec  7 23:18:23 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xview.demos/color/cardback.icon' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/color/cardback.icon'\"
else
echo shar: Extracting \"'xview.demos/color/cardback.icon'\" \(2003 characters\)
sed "s/^X//" >'xview.demos/color/cardback.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X * Description: The back of a Sun playing card.
X * Background: White.
X */
X	0x3FFF,0xFFFF,0xFFFF,0xF800,0x7FFF,0xFFFF,0xFFFF,0xFC00,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0038,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
X	0xC000,0x00FE,0x0000,0x0600,0xC000,0x00EF,0x0000,0x0600,
X	0xC000,0x02E7,0x8000,0x0600,0xC000,0x0773,0xC000,0x0600,
X	0xC000,0x07B9,0xE000,0x0600,0xC000,0x13DC,0xF000,0x0600,
X	0xC000,0x39EE,0x7800,0x0600,0xC000,0x5CF7,0x3400,0x0600,
X	0xC000,0xEE7B,0x8E00,0x0600,0xC001,0xC73D,0xDC00,0x0600,
X	0xC003,0x9B9E,0xB980,0x0600,0xC007,0x3DCE,0x73C0,0x0600,
X	0xC00E,0x78FE,0xE780,0x0600,0xC01C,0xF77D,0xCF70,0x0600,
X	0xC039,0xEFBB,0x9EF8,0x0600,0xC073,0xDFC7,0x3DFC,0x0600,
X	0xC077,0xB9C7,0x7B9C,0x0600,0xC07F,0x73C7,0xF73C,0x0600,
X	0xC03E,0xE7BB,0xEE78,0x0600,0xC01D,0xCF7D,0xDCF0,0x0600,
X	0xC003,0x9EFE,0x39E0,0x0600,0xC007,0x3CEF,0x73C0,0x0600,
X	0xC002,0x7AE7,0xA780,0x0600,0xC000,0xF773,0xCF00,0x0600,
X	0xC000,0xE3B9,0xEE00,0x0600,0xC000,0x51DC,0xF400,0x0600,
X	0xC000,0x38EE,0x7800,0x0600,0xC000,0x1C77,0x3000,0x0600,
X	0xC000,0x0E3B,0x8000,0x0600,0xC000,0x071D,0xC000,0x0600,
X	0xC000,0x039E,0x8000,0x0600,0xC000,0x01CE,0x0000,0x0600,
X	0xC000,0x00FE,0x0000,0x0600,0xC000,0x007C,0x0000,0x0600,
X	0xC000,0x0038,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0xC000,0x0000,0x0000,0x0600,0xC000,0x0000,0x0000,0x0600,
X	0x7FFF,0xFFFF,0xFFFF,0xFC00,0x3FFF,0xFFFF,0xFFFF,0xF800
END_OF_FILE
if test 2003 -ne `wc -c <'xview.demos/color/cardback.icon'`; then
    echo shar: \"'xview.demos/color/cardback.icon'\" unpacked with wrong size!
fi
# end of 'xview.demos/color/cardback.icon'
fi
if test -f 'xview.demos/color/color.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/color/color.c'\"
else
echo shar: Extracting \"'xview.demos/color/color.c'\" \(2990 characters\)
sed "s/^X//" >'xview.demos/color/color.c' <<'END_OF_FILE'
X#include <X11/Xlib.h>
X#include <X11/Xutil.h>
X
Xmain(argc, argv)
Xchar *argv[];
X{
X   Display     *display;
X   int         screen;
X   XSizeHints  sizehints;      
X   Window      window;
X   XEvent      event;
X   XButtonEvent *button;
X   XColormapEvent *colormap;
X   short	i;
X   int         done = 0;
X   Colormap    cmap, orig_cmap;
X   XVisualInfo   vTemplate, *visualList;
X   int          visualsMatched;
X   Visual       *visual;
X   XSetWindowAttributes atts;
X   XColor      color;
X
X   display = XOpenDisplay("");
X   screen = DefaultScreen ( display );
X   window = XDefaultRootWindow(display);
X
X   vTemplate.screen = screen;
X   vTemplate.depth = 8;
X   vTemplate.class = PseudoColor;
X   visualList = XGetVisualInfo(display, 
X      VisualScreenMask|VisualClassMask|VisualDepthMask,
X      &vTemplate, &visualsMatched);
X   if ( visualsMatched == 0 ) {
X      puts("visual not found, using default");
X      visual = DefaultVisual( display, screen );
X   } else {
X      printf("found %d visuals\n", visualsMatched);
X      visual = visualList[0].visual;
X   }
X
X   sizehints.x = 200;
X   sizehints.y = 0;
X   sizehints.width = sizehints.height = 150;
X   sizehints.flags = USSize | USPosition;
X
X   cmap = XCreateColormap( display,window, visual, AllocAll);
X   orig_cmap = DefaultColormap(display, DefaultScreen(display));
X   atts.colormap = cmap;
X
X   window = XCreateWindow(display,DefaultRootWindow(display), 
X            sizehints.x, sizehints.y, sizehints.width, sizehints.height,
X	    0, 8, InputOutput, visual, CWColormap, &atts);
X
X   XSetStandardProperties(display, window, argv[0],
X		      argv[0], None, argv, 1, &sizehints);
X
X   color.flags = DoRed|DoGreen|DoBlue;
X   srandom(time(0));
X   printf("Allocating %d colors\n", visual->map_entries);
X   for (color.pixel=0; color.pixel < visual->map_entries; color.pixel++) {
X      color.red =   random()%65536;
X      color.green = random()%65536;
X      color.blue =  random()%65536;
X      XStoreColor ( display, cmap, &color );
X   }
X
X   while (visualsMatched > 0)
X       XFree(visualList[--visualsMatched]);
X
X   /*  Now that the screen is defined, select inputs and get them  */
X   XSelectInput(display, window, ButtonPressMask | ColormapChangeMask);
X   XMapWindow(display, window);
X
X   do {
X      XNextEvent ( display, &event );
X      switch (event.type) {
X	  case ButtonPress:
X	     printf ("*********  Found ButtonPress event ********\n");
X	     button = (XButtonEvent *) &event;
X	     printf ("button is %d\n", button->button );
X		 if (button->button == 3)
X		    done = -1;
X	     break;
X	  case ColormapNotify:
X	     printf ("*********  Found ColormapNotify event ********\n");
X	     colormap = (XColormapEvent *) &event;
X	     if ( colormap->state == ColormapInstalled )
X		 printf ("Colormap has been installed\n");
X	     else 
X		 printf ("Colormap has been uninstalled\n");
X	     printf ("Colormap is %d\n", colormap->colormap );
X	     printf ("Associated window is %d\n", colormap->window );
X      }
X   } while (!done);
X   XCloseDisplay(display);
X}
END_OF_FILE
if test 2990 -ne `wc -c <'xview.demos/color/color.c'`; then
    echo shar: \"'xview.demos/color/color.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/color/color.c'
fi
if test -f 'xview.demos/cursor/hot_spot.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/cursor/hot_spot.c'\"
else
echo shar: Extracting \"'xview.demos/cursor/hot_spot.c'\" \(3094 characters\)
sed "s/^X//" >'xview.demos/cursor/hot_spot.c' <<'END_OF_FILE'
X/*
X * hot_spot.c -- create a cursor and query it's position on the 
X * screen and in the panel's window.
X * Our own function, create_cursor(), attaches a new cursor to the
X * window parameter passed into the function.
X */
X#include <X11/X.h>
X#include <X11/Xlib.h>           /* for the xlib graphics */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/cursor.h>
X#include <xview/svrimage.h>
X
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    void        do_it();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    /*
X     * Create a base frame, a panel, and a panel button.
X     */
X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
X    panel = (Panel)xv_create(frame, PANEL, NULL);
X    create_cursor(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0));
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Push Me",
X        PANEL_NOTIFY_PROC,      do_it,
X        NULL);
X
X    window_fit(panel);
X    window_fit(frame);
X    window_main_loop(frame);
X}
X
X/*
X * when user selects the panel button, the current mouse location is
X * printed relative to the panel's window and to the screen.
X * This location is governed by the hot spot on the cursor.
X */
Xvoid
Xdo_it(item, event)
X{
X    Rect *r;
X    Panel panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
X
X    r = (Rect *)xv_get(xv_get(panel, XV_ROOT), WIN_MOUSE_XY);
X    printf("Root window: %d %d\n", r->r_left, r->r_top);
X    r = (Rect *)xv_get(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0), WIN_MOUSE_XY);
X    printf("Panel window: %d %d\n", r->r_left, r->r_top);
X}
X
X/*
X * create_cursor() creates a bull's eye cursor and assigns it
X * to the window (parameter).
X */
Xcreate_cursor(window)
XXv_Window window;
X{
X    Xv_Cursor      cursor;
X    Server_image   image;
X    Pixmap         pixmap;
X    Display        *dpy = (Display *)xv_get(window, XV_DISPLAY);
X    GC             gc;
X    XGCValues      gcvalues;
X
X    image = (Server_image)xv_create(XV_NULL, SERVER_IMAGE,
X        XV_WIDTH,       16,
X        XV_HEIGHT,      16,
X        NULL);
X    pixmap = (Pixmap)xv_get(image, XV_XID);
X    /* Create GC with reversed foreground and background colors to
X     * clear pixmap first.  Use 1 and 0 because pixmap is 1-bit deep.
X     */
X    gcvalues.foreground = 0;
X    gcvalues.background = 1;
X    gc = XCreateGC(dpy, pixmap, GCForeground|GCBackground, &gcvalues);
X    XFillRectangle(dpy, pixmap, gc, 0, 0, 16, 16);
X    /*
X     * Reset foreground and background values for XDrawArc() routines.
X     */
X    gcvalues.foreground = 1;
X    gcvalues.background = 0;
X    XChangeGC(dpy, gc, GCForeground | GCBackground, &gcvalues);
X    XDrawArc(dpy, pixmap, gc, 2, 2, 12, 12, 0, 360 * 64);
X    XDrawArc(dpy, pixmap, gc, 6, 6, 4, 4, 0, 360 * 64);
X
X    /* Creaste cursor and assign it to the window (parameter) */
X    cursor = xv_create(XV_NULL, CURSOR,
X        CURSOR_IMAGE,   image,
X        CURSOR_XHOT,    7,
X        CURSOR_YHOT,    7,
X        NULL);
X    xv_set(window, WIN_CURSOR, cursor, NULL);
X
X    /* free the GC -- the cursor and the image must not be freed. */
X    XFreeGC(dpy, gc);
X}
END_OF_FILE
if test 3094 -ne `wc -c <'xview.demos/cursor/hot_spot.c'`; then
    echo shar: \"'xview.demos/cursor/hot_spot.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/cursor/hot_spot.c'
fi
if test -f 'xview.demos/fonts/simple_font.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/fonts/simple_font.c'\"
else
echo shar: Extracting \"'xview.demos/fonts/simple_font.c'\" \(2446 characters\)
sed "s/^X//" >'xview.demos/fonts/simple_font.c' <<'END_OF_FILE'
X/*
X * simple_font.c -- very simple program showing how to render text
X * using a font gotten from xv_find().  Hello World is printed in
X * the top-left corner of a canvas window.
X */
X#include <stdio.h>
X#include <X11/X.h>
X#include <X11/Xlib.h>   /* X.h and Xlib.h used for Xlib graphics */
X#include <xview/xview.h>
X#include <xview/canvas.h>
X#include <xview/font.h>
X#include <xview/xv_xrect.h>
X
X#define GC_KEY  10 /* any arbitrary number -- used for XV_KEY_DATA */
X
Xmain(argc, argv)
Xint     argc;
Xchar    *argv[];
X{
X    Frame       frame;
X    Canvas      canvas;
X    XGCValues   gcvalues;
X    Xv_Font     font;
X    void        my_repaint_proc();
X    Display     *dpy;
X    GC          gc;
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
X
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,               400,
X        XV_HEIGHT,              200,
X        CANVAS_X_PAINT_WINDOW,  TRUE,
X        CANVAS_REPAINT_PROC,    my_repaint_proc,
X        NULL);
X    window_fit(frame);
X
X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
X    font = (Xv_Font)xv_find(frame, FONT, FONT_NAME, "courier", NULL);
X    if (!font) {
X        fprintf(stderr, "%s: cannot use font: courier.\n", argv[0]);
X        font = (Xv_Font)xv_get(frame, XV_FONT);
X    }
X
X    /* Create a GC to use with Xlib graphics -- set the fg/bg colors
X     * and set the Font, which is the XV_XID of the XView font object.
X     */
X    gcvalues.font = (Font)xv_get(font, XV_XID);
X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
X    gcvalues.graphics_exposures = False;
X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
X        GCForeground | GCBackground | GCFont | GCGraphicsExposures,
X        &gcvalues);
X
X    /* Assign the gc to the canvas object so we can use the same gc
X     * each time we draw into the canvas.  Also avoids a global
X     * variable to store the GC.
X     */
X    xv_set(canvas, XV_KEY_DATA, GC_KEY, gc, NULL);
X    xv_main_loop(frame);
X}
X
X/*
X * Called every time the window needs repainting.
X */
Xvoid
Xmy_repaint_proc(canvas, pw, dpy, xwin, xrects)
XCanvas          canvas;
XXv_Window       pw;
XDisplay         *dpy;
XWindow          xwin;
XXv_xrectlist    *xrects;
X{
X    GC gc = (GC)xv_get(canvas, XV_KEY_DATA, GC_KEY);
X
X    XDrawString(dpy, xwin, gc, 10, 20,
X        "Hello World", 11); /* 11 = strlen("Hello World") */
X}
END_OF_FILE
if test 2446 -ne `wc -c <'xview.demos/fonts/simple_font.c'`; then
    echo shar: \"'xview.demos/fonts/simple_font.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/fonts/simple_font.c'
fi
if test -f 'xview.demos/fonts/type_font.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/fonts/type_font.c'\"
else
echo shar: Extracting \"'xview.demos/fonts/type_font.c'\" \(2710 characters\)
sed "s/^X//" >'xview.demos/fonts/type_font.c' <<'END_OF_FILE'
X/*
X * simple_font.c -- very simple program showing how to render text
X * using fonts loaded by XView.
X */
X#include <ctype.h>
X#include <X11/X.h>
X#include <X11/Xlib.h>
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/font.h>
X
XDisplay *dpy;
XGC      gc;
XXFontStruct *font_info;
X
Xmain(argc, argv)
Xint     argc;
Xchar    *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    Canvas      canvas;
X    XGCValues   gcvalues;
X    Xv_Font     font;
X    void        my_event_proc();
X    extern void exit();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(XV_NULL, FRAME,
X        FRAME_LABEL,            argv[0],
X        NULL);
X
X    panel = (Panel)xv_create(frame, PANEL,
X        PANEL_LAYOUT,           PANEL_VERTICAL,
X        NULL);
X    xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    window_fit(panel);
X
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,               400,
X        XV_HEIGHT,              200,
X        CANVAS_X_PAINT_WINDOW,  TRUE,
X        NULL);
X    xv_set(canvas_paint_window(canvas),
X        WIN_EVENT_PROC,         my_event_proc,
X        NULL);
X
X    window_fit(frame);
X
X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
X    font = (Xv_Font)xv_get(frame, XV_FONT);
X    font_info = (XFontStruct *)xv_get(font, FONT_INFO);
X
X    gcvalues.font = (Font)xv_get(font, XV_XID);
X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
X    gcvalues.graphics_exposures = False;
X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
X        GCForeground | GCBackground | GCFont | GCGraphicsExposures, &gcvalues);
X
X    xv_main_loop(frame);
X}
X
Xvoid
Xmy_event_proc(win, event)
XXv_Window win;
XEvent *event;
X{
X    static int x = 10, y = 10;
X    Window xwin = (Window)xv_get(win, XV_XID);
X    char c;
X
X    if (event_is_up(event))
X        return;
X
X    if (event_is_ascii(event)) {
X        c = (char)event_id(event);
X        if (c == '\n' || c == '\r') {
X            y += font_info->max_bounds.ascent +
X                        font_info->max_bounds.descent;
X            x = 10;
X        } else if (c == 7 || c == 127) { /* backspace or delete */
X            if (x > 10)
X                x -= XTextWidth(font_info, "m", 1);
X            /* use XDrawImageString to overwrite previous text */
X            XDrawImageString(dpy, xwin, gc, x, y, "  ", 2);
X        } else {
X            XDrawString(dpy, xwin, gc, x, y, &c, 1);
X            x += XTextWidth(font_info, &c, 1);
X        }
X    } else if (event_action(event) == ACTION_SELECT) {
X        x = event_x(event);
X        y = event_y(event);
X    }
X}
END_OF_FILE
if test 2710 -ne `wc -c <'xview.demos/fonts/type_font.c'`; then
    echo shar: \"'xview.demos/fonts/type_font.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/fonts/type_font.c'
fi
if test -f 'xview.demos/icons/closed.icon' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/icons/closed.icon'\"
else
echo shar: Extracting \"'xview.demos/icons/closed.icon'\" \(1933 characters\)
sed "s/^X//" >'xview.demos/icons/closed.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0x0000,0x0000,0x00FF,0xFFFF,0xFFFF,0xFF00,
X	0x0080,0x0000,0x0000,0x0100,0x009F,0xFFFF,0xFFFF,0xF900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0042,0x4000,0x0900,
X	0x0090,0x1082,0x4021,0x0900,0x0090,0x2102,0x4042,0x0900,
X	0x0090,0x4202,0x4084,0x0900,0x0090,0x8402,0x4108,0x0900,
X	0x0091,0x0802,0x4210,0x0900,0x0090,0x1042,0x4020,0x8900,
X	0x0090,0x2082,0x4041,0x0900,0x0090,0x4102,0x4082,0x0900,
X	0x0090,0x8202,0x4104,0x0900,0x0091,0x0402,0x4208,0x0900,
X	0x0090,0x0802,0x4010,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x009F,0xFFFE,0x7FFF,0xF900,
X	0x0090,0x0000,0x0000,0x0900,0x0090,0x0000,0x0000,0x0900,
X	0x009F,0xFFFE,0x7FFF,0xF900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x2002,0x4000,0x0900,0x0090,0x4082,0x4104,0x0900,
X	0x0090,0x8102,0x4208,0x0900,0x0091,0x0202,0x4410,0x0900,
X	0x0092,0x0402,0x4820,0x0900,0x0090,0x0802,0x4042,0x0900,
X	0x0090,0x1042,0x4084,0x0900,0x0090,0x2082,0x4108,0x0900,
X	0x0090,0x4102,0x4210,0x0900,0x0090,0x8202,0x4420,0x0900,
X	0x0091,0x0002,0x4800,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x0090,0x0002,0x4000,0x0900,0x0090,0x0002,0x4000,0x0900,
X	0x009F,0xFFFF,0xFFFF,0xF900,0x0090,0x0000,0x0000,0x0900,
X	0x0090,0x001F,0xF800,0x0900,0x0090,0x001F,0xF800,0x0900,
X	0x0090,0x0000,0x0000,0x0900,0x009F,0xFFFF,0xFFFF,0xF900,
X	0x0080,0x0000,0x0000,0x0100,0x0080,0x0000,0x0000,0x0100,
X	0x00FF,0xFFFF,0xFFFF,0xFF00,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
END_OF_FILE
if test 1933 -ne `wc -c <'xview.demos/icons/closed.icon'`; then
    echo shar: \"'xview.demos/icons/closed.icon'\" unpacked with wrong size!
fi
# end of 'xview.demos/icons/closed.icon'
fi
if test -f 'xview.demos/menus/menu.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/menus/menu.c'\"
else
echo shar: Extracting \"'xview.demos/menus/menu.c'\" \(2412 characters\)
sed "s/^X//" >'xview.demos/menus/menu.c' <<'END_OF_FILE'
X/*
X * xv_menu.c -
X *      Demonstrate the use of an XView menu in a canvas subwindow.
X *      Menu is brought up with right mouse button and displays
X *      choice made in the canvas.  Allow menu to be pinned.
X */
X#include <xview/xview.h>
X#include <xview/canvas.h>
X
XFrame   frame;
X
Xmain(argc,argv)
Xint     argc;
Xchar    *argv[];
X{
X    Canvas      canvas;
X    Menu        menu;
X    void        my_notify_proc(), my_event_proc();
X    extern void exit();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(NULL, FRAME,
X        FRAME_LABEL,    argv[0],
X        NULL);
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,       300,
X        XV_HEIGHT,      200,
X        NULL);
X    menu = (Menu)xv_create(NULL, MENU,
X        MENU_TITLE_ITEM,        "Junk",
X        MENU_STRINGS,           "Yes", "No", "Maybe", NULL,
X        MENU_NOTIFY_PROC,       my_notify_proc,
X        MENU_ITEM,
X            MENU_STRING,        "Save",
X            MENU_NOTIFY_PROC,   my_notify_proc,
X            MENU_PULLRIGHT,
X                xv_create(canvas, MENU,
X                    MENU_GEN_PIN_WINDOW,        frame, "Save",
X                    MENU_ITEM,
X                        MENU_STRING,            "Update Changes",
X                        MENU_NOTIFY_PROC,       my_notify_proc,
X                        NULL,
X                    NULL),
X            NULL,
X        MENU_ITEM,
X            MENU_STRING,        "Quit",
X            MENU_NOTIFY_PROC,   exit,
X            NULL,
X        NULL);
X
X    xv_set(canvas_paint_window(canvas),
X        WIN_CONSUME_EVENTS,     WIN_MOUSE_BUTTONS, NULL,
X        WIN_EVENT_PROC,         my_event_proc,
X        /* associate the menu to the canvas win so we can retreive it easily */
X        WIN_CLIENT_DATA,        menu,
X        NULL);
X
X    window_fit(frame);
X    window_main_loop(frame);
X}
X
X/*
X * my_notify_proc - Display menu selection in frame header.
X */
Xvoid
Xmy_notify_proc(menu, menu_item)
XMenu menu;
XMenu_item menu_item;
X{
X    xv_set(frame,
X        FRAME_LABEL,    xv_get(menu_item, MENU_STRING),
X        NULL);
X}
X
X/*
X * my_event_proc - Call menu_show() to display menu on right mouse button push.
X */
Xvoid
Xmy_event_proc(window, event)
XXv_Window window;
XEvent *event;
X{
X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
X        Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
X        menu_show(menu, window, event, NULL);
X    }
X}
END_OF_FILE
if test 2412 -ne `wc -c <'xview.demos/menus/menu.c'`; then
    echo shar: \"'xview.demos/menus/menu.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/menus/menu.c'
fi
if test -f 'xview.demos/menus/simple_menu.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/menus/simple_menu.c'\"
else
echo shar: Extracting \"'xview.demos/menus/simple_menu.c'\" \(2248 characters\)
sed "s/^X//" >'xview.demos/menus/simple_menu.c' <<'END_OF_FILE'
X/*
X * simple_menu.c -
X * Demonstrate the use of an XView menu in a canvas subwindow.
X * A Menu is brought up with the MENU mouse button.  The choices
X * in the menu toggle the display of the scrollbar next to the canvas.
X */
X#include <xview/xview.h>
X#include <xview/canvas.h>
X#include <xview/scrollbar.h>
X
X#define SCROLLBAR_KEY   100
X#define MENU_KEY        200
X
Xmain(argc,argv)
Xint     argc;
Xchar    *argv[];
X{
X    Frame       frame;
X    Canvas      canvas;
X    Scrollbar   scrollbar;
X    Menu        menu;
X    void        menu_notify_proc(), pw_event_proc();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    /*
X     *  Create a frame, canvas and menu.
X     *  A canvas receives input in its canvas_paint_window().
X     */
X    frame = (Frame)xv_create(NULL, FRAME,
X        FRAME_LABEL,    argv[0],
X        NULL);
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,       300,
X        XV_HEIGHT,      200,
X        NULL);
X    scrollbar = (Scrollbar)xv_create(canvas, SCROLLBAR,
X        SCROLLBAR_DIRECTION,    SCROLLBAR_VERTICAL,
X        NULL);
X
X    menu = (Menu)xv_create(canvas, MENU,
X        MENU_TITLE_ITEM,        "Scrollbar",
X        MENU_STRINGS,           "On", "Off", NULL,
X        MENU_NOTIFY_PROC,       menu_notify_proc,
X        XV_KEY_DATA,            SCROLLBAR_KEY, scrollbar,
X        NULL);
X
X    xv_set(canvas_paint_window(canvas),
X        WIN_EVENT_PROC,         pw_event_proc,
X        XV_KEY_DATA,            MENU_KEY, menu,
X        NULL);
X
X    window_fit(frame);
X    window_main_loop(frame);
X}
X
X/*
X * menu_notify_proc - toggle the display of the scrollbar
X * based on which menu item was chosen.
X */
Xvoid
Xmenu_notify_proc(menu, menu_item)
XMenu menu;
XMenu_item menu_item;
X{
X    char *menu_choice = (char *)xv_get(menu_item, MENU_STRING);
X    int show_it = !strcmp(menu_choice, "On");
X
X    xv_set(xv_get(menu, XV_KEY_DATA, SCROLLBAR_KEY),
X        XV_SHOW,        show_it,
X        NULL);
X}
X
X/*
X * Call menu_show() to display menu.
X */
Xvoid
Xpw_event_proc(canvas_pw, event)
XXv_Window       canvas_pw;
XEvent *event;
X{
X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
X        Menu menu = (Menu)xv_get(canvas_pw, XV_KEY_DATA, MENU_KEY);
X        menu_show(menu, canvas_pw, event, NULL);
X    }
X}
END_OF_FILE
if test 2248 -ne `wc -c <'xview.demos/menus/simple_menu.c'`; then
    echo shar: \"'xview.demos/menus/simple_menu.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/menus/simple_menu.c'
fi
if test -f 'xview.demos/menus/xv_menu.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/menus/xv_menu.c'\"
else
echo shar: Extracting \"'xview.demos/menus/xv_menu.c'\" \(2427 characters\)
sed "s/^X//" >'xview.demos/menus/xv_menu.c' <<'END_OF_FILE'
X/*
X * xv_menu.c -
X *      Demonstrate the use of an XView menu in a canvas subwindow.
X *      Menu is brought up with right mouse button and the selected
X *      choice is displayed in the canvas.  Allows menu to be pinned.
X */
X#include <xview/xview.h>
X#include <xview/canvas.h>
X
XFrame   frame;
X
Xmain(argc,argv)
Xint     argc;
Xchar    *argv[];
X{
X    Canvas      canvas;
X    Menu        menu;
X    void        my_notify_proc(), my_event_proc();
X    extern void exit();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(NULL, FRAME,
X        FRAME_LABEL,    argv[0],
X        NULL);
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,       300,
X        XV_HEIGHT,      200,
X        NULL);
X    menu = (Menu)xv_create(NULL, MENU,
X        MENU_TITLE_ITEM,        "Junk",
X        MENU_STRINGS,           "Yes", "No", "Maybe", NULL,
X        MENU_NOTIFY_PROC,       my_notify_proc,
X        MENU_ITEM,
X            MENU_STRING,        "Save",
X            MENU_NOTIFY_PROC,   my_notify_proc,
X            MENU_PULLRIGHT,
X                xv_create(canvas, MENU,
X                    MENU_GEN_PIN_WINDOW,        frame, "Save",
X                    MENU_ITEM,
X                        MENU_STRING,            "Update Changes",
X                        MENU_NOTIFY_PROC,       my_notify_proc,
X                        NULL,
X                    NULL),
X            NULL,
X        MENU_ITEM,
X            MENU_STRING,        "Quit",
X            MENU_NOTIFY_PROC,   exit,
X            NULL,
X        NULL);
X
X    xv_set(canvas_paint_window(canvas),
X        WIN_CONSUME_EVENTS,     WIN_MOUSE_BUTTONS, NULL,
X        WIN_EVENT_PROC,         my_event_proc,
X        /* associate the menu to the canvas win so we can retrieve it easily */
X        WIN_CLIENT_DATA,        menu,
X        NULL);
X
X    window_fit(frame);
X    window_main_loop(frame);
X}
X
X/*
X * my_notify_proc - Display menu selection in frame header.
X */
Xvoid
Xmy_notify_proc(menu, menu_item)
XMenu menu;
XMenu_item menu_item;
X{
X    xv_set(frame,
X        FRAME_LABEL,    xv_get(menu_item, MENU_STRING),
X        NULL);
X}
X
X/*
X * my_event_proc - Call menu_show() to display menu on right mouse button push.
X */
Xvoid
Xmy_event_proc(window, event)
XXv_Window window;
XEvent *event;
X{
X    if (event_action(event) == ACTION_MENU && event_is_down(event)) {
X        Menu menu = (Menu)xv_get(window, WIN_CLIENT_DATA);
X        menu_show(menu, window, event, NULL);
X    }
X}
X
X
END_OF_FILE
if test 2427 -ne `wc -c <'xview.demos/menus/xv_menu.c'`; then
    echo shar: \"'xview.demos/menus/xv_menu.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/menus/xv_menu.c'
fi
if test -f 'xview.demos/misc/fullscreen.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/misc/fullscreen.c'\"
else
echo shar: Extracting \"'xview.demos/misc/fullscreen.c'\" \(2150 characters\)
sed "s/^X//" >'xview.demos/misc/fullscreen.c' <<'END_OF_FILE'
X/*
X * fullscreen.c
X * Demonstrate the fullscreen package.  Create a panel button that
X * creates a fullscreen instance, thus grabbing the X server.  User
X * presses a mouse button to release the server.
X */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/fullscreen.h>
X
Xmain(argc, argv)
Xchar *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    void        exit(), grab();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
X    panel = (Panel)xv_create(frame, PANEL, NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Fullscreen",
X        PANEL_NOTIFY_PROC,      grab,
X        NULL);
X
X    window_fit(panel);
X    window_fit(frame);
X    xv_main_loop(frame);
X}
X
X/*
X * notify procedure for when the "Fullscreen" button is pushed.
X * Create a fullscreen instance, scan for a button event, then
X * destroy it.
X */
Xvoid
Xgrab(item, event)
XPanel_item item;
XEvent *event;
X{
X    Panel       panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
X    Fullscreen  fs;
X    Inputmask   im;
X
X    /* set up an input mask for the call to xv_input_readevent(). */
X    win_setinputcodebit(&im, MS_LEFT);
X    win_setinputcodebit(&im, MS_MIDDLE);
X    win_setinputcodebit(&im, MS_RIGHT);
X    win_setinputcodebit(&im, LOC_MOVE);
X
X    /*
X     * Create a fullscreen object (initialize X server grab).
X     * Specify which events should be allowed to pass through.
X     * These events should match the input mask coded above.
X     */
X    fs = xv_create(panel, FULLSCREEN,
X        WIN_CONSUME_EVENTS,
X            WIN_MOUSE_BUTTONS, LOC_MOVE, NULL,
X        NULL);
X
X    /* loop till user generates a button event */
X    while (xv_input_readevent(panel, event, TRUE, TRUE, &im) != -1)
X        if (event_is_button(event))
X            break;
X
X    /* destroy the fullscreen (release the X server grab) */
X    xv_destroy(fs);
X
X    /* report which button was pushed. */
X    printf("event was button %d\n", event_id(event) - BUT_FIRST + 1);
X}
END_OF_FILE
if test 2150 -ne `wc -c <'xview.demos/misc/fullscreen.c'`; then
    echo shar: \"'xview.demos/misc/fullscreen.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/misc/fullscreen.c'
fi
if test -f 'xview.demos/notice/trigger_notice.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/notice/trigger_notice.c'\"
else
echo shar: Extracting \"'xview.demos/notice/trigger_notice.c'\" \(2053 characters\)
sed "s/^X//" >'xview.demos/notice/trigger_notice.c' <<'END_OF_FILE'
X/*
X * trigger_notice.c -- Demonstrate the use of triggers in notices.
X */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/notice.h>
X
Xmain(argc,argv)
Xint     argc;
Xchar    *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    Xv_opaque   my_notify_proc();
X    extern void exit();
X
X    /*
X     * Initialize XView, create a frame, a panel and one panel button.
X     */
X    xv_init(XV_INIT_ARGS, argc, argv, NULL);
X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
X    panel = (Panel)xv_create(frame, PANEL, NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Move",
X        PANEL_NOTIFY_PROC,      my_notify_proc,
X        NULL);
X
X    /* make sure everything looks good */
X    window_fit(panel);
X    window_fit(frame);
X
X    /* start window event processing */
X    xv_main_loop(frame);
X}
X
X/*
X * my_notify_proc() -- called when the user selects the "Move"
X * panel button.  Put up a notice_prompt to get new coordinates
X * to move the main window.
X */
XXv_opaque
Xmy_notify_proc(item, event)
XPanel_item  item;
XEvent      *event;
X{
X    int         result, x, y;
X    Panel       panel = (Panel)xv_get(item, PANEL_PARENT_PANEL);
X    Frame       frame = (Frame)xv_get(panel, XV_OWNER);
X
X    x = event_x(event), y = event_y(event);
X    printf("original click relative to panel: %d, %d\n", x, y);
X    result = notice_prompt(panel, event,
X        NOTICE_MESSAGE_STRINGS,
X            "You may move the window to a new location specified by",
X            "clicking the Left Mouse Button somewhere on the screen.",
X            NULL,
X        NOTICE_TRIGGER,         MS_LEFT,
X        NOTICE_NO_BEEPING,      TRUE,
X        NULL);
X
X    if (result == NOTICE_TRIGGERED) {
X        x += event_x(event) + (int)xv_get(frame, XV_X);
X        y += event_y(event) + (int)xv_get(frame, XV_Y);
X        printf("screen x,y: %d, %d\n", x, y);
X        xv_set(frame, XV_X, x, XV_Y, y, NULL);
X    }
X}
END_OF_FILE
if test 2053 -ne `wc -c <'xview.demos/notice/trigger_notice.c'`; then
    echo shar: \"'xview.demos/notice/trigger_notice.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/notice/trigger_notice.c'
fi
if test -f 'xview.demos/notifier/animate.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/notifier/animate.c'\"
else
echo shar: Extracting \"'xview.demos/notifier/animate.c'\" \(3951 characters\)
sed "s/^X//" >'xview.demos/notifier/animate.c' <<'END_OF_FILE'
X/*
X * animate.c -- use glyphs from the "icon" font distributed with XView
X * to do frame-by-frame animation.
X */
X#include <stdio.h>
X#include <ctype.h>
X#include <X11/X.h>
X#include <X11/Xlib.h>
X#include <X11/Xos.h>            /* for <sys/time.h> */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/font.h>
X#include <xview/notify.h>
X
XFrame            frame;
XDisplay          *dpy;
XGC               gc;
XWindow           canvas_win;
XNotify_value     animate();
Xstruct itimerval timer;
X
X#define ArraySize(x)  (sizeof(x)/sizeof(x[0]))
Xchar *horses[] = { "N", "O", "P", "Q", "R" };
Xchar *boys[] = { "\007", "\005", "\007", "\010" };
Xchar *men[] = { "\\", "]", "Y", "Z", "[" };
Xchar *eyes[] = {
X    "2", "5", "4", "3", "4", "5",
X    "2", "1", "0", "/", "0", "1"
X};
X
Xint max_images = ArraySize(horses);
Xchar **images = horses;
Xint cnt;
X
Xmain(argc, argv)
Xint     argc;
Xchar    *argv[];
X{
X    Panel       panel;
X    Canvas      canvas;
X    XGCValues   gcvalues;
X    Xv_Font     _font;
X    XFontStruct *font;
X    void        adjust_speed(), change_glyph();
X    extern void exit();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(XV_NULL, FRAME,
X        FRAME_LABEL,            argv[0],
X        FRAME_SHOW_FOOTER,      TRUE,
X        NULL);
X
X    panel = (Panel)xv_create(frame, PANEL,
X        PANEL_LAYOUT,           PANEL_VERTICAL,
X        NULL);
X    xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    xv_create(panel, PANEL_SLIDER,
X        PANEL_LABEL_STRING,     "Millisecs Between Frames",
X        PANEL_VALUE,            0,
X        PANEL_MAX_VALUE,        120,
X        PANEL_NOTIFY_PROC,      adjust_speed,
X        NULL);
X    xv_create(panel, PANEL_CHOICE,
X        PANEL_LABEL_STRING,     "Glyphs",
X        PANEL_LAYOUT,           PANEL_HORIZONTAL,
X        PANEL_DISPLAY_LEVEL,    PANEL_ALL,
X        PANEL_CHOICE_STRINGS,   "Horse", "Man", "Boy", "Eye", NULL,
X        PANEL_NOTIFY_PROC,      change_glyph,
X        NULL);
X    window_fit(panel);
X
X    canvas = (Canvas)xv_create(frame, CANVAS,
X        XV_WIDTH,               64,
X        XV_HEIGHT,              64,
X        CANVAS_X_PAINT_WINDOW,  TRUE,
X        NULL);
X    canvas_win = (Window)xv_get(canvas_paint_window(canvas), XV_XID);
X
X    window_fit(frame);
X
X    dpy = (Display *)xv_get(frame, XV_DISPLAY);
X    _font = (Xv_Font)xv_find(frame, FONT,
X        FONT_NAME,      "icon",
X        NULL);
X    font = (XFontStruct *)xv_get(_font, FONT_INFO);
X
X    gcvalues.font = font->fid;
X    gcvalues.foreground = BlackPixel(dpy, DefaultScreen(dpy));
X    gcvalues.background = WhitePixel(dpy, DefaultScreen(dpy));
X    gcvalues.graphics_exposures = False;
X    gc = XCreateGC(dpy, RootWindow(dpy, DefaultScreen(dpy)),
X        GCForeground | GCBackground | GCFont | GCGraphicsExposures,
X        &gcvalues);
X
X    xv_main_loop(frame);
X}
X
Xvoid
Xchange_glyph(item, value)
XPanel_item item;
Xint value;
X{
X    cnt = 0;
X    if (value == 0) {
X        max_images = ArraySize(horses);
X        images = horses;
X    } else if (value == 1) {
X        max_images = ArraySize(men);
X        images = men;
X    } else if (value == 2) {
X        max_images = ArraySize(boys);
X        images = boys;
X    } else if (value == 3) {
X        max_images = ArraySize(eyes);
X        images = eyes;
X    }
X    XClearWindow(dpy, canvas_win);
X}
X
X/*ARGSUSED*/
XNotify_value
Xanimate()
X{
X    XDrawImageString(dpy, canvas_win, gc, 5, 40, images[cnt], 1);
X    cnt = (cnt + 1) % max_images;
X
X    return NOTIFY_DONE;
X}
X
Xvoid
Xadjust_speed(item, value)
XPanel_item item;
Xint value;
X{
X    if (value > 0) {
X        timer.it_value.tv_usec = (value + 20) * 1000;
X        timer.it_interval.tv_usec = (value + 20) * 1000;
X        notify_set_itimer_func(frame, animate,
X            ITIMER_REAL, &timer, NULL);
X    } else
X        /* turn it off */
X        notify_set_itimer_func(frame, NOTIFY_FUNC_NULL,
X            ITIMER_REAL, NULL, NULL);
X}
END_OF_FILE
if test 3951 -ne `wc -c <'xview.demos/notifier/animate.c'`; then
    echo shar: \"'xview.demos/notifier/animate.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/notifier/animate.c'
fi
if test -f 'xview.demos/panels/Imakefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/panels/Imakefile'\"
else
echo shar: Extracting \"'xview.demos/panels/Imakefile'\" \(753 characters\)
sed "s/^X//" >'xview.demos/panels/Imakefile' <<'END_OF_FILE'
X#
X# @(#)Imakefile 1.3 89/12/06 SMI
X#
X# Imakefile for panels
X#
X# LIBRARY_DEST is the location of the XView libraries
X# HEADER_DEST is the location of the XView header files
X# LIBDIR is the directory containing the X11 library (libX11.a)
X#
X
XLIBRARY_DEST=/home/xview/usr/lib
XHEADER_DEST=/home/xview/usr/include
X
XLIBDIR=/home/X11/lib
XLDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxview -lX11
XINCLUDES= -I.. -I$(HEADER_DEST) -I$(TOP) -DSTANDALONE
X
X# Uncomment the following line to use libxvol.a and libxvin.a
X#
X#LDFLAGS=-L$(LIBRARY_DEST) -L$(LIBDIR) -lxvol -lxvin -lX11
X
XTARGETS=btn_menu choices client_data item_move list_glyphs \
X		panel_repaint repaint simple_panel stop_frame
X
Xall: $(TARGETS)
X
X${TARGETS}: $$@.c $$@.o 
X	${CC} ${CFLAGS} ${LDFLAGS} -o $@ $@.o 
END_OF_FILE
if test 753 -ne `wc -c <'xview.demos/panels/Imakefile'`; then
    echo shar: \"'xview.demos/panels/Imakefile'\" unpacked with wrong size!
fi
# end of 'xview.demos/panels/Imakefile'
fi
if test -f 'xview.demos/panels/list_glyphs.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/panels/list_glyphs.c'\"
else
echo shar: Extracting \"'xview.demos/panels/list_glyphs.c'\" \(2414 characters\)
sed "s/^X//" >'xview.demos/panels/list_glyphs.c' <<'END_OF_FILE'
X/*
X * list.c -- show a scrolling list with three items in it.
X * Each item is an icon (a pattern) and a string.
X */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/svrimage.h>
X
X#define gray1_width 16
X#define gray1_height 16
Xstatic char gray1_bits[] = {
X    0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
X    0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa,
X    0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55, 0xaa, 0xaa, 0x55, 0x55,
X    0xaa, 0xaa
X};
X
X#define gray2_width 16
X#define gray2_height 16
Xstatic char gray2_bits[] = {
X    0x11, 0x11, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11,
X    0x00, 0x00, 0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00,
X    0x44, 0x44, 0x00, 0x00, 0x11, 0x11, 0x00, 0x00, 0x44, 0x44,
X    0x00, 0x00
X};
X
X#define gray3_width 16
X#define gray3_height 16
Xstatic char gray3_bits[] = {
X    0x22, 0x22, 0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22,
X    0xee, 0xee, 0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee,
X    0x33, 0x33, 0xee, 0xee, 0x22, 0x22, 0xee, 0xee, 0x33, 0x33,
X    0xee, 0xee
X};
X
Xmain(argc, argv)
Xint     argc;
Xchar    *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    Server_image gray1, gray2, gray3;
X    extern void exit();
X
X    xv_init(XV_INIT_ARGS, argc, argv, NULL);
X
X    gray1 = (Server_image)xv_create(NULL, SERVER_IMAGE,
X        XV_WIDTH,               gray1_width,
X        XV_HEIGHT,              gray1_height,
X        SERVER_IMAGE_BITS,      gray1_bits,
X        NULL);
X    gray2 = (Server_image)xv_create(NULL, SERVER_IMAGE,
X        XV_WIDTH,               gray2_width,
X        XV_HEIGHT,              gray2_height,
X        SERVER_IMAGE_BITS,      gray2_bits,
X        NULL);
X    gray3 = (Server_image)xv_create(NULL, SERVER_IMAGE,
X        XV_WIDTH,               gray3_width,
X        XV_HEIGHT,              gray3_height,
X        SERVER_IMAGE_BITS,      gray3_bits,
X        NULL);
X    frame = (Frame)xv_create(NULL, FRAME, NULL);
X    panel = (Panel)xv_create(frame, PANEL, NULL);
X
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X
X    (void) xv_create(panel, PANEL_LIST,
X        PANEL_LIST_ROW_HEIGHT,  16,
X        PANEL_LIST_GLYPHS,      gray1, gray2, gray3, NULL,
X        PANEL_LIST_STRINGS,     "Pattern1", "Pattern2", "Pattern3", NULL,
X        NULL);
X
X    window_fit(panel);
X    window_fit(frame);
X
X    xv_main_loop(frame);
X}
END_OF_FILE
if test 2414 -ne `wc -c <'xview.demos/panels/list_glyphs.c'`; then
    echo shar: \"'xview.demos/panels/list_glyphs.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/panels/list_glyphs.c'
fi
if test -f 'xview.demos/panels/panel_repaint.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/panels/panel_repaint.c'\"
else
echo shar: Extracting \"'xview.demos/panels/panel_repaint.c'\" \(2626 characters\)
sed "s/^X//" >'xview.demos/panels/panel_repaint.c' <<'END_OF_FILE'
X/*
X * panel_repaint.c -- repaint a panel background without disturbing
X * the repainting of panel items.
X */
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/svrimage.h>
X#include <X11/Xlib.h>
X#include <X11/X.h>
X#include <X11/bitmaps/gray1>
X
X#define PANEL_GC_KEY    101  /* any arbitrary number */
X
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X    Display     *display;
X    Frame        frame;
X    Panel        panel;
X    int          quit();
X    void         panel_repaint();
X    XGCValues    gcvalues;
X    Server_image grey;
X
X    Mask        gcmask = 0L;
X    GC          gc;
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(XV_NULL, FRAME, NULL);
X    panel = (Panel)xv_create(frame, PANEL,
X        PANEL_REPAINT_PROC,     panel_repaint,
X        NULL);
X
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      quit,
X        PANEL_CLIENT_DATA,      frame,
X        NULL);
X
X    window_fit(frame);
X
X    grey = (Server_image)xv_create(NULL, SERVER_IMAGE,
X        XV_WIDTH,               gray1_width,
X        XV_HEIGHT,              gray1_height,
X        SERVER_IMAGE_DEPTH,     1, /* clarify for completeness*/
X        SERVER_IMAGE_BITS,      gray1_bits,
X        NULL);
X
X    display = (Display *)xv_get(panel, XV_DISPLAY);
X    gcvalues.stipple = (Pixmap) xv_get(grey, XV_XID);
X    gcvalues.fill_style = FillOpaqueStippled;
X    gcvalues.plane_mask = 1L;
X    gcvalues.graphics_exposures = False;
X    gcvalues.foreground = BlackPixel(display, DefaultScreen(display));
X    gcvalues.background = WhitePixel(display, DefaultScreen(display));
X    gcmask = GCStipple | GCFillStyle | GCPlaneMask |
X        GCGraphicsExposures | GCForeground | GCBackground;
X    gc = XCreateGC(display, xv_get(panel, XV_XID), gcmask, &gcvalues);
X
X    /* attach the GC to the panel for use by the repaint proc above */
X    xv_set(panel, XV_KEY_DATA, PANEL_GC_KEY, gc, NULL);
X
X    xv_main_loop(frame);
X    exit(0);
X}
X
X/*
X * repaint procedure for the panel paints a gray pattern over the
X * entire panel.  Use the GC attached to the panel via XV_KEY_DATA.
X */
Xvoid
Xpanel_repaint(panel, pw)
XPanel panel;
XXv_Window pw;
X{
X    /* get the GC attached to the panel in main() */
X    GC gc = (GC)xv_get(panel, XV_KEY_DATA, PANEL_GC_KEY);
X
X    /* call XFillRectangle on the entire size of the panel window */
X    XFillRectangle(xv_get(panel, XV_DISPLAY), xv_get(pw, XV_XID), gc,
X        0, 0, xv_get(pw, XV_WIDTH), xv_get(pw, XV_HEIGHT));
X}
X
Xquit(item)
XPanel_item item;
X{
X    Frame frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
X    xv_destroy_safe(frame);
X}
END_OF_FILE
if test 2626 -ne `wc -c <'xview.demos/panels/panel_repaint.c'`; then
    echo shar: \"'xview.demos/panels/panel_repaint.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/panels/panel_repaint.c'
fi
if test -f 'xview.demos/seln_svc/seln_line.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/seln_svc/seln_line.c'\"
else
echo shar: Extracting \"'xview.demos/seln_svc/seln_line.c'\" \(2643 characters\)
sed "s/^X//" >'xview.demos/seln_svc/seln_line.c' <<'END_OF_FILE'
X/*
X * line_num.c -- demonstrate how to use the selection service to get
X * the line number of the primary selection in a textsw.
X */
X#include <stdio.h>
X#include <xview/xview.h>
X#include <xview/textsw.h>
X#include <xview/panel.h>
X#include <xview/seln.h>
X
XTextsw  textsw;
X
Xmain(argc, argv)
Xchar *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    void        exit();
X    int         seln_proc();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame)xv_create(NULL, FRAME,
X        FRAME_SHOW_FOOTER,      TRUE,
X        NULL);
X
X    panel = (Panel)xv_create(frame, PANEL,
X        WIN_WIDTH,              WIN_EXTEND_TO_EDGE,
X        NULL);
X
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Get Selection",
X        PANEL_NOTIFY_PROC,      seln_proc,
X        PANEL_CLIENT_DATA,      frame,
X        NULL);
X    (void) xv_create(panel, PANEL_TEXT,
X        PANEL_LABEL_STRING,             "No-op:",
X        PANEL_VALUE_DISPLAY_LENGTH,     30,
X        NULL);
X
X    window_fit(panel);
X
X    textsw = (Textsw)xv_create(frame, TEXTSW,
X        WIN_X,                  0,
X        WIN_BELOW,              panel,
X        WIN_ROWS,               10,
X        WIN_COLUMNS,            80,
X        TEXTSW_FILE_CONTENTS,   "/etc/passwd",
X        NULL);
X    window_fit(frame);
X    xv_main_loop(frame);
X}
X
Xint
Xseln_proc(item, event)
XPanel_item item;
XEvent *event; /* unused */
X{
X    Frame         frame = (Frame)xv_get(item, PANEL_CLIENT_DATA);
X    Seln_holder   holder;
X    Seln_request *buffer;
X    int           line_number;
X    char         *msg[32];
X
X    /* 
X     * get primary selection 
X     */
X    holder = seln_inquire(SELN_PRIMARY);
X    /* 
X     * ask for the data containing line number of the first
X     * character of the selection
X     */
X    buffer = seln_ask(&holder,
X        SELN_REQ_FAKE_LEVEL, SELN_LEVEL_LINE,
X        SELN_REQ_FIRST_UNIT, 0,
X        NULL);
X    /*
X     * determine the window that contains the selection
X     */
X    if (seln_holder_same_client(&holder, textsw)) {
X        xv_set(frame,
X            FRAME_LEFT_FOOTER, "selection in textsw",
X            NULL);
X        /* 
X         * convert data into the line number 
X         */
X        sprintf(msg, "Selection: line %ld",
X            *(long *)(buffer->data + 3 * sizeof(Seln_attribute)));
X        xv_set(frame,
X            FRAME_RIGHT_FOOTER, msg,
X            NULL);
X    } else
X        xv_set(frame,
X            FRAME_LEFT_FOOTER, "selection elsewhere",
X            NULL);
X
X    return XV_OK;
X}
END_OF_FILE
if test 2643 -ne `wc -c <'xview.demos/seln_svc/seln_line.c'`; then
    echo shar: \"'xview.demos/seln_svc/seln_line.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/seln_svc/seln_line.c'
fi
if test -f 'xview.demos/seln_svc/simple_seln.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/seln_svc/simple_seln.c'\"
else
echo shar: Extracting \"'xview.demos/seln_svc/simple_seln.c'\" \(1913 characters\)
sed "s/^X//" >'xview.demos/seln_svc/simple_seln.c' <<'END_OF_FILE'
X/*
X * seln.c -- print the primary selection by pressing the panel 
X * button.  The selection may have originated from any window or
X * application on the server.
X */
X#include <stdio.h>
X#include <xview/xview.h>
X#include <xview/panel.h>
X#include <xview/server.h>
X#include <xview/seln.h>
X
XXv_Server server;
X
Xmain(argc, argv)
Xchar *argv[];
X{
X    Frame       frame;
X    Panel       panel;
X    void        exit();
X    int         print_seln();
X
X    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
X
X    frame = (Frame) xv_create(NULL, FRAME,
X        FRAME_LABEL,            argv[0],
X        NULL);
X    panel = (Panel)xv_create(frame, PANEL,
X        WIN_WIDTH,              WIN_EXTEND_TO_EDGE,
X        NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Quit",
X        PANEL_NOTIFY_PROC,      exit,
X        NULL);
X    (void) xv_create(panel, PANEL_BUTTON,
X        PANEL_LABEL_STRING,     "Print Selection",
X        PANEL_NOTIFY_PROC,      print_seln,
X        NULL);
X    window_fit(panel);
X    window_fit(frame);
X
X    server = (Xv_Server)xv_get(xv_get(frame, XV_SCREEN), SCREEN_SERVER);
X
X    xv_main_loop(frame);
X}
X
X/*
X * Get the selection using selection_ask().  Note that if the 
X * selection is bigger than about 2K, the whole selection will
X * not be gotten with one call, thus this method of getting
X * the selection may not be sufficient for all situations.
X */
Xint
Xprint_seln(item, event)
XPanel_item item;
XEvent *event;
X{
X    Seln_holder         holder;
X    Seln_request        *response;
X    char                text[BUFSIZ];
X
X    /* get the holder of the primary selection */
X    holder = selection_inquire(server, SELN_PRIMARY);
X    response = selection_ask(server, &holder,
X        SELN_REQ_CONTENTS_ASCII, NULL,
X        NULL);
X
X    strcpy(text, response->data + sizeof (SELN_REQ_CONTENTS_ASCII));
X    printf("---selection---\n%s\n---end seln---\n", text);
X
X    return XV_OK;
X}
END_OF_FILE
if test 1913 -ne `wc -c <'xview.demos/seln_svc/simple_seln.c'`; then
    echo shar: \"'xview.demos/seln_svc/simple_seln.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/seln_svc/simple_seln.c'
fi
if test -f 'xview.demos/sv_compat/gray_stencil.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/sv_compat/gray_stencil.pr'\"
else
echo shar: Extracting \"'xview.demos/sv_compat/gray_stencil.pr'\" \(1997 characters\)
sed "s/^X//" >'xview.demos/sv_compat/gray_stencil.pr' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555,
X	0xAAAA,0xAAAA,0xAAAA,0xAAAA,
X	0x5555,0x5555,0x5555,0x5555
END_OF_FILE
if test 1997 -ne `wc -c <'xview.demos/sv_compat/gray_stencil.pr'`; then
    echo shar: \"'xview.demos/sv_compat/gray_stencil.pr'\" unpacked with wrong size!
fi
# end of 'xview.demos/sv_compat/gray_stencil.pr'
fi
if test -f 'xview.demos/sv_compat/pw_draw.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xview.demos/sv_compat/pw_draw.c'\"
else
echo shar: Extracting \"'xview.demos/sv_compat/pw_draw.c'\" \(3909 characters\)
sed "s/^X//" >'xview.demos/sv_compat/pw_draw.c' <<'END_OF_FILE'
X/*
X * Name:	pw_draw.c
X *
X * Description:
X *	Demonstrates some of the pixwin drawing functions on
X *	a canvas window. The drawing is done inside a repaint proc.
X *	XView (and X11) applications must always be prepared to
X *	repaint themselves on demand.	
X *
X * Note: XView doesn't really support pw_* graphics calls.
X * These are leftover functions from Sunview and are shown here for
X * compatibility reference only.
X */
X
X#include <stdio.h>
X#include <xview/xview.h>
X#include <xview/canvas.h>
X#include <xview/svrimage.h>
X
Xstatic short chess_bits[] = {
X#include <images/chesstool.icon>
X};
X
Xstatic short gray_bits[] = {
X#include "gray_stencil.pr"
X};
X
XServer_image	chess_image;
XServer_image	stencil_image;
X
X/*
X *              main()
X *      Create frame and canvas windows.
X *      Set a repaint proc for the canvas window.
X *	Create Server Images for fill and stencil operations 
X *	in canvas_repaint_proc().
X *      Start the event loop.
X */
Xmain(argc,argv)
X    int	    argc;
X    char    *argv[];
X{
X	Frame	frame;
X	Canvas  canvas;
X	void	canvas_repaint_proc();
X
X	xv_init(XV_INIT_ARGS, argc, argv, 0);
X
X	/* Create a frame and a canvas */
X	frame = xv_create(NULL, FRAME,
X			  FRAME_LABEL, 	"xv_canvas_pw_draw",
X			  XV_WIDTH, 	734,
X			  XV_HEIGHT, 	448,
X			  0);
X
X	canvas = xv_create(frame, CANVAS,
X			   CANVAS_REPAINT_PROC,	canvas_repaint_proc,
X			   0);
X
X	/* By default, server images are created with depth 1 */
X	chess_image = xv_create(NULL,SERVER_IMAGE,
X				XV_WIDTH,		64,
X				XV_HEIGHT,		64,
X				SERVER_IMAGE_BITS,	chess_bits,
X				0);
X
X	stencil_image = xv_create(NULL,SERVER_IMAGE,
X			      	  XV_WIDTH,		64,
X			      	  XV_HEIGHT,		64,
X			      	  SERVER_IMAGE_BITS,	gray_bits,
X			      	  0);
X
X	xv_main_loop(frame);
X	return(0);
X}
X
X/*
X *              canvas_repaint_proc()
X *      Called to repaint the canvas window.  Draws into the window
X *      using various pixwin drawing functions.
X */
Xvoid
Xcanvas_repaint_proc(canvas, canvas_pw, repaint_area)
X    Canvas      canvas;
X    Pixwin   	*canvas_pw;
X    Rectlist    *repaint_area;
X{
X	static	Pr_brush 	brush = {5};
X	static	short 		dashed[] = {5, 3, 0};
X	static	Pr_texture 	tex = {dashed, 0, 0, 0, 0, 0, 0, 0 };
X	static	struct pr_pos 	lines[] = {{0,0}, {64,0}, {0,64}, {64,64}};
X	static  struct pr_pos  	points[] = {{0, 128}, {128, 128}, {64, 0}};
X	static	int		num_points[] = {3};
X
X	/* Rop the chess_image icon onto the canvas */
X	pw_text(canvas_pw, 64, 58, PIX_SRC, NULL, "pw_rop");
X	pw_rop(canvas_pw, 64, 64, 64, 64, PIX_SET, chess_image, 0, 0);
X
X	/* Draw the chess_image icon using the stencil_image as a mask */
X	pw_text(canvas_pw, 192, 58, PIX_SRC, NULL, "pw_stencil");
X	pw_stencil(canvas_pw, 192, 64, 64, 64, PIX_SRC, stencil_image, 0, 0,
X		   chess_image, 0, 0);
X
X	/* Replicate the chess_image icon within the specified rectangle */
X	pw_text(canvas_pw, 352, 58, PIX_SRC, NULL,"pw_replrop");
X	pw_replrop(canvas_pw, 320, 64, 128, 128, PIX_SRC, chess_image, 0, 0);
X
X	/* Fill the specified polygon with the chess_image icon */
X	pw_text(canvas_pw, 542, 58, PIX_SRC, NULL,"pw_polygon_2");
X	pw_polygon_2(canvas_pw, 512, 64, 1, num_points, points, PIX_SRC, 
X		     chess_image, 0, 0);
X
X	pw_text(canvas_pw, 64, 312, PIX_SRC, NULL, "pw_vector");
X	pw_vector(canvas_pw, 64, 320, 128, 384, PIX_SRC, 1);
X	pw_vector(canvas_pw, 64, 384, 128, 320, PIX_SRC, 1);
X	
X	/* Draw a dashed line with the specifed line pattern & thickness */
X	pw_text(canvas_pw, 192, 312, PIX_SRC, NULL, "pw_line");
X	pw_line(canvas_pw, 192, 320, 256, 384, &brush, &tex, PIX_SET);
X	pw_line(canvas_pw, 192, 384, 256, 320, &brush, &tex, PIX_SET);
X	
X	/* Draw a set of lines */
X	pw_text(canvas_pw, 320, 312, PIX_SRC, NULL, "pw_polyline");
X	pw_polyline(canvas_pw, 320, 320, 4, lines, POLY_CLOSE, NULL, NULL, PIX_SET);
X
X	/* Copy from one region of the canvas to another */
X	pw_text(canvas_pw, 512, 312, PIX_SRC, NULL, "pw_copy"); 
X	pw_copy(canvas_pw, 448, 320, 192, 64, PIX_SRC, canvas_pw, 400, 96);
X}
X
END_OF_FILE
if test 3909 -ne `wc -c <'xview.demos/sv_compat/pw_draw.c'`; then
    echo shar: \"'xview.demos/sv_compat/pw_draw.c'\" unpacked with wrong size!
fi
# end of 'xview.demos/sv_compat/pw_draw.c'
fi
echo shar: End of archive 4 \(of 6\).
cp /dev/null ark4isdone
MISSING=""
for I in 1 2 3 4 5 6 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 6 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0