[comp.sources.x] v02i010: a MacDraw like graphics editor, Patch5

mikew@wyse.wyse.com (Mike Wexler) (11/12/88)

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

[BTW, the address for submissions to comp.sources.x is x-sources@wyse.com]

Here is the first set of patches for xfig as it came on the R3 source
tape.

==================== xfig.r3.patch1 ====================
*** /tmp/d10855	Wed Nov  9 14:40:48 1988
--- patchlevel.h	Wed Nov  9 14:40:15 1988
***************
*** 1,2
! #define PATCHLEVEL 3
! #define PATCHLEVEL 2

--- 1 -----
! #define PATCHLEVEL 4
*** /tmp/d10858	Wed Nov  9 14:40:48 1988
--- canvas.c	Wed Nov  9 14:06:34 1988
***************
*** 171,177
  	String		*params;
  	Cardinal	*nparams;
  {
! 	Position	x, y;
  	Window		w;
  	extern TOOL	menu;
  	

--- 171,177 -----
  	String		*params;
  	Cardinal	*nparams;
  {
! 	int		x, y;
  	Window		w;
  	extern TOOL	menu;
  	
*** /tmp/d10861	Wed Nov  9 14:40:50 1988
--- main.c	Wed Nov  9 13:25:56 1988
***************
*** 254,260
  	{
  		XrmValue    value;
  		XrmDatabase newdb = (XrmDatabase) 0;
! 		extern XrmDatabase XtDefaultDB;
  
  		value.size = sizeof("White");
  		value.addr = "White";

--- 254,260 -----
  	{
  		XrmValue    value;
  		XrmDatabase newdb = (XrmDatabase) 0;
! 		XrmDatabase XtDefaultDB;
  
  		XtDefaultDB = XtDatabase(tool_d);
  		value.size = sizeof("White");
***************
*** 256,261
  		XrmDatabase newdb = (XrmDatabase) 0;
  		extern XrmDatabase XtDefaultDB;
  
  		value.size = sizeof("White");
  		value.addr = "White";
  		XrmPutResource(&newdb, "xfig*borderColor", "String",

--- 256,262 -----
  		XrmDatabase newdb = (XrmDatabase) 0;
  		XrmDatabase XtDefaultDB;
  
+ 		XtDefaultDB = XtDatabase(tool_d);
  		value.size = sizeof("White");
  		value.addr = "White";
  		XrmPutResource(&newdb, "xfig*borderColor", "String",
*** /tmp/d10864	Wed Nov  9 14:40:51 1988
--- save.c	Wed Nov  9 13:15:18 1988
***************
*** 170,175
  FILE		*fp;
  F_ellipse	*e;
  {
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %.3f %d %d %d %d %d %d %d %d\n",
  		O_ELLIPSE, e->type, e->style, e->thickness, 
  		e->color, e->depth, e->pen, e->area_fill,

--- 170,178 -----
  FILE		*fp;
  F_ellipse	*e;
  {
+ 	if( e->radiuses.x == 0 || e->radiuses.y == 0 )
+ 		return;
+ 	
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %.3f %d %d %d %d %d %d %d %d\n",
  		O_ELLIPSE, e->type, e->style, e->thickness, 
  		e->color, e->depth, e->pen, e->area_fill,
***************
*** 187,192
  	F_point	*p;
  	F_arrow	*f, *b;
  
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d\n",
  		O_POLYLINE, l->type, l->style, l->thickness,
  		l->color, l->depth, l->pen, l->area_fill, l->style_val, 

--- 190,197 -----
  	F_point	*p;
  	F_arrow	*f, *b;
  
+ 	if( l->points == NULL )
+ 		return;
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d\n",
  		O_POLYLINE, l->type, l->style, l->thickness,
  		l->color, l->depth, l->pen, l->area_fill, l->style_val, 
***************
*** 212,217
  	F_point		*p;
  	F_arrow		*f, *b;
  
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d\n",
  		O_SPLINE, s->type, s->style, s->thickness,
  		s->color, s->depth, s->pen, s->area_fill, s->style_val,

--- 217,224 -----
  	F_point		*p;
  	F_arrow		*f, *b;
  
+ 	if( s->points == NULL )
+ 		return;
  	fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d\n",
  		O_SPLINE, s->type, s->style, s->thickness,
  		s->color, s->depth, s->pen, s->area_fill, s->style_val,
***************
*** 241,246
  FILE	*fp;
  F_text	*t;
  {
  	fprintf(fp, "%d %d %d %d %d %d %d %.3f %d %d %d %d %d %s\1\n", 
  		O_TEXT, t->type, t->font, t->size, t->pen,
  		t->color, t->depth, t->angle,

--- 248,255 -----
  FILE	*fp;
  F_text	*t;
  {
+ 	if( t->length == 0 )
+ 		return;
  	fprintf(fp, "%d %d %d %d %d %d %d %.3f %d %d %d %d %d %s\1\n", 
  		O_TEXT, t->type, t->font, t->size, t->pen,
  		t->color, t->depth, t->angle,
*** /tmp/d10867	Wed Nov  9 14:40:52 1988
--- search.c	Wed Nov  9 14:07:41 1988
***************
*** 51,56
  	    a = e->radiuses.x;
  	    b = e->radiuses.y;
  	    dis = sqrt((double)(dx*dx + dy*dy));
  	    r = a * b * dis / sqrt((double) (b*b*dx*dx + a*a*dy*dy));
  	    if (fabs(dis - r) <= tol) {
  		*px = (int)(r*dx/dis + ((dx < 0) ? -.5 : .5)) + e->center.x;

--- 51,61 -----
  	    a = e->radiuses.x;
  	    b = e->radiuses.y;
  	    dis = sqrt((double)(dx*dx + dy*dy));
+ 	    if (dis == 0) {
+ 		    *px = e->center.x;
+ 		    *py = e->center.y;
+ 		    return(e);
+ 	    }
  	    r = a * b * dis / sqrt((double) (b*b*dx*dx + a*a*dy*dy));
  	    if (fabs(dis - r) <= tol) {
  		*px = (int)(r*dx/dis + ((dx < 0) ? -.5 : .5)) + e->center.x;
*** /tmp/d10870	Wed Nov  9 14:40:52 1988
--- xtra.c	Wed Nov  9 13:58:23 1988
***************
*** 128,134
  
  	if( confirm == NULL )
  	{
! 		Position	rootx, rooty;
  		Window		win;
  		Arg		confirm_args[5];
  		

--- 128,134 -----
  
  	if( confirm == NULL )
  	{
! 		int		rootx, rooty;
  		Window		win;
  		Arg		confirm_args[5];
  		

-- 
Mike Wexler(wyse!mikew)    Phone: (408)433-1000 x1330
Moderator of comp.sources.x