Article View: comp.sources.bugs
Article #17Tgif-2.12-patch10 (10th patch for tgif-2.12), Part 01/01
From: William Cheng
Date: Sat, 08 Aug 1992 21:33
Date: Sat, 08 Aug 1992 21:33
1694 lines
55135 bytes
55135 bytes
Below is tgif-2.12-patch10 (10th patch for tgif-2.12). (Sources for
tgif-2.12 at patchlevel 7, the 8th patch, and the 9th patch can be found in
the /contrib directory on export.lcs.mit.edu and in the /pub/tgif directory
on cs.ucla.edu.)
Tgif is an Xlib based 2-D drawing tool under X11.
Remove everything outside of the 'cut here' lines (inclusive), save
the file as tgif-2.12-patch10, and apply the patch with
'patch -p -N < tgif-2.12-patch10'. Here's a short list of added
features/bug fixes.
1) Fix a bug that causes seg fault when moving from attribute to attribute
using <Shift><Tab> (feature introduced in patchlevel 8).
2) Add a new command, SaveSymInLibrary(), under the FileMenu to save a symbol
(.sym) file. This will prompt the user to pick a library directory from
the current domain for saving the symbol file.
3) Add a compile option USE_XAPPLRESDIR to tell tgif to look at the
XAPPLRESDIR environment variable first and try to locate the tgif
resources if XENVIRONMENT is not set. However, if you machine doesn't
support putenv() (such as IBM-RT), then this won't work. Thanks to
Jaap Haalboom <haalboom@prl.philips.nl> for the suggestion and the code.
4) Add -gray and -adobe command line options to prtgif. They have
the same effects as setting the Tgif*UseGrayScale and Tgif*UsePsAdobeString
X defaults to ``true'' (prtgif does not read X defaults).
5) Allow prtgif to specify a symbol file name.
6) Try to generate a more compact xbm or xpm file when the bounding box can
be figured out exactly.
Please send bug reports to william@cs.ucla.edu.
---------------------------------> cut here <---------------------------------
*** auxtext.c.orig Sat Aug 8 13:20:03 1992
--- auxtext.c Sat Aug 8 13:20:04 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.c,v 2.25 1992/06/26 05:21:19 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/auxtext.c,v 2.28 1992/08/08 08:28:04 william Exp $";
#endif
***************
*** 464,468 ****
register struct AttrRec * attr_ptr;
struct ObjRec * found_text_obj;
! struct SelRec * sel_ptr, * next_sel;
for (obj_ptr=ObjPtr->detail.r->first; obj_ptr!=NULL; obj_ptr=obj_ptr->next)
--- 464,468 ----
register struct AttrRec * attr_ptr;
struct ObjRec * found_text_obj;
! struct SelRec * sel_ptr;
for (obj_ptr=ObjPtr->detail.r->first; obj_ptr!=NULL; obj_ptr=obj_ptr->next)
***************
*** 508,511 ****
--- 508,512 ----
}
}
+ return (NULL);
}
*** choice.c.orig Sat Aug 8 13:20:10 1992
--- choice.c Sat Aug 8 13:20:12 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/choice.c,v 2.56 1992/06/19 18:10:16 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/choice.c,v 2.58 1992/08/08 08:25:43 william Exp $";
#endif
*** copypaste.c.orig Sat Aug 8 13:20:17 1992
--- copypaste.c Sat Aug 8 13:20:18 1992
***************
*** 26,30 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.c,v 2.28 1992/03/31 07:51:49 william Exp $";
#endif
--- 26,30 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.c,v 2.30 1992/08/08 08:25:48 william Exp $";
#endif
*** drawing.c.orig Sat Aug 8 13:20:25 1992
--- drawing.c Sat Aug 8 13:20:28 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.112 1992/06/19 18:09:08 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.114 1992/07/24 05:20:38 william Exp $";
#endif
***************
*** 468,471 ****
--- 468,579 ----
}
+ static
+ void GetBetterBBox (ObjPtr, LtX, LtY, RbX, RbY)
+ struct ObjRec * ObjPtr;
+ int *LtX, *LtY, *RbX, *RbY;
+ {
+ int w=0, ltx, lty, rbx, rby, style=INVALID;
+ struct ObjRec * obj_ptr;
+ struct AttrRec * attr_ptr;
+
+ if (ObjPtr->bbox.ltx < *LtX || ObjPtr->bbox.lty < *LtY ||
+ ObjPtr->bbox.rbx > *RbX || ObjPtr->bbox.rby > *RbY)
+ {
+ switch (ObjPtr->type)
+ {
+ case OBJ_POLY:
+ w = ObjPtr->detail.p->width;
+ style = ObjPtr->detail.p->style;
+ break;
+ case OBJ_ARC:
+ w = ObjPtr->detail.a->width;
+ style = ObjPtr->detail.a->style;
+ break;
+ case OBJ_BOX: w = ObjPtr->detail.b->width; break;
+ case OBJ_OVAL: w = ObjPtr->detail.o->width; break;
+ case OBJ_POLYGON: w = ObjPtr->detail.g->width; break;
+ case OBJ_RCBOX: w = ObjPtr->detail.rcb->width; break;
+
+ case OBJ_TEXT:
+ ltx = ObjPtr->bbox.ltx; lty = ObjPtr->bbox.lty;
+ rbx = ObjPtr->bbox.rbx; rby = ObjPtr->bbox.rby;
+ break;
+
+ case OBJ_XBM:
+ case OBJ_XPM:
+ ltx = ObjPtr->bbox.ltx; lty = ObjPtr->bbox.lty;
+ rbx = ObjPtr->bbox.rbx-1; rby = ObjPtr->bbox.rby-1;
+ break;
+
+ case OBJ_GROUP:
+ case OBJ_ICON:
+ case OBJ_SYM:
+ obj_ptr = ObjPtr->detail.r->last;
+ ltx = obj_ptr->bbox.rbx; lty = obj_ptr->bbox.rby;
+ rbx = obj_ptr->bbox.ltx; rby = obj_ptr->bbox.lty;
+ for ( ; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
+ GetBetterBBox (obj_ptr, <x, <y, &rbx, &rby);
+ break;
+ }
+ switch (ObjPtr->type)
+ {
+ case OBJ_POLY:
+ case OBJ_ARC:
+ if (((ObjPtr->type==OBJ_POLY && style==LS_PLAIN) ||
+ (ObjPtr->type==OBJ_ARC && style==LS_PLAIN)) && (w & 0x1))
+ {
+ w = (w-1)>>1;
+ ltx = ObjPtr->obbox.ltx-w; lty = ObjPtr->obbox.lty-w;
+ rbx = ObjPtr->obbox.rbx+w; rby = ObjPtr->obbox.rby+w;
+ }
+ else
+ {
+ ltx = ObjPtr->bbox.ltx; lty = ObjPtr->bbox.lty;
+ rbx = ObjPtr->bbox.rbx; rby = ObjPtr->bbox.rby;
+ }
+ break;
+
+ case OBJ_BOX:
+ case OBJ_OVAL:
+ case OBJ_POLYGON:
+ case OBJ_RCBOX:
+ if (w & 0x1)
+ {
+ w = (w-1)>>1;
+ ltx = ObjPtr->obbox.ltx-w; lty = ObjPtr->obbox.lty-w;
+ rbx = ObjPtr->obbox.rbx+w; rby = ObjPtr->obbox.rby+w;
+ }
+ else
+ {
+ ltx = ObjPtr->bbox.ltx; lty = ObjPtr->bbox.lty;
+ rbx = ObjPtr->bbox.rbx; rby = ObjPtr->bbox.rby;
+ }
+ break;
+ }
+ for (attr_ptr=ObjPtr->lattr; attr_ptr!=NULL; attr_ptr=attr_ptr->prev)
+ if (attr_ptr->shown)
+ {
+ if (attr_ptr->obj->bbox.ltx < ltx) ltx = attr_ptr->obj->bbox.ltx;
+ if (attr_ptr->obj->bbox.lty < lty) lty = attr_ptr->obj->bbox.lty;
+ if (attr_ptr->obj->bbox.rbx > rbx) rbx = attr_ptr->obj->bbox.rbx;
+ if (attr_ptr->obj->bbox.rby > rby) rby = attr_ptr->obj->bbox.rby;
+ }
+ if (ObjPtr->type == OBJ_SYM)
+ {
+ if (ObjPtr->obbox.ltx-QUARTER_INCH < ltx)
+ ltx = ObjPtr->obbox.ltx - QUARTER_INCH;
+ if (ObjPtr->obbox.lty-QUARTER_INCH < lty)
+ lty = ObjPtr->obbox.lty - QUARTER_INCH;
+ if (ObjPtr->obbox.rbx+QUARTER_INCH > rbx)
+ rbx = ObjPtr->obbox.rbx + QUARTER_INCH;
+ if (ObjPtr->obbox.rby+QUARTER_INCH > rby)
+ rby = ObjPtr->obbox.rby + QUARTER_INCH;
+ }
+
+ if (ltx < *LtX) *LtX = ltx; if (lty < *LtY) *LtY = lty;
+ if (rbx > *RbX) *RbX = rbx; if (rby > *RbY) *RbY = rby;
+ }
+ }
+
Pixmap DrawAllOnPixmap (LtX, LtY, W, H)
int *LtX, *LtY, *W, *H;
***************
*** 480,509 ****
XGCValues values;
! ltx = botObj->bbox.ltx; lty = botObj->bbox.lty;
! if (botObj->type == OBJ_XBM || botObj->type == OBJ_XPM)
! {
! rbx = botObj->bbox.rbx-1;
! rby = botObj->bbox.rby-1;
! }
! else
! {
! rbx = botObj->bbox.rbx;
! rby = botObj->bbox.rby;
! }
! for (obj_ptr = botObj->prev; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
! {
! if (obj_ptr->bbox.ltx < ltx) ltx = obj_ptr->bbox.ltx;
! if (obj_ptr->bbox.lty < lty) lty = obj_ptr->bbox.lty;
! if (obj_ptr->type == OBJ_XBM || obj_ptr->type == OBJ_XPM)
! {
! if (obj_ptr->bbox.rbx-1 > rbx) rbx = obj_ptr->bbox.rbx-1;
! if (obj_ptr->bbox.rby-1 > rby) rby = obj_ptr->bbox.rby-1;
! }
! else
! {
! if (obj_ptr->bbox.rbx > rbx) rbx = obj_ptr->bbox.rbx;
! if (obj_ptr->bbox.rby > rby) rby = obj_ptr->bbox.rby;
! }
! }
*W = w = rbx - ltx + 1;
*H = h = rby - lty + 1;
--- 588,596 ----
XGCValues values;
! ltx = botObj->bbox.rbx; lty = botObj->bbox.rby;
! rbx = botObj->bbox.ltx; rby = botObj->bbox.lty;
! for (obj_ptr = botObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
! GetBetterBBox (obj_ptr, <x, <y, &rbx, &rby);
!
*W = w = rbx - ltx + 1;
*H = h = rby - lty + 1;
***************
*** 804,807 ****
--- 891,896 ----
else if (strcmp (name, "FreeHandMode()") == 0)
SetCurChoice (FREEHAND);
+ else if (strcmp (name, "SaveSymInLibrary()") == 0)
+ SaveSymInLibrary ();
}
return (BAD);
*** dup.c.orig Sat Aug 8 13:20:37 1992
--- dup.c Sat Aug 8 13:20:39 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/dup.c,v 2.46 1992/03/31 07:52:24 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/dup.c,v 2.48 1992/08/08 08:26:09 william Exp $";
#endif
*** edit.c.orig Sat Aug 8 13:20:50 1992
--- edit.c Sat Aug 8 13:20:54 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/edit.c,v 2.85 1992/06/18 21:03:26 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/edit.c,v 2.87 1992/08/08 08:26:16 william Exp $";
#endif
*** file.c.orig Sat Aug 8 13:21:07 1992
--- file.c Sat Aug 8 13:21:13 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.182 1992/06/23 17:00:47 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.191 1992/08/08 19:53:29 william Exp $";
#endif
***************
*** 89,93 ****
int PRTGIF = FALSE;
! char curFileName[MAXPATHLENGTH];
int curFileDefined = FALSE;
int fileVersion = INVALID;
--- 89,93 ----
int PRTGIF = FALSE;
! char curFileName[MAXPATHLENGTH+1];
int curFileDefined = FALSE;
int fileVersion = INVALID;
***************
*** 114,119 ****
#endif /* A4PAPER */
! char printCommand[MAXSTRING];
! char outputDir[MAXPATHLENGTH];
char * savedComments=NULL;
--- 114,119 ----
#endif /* A4PAPER */
! char printCommand[MAXSTRING+1];
! char outputDir[MAXPATHLENGTH+1];
char * savedComments=NULL;
***************
*** 290,294 ****
/* return TRUE if file successfully saved */
{
! char new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH], * rest;
FILE * fp;
int count = 0, status = INVALID, short_name;
--- 290,295 ----
/* return TRUE if file successfully saved */
{
! char new_file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1];
! char * rest;
FILE * fp;
int count = 0, status = INVALID, short_name;
***************
*** 355,367 ****
int SaveSelectedOnly;
{
! char new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
! char new_full_name[MAXPATHLENGTH], tmp_str[MAXPATHLENGTH];
! char name_without_ext[MAXPATHLENGTH], * rest;
! char saved_cur_dir[MAXPATHLENGTH];
! char saved_cur_file_name[MAXPATHLENGTH];
! char obj_ext_str[MAXSTRING], sym_ext_str[MAXSTRING];
int saved_cur_file_defined=FALSE, obj_ext_len, sym_ext_len;
FILE * fp;
! int count = 0, len, short_name = FALSE;
struct ObjRec * obj_ptr, * saved_top_obj=NULL, * saved_bot_obj=NULL;
struct SelRec * top_sel_ptr, * bot_sel_ptr;
--- 356,369 ----
int SaveSelectedOnly;
{
! char new_file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1];
! char new_full_name[MAXPATHLENGTH+1];
! char tmp_str[MAXPATHLENGTH+1];
! char name_without_ext[MAXPATHLENGTH+1], * rest;
! char saved_cur_dir[MAXPATHLENGTH+1];
! char saved_cur_file_name[MAXPATHLENGTH+1];
! char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1];
int saved_cur_file_defined=FALSE, obj_ext_len, sym_ext_len;
FILE * fp;
! int count = 0, len, short_name=FALSE;
struct ObjRec * obj_ptr, * saved_top_obj=NULL, * saved_bot_obj=NULL;
struct SelRec * top_sel_ptr, * bot_sel_ptr;
***************
*** 557,560 ****
--- 559,685 ----
}
+ void SaveSymInLibrary ()
+ {
+ char new_file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1];
+ char new_full_name[MAXPATHLENGTH+1];
+ char dir_name[MAXPATHLENGTH+1];
+ char saved_dir[MAXPATHLENGTH+1], saved_file[MAXPATHLENGTH+1];
+ char saved_sym_dir[MAXPATHLENGTH+1];
+ char name_without_ext[MAXPATHLENGTH+1], * rest;
+ char sym_ext_str[MAXSTRING+1], * c_ptr;
+ FILE * fp;
+ int count=0, len, short_name=FALSE, sym_ext_len;
+ int saved_cur_file_defined;
+ struct ObjRec * obj_ptr;
+
+ for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
+ if (obj_ptr->type == OBJ_SYM) count++;
+
+ switch (count)
+ {
+ case 0: Msg ("No Symbol found! Symbol file not saved."); return;
+ case 1: break;
+ default: Msg ("TOO MANY SYMBOLS! Symbol file not saved."); return;
+ }
+
+ sprintf (sym_ext_str, ".%s", SYM_FILE_EXT);
+ sym_ext_len = strlen (sym_ext_str);
+
+ if (*curFileName == '\0')
+ {
+ Dialog ("Please Enter New File Name:", "( <CR>: accept, <ESC>: cancel )",
+ new_file_name);
+ if (*new_file_name == '\0') return;
+
+ len = strlen (new_file_name);
+ if (len >= sym_ext_len)
+ {
+ if (strcmp (&new_file_name[len-sym_ext_len], sym_ext_str) != 0)
+ {
+ strcpy (name_without_ext, new_file_name);
+ strcat (new_file_name, sym_ext_str);
+ }
+ else
+ {
+ strcpy (name_without_ext, new_file_name);
+ name_without_ext[len-sym_ext_len] = '\0';
+ }
+
+ if (strlen (new_file_name) == sym_ext_len)
+ {
+ Msg ("No file name specified. File not saved.");
+ return;
+ }
+ }
+ else
+ {
+ strcpy (name_without_ext, new_file_name);
+ strcat (new_file_name, sym_ext_str);
+ }
+ }
+ else
+ {
+ len = strlen (curFileName);
+ for (c_ptr=&curFileName[len-1]; c_ptr!=curFileName; c_ptr--)
+ if (*c_ptr == '/')
+ break;
+ if (*c_ptr == '/') c_ptr++;
+ strcpy (new_file_name, c_ptr);
+ }
+
+ if (SelectSymDir (dir_name) == INVALID) { Msg (""); return; }
+
+ if (strcmp (dir_name, ".") == 0)
+ sprintf (new_full_name, "%s/%s", curDir, new_file_name);
+ else
+ sprintf (new_full_name, "%s/%s", dir_name, new_file_name);
+
+ if (!OkayToCreateFile (new_full_name)) return;
+
+ if (short_name = IsPrefix (bootDir, new_full_name, &rest)) ++rest;
+ if ((fp = fopen (new_full_name, "w")) == NULL)
+ {
+ if (short_name)
+ sprintf (s, "Can not open '%s', file not saved.", rest);
+ else
+ sprintf (s, "Can not open '%s', file not saved.", new_full_name);
+ Msg (s);
+ return;
+ }
+
+ strcpy (saved_dir, curDir);
+ strcpy (saved_file, curFileName);
+ strcpy (saved_sym_dir, curSymDir);
+ saved_cur_file_defined = curFileDefined;
+ SetCurDir (new_full_name);
+ curFileDefined = TRUE;
+
+ strcpy (curSymDir, curDir);
+ if (!DirInSymPath (curDir)) UpdateSymInfo ();
+
+ if (short_name)
+ sprintf (s, "Saving '%s' ...", rest);
+ else
+ sprintf (s, "Saving '%s' ...", new_full_name);
+ Msg (s);
+
+ if (!saveCommentsInSaveNew) CleanUpComments ();
+ Save (fp, botObj, 0);
+ fclose (fp);
+
+ if (short_name)
+ sprintf (s, "File '%s' saved.", rest);
+ else
+ sprintf (s, "File '%s' saved.", new_full_name);
+ Msg (s);
+
+ strcpy (curDir, saved_dir);
+ strcpy (curFileName, saved_file);
+ strcpy (curSymDir, saved_sym_dir);
+ curFileDefined = saved_cur_file_defined;
+
+ RedrawTitleWindow ();
+ }
+
void SaveFile ()
{
***************
*** 562,567 ****
struct ObjRec * obj_ptr;
FILE * fp;
! char ext[MAXPATHLENGTH], s[MAXPATHLENGTH];
! char full_name[MAXPATHLENGTH], * rest;
if (!curFileDefined)
--- 687,692 ----
struct ObjRec * obj_ptr;
FILE * fp;
! char ext[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1];
! char full_name[MAXPATHLENGTH+1], * rest;
if (!curFileDefined)
***************
*** 682,686 ****
{
char * s;
! int page_style;
s = FindChar ('(', Inbuf);
--- 807,811 ----
{
char * s;
! int page_style, forced_use_gray=FALSE;
s = FindChar ('(', Inbuf);
***************
*** 716,721 ****
}
! if (PRTGIF) return (TRUE);
!
if (!importingFile)
{
--- 841,845 ----
}
! if (PRTGIF && useGray) forced_use_gray = TRUE;
if (!importingFile)
{
***************
*** 989,992 ****
--- 1113,1121 ----
GETVALUE(useGray, "Use Gray Scale");
}
+ if (PRTGIF)
+ {
+ if (forced_use_gray) useGray = TRUE;
+ return (TRUE);
+ }
if (colorIndex >= maxColors)
***************
*** 1013,1016 ****
--- 1142,1147 ----
}
}
+ if (PRTGIF) return (TRUE);
+
if (lineWidth >= maxLineWidths)
{
***************
*** 1280,1286 ****
void ChangeDomain ()
{
! char domain_name[MAXPATHLENGTH], env_str[MAXPATHLENGTH];
! char s[MAXSTRING], s1[MAXSTRING], * c_ptr;
! char cap_tool_name[MAXSTRING];
XEvent ev;
--- 1411,1417 ----
void ChangeDomain ()
{
! char domain_name[MAXPATHLENGTH+1], env_str[MAXPATHLENGTH+1];
! char s[MAXSTRING+1], s1[MAXSTRING+1], * c_ptr;
! char cap_tool_name[MAXSTRING+1];
XEvent ev;
***************
*** 1331,1339 ****
{
struct ObjRec * obj_ptr, * saved_top_obj, * saved_bot_obj;
! char file_name[MAXPATHLENGTH], s[MAXPATHLENGTH], * rest;
FILE * fp;
int short_name, read_status;
XEvent ev;
! char tmp_filename[MAXPATHLENGTH];
int tmp_linenum;
--- 1462,1470 ----
{
struct ObjRec * obj_ptr, * saved_top_obj, * saved_bot_obj;
! char file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1], * rest;
FILE * fp;
int short_name, read_status;
XEvent ev;
! char tmp_filename[MAXPATHLENGTH+1];
int tmp_linenum;
***************
*** 1343,1347 ****
if (importFromLibrary)
{
! char name[MAXSTRING], path[MAXSTRING];
if (SelectFromLibrary("Please select an object file to IMPORT...",
--- 1474,1478 ----
if (importFromLibrary)
{
! char name[MAXSTRING+1], path[MAXSTRING+1];
if (SelectFromLibrary("Please select an object file to IMPORT...",
***************
*** 1450,1455 ****
void ImportXBitmapFile ()
{
! char file_name[MAXPATHLENGTH], s[MAXPATHLENGTH], * rest;
! char mag_spec[MAXSTRING], msg[MAXSTRING];
unsigned int tmp_w, tmp_h;
int rc, x_hot, y_hot, x, y, w, h, short_name;
--- 1581,1586 ----
void ImportXBitmapFile ()
{
! char file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1], * rest;
! char mag_spec[MAXSTRING+1], msg[MAXSTRING+1];
unsigned int tmp_w, tmp_h;
int rc, x_hot, y_hot, x, y, w, h, short_name;
***************
*** 1466,1470 ****
if (importFromLibrary)
{
! char name[MAXSTRING], path[MAXSTRING];
if (SelectFromLibrary("Please select an XBitmap file to IMPORT...",
--- 1597,1601 ----
if (importFromLibrary)
{
! char name[MAXSTRING+1], path[MAXSTRING+1];
if (SelectFromLibrary("Please select an XBitmap file to IMPORT...",
***************
*** 1565,1569 ****
void ImportXPixmapFile ()
{
! char file_name[MAXPATHLENGTH], s[MAXPATHLENGTH], * rest;
int rc, ncolors, chars_per_pixel, * pixels, short_name;
int first_pixel_is_bg, image_w, image_h, w, h;
--- 1696,1700 ----
void ImportXPixmapFile ()
{
! char file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1], * rest;
int rc, ncolors, chars_per_pixel, * pixels, short_name;
int first_pixel_is_bg, image_w, image_h, w, h;
***************
*** 1579,1583 ****
if (importFromLibrary)
{
! char name[MAXSTRING], path[MAXSTRING];
if (SelectFromLibrary("Please select an XPixmap file to IMPORT...",
--- 1710,1714 ----
if (importFromLibrary)
{
! char name[MAXSTRING+1], path[MAXSTRING+1];
if (SelectFromLibrary("Please select an XPixmap file to IMPORT...",
***************
*** 1645,1649 ****
void ImportEPSFile ()
{
! char file_name[MAXPATHLENGTH], s[MAXPATHLENGTH], * rest;
char * * lines=NULL, write_date[32];
int rc, short_name, num_lines, epsf_level, image_w, image_h;
--- 1776,1780 ----
void ImportEPSFile ()
{
! char file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1], * rest;
char * * lines=NULL, write_date[32];
int rc, short_name, num_lines, epsf_level, image_w, image_h;
***************
*** 1659,1663 ****
if (importFromLibrary)
{
! char name[MAXSTRING], path[MAXSTRING];
if (SelectFromLibrary("Please select an EPS file to IMPORT...",
--- 1790,1794 ----
if (importFromLibrary)
{
! char name[MAXSTRING+1], path[MAXSTRING+1];
if (SelectFromLibrary("Please select an EPS file to IMPORT...",
***************
*** 1729,1737 ****
{
struct ObjRec * obj_ptr;
! char file_name[MAXPATHLENGTH], msg[MAXPATHLENGTH];
! char saved_cur_dir[MAXPATHLENGTH], * rest;
int read_status, short_name;
FILE * fp;
! char tmp_filename[MAXPATHLENGTH];
int tmp_linenum;
--- 1860,1868 ----
{
struct ObjRec * obj_ptr;
! char file_name[MAXPATHLENGTH+1], msg[MAXPATHLENGTH+1];
! char saved_cur_dir[MAXPATHLENGTH+1], * rest;
int read_status, short_name;
FILE * fp;
! char tmp_filename[MAXPATHLENGTH+1];
int tmp_linenum;
***************
*** 2013,2017 ****
register int i;
int len;
! char s[MAXPATHLENGTH];
if (*outputDir == '\0') return;
--- 2144,2148 ----
register int i;
int len;
! char s[MAXPATHLENGTH+1];
if (*outputDir == '\0') return;
***************
*** 2316,2324 ****
char * FileName;
{
! int len, obj_ext_len;
! char obj_ext_str[MAXSTRING];
sprintf (obj_ext_str, ".%s", OBJ_FILE_EXT);
obj_ext_len = strlen (obj_ext_str);
if (PRTGIF)
--- 2447,2457 ----
char * FileName;
{
! int len, obj_ext_len, sym_ext_len;
! char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1];
sprintf (obj_ext_str, ".%s", OBJ_FILE_EXT);
obj_ext_len = strlen (obj_ext_str);
+ sprintf (sym_ext_str, ".%s", SYM_FILE_EXT);
+ sym_ext_len = strlen (sym_ext_str);
if (PRTGIF)
***************
*** 2325,2330 ****
{
len = strlen (FileName);
! if (len >= obj_ext_len &&
! strcmp (&FileName[len-obj_ext_len], obj_ext_str) == 0)
FileName[len-obj_ext_len] = '\0';
}
--- 2458,2465 ----
{
len = strlen (FileName);
! if ((len >= obj_ext_len &&
! strcmp (&FileName[len-obj_ext_len], obj_ext_str) == 0) ||
! (len >= sym_ext_len &&
! strcmp (&FileName[len-sym_ext_len], sym_ext_str) == 0))
FileName[len-obj_ext_len] = '\0';
}
***************
*** 2359,2363 ****
{
int value;
! char buf[MAXSTRING], msg[MAXSTRING];
Dialog ("Please specify percent reduction (<100) or enlargement (>100):",
--- 2494,2498 ----
{
int value;
! char buf[MAXSTRING+1], msg[MAXSTRING+1];
Dialog ("Please specify percent reduction (<100) or enlargement (>100):",
***************
*** 2412,2416 ****
void OpenProc ()
{
! char file_name[MAXPATHLENGTH];
int do_not_save = FALSE;
--- 2547,2551 ----
void OpenProc ()
{
! char file_name[MAXPATHLENGTH+1];
int do_not_save = FALSE;
***************
*** 2426,2430 ****
if (SelectFileName ("Please select a file to OPEN ...",file_name) != INVALID)
{
! char ext_str[MAXSTRING];
int ext_len, len=strlen(file_name);
--- 2561,2565 ----
if (SelectFileName ("Please select a file to OPEN ...",file_name) != INVALID)
{
! char ext_str[MAXSTRING+1];
int ext_len, len=strlen(file_name);
***************
*** 2462,2465 ****
--- 2597,2601 ----
"Escape #x",
"SaveSelectedAs #~",
+ "SaveSymInLibrary ",
"Quit ^q"
};
***************
*** 2573,2576 ****
--- 2709,2713 ----
case FILE_ESCAPE: return (EscapeProc ());
case FILE_SAVESELAS: SaveNewFile (TRUE); break;
+ case FILE_SAVESYMINLIB: SaveSymInLibrary (); break;
case FILE_QUIT: return (QuitProc ());
}
*** font.c.orig Sat Aug 8 13:21:21 1992
--- font.c Sat Aug 8 13:21:27 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/font.c,v 2.59 1992/03/31 07:53:16 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/font.c,v 2.61 1992/08/08 08:26:32 william Exp $";
#endif
*** mainloop.c.orig Sat Aug 8 13:21:32 1992
--- mainloop.c Sat Aug 8 13:21:33 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainloop.c,v 2.77 1992/05/07 01:21:50 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainloop.c,v 2.79 1992/07/24 15:20:35 william Exp $";
#endif
***************
*** 64,67 ****
--- 64,72 ----
#include "xpixmap.e"
+ #ifdef USE_XAPPLRESDIR
+ extern char * getenv ();
+ extern int putenv ();
+ #endif
+
int cmdLineBW = FALSE;
int cmdLineRV = INVALID;
***************
*** 80,83 ****
--- 85,89 ----
static int maxExtraWins = 0;
static int quitDraw = TRUE;
+ static char * xEnvStr = NULL;
int AddExtraWinInfo (win, mapped, raise, expose_handler, ev_handler,
***************
*** 337,342 ****
{
XEvent input;
! char * c_ptr, file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
! char full_name[MAXPATHLENGTH], * rest;
int rc, len, i, read_status, short_name;
struct ObjRec * obj_ptr;
--- 343,348 ----
{
XEvent input;
! char * c_ptr, file_name[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1];
! char full_name[MAXPATHLENGTH+1], * rest, * c_ptr1=NULL;
int rc, len, i, read_status, short_name;
struct ObjRec * obj_ptr;
***************
*** 343,347 ****
FILE * fp;
int tmp_linenum, obj_ext_len;
! char tmp_filename[MAXPATHLENGTH], obj_ext_str[MAXSTRING];
/* printf ("--> MainLoop (%s, %s, ...)\n", Op, FileName); */
--- 349,353 ----
FILE * fp;
int tmp_linenum, obj_ext_len;
! char tmp_filename[MAXPATHLENGTH+1], obj_ext_str[MAXSTRING+1];
/* printf ("--> MainLoop (%s, %s, ...)\n", Op, FileName); */
***************
*** 359,362 ****
--- 365,396 ----
printf ("%s\n", initMsg1);
printf ("%s\n", initMsg2);
+
+ #ifdef USE_XAPPLRESDIR
+ if (((c_ptr1 = getenv ("XENVIRONMENT")) == NULL) &&
+ ((c_ptr = getenv ("XAPPLRESDIR")) != NULL) &&
+ ((len = strlen (c_ptr)) > 0))
+ {
+ FILE * xenv_fp;
+
+ xEnvStr = (char *) calloc (
+ strlen("XENVIRONMENT=")+strlen(TOOL_NAME)+len+3, sizeof(char));
+ sprintf (xEnvStr, "%s%s%s", c_ptr,
+ ((c_ptr[len-1] == '/') ? "" : "/"), TOOL_NAME);
+ if ((xenv_fp = fopen (xEnvStr, "r")) != NULL)
+ {
+ fclose (xenv_fp);
+ sprintf (xEnvStr, "XENVIRONMENT=%s%s%s", c_ptr,
+ ((c_ptr[len-1] == '/') ? "" : "/"), TOOL_NAME);
+ if (putenv (xEnvStr))
+ {
+ sprintf (s, "Warning: Can not putenv(%s).", xEnvStr);
+ Msg (s);
+ *xEnvStr = '\0';
+ cfree (xEnvStr);
+ xEnvStr = NULL;
+ }
+ }
+ }
+ #endif
exitNormally = FALSE;
*** mainmenu.c.orig Sat Aug 8 13:21:39 1992
--- mainmenu.c Sat Aug 8 13:21:40 1992
***************
*** 26,30 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainmenu.c,v 1.48 1992/04/01 16:26:10 william Exp $";
#endif
--- 26,30 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainmenu.c,v 1.51 1992/08/08 08:26:43 william Exp $";
#endif
*** names.c.orig Sat Aug 8 13:21:52 1992
--- names.c Sat Aug 8 13:21:55 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/names.c,v 2.91 1992/06/25 01:35:18 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/names.c,v 2.93 1992/07/22 04:37:14 william Exp $";
#endif
***************
*** 726,729 ****
--- 726,757 ----
}
+ static int lengthOfLongestItem=INVALID;
+
+ static
+ char * * MakeLongNameDspItemArray (Entries, DLPtr)
+ int Entries;
+ DspList * DLPtr;
+ {
+ register int i, len;
+ char * * dsp_ptr, * c_ptr;
+
+ lengthOfLongestItem = INVALID;
+
+ if (Entries == 0) return (NULL);
+
+ dsp_ptr = (char * *) calloc (Entries, sizeof(char *));
+ c_ptr = (char *) calloc (Entries*(MAXPATHLENGTH+1), sizeof(char));
+ for (i = 0; i < Entries; i++, DLPtr = DLPtr->next)
+ {
+ dsp_ptr[i] = c_ptr;
+ len = strlen (DLPtr->itemstr);
+ strcpy (c_ptr, DLPtr->itemstr);
+ if (len > lengthOfLongestItem) lengthOfLongestItem = len;
+
+ c_ptr += MAXPATHLENGTH;
+ }
+ return (dsp_ptr);
+ }
+
static
int GetNameEntryNum (RowOffset)
***************
*** 1862,1867 ****
Msg ("");
! name[0] = '\0';
! name_index = 0;
while (changing)
--- 1890,1910 ----
Msg ("");
! if (nameMarked == INVALID)
! {
! name[0] = '\0';
! name_index = 0;
! }
! else
! {
! if (nameMarked >= ITEM_DSPED)
! {
! if (nameMarked < nameEntries-ITEM_DSPED)
! nameFirst = nameMarked;
! else
! nameFirst = nameEntries-ITEM_DSPED;
! }
! strcpy (name, nameDspPtr[nameMarked]);
! name_index = strlen (name);
! }
while (changing)
***************
*** 2327,2331 ****
nameMarked = INVALID;
! if ((index = ChooseAName ("Please select a new DOMAIN ...")) == INVALID)
*SelStr = '\0';
else
--- 2370,2375 ----
nameMarked = INVALID;
! if ((index = ChooseAName ("Please select a new DOMAIN ...")) ==
! INVALID)
*SelStr = '\0';
else
***************
*** 2344,2347 ****
--- 2388,2470 ----
}
+ Msg ("");
+
+ return (index);
+ }
+
+ static char * oldDomain=NULL, * oldDir=NULL;
+
+ static
+ DspList * SymDirListing ()
+ {
+ register int i;
+ int checking=FALSE;
+ DspList * dsp_ptr, * head_ptr, * tail_ptr;
+
+ if (oldDomain!=NULL && oldDir!=NULL && strcmp(oldDomain,curDomainName)==0)
+ checking = TRUE;
+
+ head_ptr = tail_ptr = NULL;
+ for (i = 0; i < symPathNumEntries; i++)
+ {
+ dsp_ptr = (DspList *) calloc (1, sizeof(DspList));
+ dsp_ptr->next = NULL;
+ strcpy (dsp_ptr->itemstr, symPath[i]);
+
+ if (head_ptr == NULL)
+ head_ptr = tail_ptr = dsp_ptr;
+ else
+ {
+ tail_ptr->next = dsp_ptr;
+ tail_ptr = dsp_ptr;
+ }
+ if (checking && strcmp (oldDir, symPath[i]) == 0)
+ {
+ checking = FALSE;
+ nameMarked = i;
+ }
+ }
+ nameEntries = symPathNumEntries;
+ return (head_ptr);
+ }
+
+ int SelectSymDir (SelStr)
+ char * SelStr;
+ {
+ int index;
+ char msg[MAXSTRING+1];
+ DspList * dsp_ptr, * next_dsp=NULL;
+
+ *SelStr = '\0';
+ nameMarked = INVALID;
+ if ((dsp_ptr = SymDirListing ()) == NULL) return (INVALID);
+
+ nameDspPtr = MakeLongNameDspItemArray (nameEntries, dsp_ptr);
+ nameFirst = 0;
+
+ sprintf (msg, "Please select a DIRECTORY in the '%s' domain ...",
+ curDomainName);
+ if ((index = ChooseAName (msg)) != INVALID)
+ {
+ strcpy (SelStr, nameDspPtr[index]);
+ if (oldDomain != NULL) cfree (oldDomain);
+ if (oldDir != NULL) cfree (oldDir);
+ oldDomain = (char *) calloc (strlen(curDomainName)+1, sizeof(char));
+ oldDir = (char *) calloc (strlen(SelStr)+1, sizeof(char));
+ strcpy (oldDomain, curDomainName);
+ strcpy (oldDir, SelStr);
+ }
+
+ for ( ; dsp_ptr != NULL; dsp_ptr = next_dsp)
+ {
+ next_dsp = dsp_ptr->next;
+ cfree (dsp_ptr);
+ }
+ if (nameDspPtr != NULL)
+ {
+ cfree (*nameDspPtr);
+ cfree (nameDspPtr);
+ nameDspPtr = NULL;
+ }
Msg ("");
*** prtgif.c.orig Sat Aug 8 13:21:59 1992
--- prtgif.c Sat Aug 8 13:22:00 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/prtgif.c,v 2.19 1992/03/31 07:55:36 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/prtgif.c,v 2.21 1992/07/22 04:35:34 william Exp $";
#endif
***************
*** 38,41 ****
--- 38,42 ----
#include "msg.e"
#include "obj.e"
+ #include "pattern.e"
#include "setup.e"
#include "version.e"
***************
*** 127,141 ****
{
struct ObjRec * obj_ptr;
! char full_name[MAXPATHLENGTH];
int len, read_status;
FILE * fp;
! int tmp_linenum, obj_ext_len;
! char tmp_filename[MAXPATHLENGTH], obj_ext_str[MAXSTRING];
sprintf (obj_ext_str, ".%s", OBJ_FILE_EXT);
obj_ext_len = strlen (obj_ext_str);
len = strlen (FileName);
! if (len>=obj_ext_len && strcmp (&FileName[len-obj_ext_len],obj_ext_str)==0)
strcpy (full_name, FileName);
else
--- 128,149 ----
{
struct ObjRec * obj_ptr;
! char full_name[MAXPATHLENGTH+1];
int len, read_status;
FILE * fp;
! int tmp_linenum, obj_ext_len, sym_ext_len;
! char tmp_filename[MAXPATHLENGTH+1];
! char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1];
sprintf (obj_ext_str, ".%s", OBJ_FILE_EXT);
obj_ext_len = strlen (obj_ext_str);
+ sprintf (sym_ext_str, ".%s", SYM_FILE_EXT);
+ sym_ext_len = strlen (sym_ext_str);
+
len = strlen (FileName);
! if ((len>=obj_ext_len &&
! strcmp (&FileName[len-obj_ext_len], obj_ext_str) == 0) ||
! (len>=sym_ext_len &&
! strcmp (&FileName[len-sym_ext_len],sym_ext_str)==0))
strcpy (full_name, FileName);
else
***************
*** 231,234 ****
--- 239,246 ----
else if ((strcmp (*argv, "-f") == 0) || (strcmp (*argv, "-ps") == 0))
whereToPrint = PS_FILE;
+ else if (strcmp (*argv, "-gray") == 0)
+ useGray = TRUE;
+ else if (strcmp (*argv, "-adobe") == 0)
+ usePsAdobeString = TRUE;
else if (strncmp (*argv, "-o", 2) == 0)
strcpy (outputDir, (*argv)+2);
*** shortcut.c.orig Sat Aug 8 13:22:04 1992
--- shortcut.c Sat Aug 8 13:22:05 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/shortcut.c,v 2.34 1992/06/19 18:09:08 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/shortcut.c,v 2.35 1992/07/17 15:03:52 william Exp $";
#endif
***************
*** 173,176 ****
--- 173,177 ----
{ '\0', 0, "ToggleUseGrayScale()" },
{ '\0', 0, "FreeHandMode()" },
+ { '\0', 0, "SaveSymInLibrary()" },
{ '\0', 0, "" }
};
*** stk.c.orig Sat Aug 8 13:22:09 1992
--- stk.c Sat Aug 8 13:22:10 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/stk.c,v 2.35 1992/06/11 05:33:38 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/stk.c,v 2.37 1992/08/08 08:26:51 william Exp $";
#endif
*** text.c.orig Sat Aug 8 13:22:25 1992
--- text.c Sat Aug 8 13:22:27 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.102 1992/06/25 01:35:18 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.104 1992/08/08 08:26:55 william Exp $";
#endif
*** version.c.orig Sat Aug 8 13:22:32 1992
--- version.c Sat Aug 8 13:22:33 1992
***************
*** 25,29 ****
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/version.c,v 2.24 1992/03/31 07:58:21 william Exp $";
#endif
--- 25,29 ----
#ifndef lint
static char RCSid[] =
! "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/version.c,v 2.26 1992/08/08 08:27:37 william Exp $";
#endif
*** file.e.orig Sat Aug 8 13:22:36 1992
--- file.e Sat Aug 8 13:22:37 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.e,v 2.31 1992/06/04 04:22:16 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.e,v 2.32 1992/07/17 14:48:24 william Exp $
*/
***************
*** 57,60 ****
--- 57,61 ----
extern int SaveTmpFile ();
extern void SaveNewFile ();
+ extern void SaveSymInLibrary ();
extern void SaveFile ();
extern char * ParseStr ();
*** font.e.orig Sat Aug 8 13:22:40 1992
--- font.e Sat Aug 8 13:22:41 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/font.e,v 2.18 1992/03/31 08:00:45 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/font.e,v 2.32 1992/08/08 08:26:40 william Exp $
*/
*** names.e.orig Sat Aug 8 13:22:45 1992
--- names.e Sat Aug 8 13:22:46 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/names.e,v 2.12 1992/03/31 08:01:37 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/names.e,v 2.13 1992/07/12 06:42:41 william Exp $
*/
***************
*** 45,48 ****
--- 45,49 ----
extern int DirInSymPath ();
extern int SelectDomain ();
+ extern int SelectSymDir ();
extern int SelectFromLibrary ();
extern void SetCurDir ();
*** const.h.orig Sat Aug 8 13:22:52 1992
--- const.h Sat Aug 8 13:22:53 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/const.h,v 2.72 1992/06/19 07:11:41 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/const.h,v 2.73 1992/07/17 14:45:07 william Exp $
*/
***************
*** 359,365 ****
#define FILE_ESCAPE 15
#define FILE_SAVESELAS 16
! #define FILE_QUIT 17
! #define FILEMENUENTRIES 18
/* edit menu */
--- 359,366 ----
#define FILE_ESCAPE 15
#define FILE_SAVESELAS 16
! #define FILE_SAVESYMINLIB 17
! #define FILE_QUIT 18
! #define FILEMENUENTRIES 19
/* edit menu */
*** patchlevel.h.orig Sat Aug 8 13:22:56 1992
--- patchlevel.h Sat Aug 8 13:22:57 1992
***************
*** 23,28 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.25 1992/06/26 16:03:07 william Exp $
*/
! #define TGIF_PATCHLEVEL 9
--- 23,28 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.28 1992/08/08 08:26:49 william Exp $
*/
! #define TGIF_PATCHLEVEL 10
*** types.h.orig Sat Aug 8 13:23:01 1992
--- types.h Sat Aug 8 13:23:01 1992
***************
*** 23,27 ****
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/types.h,v 2.67 1992/05/13 22:57:56 william Exp $
*/
--- 23,27 ----
* PERFORMANCE OF THIS SOFTWARE.
*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/types.h,v 2.71 1992/08/08 08:27:29 william Exp $
*/
*** Makefile.noimake.orig Sat Aug 8 13:23:08 1992
--- Makefile.noimake Sat Aug 8 13:23:09 1992
***************
*** 23,27 ****
# PERFORMANCE OF THIS SOFTWARE.
#
! # @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Makefile.noimake,v 2.127 1992/06/19 06:55:57 william Exp $
#
--- 23,27 ----
# PERFORMANCE OF THIS SOFTWARE.
#
! # @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Makefile.noimake,v 2.131 1992/08/08 08:25:38 william Exp $
#
***************
*** 44,47 ****
--- 44,51 ----
-DTELEPORT_ATTR=\"warp_to=\" -DTMP_DIR=\"/tmp/\"
+ #-DUSE_XAPPLRESDIR
+ # Include the above line in the DEFINES if $XAPPLRESDIR/Tgif is used to
+ # specify the resource file. If your system does not have putenv()
+ # (such as IBM-RT), then this won't work.
#-DNO_THIN_LINE
# Include the above line in the DEFINES if a line width of 0 causes
***************
*** 281,285 ****
spline.e xpixmap.e
prtgif.o: const.h patchlevel.h types.h \
! file.e grid.e msg.e obj.e setup.e version.e
ps.o:
raster.o: const.h types.h $(RASTER_BM) \
--- 285,289 ----
spline.e xpixmap.e
prtgif.o: const.h patchlevel.h types.h \
! file.e grid.e msg.e obj.e pattern.e setup.e version.e
ps.o:
raster.o: const.h types.h $(RASTER_BM) \
*** Imakefile.orig Sat Aug 8 13:23:13 1992
--- Imakefile Sat Aug 8 13:23:14 1992
***************
*** 23,30 ****
/**/# PERFORMANCE OF THIS SOFTWARE.
/**/#
! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.80 1992/06/26 16:10:40 william Exp $
/**/#
! TGIFVERSION = 2.12-p9
PROGRAMS = tgif prtgif /**/#frontend11.o testdrive
/**/#CDEBUGFLAGS= -g
--- 23,30 ----
/**/# PERFORMANCE OF THIS SOFTWARE.
/**/#
! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.83 1992/08/08 08:25:01 william Exp $
/**/#
! TGIFVERSION = 2.12-p10
PROGRAMS = tgif prtgif /**/#frontend11.o testdrive
/**/#CDEBUGFLAGS= -g
***************
*** 38,44 ****
-DXBM_FILE_EXT=\"xbm\" -DXPM_FILE_EXT=\"xpm\" \
-DOBJ_FILE_EXT=\"obj\" -DSYM_FILE_EXT=\"sym\" \
! -DTELEPORT_ATTR=\"warp_to=\" -DTMP_DIR=\"/tmp/\" \
! -DDONT_FREE_COLORMAP
/**/#-DNO_THIN_LINE
/**/# Include the above line in the DEFINES if a line width of 0 causes
--- 38,47 ----
-DXBM_FILE_EXT=\"xbm\" -DXPM_FILE_EXT=\"xpm\" \
-DOBJ_FILE_EXT=\"obj\" -DSYM_FILE_EXT=\"sym\" \
! -DTELEPORT_ATTR=\"warp_to=\" -DTMP_DIR=\"/tmp/\"
+ /**/#-DUSE_XAPPLRESDIR
+ /**/# Include the above line in the DEFINES if $XAPPLRESDIR/Tgif is used to
+ /**/# specify the resource file. If your system does not have putenv()
+ /**/# (such as IBM-RT), then this won't work.
/**/#-DNO_THIN_LINE
/**/# Include the above line in the DEFINES if a line width of 0 causes
*** prtgif.man.orig Sat Aug 8 13:23:19 1992
--- prtgif.man Sat Aug 8 13:23:20 1992
***************
*** 1,4 ****
! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/prtgif.man,v 2.6 1992/06/25 23:37:54 william Exp $
! .TH PRTGIF n "Version 2.7 or above" "PrTgif"
.SH NAME
\fIprtgif\fR - Prints a \fItgif\fR object file without opening windows
--- 1,4 ----
! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/prtgif.man,v 2.8 1992/07/24 06:23:05 william Exp $
! .TH PRTGIF n "Version 2.12-p10 or above" "PrTgif"
.SH NAME
\fIprtgif\fR - Prints a \fItgif\fR object file without opening windows
***************
*** 10,21 ****
[\fB-ps\fR]
[\fB-f\fR]
[\fB-o\fRdir]
[\fIfile1\fR \fIfile2\fR ...]
.SH DESCRIPTION
! \fIprtgif\fR prints \fIfile.obj\fR (generated by \fItgif\fR)
! into a PostScript(TM) page description file
! and pipes it to \fIlpr\fR if none of the
\fB-eps\fR, \fB-p\fR, \fB-ps\fR, or \fB-f\fR options are not specified;
in this case, any other command line options are sent to \fIlpr\fR.
.PP
If the \fB-eps\fR or the \fB-p\fR option is specified,
--- 10,26 ----
[\fB-ps\fR]
[\fB-f\fR]
+ [\fB-gray\fR]
+ [\fB-adobe\fR]
[\fB-o\fRdir]
[\fIfile1\fR \fIfile2\fR ...]
.SH DESCRIPTION
! \fIprtgif\fR prints \fIfile1.obj\fR, \fIfile2.obj\fR,
! etc. (generated by \fItgif\fR)
! into PostScript(TM) page description files
! and pipes them to \fIlpr\fR if none of the
\fB-eps\fR, \fB-p\fR, \fB-ps\fR, or \fB-f\fR options are not specified;
in this case, any other command line options are sent to \fIlpr\fR.
+ A symbol file can also be printed by specifying the \fI.sym\fR
+ extension explicitly.
.PP
If the \fB-eps\fR or the \fB-p\fR option is specified,
***************
*** 30,33 ****
--- 35,46 ----
options are specified,
any other command line options are ignored.)
+ .PP
+ Using the \fI-gray\fR option has the same effect as setting the
+ Tgif*UseGrayScale X default for tgif (see the man pages of
+ \fItgif\fR for details).
+ .PP
+ Using the \fI-adobe\fR option has the same effect as setting the
+ Tgif*UsePsAdobeString X default for tgif (see the man pages of
+ \fItgif\fR for details).
.PP
If the \fI-o\fR option is not specified, the output file (eps or ps)
*** tgif.man.orig Sat Aug 8 13:23:29 1992
--- tgif.man Sat Aug 8 13:23:31 1992
***************
*** 1,3 ****
! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.man,v 2.121 1992/06/26 05:27:37 william Exp $
.TH TGIF n "Version 2.12-p8 and Above" "Tgif"
.SH NAME
--- 1,3 ----
! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.man,v 2.123 1992/08/08 08:27:10 william Exp $
.TH TGIF n "Version 2.12-p8 and Above" "Tgif"
.SH NAME
*** tgif.pl.orig Sat Aug 8 13:23:38 1992
--- tgif.pl Sat Aug 8 13:23:40 1992
***************
*** 23,27 ****
% PERFORMANCE OF THIS SOFTWARE.
%
! % @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.pl,v 2.23 1992/03/31 08:04:04 william Exp $
%
--- 23,27 ----
% PERFORMANCE OF THIS SOFTWARE.
%
! % @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.pl,v 2.29 1992/08/08 08:27:20 william Exp $
%
*** HISTORY.orig Sat Aug 8 13:23:45 1992
--- HISTORY Sat Aug 8 13:23:46 1992
***************
*** 1,5 ****
/*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.32 1992/06/26 23:36:45 william Exp $
*/
-----------------------> tgif-2.12-p8 => tgif-2.12-p9 <-----------------------
I've just put tgif-2.12-patch9 (9th patch for tgif-2.12) in the
--- 1,34 ----
/*
! * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.34 1992/08/08 19:55:45 william Exp $
*/
+ -----------------------> tgif-2.12-p9 => tgif-2.12-p10 <-----------------------
+ I've just put tgif-2.12-patch10 (10th patch for tgif-2.12) in the
+ following places for anonymous ftp:
+
+ export.lcs.mit.edu /contrib/tgif-2.12-patch10.Z
+ cs.ucla.edu /pub/tgif/tgif-2.12-patch10.Z
+
+ The patch is also posted to comp.sources.bugs.
+
+ Please uncompress and then apply the patch with
+ 'patch -p -N < tgif-2.12-patch10'.
+ Here's a short list of added features/bug fixes.
+
+ 1) Fix a bug that causes seg fault when moving from attribute to attribute
+ using <Shift><Tab> (feature introduced in patchlevel 8).
+ 2) Add a new command, SaveSymInLibrary(), under the FileMenu to save a symbol
+ (.sym) file. This will prompt the user to pick a library directory from
+ the current domain for saving the symbol file.
+ 3) Add a compile option USE_XAPPLRESDIR to tell tgif to look at the
+ XAPPLRESDIR environment variable first and try to locate the tgif
+ resources if XENVIRONMENT is not set. However, if you machine doesn't
+ support putenv() (such as IBM-RT), then this won't work. Thanks to
+ Jaap Haalboom <haalboom@prl.philips.nl> for the suggestion and the code.
+ 4) Add -gray and -adobe command line options to prtgif. They have
+ the same effects as setting the Tgif*UseGrayScale and Tgif*UsePsAdobeString
+ X defaults to ``true'' (prtgif does not read X defaults).
+ 5) Allow prtgif to specify a symbol file name.
+ 6) Try to generate a more compact xbm or xpm file when the bounding box can
+ be figured out exactly.
-----------------------> tgif-2.12-p8 => tgif-2.12-p9 <-----------------------
I've just put tgif-2.12-patch9 (9th patch for tgif-2.12) in the
*** descrip.mms.orig Sat Aug 8 13:23:53 1992
--- descrip.mms Sat Aug 8 13:23:54 1992
***************
*** 6,10 ****
! $ DEFINE SYS SYS$LIBRARY
!
! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/descrip.mms,v 2.120 1992/06/19 06:55:57 william Exp $
!
--- 6,10 ----
! $ DEFINE SYS SYS$LIBRARY
!
! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/descrip.mms,v 2.124 1992/08/08 08:26:01 william Exp $
!
***************
*** 22,25 ****
--- 22,30 ----
TMP_DIR="""/sys$scratch/""")
+ !USE_XAPPLRESDIR
+ ! Include the above line in the DEFINES if $XAPPLRESDIR/Tgif is used to
+ ! specify the resource file. If your system does not have putenv()
+ ! (such as IBM-RT), then this won't work. I'm not sure if VMS systems
+ ! have putenv(), so this might be useless for VMS systems.
!NO_THIN_LINE
! Include the above line in the DEFINES if a line width of 0 causes
***************
*** 260,264 ****
spline.e,xpixmap.e
prtgif.obj depends_on prtgif.c, const.h,patchlevel.h,types.h,-
! file.e,grid.e,msg.e,obj.e,setup.e,version.e
ps.obj depends_on ps.c
raster.obj depends_on raster.c, const.h,types.h,$(RASTER_BM),-
--- 265,269 ----
spline.e,xpixmap.e
prtgif.obj depends_on prtgif.c, const.h,patchlevel.h,types.h,-
! file.e,grid.e,msg.e,obj.e,pattern.e,setup.e,version.e
ps.obj depends_on ps.c
raster.obj depends_on raster.c, const.h,types.h,$(RASTER_BM),-
*** tgif.Xdefaults.orig Sat Aug 8 13:23:57 1992
--- tgif.Xdefaults Sat Aug 8 13:23:58 1992
***************
*** 3,7 ****
! suitable for appending to any .Xdefaults file.
!
! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.Xdefaults,v 2.24 1992/06/26 05:24:23 william Exp $
!
Tgif*Geometry: 640x512-40+20
--- 3,7 ----
! suitable for appending to any .Xdefaults file.
!
! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.Xdefaults,v 2.26 1992/08/08 08:27:05 william Exp $
!
Tgif*Geometry: 640x512-40+20
---------------------------------> cut here <---------------------------------
--
Bill Cheng // UCLA Computer Science Department // (310) 575-4507
3564-C Boelter Hall // Los Angeles, California 90024 // USA
william@CS.UCLA.EDU ...!{uunet|ucbvax}!cs.ucla.edu!william
Technical Details
Message-ID:
<1992Aug8.213321.14575@cs.ucla.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!usc!elroy.jpl.nasa.gov!ucla-cs!lanai.cs.ucla.edu!williamShow Full Headers
Complete Article Headers
Newsgroups: comp.sources.bugs Path: arc1-ca.pugleaf.net!sparky!uunet!usc!elroy.jpl.nasa.gov!ucla-cs!lanai.cs.ucla.edu!william From: william@lanai.cs.ucla.edu (William Cheng) Subject: Tgif-2.12-patch10 (10th patch for tgif-2.12), Part 01/01 Message-ID: <1992Aug8.213321.14575@cs.ucla.edu> Followup-To: william@cs.ucla.edu Originator: william@lanai.cs.ucla.edu Keywords: draw, postscript, latex, hierarchical, x11, xlib, wysiwyg, bitmap Sender: usenet@cs.ucla.edu (Mr Usenet) Nntp-Posting-Host: lanai.cs.ucla.edu Organization: UCLA Computer Science Department Date: Sat, 8 Aug 92 21:33:21 GMT Lines: 1694