[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

x11-apps: Changes to 'debian-unstable'



 bitmap/BitEdit.c        | 1128 +++++++++
 bitmap/Bitmap-color.ad  |   19 
 bitmap/Bitmap-nocase.ad |  233 +
 bitmap/Bitmap.ad        |  229 +
 bitmap/Bitmap.c         | 1950 ++++++++++++++++
 bitmap/Bitmap.h         |  286 ++
 bitmap/BitmapP.h        |  211 +
 bitmap/COPYING          |   12 
 bitmap/ChangeLog        |  267 ++
 bitmap/CutPaste.c       |  207 +
 bitmap/Dashes           |    4 
 bitmap/Dialog.c         |  202 +
 bitmap/Dialog.h         |   57 
 bitmap/Down             |   13 
 bitmap/Excl             |   17 
 bitmap/FlipHoriz        |   13 
 bitmap/FlipVert         |   13 
 bitmap/Fold             |   13 
 bitmap/Graphics.c       | 1575 +++++++++++++
 bitmap/Handlers.c       |  678 +++++
 bitmap/Left             |   13 
 bitmap/Makefile.am      |  151 +
 bitmap/Makefile.in      |  933 +++++++
 bitmap/ReqMach.c        |  263 ++
 bitmap/Requests.h       |   87 
 bitmap/Right            |   13 
 bitmap/RotateLeft       |   13 
 bitmap/RotateRight      |   13 
 bitmap/Stipple          |    4 
 bitmap/Term             |   14 
 bitmap/Up               |   13 
 bitmap/aclocal.m4       | 1573 +++++++++++++
 bitmap/atobm.c          |  296 ++
 bitmap/autogen.sh       |   13 
 bitmap/bitmap.icon      |   14 
 bitmap/bitmap.man       |  656 +++++
 bitmap/bmtoa.c          |  216 +
 bitmap/compile          |  142 +
 bitmap/config.guess     | 1510 ++++++++++++
 bitmap/config.h.in      |   34 
 bitmap/config.sub       | 1619 +++++++++++++
 bitmap/configure        | 5807 ++++++++++++++++++++++++++++++++++++++++++++++++
 bitmap/configure.ac     |   66 
 bitmap/depcomp          |  530 ++++
 bitmap/install-sh       |  323 ++
 bitmap/missing          |  360 ++
 debian/changelog        |    6 
 debian/control          |   23 
 debian/rules            |   12 
 49 files changed, 21823 insertions(+), 21 deletions(-)

New commits:
commit a17e1be1339a477ef7b41e9ae5deca81d0ea2432
Author: Julien Cristau <jcristau@debian.org>
Date:   Sun Jan 6 18:46:30 2008 +0100

    * Re-add bitmap (closes: #445097).

diff --git a/bitmap/AUTHORS b/bitmap/AUTHORS
new file mode 100644
index 0000000..e69de29
diff --git a/bitmap/BitEdit.c b/bitmap/BitEdit.c
new file mode 100644
index 0000000..ee850d8
--- /dev/null
+++ b/bitmap/BitEdit.c
@@ -0,0 +1,1128 @@
+/* $Xorg: BitEdit.c,v 1.4 2001/02/09 02:05:28 xorgcvs Exp $ */
+/*
+
+Copyright 1989, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/* $XFree86: xc/programs/bitmap/BitEdit.c,v 1.6tsi Exp $ */
+
+/*
+ * Author:  Davor Matic, MIT X Consortium
+ */
+
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <X11/Intrinsic.h>
+#include <X11/StringDefs.h>
+#include <X11/Xaw/Paned.h>
+#include <X11/Xaw/Form.h>
+#include <X11/Xaw/Box.h>
+#include <X11/Xaw/Command.h>
+#include <X11/Xaw/Toggle.h>
+#include <X11/Xaw/MenuButton.h>
+#include <X11/Xaw/SimpleMenu.h>
+#include <X11/Xaw/SmeLine.h>
+#include <X11/Xaw/SmeBSB.h>
+#include <X11/Xmu/SysUtil.h>
+#include "Bitmap.h"
+
+#include <X11/bitmaps/xlogo16>
+
+static char *usage = "[-options ...] filename\n\
+\n\
+where options include all standard toolkit options plus:\n\
+     -size WIDTHxHEIGHT\n\
+     -sw dimension\n\
+     -sh dimension\n\
+     -gt dimension\n\
+     -grid, +grid\n\
+     -axes, +axes\n\
+     -dashed, +dashed\n\
+     -stippled, +stippled\n\
+     -proportional, +proportional\n\
+     -basename basename\n\
+     -dashes filename\n\
+     -stipple filename\n\
+     -hl color\n\
+     -fr color\n\
+\n\
+The default WIDTHxHEIGHT is 16x16.\n";
+
+static XrmOptionDescRec options[] = {
+  { "-axes",	    "*bitmap.axes",	    XrmoptionNoArg,	"True"},
+  { "+axes",	    "*bitmap.axes",	    XrmoptionNoArg,	"False"},
+  { "-basename",    "*bitmap.basename",	    XrmoptionSepArg,	NULL},
+  { "-dashed",	    "*bitmap.dashed",	    XrmoptionNoArg,	"True"},
+  { "+dashed",	    "*bitmap.dashed",	    XrmoptionNoArg,	"False"},
+  { "-dashes",	    "*bitmap.dashes",	    XrmoptionSepArg,	NULL},
+  { "-fr",	    "*bitmap.frame",	    XrmoptionSepArg,	NULL},
+  { "-gt",	    "*bitmap.gridTolerance",XrmoptionSepArg,	NULL},
+  { "-grid",	    "*bitmap.grid",	    XrmoptionNoArg,	"True"},
+  { "+grid",	    "*bitmap.grid",	    XrmoptionNoArg,	"False"},
+  { "-hl",	    "*bitmap.highlight",    XrmoptionSepArg,	NULL},
+  { "-proportional","*bitmap.proportional", XrmoptionNoArg,	"True"},
+  { "+proportional","*bitmap.proportional", XrmoptionNoArg,	"False"},
+  { "-size",	    "*bitmap.size",	    XrmoptionSepArg,	NULL},
+  { "-sh",	    "*bitmap.squareHeight", XrmoptionSepArg,	NULL},
+  { "-sw",	    "*bitmap.squareWidth",  XrmoptionSepArg,	NULL},
+  { "-stipple",	    "*bitmap.stipple",	    XrmoptionSepArg,	NULL},
+  { "-stippled",    "*bitmap.stippled",	    XrmoptionNoArg,	"True"},
+  { "+stippled",    "*bitmap.stippled",	    XrmoptionNoArg,	"False"},
+};
+
+typedef struct {
+  int             id;
+  String          name;
+  Boolean         trap;
+  Widget          widget;
+  } ButtonRec;
+
+static ButtonRec file_menu[] = {
+#define New 101
+  {New, "new", True},
+#define Load 102
+  {Load, "load", True},
+#define Insert 103
+  {Insert, "insert", True},
+#define Save 104
+  {Save, "save", True},
+#define SaveAs 105
+  {SaveAs, "saveAs", True},
+#define Resize 106
+  {Resize, "resize", True},
+#define Rescale 107
+  {Rescale, "rescale", True},
+#define Filename 108
+  {Filename, "filename", True},
+#define Basename 109
+  {Basename, "basename", True},
+#define Dummy -1
+  {Dummy, "line", False},
+#define Quit 110
+  {Quit, "quit", True},
+};
+
+static ButtonRec edit_menu[] = {
+#define Image 201
+  {Image, "image", True},
+#define Grid 203
+  {Grid, "grid", True},
+#define Dashed 204
+  {Dashed, "dashed", True},
+#define Axes 205
+  {Axes, "axes", True},
+#define Stippled 206
+  {Stippled, "stippled", True},
+#define Proportional 207
+  {Proportional, "proportional", True},
+#define Zoom 208
+  {Zoom, "zoom", True},
+/* Dummy */
+  {Dummy, "line", False},
+#define Cut 209
+  {Cut, "cut", True},
+#define Copy 210
+  {Copy, "copy", True},
+#define Paste 211
+  {Paste, "paste", True},
+};
+
+static ButtonRec buttons[] = {
+/*#define Clear 1*/
+  {Clear, "clear", False},
+/*#define Set 2*/
+  {Set, "set", False},
+/*#define Invert 3*/
+  {Invert, "invert", False},
+#define Mark 26
+  {Mark, "mark", True},
+#define Unmark 27
+  {Unmark, "unmark", False},
+#define CopyImm 4
+  {CopyImm, "copy", True},
+#define MoveImm 5
+  {MoveImm, "move", True},
+#define FlipHoriz 6
+  {FlipHoriz, "flipHoriz", False},
+#define Up 7
+  {Up, "up", False},
+#define FlipVert 8
+  {FlipVert, "flipVert", False},
+#define Left 9
+  {Left, "left", False},
+#define Fold 10
+  {Fold, "fold", False},
+#define Right 11
+  {Right, "right", False},
+#define RotateLeft 12
+  {RotateLeft, "rotateLeft", False},
+#define Down 13
+  {Down, "down", False},
+#define RotateRight 14
+  {RotateRight, "rotateRight", False},
+#define Point 15
+  {Point, "point", True},
+#define Curve 16
+  {Curve, "curve", True},
+#define Line 17
+  {Line, "line", True},
+#define Rectangle 18
+  {Rectangle, "rectangle", True},
+#define FilledRectangle 19
+  {FilledRectangle, "filledRectangle", True},
+#define Circle 20
+  {Circle, "circle", True},
+#define FilledCircle 21
+  {FilledCircle, "filledCircle", True},
+#define FloodFill 22
+  {FloodFill, "floodFill", True},
+#define SetHotSpot 23
+  {SetHotSpot, "setHotSpot", True},
+#define ClearHotSpot 24
+  {ClearHotSpot, "clearHotSpot", False},
+#define Undo 25
+  {Undo, "undo", False},
+};
+
+#include "Dialog.h"
+
+static Widget 
+    top_widget, 
+    parent_widget,
+    formy_widget,
+    fileMenu_widget,
+    editMenu_widget,
+    status_widget,
+    pane_widget, 
+    form_widget,
+    bitmap_widget,
+    image_shell,
+    box_widget,
+    normal_image_widget,
+    inverted_image_widget;
+static Boolean image_visible = False;
+static Pixmap check_mark;
+static Dialog input_dialog, error_dialog, qsave_dialog;
+static Time btime;
+static String filename = NULL, base_name = NULL, format;
+static char message[80];
+
+
+void FixMenu ( Widget w, XEvent *event, String *params, Cardinal *num_params );
+void SwitchImage ( void );
+void SwitchGrid( void );
+void SwitchDashed( void );
+void SwitchAxes( void );
+void SwitchStippled( void );
+void SwitchProportional( void );
+void SwitchZoom( void );
+void DoCut( void );
+void DoCopy( void );
+void DoPaste( void );
+void DoNew( void );
+void DoLoad( void );
+void DoInsert( void );
+void DoSave( void );
+void DoSaveAs( void );
+void DoResize( void );
+void DoRescale( void );
+void DoFilename( void );
+void DoBasename( void );
+void DoQuit ( Widget w, XEvent *event, String *params, Cardinal *num_params );
+
+static XtActionsRec actions_table[] = {
+  {"fix-menu", FixMenu},
+  {"switch-image", (XtActionProc)SwitchImage},
+  {"switch-grid", (XtActionProc)SwitchGrid},
+  {"switch-dashed", (XtActionProc)SwitchDashed},
+  {"switch-axes", (XtActionProc)SwitchAxes},
+  {"switch-stippled", (XtActionProc)SwitchStippled},
+  {"switch-proportional", (XtActionProc)SwitchProportional},
+  {"switch-zoom", (XtActionProc)SwitchZoom},
+  {"do-cut", (XtActionProc)DoCut},
+  {"do-copy", (XtActionProc)DoCopy},
+  {"do-paste", (XtActionProc)DoPaste},
+  {"do-new", (XtActionProc)DoNew},
+  {"do-load", (XtActionProc)DoLoad},
+  {"do-insert", (XtActionProc)DoInsert},
+  {"do-save", (XtActionProc)DoSave},
+  {"do-save-as", (XtActionProc)DoSaveAs},
+  {"do-resize", (XtActionProc)DoResize},
+  {"do-rescale", (XtActionProc)DoRescale},
+  {"do-filename", (XtActionProc)DoFilename},
+  {"do-basename", (XtActionProc)DoBasename},
+  {"do-quit", DoQuit}
+};
+
+static Atom wm_delete_window;
+
+static void 
+FixImage(void)
+{
+    Pixmap old_image, image;
+    int n;
+    Arg wargs[2];
+
+    if (!image_visible) return;
+    
+    n=0;
+    XtSetArg(wargs[n], XtNbitmap, &old_image); n++;
+    XtGetValues(normal_image_widget, wargs, n);
+    
+    
+    image = BWGetUnzoomedPixmap(bitmap_widget);
+    
+    n=0;
+    XtSetArg(wargs[n], XtNbitmap, image); n++;
+    XtSetValues(normal_image_widget, wargs, n);
+    XtSetValues(inverted_image_widget, wargs, n);
+
+    if (old_image != XtUnspecifiedPixmap)
+	XFreePixmap(XtDisplay(bitmap_widget), old_image);
+}
+
+static void 
+FixStatus(void)
+{
+    int n;
+    Arg wargs[2];
+    String str, label;
+
+    str = BWUnparseStatus(bitmap_widget);
+
+    n=0;
+    XtSetArg(wargs[n], XtNlabel, &label); n++;
+    XtGetValues(status_widget, wargs, n);
+
+    if (strcmp(str, label)) {
+      n = 0;
+      XtSetArg(wargs[n], XtNlabel, str); n++;
+      XtSetValues(status_widget, wargs, n);
+    }
+
+    /*XtFree(str); */
+}
+
+static void 
+FixUp(void)
+{
+  FixImage();
+  FixStatus();
+}
+
+static void 
+FixEntry(Widget w, int *id)
+{
+    int n;
+    Arg wargs[2];
+    Time dummy = 0;
+
+    n = 0;
+    
+    switch (*id) {
+	
+    case Image:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 image_visible ? check_mark : None); n++;
+	break;
+	
+    case Grid:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryGrid(bitmap_widget) ? check_mark : None); n++;
+	break;
+	
+    case Dashed:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryDashed(bitmap_widget) ? check_mark : None); n++;
+	break;
+	
+    case Axes:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryAxes(bitmap_widget) ? check_mark : None); n++;
+	break;
+	
+    case Stippled:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryStippled(bitmap_widget) ? check_mark : None); n++;
+	break;
+	
+    case Proportional:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryProportional(bitmap_widget) ? check_mark : None); n++;
+	break;
+	
+    case Zoom:
+	XtSetArg(wargs[n], XtNleftBitmap, 
+		 BWQueryZooming(bitmap_widget) ? check_mark : None); n++;
+	break;
+
+    case Copy:
+    case Cut:
+	XtSetArg(wargs[n], XtNsensitive, BWQueryMarked(bitmap_widget)); n++;
+	break;
+
+    case Paste:
+	XtSetArg(wargs[n], XtNsensitive, 
+		 BWQuerySelection(bitmap_widget, dummy)); n++;
+	break;
+
+    default:
+	return;
+    }
+    
+    XtSetValues(w, wargs, n);
+}
+
+/* ARGSUSED */
+void FixMenu(Widget w, 
+	     XEvent *event, 
+	     String *params, 
+	     Cardinal *num_params)
+{
+    int i;
+
+    btime = event->xbutton.time;
+    
+    for (i = 0; i < XtNumber(edit_menu); i++)
+	FixEntry(edit_menu[i].widget, &edit_menu[i].id);
+}
+
+static int zero = 0;
+#define Plain  (char *)&zero,sizeof(int)
+/* ARGSUSED */
+static void 
+TheCallback(Widget w,	/* not used */
+	    XtPointer clientData, 
+	    XtPointer callData)
+{
+    int *id = (int *)clientData;
+    switch (*id) {
+	
+    case New:
+      DoNew();
+      break;
+
+    case Load:
+      DoLoad();
+      break;
+	
+    case Insert:
+      DoInsert();
+      break;
+	
+    case Save:
+      DoSave();
+      break;
+	
+    case SaveAs:
+      DoSaveAs();
+      break;
+	
+    case Resize:
+      DoResize();
+      break;
+
+    case Rescale:
+      DoRescale();
+      break;
+
+    case Filename:
+      DoFilename();
+      break;
+
+    case Basename:
+      DoBasename();
+      break;
+	
+    case Image:
+      SwitchImage();
+      break;
+
+    case Grid:
+      SwitchGrid();
+      break;
+	
+    case Dashed:
+      SwitchDashed();
+      break;
+
+    case Axes:
+      SwitchAxes();
+      break;	
+
+    case Stippled:
+      SwitchStippled();
+      break;
+      
+    case Proportional:
+      SwitchProportional();
+      break;
+		
+    case Zoom:
+      SwitchZoom();
+      break;
+      
+    case Cut:
+      DoCut();
+      break;
+      
+    case Copy:
+      DoCopy();
+      break;
+      
+    case Paste:
+      DoPaste();
+      break;
+	
+    case Clear:
+	BWStoreToBuffer(bitmap_widget);
+	BWClear(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Set:
+	BWStoreToBuffer(bitmap_widget);
+	BWSet(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+break;
+	
+    case Invert:
+	BWStoreToBuffer(bitmap_widget);
+	BWInvert(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+
+    case Mark:
+        BWRemoveAllRequests(bitmap_widget);
+        BWEngageRequest(bitmap_widget, MarkRequest, True, Plain);
+        break;
+
+    case Unmark:
+        BWUnmark(bitmap_widget);
+        break;
+
+    case CopyImm:
+	BWRemoveAllRequests(bitmap_widget);
+	if (BWQueryMarked(bitmap_widget)) {
+	    BWAddRequest(bitmap_widget, MarkRequest, False, Plain);
+	    BWEngageRequest(bitmap_widget, CopyRequest, True, Plain);
+	}
+	else {
+	    BWEngageRequest(bitmap_widget, MarkRequest, False, Plain);
+	    BWAddRequest(bitmap_widget, CopyRequest, True, Plain);
+	}
+	break;
+	
+    case MoveImm:
+	BWRemoveAllRequests(bitmap_widget);
+	if (BWQueryMarked(bitmap_widget)) {
+	    BWAddRequest(bitmap_widget, MarkRequest, False, Plain);
+	    BWEngageRequest(bitmap_widget, MoveRequest, True, Plain);
+	}
+	else {
+	    BWEngageRequest(bitmap_widget, MarkRequest, False, Plain);
+	    BWAddRequest(bitmap_widget, MoveRequest, True, Plain);
+	}
+	break;
+		
+    case Up:
+	BWStoreToBuffer(bitmap_widget);
+	BWUp(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Down:
+	BWStoreToBuffer(bitmap_widget);
+	BWDown(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Left:
+	BWStoreToBuffer(bitmap_widget);
+	BWLeft(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Right:
+	BWStoreToBuffer(bitmap_widget);
+	BWRight(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Fold:
+	BWStoreToBuffer(bitmap_widget);
+	BWFold(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case FlipHoriz:
+	BWStoreToBuffer(bitmap_widget);
+	BWFlipHoriz(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case FlipVert:
+	BWStoreToBuffer(bitmap_widget);
+	BWFlipVert(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case RotateRight:
+	BWStoreToBuffer(bitmap_widget);
+	BWRotateRight(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case RotateLeft:
+	BWStoreToBuffer(bitmap_widget);
+	BWRotateLeft(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+	
+    case Point:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, PointRequest, True, Plain);
+	break;
+
+    case Curve:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, CurveRequest, True, Plain);
+	break;
+	
+    case Line:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, LineRequest, True, Plain);
+	break;
+	
+    case Rectangle:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, RectangleRequest, True, Plain);
+	break;
+	
+    case FilledRectangle:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, FilledRectangleRequest, True, Plain);
+	break;
+	
+    case Circle:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, CircleRequest, True, Plain);
+	break;
+	
+    case FilledCircle:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, FilledCircleRequest, True, Plain);
+	break;
+	
+    case FloodFill:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, FloodFillRequest, True, Plain);
+	break;
+	
+    case SetHotSpot:
+	BWRemoveAllRequests(bitmap_widget);
+	BWEngageRequest(bitmap_widget, HotSpotRequest, True, Plain);
+	break;
+	
+    case ClearHotSpot:
+	BWStoreToBuffer(bitmap_widget);
+	BWClearHotSpot(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;
+
+    case Undo:
+	BWUndo(bitmap_widget);
+	BWChangeNotify(bitmap_widget);
+	BWSetChanged(bitmap_widget);
+	break;	
+
+    case Quit:
+      DoQuit(bitmap_widget, NULL, NULL, NULL);
+      break;	
+    } /* don't add anything below this line */
+}
+
+/* ARGSUSED */
+
+void SwitchImage()
+{
+  if (image_visible) {
+    XtPopdown(image_shell);
+    image_visible = False;
+  }
+  else {
+    Position image_x, image_y;
+    int n;
+    Arg wargs[3];
+    
+    XtTranslateCoords(bitmap_widget,
+		      10, 10, &image_x, &image_y);
+    
+    n = 0;
+    XtSetArg(wargs[n], XtNx, image_x); n++;
+    XtSetArg(wargs[n], XtNy, image_y); n++;
+    XtSetValues(image_shell, wargs, n);
+    
+    image_visible = True;
+    
+    FixImage();
+    XtPopup(image_shell, XtGrabNone);
+    FixImage();
+  }
+}
+
+void SwitchGrid()
+{
+  BWSwitchGrid(bitmap_widget);
+}
+
+void SwitchDashed()
+{
+  BWSwitchDashed(bitmap_widget);
+}
+
+void SwitchAxes()
+{
+  BWSwitchAxes(bitmap_widget);
+}
+
+void SwitchStippled()
+{
+  BWSwitchStippled(bitmap_widget); 
+}
+
+void SwitchProportional()
+{
+  BWSwitchProportional(bitmap_widget);
+}
+
+void SwitchZoom()
+{
+  if (BWQueryZooming(bitmap_widget)) {
+    BWZoomOut(bitmap_widget);
+    BWChangeNotify(bitmap_widget);
+  }
+  else {
+    if (BWQueryMarked(bitmap_widget)) {
+      BWStoreToBuffer(bitmap_widget);
+      BWZoomMarked(bitmap_widget);
+      BWChangeNotify(bitmap_widget);
+    }
+    else {
+      BWEngageRequest(bitmap_widget, ZoomInRequest, False, Plain);
+    }
+  }
+}
+
+void DoCut()
+{
+  BWStore(bitmap_widget);
+  BWStoreToBuffer(bitmap_widget);
+  BWClearMarked(bitmap_widget);
+  BWUnmark(bitmap_widget);
+  BWChangeNotify(bitmap_widget);
+  BWSetChanged(bitmap_widget);
+}
+
+void DoCopy()
+{
+  BWStore(bitmap_widget);
+  BWUnmark(bitmap_widget);
+}
+
+void DoPaste()
+{
+  BWRequestSelection(bitmap_widget, btime, TRUE); 
+  BWEngageRequest(bitmap_widget, RestoreRequest, False, Plain);
+}
+
+void DoNew()
+{
+  BWGetFilename(bitmap_widget, &filename);
+  if (PopupDialog(input_dialog, "New file:",
+		  filename, &filename, XtGrabExclusive) == Okay) {
+    BWChangeFilename(bitmap_widget, filename);
+    BWChangeBasename(bitmap_widget, filename);
+    BWStoreToBuffer(bitmap_widget);
+    BWClear(bitmap_widget);
+    BWClearHotSpot(bitmap_widget);
+    BWChangeNotify(bitmap_widget);
+    BWClearChanged(bitmap_widget);
+    BWUnmark(bitmap_widget);
+    FixStatus();
+  }
+}
+
+void DoLoad()
+{
+  if (BWQueryChanged(bitmap_widget)) {
+    BWGetFilename(bitmap_widget, &filename);
+  RetryLoadSave:
+    switch (PopupDialog(qsave_dialog, "Save file before loading?",
+			filename, &filename, XtGrabExclusive)) {
+    case Yes:
+      if (BWWriteFile(bitmap_widget, filename, NULL)
+	  != BitmapSuccess) {
+	XmuSnprintf(message, sizeof(message), "Can't write file: %s", filename);
+	if (PopupDialog(error_dialog, message,
+			NULL, NULL, XtGrabExclusive) == Retry)
+	  goto RetryLoadSave;
+      }
+      break;
+      
+    case Cancel:
+      return;
+    }
+  }
+  BWGetFilepath(bitmap_widget, &filename);
+ RetryLoad:
+  if (PopupDialog(input_dialog, "Load file:",
+		  filename, &filename, XtGrabExclusive) == Okay) {
+    if (BWReadFile(bitmap_widget, filename, NULL) != BitmapSuccess) {
+      XmuSnprintf(message, sizeof(message), "Can't read file: %s", filename);
+      if (PopupDialog(error_dialog, message,
+		      NULL, NULL, XtGrabExclusive) == Retry)
+	goto RetryLoad;
+    }
+    else {
+      BWChangeNotify(bitmap_widget);
+      BWClearChanged(bitmap_widget);
+      FixStatus();
+    }
+  }
+}
+
+void DoInsert()
+{
+  BWGetFilepath(bitmap_widget, &filename);
+ RetryInsert:
+  if (PopupDialog(input_dialog, "Insert file:",
+		  filename, &filename, XtGrabExclusive) == Okay) {
+    if (BWStoreFile(bitmap_widget, filename, NULL) != BitmapSuccess) {
+      XmuSnprintf(message, sizeof(message), "Can't read file: %s", filename);
+      if (PopupDialog(error_dialog, message,
+		      NULL, NULL, XtGrabExclusive) == Retry)
+	goto RetryInsert;
+    }
+    else {
+      BWEngageRequest(bitmap_widget, RestoreRequest, False, Plain);
+    }
+  }
+}
+
+void DoSave()
+{
+  BWGetFilename(bitmap_widget, &filename);
+  if (!strcmp(filename, "")) 
+    DoSaveAs();
+  else if (BWWriteFile(bitmap_widget, NULL, NULL) != BitmapSuccess) {
+    XmuSnprintf(message, sizeof(message), "Can't write file: %s", filename);
+    if (PopupDialog(error_dialog, message,
+		    NULL, NULL, XtGrabExclusive) == Retry) 
+      DoSaveAs();
+  }
+  else {
+    BWClearChanged(bitmap_widget);
+  }
+}
+
+void DoSaveAs()
+{
+  BWGetFilename(bitmap_widget, &filename);
+ RetrySave:
+  if (PopupDialog(input_dialog, "Save file:",
+		  filename, &filename, XtGrabExclusive) == Okay) {
+    if (BWWriteFile(bitmap_widget, filename, NULL) != BitmapSuccess) {
+      XmuSnprintf(message, sizeof(message), "Can't write file: %s", filename);
+      if (PopupDialog(error_dialog, message,
+		      NULL, NULL, XtGrabExclusive) == Retry)
+	goto RetrySave;
+    }
+    else {
+      BWClearChanged(bitmap_widget);
+      FixStatus();
+    }
+  }
+}
+
+void DoResize()
+{
+  Dimension width, height;
+  format = "";
+ RetryResize:
+  if (PopupDialog(input_dialog, "Resize to WIDTHxHEIGHT:",
+		  format, &format, XtGrabExclusive) == Okay) {
+    if (BWParseSize(format, &width, &height)) {
+      BWResize(bitmap_widget, width, height);
+      BWChangeNotify(bitmap_widget);
+      BWSetChanged(bitmap_widget);
+      FixStatus();
+    }
+    else {
+      XmuSnprintf(message, sizeof(message), "Wrong format: %s", format);
+      if (PopupDialog(error_dialog, message,
+		      NULL, NULL, XtGrabExclusive) == Retry)
+	goto RetryResize;
+    }
+  }
+}
+
+void DoRescale()
+{
+  Dimension width, height;
+
+  format = "";
+ RetryRescale:
+  if (PopupDialog(input_dialog, "Rescale to WIDTHxHEIGHT:",
+		  format, &format, XtGrabExclusive) == Okay) {
+    if (BWParseSize(format, &width, &height)) {
+      BWRescale(bitmap_widget, width, height);
+      BWChangeNotify(bitmap_widget);
+      BWSetChanged(bitmap_widget);
+      FixStatus();
+    }
+    else {
+      XmuSnprintf(message, sizeof(message), "Wrong format: %s", format);
+      if (PopupDialog(error_dialog, message,
+		      NULL, NULL, XtGrabExclusive) == Retry)
+	goto RetryRescale;
+    }
+  }
+}
+
+void DoFilename()
+{
+  BWGetFilename(bitmap_widget, &filename);


Reply to: