[comp.sources.x] v01i014: xfig: a MacDraw style line editor, Patch3

mikew@wyse.wyse.com (Mike Wexler) (08/26/88)

Submitted-by: dana@thumper.bellcore.com (Dana A. Chee)
Posting-number: Volume 1, Issue 14
Archive-name: xfig/patch3


[I tried this on a monochrome system, so I can't verify that it works
on a color system. -mcw]
Below are the first comp.sources.x patches to xfig (the other two
patch files on expo bring the expo version up to the comp.sources.x
version).

These patches do the following:

1) Make color work correctly.

2) Adds the -track and -notrack options to allow/disallow the cursor
tracking arrows on the rulers (helpful on color Suns where the
tracking REALLY slows things down).

3) added the fig icon.

4) updated the manual page to reflect the new options, as well as list
the resources which correspond to the command line arguments.

5) made this minor version 2.

			Dana Chee
			Bellcore
			MRE 2Q-250
			(201) 829-4488
			dana@bellcore.com
==================== xfigpatch-3 ====================
*** /dev/null	Tue Aug 23 13:30:02 1988
--- fig.icon.X	Tue Aug 23 08:43:03 1988
***************
*** 0 ****
--- 1,38 ----
+ #define fig_width 64
+ #define fig_height 64
+ static char fig_bits[] = {
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+  0x80,0x01,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0xf0,0x13,0x0f,0x00,0x60,
+  0x03,0x80,0x01,0x10,0x90,0x00,0x00,0x10,0x04,0x80,0x01,0x10,0x90,0x00,0x00,
+  0x18,0x08,0x80,0x01,0xf0,0x90,0x1c,0x00,0x04,0x08,0x80,0x01,0x10,0x90,0x10,
+  0x00,0x04,0x10,0x80,0x01,0x10,0x90,0x10,0x00,0x03,0x10,0x80,0x01,0x10,0x90,
+  0x18,0x00,0x01,0x10,0x80,0x01,0x10,0x10,0x17,0x80,0x00,0x10,0x80,0x01,0x00,
+  0x00,0x00,0x80,0x00,0x08,0x83,0x01,0x00,0x00,0x00,0x40,0x00,0x88,0x8c,0x61,
+  0x00,0x00,0x00,0x40,0x00,0x48,0xf0,0x81,0x07,0x00,0x00,0x40,0x40,0x38,0xc0,
+  0x01,0x78,0x00,0x00,0x38,0x20,0x00,0x80,0x01,0x80,0x07,0xfc,0x47,0x20,0x00,
+  0x80,0xe1,0x00,0xf8,0x03,0x40,0x10,0x00,0x81,0x01,0x0f,0x00,0x00,0x0e,0x0c,
+  0xd0,0x80,0x01,0xf0,0xe0,0xe0,0x87,0x00,0x06,0x80,0x01,0x00,0xbf,0xff,0x40,
+  0xf1,0x00,0x80,0x01,0x00,0x90,0x38,0xa0,0x06,0x00,0x80,0x01,0x00,0x58,0x08,
+  0x80,0x08,0x00,0x80,0x01,0x00,0x48,0x08,0x18,0x11,0x00,0x80,0x01,0x00,0x4c,
+  0x08,0x04,0x21,0xe0,0x83,0x01,0x00,0x22,0x04,0x03,0x41,0x10,0x82,0x01,0x00,
+  0x21,0x02,0x00,0x01,0x10,0x84,0x01,0x00,0x11,0x01,0x00,0x81,0xe1,0xe4,0x01,
+  0x80,0x90,0x00,0x1c,0x00,0x01,0x99,0x01,0x80,0x90,0x80,0x23,0x01,0x02,0x82,
+  0x01,0x40,0x90,0x81,0x38,0x01,0x02,0x82,0x01,0x20,0x10,0x7f,0x04,0x01,0x04,
+  0x84,0x01,0x10,0x20,0x00,0x82,0x00,0x04,0x84,0x01,0x08,0x20,0x80,0x81,0x00,
+  0x00,0x88,0x01,0x08,0x40,0x40,0x80,0x00,0x08,0x90,0x01,0x04,0x40,0x40,0x40,
+  0x00,0x00,0x90,0x01,0x02,0x80,0x40,0x20,0x0c,0x10,0x90,0x01,0x01,0x80,0x20,
+  0x10,0x12,0x10,0xa0,0x01,0x01,0x00,0x21,0x00,0x11,0x10,0xa0,0x81,0x20,0x00,
+  0x31,0x00,0x09,0x10,0xa0,0x81,0x10,0x00,0x12,0x00,0x09,0x00,0xa0,0x41,0x00,
+  0x00,0x12,0x00,0x05,0x20,0xa0,0x41,0x08,0x00,0x12,0x80,0x04,0x00,0xa0,0x21,
+  0x00,0x00,0x12,0x40,0x04,0x20,0xa0,0x21,0x04,0x00,0x14,0x20,0x04,0x20,0xa0,
+  0x11,0x00,0x00,0x24,0x18,0x04,0x00,0xa0,0x11,0x04,0x00,0xc4,0x07,0x04,0x00,
+  0xa0,0x11,0x00,0x00,0x04,0x00,0x04,0x00,0x90,0x09,0x04,0x00,0x08,0x00,0x04,
+  0x00,0x90,0x09,0x00,0x00,0x08,0x00,0x04,0x00,0x98,0x09,0x08,0x00,0x08,0x00,
+  0x08,0x00,0x88,0x11,0x00,0x00,0x08,0x00,0x18,0x00,0x88,0x11,0x00,0x00,0x08,
+  0x00,0x10,0x00,0x84,0x11,0x00,0x00,0x04,0x00,0x20,0x00,0x86,0x11,0xe0,0x00,
+  0x04,0x00,0x60,0x00,0x81,0x21,0x20,0x01,0x02,0x00,0x80,0x81,0x80,0x21,0xc0,
+  0x00,0x01,0x00,0x00,0xc1,0x80,0x41,0x00,0x80,0x00,0x00,0x00,0x62,0x80,0x81,
+  0x00,0xc0,0x00,0x00,0x00,0x1c,0x80,0x01,0x01,0x70,0x00,0x00,0x00,0x00,0x80,
+  0x01,0x0e,0x0f,0x00,0x00,0x00,0x00,0x80,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,
+  0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff};
*** /tmp/da2106	Tue Aug 23 14:46:50 1988
--- grid.c	Tue Aug 23 13:22:06 1988
***************
*** 132,146 ****
  
  init_grid()
  {
  	null_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		null_bits, null_width, null_height,
! 		BlackPixelOfScreen(tool_s), WhitePixelOfScreen(tool_s), 1);
  	quarter_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		quarter_bits, quarter_width, quarter_height,
! 		BlackPixelOfScreen(tool_s), WhitePixelOfScreen(tool_s), 1);
  	half_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		half_bits, half_width, half_height,
! 		BlackPixelOfScreen(tool_s), WhitePixelOfScreen(tool_s), 1);
  }
  
  setup_grid(grid)
--- 132,153 ----
  
  init_grid()
  {
+ 	long	bg, fg;
+ 	Arg	tmp_arg[3];
+ 
+ 	XtSetArg(tmp_arg[0], XtNbackground, &bg);
+ 	XtSetArg(tmp_arg[1], XtNforeground, &fg);
+ 	XtGetValues(canvas_sw, tmp_arg, 2);
+ 	
  	null_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		null_bits, null_width, null_height,
! 		fg, bg,	DefaultDepthOfScreen(tool_s));
  	quarter_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		quarter_bits, quarter_width, quarter_height,
! 		fg, bg,	DefaultDepthOfScreen(tool_s));
  	half_pm = XCreatePixmapFromBitmapData(tool_d, canvas_pixwin,
  		half_bits, half_width, half_height,
! 		fg, bg,	DefaultDepthOfScreen(tool_s));
  }
  
  setup_grid(grid)
*** /tmp/da2111	Tue Aug 23 14:46:52 1988
--- main.c	Tue Aug 23 13:08:02 1988
***************
*** 24,37 ****
  extern			(*canvas_rightbut_proc)();
  extern			set_popupmenu();
  
  #include "fig.icon"
- #include "resources.h"
- 
  #define 		FIG_ICON_WIDTH		MY_ICON_WIDTH
  #define 		FIG_ICON_HEIGHT		MY_ICON_HEIGHT
- #define			SCREEN_WIDTH		1152
- #define			SCREEN_HEIGHT		900
- #define			min(a,b)		(((a) < (b)) ? (a) : (b))
  
  mpr_static(fig_icon_pr, FIG_ICON_WIDTH, FIG_ICON_HEIGHT, 1, icon_data);
  static struct icon	fig_icon  =  {
--- 24,36 ----
  extern			(*canvas_rightbut_proc)();
  extern			set_popupmenu();
  
+ #ifdef	X11
+ #include "fig.icon.X"
+ Pixmap	fig_icon;
+ #else
  #include "fig.icon"
  #define 		FIG_ICON_WIDTH		MY_ICON_WIDTH
  #define 		FIG_ICON_HEIGHT		MY_ICON_HEIGHT
  
  mpr_static(fig_icon_pr, FIG_ICON_WIDTH, FIG_ICON_HEIGHT, 1, icon_data);
  static struct icon	fig_icon  =  {
***************
*** 39,45 ****
--- 38,50 ----
  				{2, 2, FIG_ICON_WIDTH, FIG_ICON_HEIGHT},
  				&fig_icon_pr, {0, 0, 0, 0}, NULL, NULL,
  				ICON_BKGRDSET };
+ #endif	/* X11*/
  
+ #include "resources.h"
+ #define			SCREEN_WIDTH		1152
+ #define			SCREEN_HEIGHT		900
+ #define			min(a,b)		(((a) < (b)) ? (a) : (b))
+ 
  static char	tool_name[80] = " FIG : FACILITY FOR INTERACTIVE GENERATION OF FIGURES ";
  static RECT		icon_rect, tool_rect;
  static			sigwinched();
***************
*** 54,59 ****
--- 59,65 ----
  int			WINDOW_WIDTH, WINDOW_HEIGHT;
  char			file_header[32] = "#FIG ";
  static char		*file = NULL;
+ int			tracking = 1;
  
  get_args(argc, argv)
  int	argc;
***************
*** 107,113 ****
  				 INVERSE = 1;
  				 invert_color();
  				 break;
! 				 
  			 default:
  				 printf ("%s: Flag <%c> unrecognized\n", argv[0], *option);
  				 exit(1);
--- 113,127 ----
  				 INVERSE = 1;
  				 invert_color();
  				 break;
! 
! 			 case 't':	/* turn on tracking */
! 				 tracking = 1;
! 				 break;
! 
! 			 case 'n':	/* turn off tracking */
! 				 tracking = 0;
! 				 break;
! 					 
  			 default:
  				 printf ("%s: Flag <%c> unrecognized\n", argv[0], *option);
  				 exit(1);
***************
*** 158,163 ****
--- 172,179 ----
  }
  #else
  
+ static int true = True;
+ static int false = False;
  static int zero = 0;
  int	landscape;
  float	tmp_width = 0.0, tmp_height = 0.0;
***************
*** 164,193 ****
  
  static XtResource application_resources[] = {
  	{XtNjustify, XtCJustify, XtRBoolean, sizeof(int),
! 		 (Cardinal)&RHS_PANEL, XtRString, "False"},
  	{"debug", "Debug", XtRBoolean, sizeof(int),
! 		 (Cardinal)&DEBUG, XtRString, "False"},
! 	{XtNorientation, XtCOrientation, XtRBoolean, sizeof(int),
! 		 (Cardinal)&landscape, XtRBoolean, False},
  	{XtNwidth, XtCWidth, XtRFloat, sizeof(float),
  		 (Cardinal)&tmp_width, XtRInt, (caddr_t)&zero},
  	{XtNheight, XtCHeight, XtRFloat, sizeof(float),
  		 (Cardinal)&tmp_height, XtRInt, (caddr_t)&zero},
  	{XtNreverseVideo, XtCReverseVideo, XtRBoolean, sizeof(int),
! 		 (Cardinal)&INVERSE, XtRString, "False"},
  };
  
  static XrmOptionDescRec options[] =
  {
  	{"-right", ".justify", XrmoptionNoArg, "True" },
  	{"-debug", ".debug", XrmoptionNoArg, "True"},
! 	{"-landscape", ".orientation", XrmoptionNoArg, "True"},
! 	{"-Landscape", ".orientation", XrmoptionNoArg, "True"},
! 	{"-portrait", ".orientation", XrmoptionNoArg, "False"},
! 	{"-Portrait", ".orientation", XrmoptionNoArg, "False"},
  	{"-width", ".width", XrmoptionSepArg, 0},
  	{"-height", ".height", XrmoptionSepArg, 0},
! 	{"-inverse", ".reverseVideo", XrmoptionNoArg, "True"}
  };
  
  static XtCallbackRec	callbacks[] =
--- 180,214 ----
  
  static XtResource application_resources[] = {
  	{XtNjustify, XtCJustify, XtRBoolean, sizeof(int),
! 		 (Cardinal)&RHS_PANEL, XtRBoolean, (caddr_t)&false},
  	{"debug", "Debug", XtRBoolean, sizeof(int),
! 		 (Cardinal)&DEBUG, XtRBoolean, (caddr_t)&false},
! 	{"landscape", XtCOrientation, XtRBoolean, sizeof(int),
! 		 (Cardinal)&landscape, XtRBoolean, (caddr_t)&false},
  	{XtNwidth, XtCWidth, XtRFloat, sizeof(float),
  		 (Cardinal)&tmp_width, XtRInt, (caddr_t)&zero},
  	{XtNheight, XtCHeight, XtRFloat, sizeof(float),
  		 (Cardinal)&tmp_height, XtRInt, (caddr_t)&zero},
  	{XtNreverseVideo, XtCReverseVideo, XtRBoolean, sizeof(int),
! 		 (Cardinal)&INVERSE, XtRBoolean, (caddr_t)&false},
! 	{"trackCursor", "Track", XtRBoolean, sizeof(int),
! 		 (Cardinal)&tracking, XtRBoolean, (caddr_t)&true},
  };
  
  static XrmOptionDescRec options[] =
  {
  	{"-right", ".justify", XrmoptionNoArg, "True" },
+ 	{"-left", ".justify", XrmoptionNoArg, "False"},
  	{"-debug", ".debug", XrmoptionNoArg, "True"},
! 	{"-landscape", ".landscape", XrmoptionNoArg, "True"},
! 	{"-Landscape", ".landscape", XrmoptionNoArg, "True"},
! 	{"-portrait", ".landscape", XrmoptionNoArg, "False"},
! 	{"-Portrait", ".landscape", XrmoptionNoArg, "False"},
  	{"-width", ".width", XrmoptionSepArg, 0},
  	{"-height", ".height", XrmoptionSepArg, 0},
! 	{"-inverse", ".reverseVideo", XrmoptionNoArg, "True"},
! 	{"-notrack", ".trackCursor", XrmoptionNoArg, "False"},
! 	{"-track", ".trackCursor", XrmoptionNoArg, "True"},
  };
  
  static XtCallbackRec	callbacks[] =
***************
*** 215,223 ****
  	tool = XtInitialize("fig", "Fig", options, XtNumber(options),
  		&argc, argv);
  
- 	XtSetArg(tmp_arg[0], XtNtitle, tool_name);
- 	XtSetValues(tool, tmp_arg, 1);
- 
  	fix_converters();
  	XtGetApplicationResources(tool, 0, application_resources,
                                     XtNumber(application_resources), NULL, 0 );
--- 236,241 ----
***************
*** 227,232 ****
--- 245,251 ----
  	tool_d = XtDisplay(tool);
  	tool_s = XtScreen(tool);
  	tool_sn = DefaultScreen(tool_d);
+ 	
  	gc = DefaultGC(tool_d, tool_sn);
  	init_font();
  	init_cursor();
***************
*** 292,297 ****
--- 311,323 ----
  	if (file != NULL)
  		edit_file(file);
  	(void)signal(SIGINT, SIG_IGN);	/* so we don't lose work accidentally */
+ 	fig_icon = XCreateBitmapFromData(tool_d, XtWindow(tool),
+ 					 fig_bits, fig_width, fig_height);
+ 	
+ 	XtSetArg(tmp_arg[0], XtNtitle, tool_name);
+ 	XtSetArg(tmp_arg[1], XtNiconPixmap, fig_icon);
+ 	XtSetValues(tool, tmp_arg, 2);
+ 	
  	XtMainLoop();
  }
  #endif	X11
*** /tmp/da2116	Tue Aug 23 14:46:55 1988
--- panel.c	Tue Aug 23 11:32:25 1988
***************
*** 196,204 ****
  	register Pixmap		p;
  	register GC		cgc;
  	XGCValues		gcv;
! 
  	cgc = XCreateGC(d, XtWindow(panel_sw), 0, &gcv);
! 	XCopyGC(d, gc, ~0, cgc);
  	for (i = 0; i < N_SWITCHES; ++i)
  	{
  		sw = &switches[i];
--- 196,212 ----
  	register Pixmap		p;
  	register GC		cgc;
  	XGCValues		gcv;
! 	Arg			tmp_arg[3];
! 	long			bg, fg;
! 	
  	cgc = XCreateGC(d, XtWindow(panel_sw), 0, &gcv);
! 	XtSetArg(tmp_arg[0], XtNbackground, &bg);
! 	XtSetArg(tmp_arg[1], XtNforeground, &fg);
! 	XtGetValues(switches[0].but.widget, tmp_arg, 2);
! 	XSetForeground(d, cgc, fg);
! 	XSetBackground(d, cgc, bg);
! 	
! 	/*XCopyGC(d, gc, ~0, cgc);*/
  	for (i = 0; i < N_SWITCHES; ++i)
  	{
  		sw = &switches[i];
***************
*** 207,214 ****
  **	unfortunately it wants LSB first data.
  */
  		p = XCreatePixmap(d, XtWindow(sw->but.widget),
! 			sw->icon->width, sw->icon->height, sw->icon->depth);
! 		XPutImage(d, p, gc, sw->icon, 0, 0, 0, 0, sw->icon->width,
  			sw->icon->height);
  		sw->but.normal = button_args[5].value = (XtArgVal)p;
  		XtSetValues(sw->but.widget, &button_args[5], 1);
--- 215,223 ----
  **	unfortunately it wants LSB first data.
  */
  		p = XCreatePixmap(d, XtWindow(sw->but.widget),
! 				  sw->icon->width, sw->icon->height,
! 				  DefaultDepthOfScreen(s));
! 		XPutImage(d, p, cgc, sw->icon, 0, 0, 0, 0, sw->icon->width,
  			sw->icon->height);
  		sw->but.normal = button_args[5].value = (XtArgVal)p;
  		XtSetValues(sw->but.widget, &button_args[5], 1);
***************
*** 216,228 ****
  /*
  **	Create reversed bitmaps for displaying activated state
  */
! 	XSetForeground(d, cgc, WhitePixelOfScreen(s));
! 	XSetBackground(d, cgc, BlackPixelOfScreen(s));
  	for (i = 0; i < N_SWITCHES; ++i)
  	{
  		sw = &switches[i];
  		p = XCreatePixmap(d, XtWindow(sw->but.widget),
! 			sw->icon->width, sw->icon->height, sw->icon->depth);
  		XPutImage(d, p, cgc, sw->icon, 0, 0, 0, 0, sw->icon->width,
  			sw->icon->height);
  		sw->but.reverse = (XtArgVal)p;
--- 225,238 ----
  /*
  **	Create reversed bitmaps for displaying activated state
  */
! 	XSetForeground(d, cgc, bg);
! 	XSetBackground(d, cgc, fg);
  	for (i = 0; i < N_SWITCHES; ++i)
  	{
  		sw = &switches[i];
  		p = XCreatePixmap(d, XtWindow(sw->but.widget),
! 				  sw->icon->width, sw->icon->height,
! 				  DefaultDepthOfScreen(s));
  		XPutImage(d, p, cgc, sw->icon, 0, 0, 0, 0, sw->icon->width,
  			sw->icon->height);
  		sw->but.reverse = (XtArgVal)p;
*** /tmp/da2119	Tue Aug 23 14:46:58 1988
--- ruler.c	Tue Aug 23 11:40:06 1988
***************
*** 31,36 ****
--- 31,37 ----
  extern int		TOPRULER_LEFT, TOPRULER_TOP;
  extern			null_proc();
  extern int		RHS_PANEL;
+ extern int		tracking;
  
  static			lasty = -100;
  static			lastx = -100;
***************
*** 204,209 ****
--- 205,212 ----
  #define	QINCH	(PIX_PER_INCH / 4)
  #define	SINCH	(PIX_PER_INCH / 16)
  	char			number[3];
+ 	Arg			tmp_arg[3];
+ 	long			bg, fg;
  	static Arg		ruler_args[] =
  	{
  		{ XtNbackgroundPixmap, (XtArgVal)NULL },
***************
*** 216,222 ****
  
  	/* top ruler, adjustments for digits are kludges based on 6x13 char */
  	p = XCreatePixmap(tool_d, topruler_pixwin,
! 		TOPRULER_WIDTH, TOPRULER_HEIGHT, 1);
  	for (i = SINCH - 1; i <= TOPRULER_WIDTH; i += SINCH)
  	{
  		j = i + 1;
--- 219,237 ----
  
  	/* top ruler, adjustments for digits are kludges based on 6x13 char */
  	p = XCreatePixmap(tool_d, topruler_pixwin,
! 			  TOPRULER_WIDTH, TOPRULER_HEIGHT,
! 			  DefaultDepthOfScreen(tool_s));
! 
! 	XtSetArg(tmp_arg[0], XtNbackground, &bg);
! 	XtSetArg(tmp_arg[1], XtNforeground, &fg);
! 	XtGetValues(topruler_sw, tmp_arg, 2);
! 
! 	XSetBackground(tool_d, gc, bg);
! 	XSetForeground(tool_d, gc, bg);
! 	XFillRectangle(tool_d, p, gc, 0, 0, TOPRULER_WIDTH,
! 			TOPRULER_HEIGHT);
! 	XSetForeground(tool_d, gc, fg);
! 	
  	for (i = SINCH - 1; i <= TOPRULER_WIDTH; i += SINCH)
  	{
  		j = i + 1;
***************
*** 241,247 ****
  
  	/* side ruler, adjustments for digits are kludges based on 6x13 char */
  	p = XCreatePixmap(tool_d, sideruler_pixwin,
! 		SIDERULER_WIDTH, SIDERULER_HEIGHT, 1);
  	if( RHS_PANEL )
  	{
  		for (i = SINCH - 1; i <= SIDERULER_HEIGHT; i += SINCH)
--- 256,273 ----
  
  	/* side ruler, adjustments for digits are kludges based on 6x13 char */
  	p = XCreatePixmap(tool_d, sideruler_pixwin,
! 			  SIDERULER_WIDTH, SIDERULER_HEIGHT,
! 			  DefaultDepthOfScreen(tool_s));
! 	XtSetArg(tmp_arg[0], XtNbackground, &bg);
! 	XtSetArg(tmp_arg[1], XtNforeground, &fg);
! 	XtGetValues(sideruler_sw, tmp_arg, 2);
! 
! 	XSetBackground(tool_d, gc, bg);
! 	XSetForeground(tool_d, gc, bg);
! 	XFillRectangle(tool_d, p, gc, 0, 0, SIDERULER_WIDTH,
! 			SIDERULER_HEIGHT);
! 	XSetForeground(tool_d, gc, fg);
! 	
  	if( RHS_PANEL )
  	{
  		for (i = SINCH - 1; i <= SIDERULER_HEIGHT; i += SINCH)
***************
*** 293,313 ****
  
  	/* make pixmaps for ruler arrows */
  	toparrow_pm = XCreatePixmap(tool_d, topruler_pixwin, trm_pr.width,
! 		trm_pr.height, trm_pr.depth);
  	XPutImage(tool_d, toparrow_pm, gc, &trm_pr, 0, 0, 0, 0,
  		trm_pr.width, trm_pr.height);
  	
  	if( RHS_PANEL )
  	{
! 		sidearrow_pm = XCreatePixmap(tool_d, sideruler_pixwin, srlm_pr.width,
! 					     srlm_pr.height, srlm_pr.depth);
  		XPutImage(tool_d, sidearrow_pm, gc, &srlm_pr, 0, 0, 0, 0,
  			  srlm_pr.width, srlm_pr.height);
  	}
  	else
  	{
! 		sidearrow_pm = XCreatePixmap(tool_d, sideruler_pixwin, srrm_pr.width,
! 					     srrm_pr.height, srrm_pr.depth);
  		XPutImage(tool_d, sidearrow_pm, gc, &srrm_pr, 0, 0, 0, 0,
  			  srrm_pr.width, srrm_pr.height);
  	}
--- 319,342 ----
  
  	/* make pixmaps for ruler arrows */
  	toparrow_pm = XCreatePixmap(tool_d, topruler_pixwin, trm_pr.width,
! 				    trm_pr.height,
! 				    DefaultDepthOfScreen(tool_s));
  	XPutImage(tool_d, toparrow_pm, gc, &trm_pr, 0, 0, 0, 0,
  		trm_pr.width, trm_pr.height);
  	
  	if( RHS_PANEL )
  	{
! 		sidearrow_pm = XCreatePixmap(tool_d, sideruler_pixwin,
! 					     srlm_pr.width, srlm_pr.height,
! 					     DefaultDepthOfScreen(tool_s));
  		XPutImage(tool_d, sidearrow_pm, gc, &srlm_pr, 0, 0, 0, 0,
  			  srlm_pr.width, srlm_pr.height);
  	}
  	else
  	{
! 		sidearrow_pm = XCreatePixmap(tool_d, sideruler_pixwin,
! 					     srrm_pr.width, srrm_pr.height,
! 					     DefaultDepthOfScreen(tool_s));
  		XPutImage(tool_d, sidearrow_pm, gc, &srrm_pr, 0, 0, 0, 0,
  			  srrm_pr.width, srrm_pr.height);
  	}
***************
*** 450,458 ****
  set_rulermark(x, y)
  int	x, y;
  {
! 	set_siderulermark(y);
! 	set_toprulermark(x);
  	}
  
  set_siderulermark(y)
  int	y;
--- 479,490 ----
  set_rulermark(x, y)
  int	x, y;
  {
! 	if( tracking )
! 	{
! 		set_siderulermark(y);
! 		set_toprulermark(x);
  	}
+ }
  
  set_siderulermark(y)
  int	y;
*** /tmp/da2128	Tue Aug 23 14:47:03 1988
--- version.h	Tue Aug 23 10:46:22 1988
***************
*** 8,11 ****
  */
  
  #define			FIG_VERSION		"1.4"
! #define			MINOR_VERSION		".1"
--- 8,11 ----
  */
  
  #define			FIG_VERSION		"1.4"
! #define			MINOR_VERSION		".2"
*** /tmp/da2131	Tue Aug 23 14:47:05 1988
--- xfig.1	Tue Aug 23 14:46:11 1988
***************
*** 3,14 ****
  xfig \- Facility for Interactive Generation of figures under X11
  .SH SYNOPSIS
  .B xfig
! \fB[ -ri[ght] ]\fP 
! \fB[ -l[andscape] ]\fP
! \fB[ -p[ortrait] ]\fP
! \fB[ -w[idth] inches ]\fP
! \fB[ -h[eight] inches ]\fP
! \fB[\fP \fIfile\fP \fB]\fP
  .SH DESCRIPTION
  .I Xfig 
  is a menu-driven tool that allows the user to draw and manipulate objects
--- 3,17 ----
  xfig \- Facility for Interactive Generation of figures under X11
  .SH SYNOPSIS
  .B xfig
! [ \fB-ri[ght]\fP ] 
! [ \fB-le[ft]\fP ]
! [ \fB-L[andscape]\fP ]
! [ \fB-P[ortrait]\fP ]
! [ \fB-w[idth]\fP \fIinches\fP ]
! [ \fB-h[eight]\fP \fIinches\fP ]
! [ \fB-no[track]\fP ]
! [ \fB-tr[ack]\fP ]
! [ \fIfile\fP ]
  .SH DESCRIPTION
  .I Xfig 
  is a menu-driven tool that allows the user to draw and manipulate objects
***************
*** 71,81 ****
  Change the position of the panel window to the right of the canvas window
  (default: left).
  .TP
! .B \-l
! Make \fIxfig\fP come up in landscape mode (10" x 7").
  .TP
! .B \-p
! Make \fIxfig\fP come up in portrait mode (7" x 10"). This is the
  default.
  .TP
  \fB-w\fP \fIinches\fP
--- 74,87 ----
  Change the position of the panel window to the right of the canvas window
  (default: left).
  .TP
! .B \-le
! Change the position of the panel window to the left of the canvas window.
  .TP
! .B \-L
! Make \fIxfig\fP come up in landscape mode (10" x 7.5").
! .TP
! .B \-P
! Make \fIxfig\fP come up in portrait mode (7.5" x 10"). This is the
  default.
  .TP
  \fB-w\fP \fIinches\fP
***************
*** 83,88 ****
--- 89,100 ----
  .TP
  \fB-h\fP \fIinches\fP
  Make \fIxfig\fP come up \fIinches\fP high.
+ .TP
+ \fB-tr\fP
+ Turn on cursor (mouse) tracking arrows.
+ .TP
+ \fB-no\fP
+ Turn off cursor (mouse) tracking arrows.
  .SH "GRAPHICAL OBJECTS"
  The objects in \fIxfig\fP are divided into \fBprimitive objects\fP and
  \fBcompound object\fP. The primitive objects are: \fIARC\fP, \fICIRCLE\fP,
***************
*** 360,367 ****
  Toggle between solid and dashed line styles. The dash length
  is fixed at 0.05 inch.
  .SH X DEFAULTS
! The overall widget name(Class) is xfig.fig(Fig.TopLevelShell).  Below
! is a listing of the interesting widgets.
  .TP 1.5i
  overall window
  form(Form)
--- 372,402 ----
  Toggle between solid and dashed line styles. The dash length
  is fixed at 0.05 inch.
  .SH X DEFAULTS
! The overall widget name(Class) is xfig.fig(Fig.TopLevelShell).  This
! set of resources correspond to the command line arguments:
! .TP 1.25i
! trackCursor
! (boolean:on) -track and -notrack arguments
! .TP
! justify
! (boolean:false) -right and -left arguments
! .TP
! landscape
! (boolean:false) -Landscape and -Portrait arguments
! .TP
! debug
! (boolean:off) -debug arguments
! .TP
! width
! (integer:7.5 or 10 inches) -width argument
! .TP
! height
! (integer:10 or 7.5 inches) -height argument
! .TP
! reverseVideo
! (boolean:off) -inverse argument
! .PP
! These arguments correspond to the widgets which make up \fIxfig\fP.
  .TP 1.5i
  overall window
  form(Form)

-- 
Mike Wexler(wyse!mikew)    Phone: (408)433-1000 x1330