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