[comp.sources.x] v08i060: tgif

william@CS.UCLA.EDU (William Cheng) (08/04/90)

Submitted-by: william@CS.UCLA.EDU (William Cheng)
Posting-number: Volume 8, Issue 60
Archive-name: tgif/patch2.03
Patch-To: tgif: Volume 7, Issue 56-76 (original: tgif-1.2)
Patch-To: tgif: Volume 8, Issue 46-48 (Patch1: tgif-1.2 => tgif-1.9)

---------------------------------> cut here <---------------------------------
*** raster.c.orig	Thu Aug  2 09:46:21 1990
--- raster.c	Thu Aug  2 09:46:23 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.c,v 1.3 90/05/22 14:16:44 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.c,v 1.5 90/07/16 10:51:23 william Exp $";
  #endif
  
***************
*** 13,18 ****
  #include "types.h"
  
- #include "color.e"
  #include "choice.e"
  #include "font.e"
  #include "pattern.e"
--- 13,18 ----
  #include "types.h"
  
  #include "choice.e"
+ #include "color.e"
  #include "font.e"
  #include "pattern.e"
***************
*** 106,111 ****
  GC	revDefaultGC;
  
- Pixmap	colorPxMp[MAXCOLORS];
- 
  Pixmap	choicePixmap[MAXCHOICES];
  Pixmap	lineWidthPixmap[MAXLINEWIDTHS];
--- 106,109 ----
***************
*** 323,327 ****
--- 321,332 ----
     register int	i;
  
+    for (i = 0; i < MAXCHOICES; i++) XFreePixmap (mainDisplay, choicePixmap[i]);
     for (i = 0; i < MAXPATTERNS+1; i++) XFreePixmap (mainDisplay, patPixmap[i]);
+    for (i = 0; i < MAXLINEWIDTHS; i++)
+       XFreePixmap (mainDisplay, lineWidthPixmap[i]);
+    for (i = 0; i < MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES; i++)
+       XFreePixmap (mainDisplay, lineStylePixmap[i]);
+    for (i = 0; i < MAXLINETYPES; i++)
+       XFreePixmap (mainDisplay, lineTypePixmap[i]);
     for (i = 0; i < MAXJUSTS; i++) XFreePixmap (mainDisplay, justPixmap[i]);
     XFreePixmap (mainDisplay, alignHoriPixmap[0]);
***************
*** 330,340 ****
     for (i = 1; i < MAXALIGNS; i++)
        XFreePixmap (mainDisplay, alignVertPixmap[i]);
-    for (i = 0; i < MAXLINEWIDTHS+MAXLINETYPES+MAXLINESTYLES; i++)
-       XFreePixmap (mainDisplay, lineStylePixmap[i]);
-    for (i = 0; i < MAXLINETYPES; i++)
-       XFreePixmap (mainDisplay, lineTypePixmap[i]);
     for (i = 0; i < MAXLINEWIDTHS; i++)
-       XFreePixmap (mainDisplay, lineWidthPixmap[i]);
-    for (i = 0; i < MAXLINEWIDTHS; i++)
        XFreePixmap (mainDisplay, shortLineWidthPixmap[i]);
     for (i = 0; i < 2; i++)
--- 335,339 ----
***************
*** 344,348 ****
     for (i = 0; i < MAXLINESTYLES; i++)
        XFreePixmap (mainDisplay, shortLineStylePixmap[i]);
-    for (i = 0; i < MAXCHOICES; i++) XFreePixmap (mainDisplay, choicePixmap[i]);
  
     XFreeGC (mainDisplay, rasterGC);
--- 343,346 ----
*** select.c.orig	Thu Aug  2 09:46:34 1990
--- select.c	Thu Aug  2 09:46:36 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.c,v 1.4 90/06/26 00:11:25 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.c,v 1.7 90/07/27 14:37:59 william Exp $";
  #endif
  
***************
*** 26,31 ****
  #include "rect.e"
  #include "ruler.e"
- #include "stretch.e"
  #include "setup.e"
  
  #define FORWARD 0
--- 26,31 ----
  #include "rect.e"
  #include "ruler.e"
  #include "setup.e"
+ #include "stretch.e"
  
  #define FORWARD 0
***************
*** 573,589 ****
  }
  
! static
! void DelCutSel ()
  {
     register struct SelRec	* sel_ptr;
  
!    if ((sel_ptr = topCutSel) == NULL) return;
! 
!    for ( ; sel_ptr != NULL; sel_ptr = sel_ptr->next)
     {
!       DelObj (sel_ptr->obj);
!       cfree (sel_ptr);
     }
-    topCutSel = botCutSel = NULL;
  }
  
--- 573,590 ----
  }
  
! void DelAllCutSel ()
  {
     register struct SelRec	* sel_ptr;
  
!    while (topCutSel != NULL)
     {
!       for (sel_ptr = topCutSel->next; sel_ptr != NULL; sel_ptr = sel_ptr->next)
!       {
!          FreeObj (sel_ptr->obj);
!          cfree (sel_ptr);
!       }
!       topCutSel = topCutSel->prev; /* prev is used as the stack chaser */
!       botCutSel = botCutSel->prev; /* prev is used as the stack chaser */
     }
  }
  
***************
*** 590,594 ****
  void UndoDelete ()
  {
!    if (topCutSel == NULL) return;
  
     HighLightReverse ();
--- 591,599 ----
  void UndoDelete ()
  {
!    if (topCutSel == NULL)
!    {
!       Msg ("Un-delete buffer empty!");
!       return;
!    }
  
     HighLightReverse ();
***************
*** 595,600 ****
     RemoveAllSel ();
  
!    topSel = topCutSel;
!    botSel = botCutSel;
  
     botSel->obj->next = topObj;
--- 600,605 ----
     RemoveAllSel ();
  
!    topSel = topCutSel->next;
!    botSel = botCutSel->next;
  
     botSel->obj->next = topObj;
***************
*** 605,609 ****
     topObj = topSel->obj;
  
!    topCutSel = botCutSel = NULL;
  
     UpdSelBBox ();
--- 610,617 ----
     topObj = topSel->obj;
  
!    cfree (topCutSel);
!    cfree (botCutSel);
!    topCutSel = topCutSel->prev; /* prev is used as the stack chaser */
!    botCutSel = botCutSel->prev; /* prev is used as the stack chaser */
  
     UpdSelBBox ();
***************
*** 616,622 ****
  }
  
  void DelAllSelObj ()
  {
!    register struct SelRec	* sel_ptr;
  
     if (topSel == NULL) return;
--- 624,646 ----
  }
  
+ void CopySelToCut ()
+ {
+    register struct SelRec	* sel_ptr, * top_cut_ptr, * bot_cut_ptr;
+    struct SelRec		* top_sel_ptr, * bot_sel_ptr;
+ 
+    if (topSel == NULL) return;
+ 
+    JustDupSelObj (&top_sel_ptr, &bot_sel_ptr);
+ 
+    top_cut_ptr = (struct SelRec *) calloc (2, sizeof (struct SelRec));
+    bot_cut_ptr = &top_cut_ptr[1];
+    top_cut_ptr->next = top_sel_ptr; bot_cut_ptr->next = bot_sel_ptr;
+    top_cut_ptr->prev = topCutSel; bot_cut_ptr->prev = botCutSel;
+    topCutSel = top_cut_ptr; botCutSel = bot_cut_ptr;
+ }
+ 
  void DelAllSelObj ()
  {
!    register struct SelRec	* sel_ptr, * top_cut_ptr, * bot_cut_ptr;
  
     if (topSel == NULL) return;
***************
*** 625,630 ****
     tmpTopObj = tmpBotObj = NULL;
     BreakSel ();
!    topCutSel = topSel;
!    botCutSel = botSel;
  
     topSel = botSel = NULL;
--- 649,658 ----
     tmpTopObj = tmpBotObj = NULL;
     BreakSel ();
! 
!    top_cut_ptr = (struct SelRec *) calloc (2, sizeof (struct SelRec));
!    bot_cut_ptr = &top_cut_ptr[1];
!    top_cut_ptr->next = topSel; bot_cut_ptr->next = botSel;
!    top_cut_ptr->prev = topCutSel; bot_cut_ptr->prev = botCutSel;
!    topCutSel = top_cut_ptr; botCutSel = bot_cut_ptr;
  
     topSel = botSel = NULL;
*** setup.c.orig	Thu Aug  2 09:46:44 1990
--- setup.c	Thu Aug  2 09:46:45 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/setup.c,v 1.8 90/06/26 00:13:09 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/setup.c,v 1.10 90/07/17 16:46:52 william Exp $";
  #endif
  
***************
*** 14,19 ****
  #include "types.h"
  
- #include "color.e"
  #include "choice.e"
  #include "cursor.e"
  #include "drawing.e"
--- 14,19 ----
  #include "types.h"
  
  #include "choice.e"
+ #include "color.e"
  #include "cursor.e"
  #include "drawing.e"
***************
*** 216,219 ****
--- 216,223 ----
     XSizeHints	sizehints;
     XColor	color;
+ 
+    if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "Synchronize")) != NULL)
+       if ((strcmp (c_ptr, "on") == 0) || (strcmp (c_ptr, "On") == 0))
+          XSynchronize (mainDisplay, True);
  
     colorDisplay = (DisplayPlanes (mainDisplay, mainScreen) == 1) ? FALSE : TRUE;
*** special.c.orig	Thu Aug  2 09:46:52 1990
--- special.c	Thu Aug  2 09:46:53 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.c,v 1.4 90/06/26 13:05:00 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/special.c,v 1.6 90/07/30 11:00:16 william Exp $";
  #endif
  
***************
*** 84,90 ****
        if (strcmp (obj_name, "sym") == 0)
        {
!          ReadGroupObj (FP, &obj_ptr);
           obj_ptr->type = OBJ_ICON;
!          while (ReadAttr (FP, &attr_ptr))
           {
              attr_ptr->owner = obj_ptr;
--- 84,90 ----
        if (strcmp (obj_name, "sym") == 0)
        {
!          ReadGroupObj (FP, &obj_ptr, FALSE);
           obj_ptr->type = OBJ_ICON;
!          while (ReadAttr (FP, &attr_ptr, FALSE))
           {
              attr_ptr->owner = obj_ptr;
***************
*** 106,110 ****
        {
           importingFile = TRUE; /* ignore 'state' info but set fileVersion */
!          ReadState (inbuf);
           importingFile = FALSE;
        }
--- 106,110 ----
        {
           importingFile = TRUE; /* ignore 'state' info but set fileVersion */
!          ReadState (inbuf, FALSE);
           importingFile = FALSE;
        }
*** spline.c.orig	Thu Aug  2 09:47:05 1990
--- spline.c	Thu Aug  2 09:47:07 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/spline.c,v 1.2 90/05/22 14:38:02 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/spline.c,v 1.3 90/07/16 10:58:15 william Exp $";
  #endif
  
*** stk.c.orig	Thu Aug  2 09:47:13 1990
--- stk.c	Thu Aug  2 09:47:14 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.c,v 1.3 90/06/26 00:11:30 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.c,v 1.5 90/07/30 11:00:40 william Exp $";
  #endif
  
***************
*** 110,114 ****
     XClearWindow (mainDisplay, drawWindow);
  
!    while (ReadObj (fp, &obj_ptr))
        if (obj_ptr != NULL)
        {
--- 110,114 ----
     XClearWindow (mainDisplay, drawWindow);
  
!    while (ReadObj (fp, &obj_ptr, FALSE))
        if (obj_ptr != NULL)
        {
***************
*** 210,212 ****
--- 210,223 ----
     XSync (mainDisplay, TRUE);
     justDupped = FALSE;
+ }
+ 
+ void CleanUpStk ()
+ {
+    for ( ; topStk != NULL; topStk = topStk->next)
+    {
+       topObj = topStk->first;
+       botObj = topStk->last;
+       DelAllObj ();
+       cfree (topStk);
+    }
  }
*** stretch.c.orig	Thu Aug  2 09:47:52 1990
--- stretch.c	Thu Aug  2 09:47:56 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stretch.c,v 1.4 90/06/26 00:11:32 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stretch.c,v 1.8 90/08/02 08:57:17 william Exp $";
  #endif
  
***************
*** 105,109 ****
  }
  
- static
  int PtInPolyMark (XOff, YOff, NumPts, V, Index)
     int		XOff, YOff, NumPts, * Index;
--- 105,108 ----
***************
*** 531,534 ****
--- 530,552 ----
     SelBox (drawWindow, revDefaultGC, stretched_ltx, stretched_lty,
           stretched_rbx, stretched_rby);
+ 
+    if (ltx == rbx)
+    {
+       Msg ("Can not stretch!  Object has ZERO width!");
+       SelBox (drawWindow, revDefaultGC, stretched_ltx, stretched_lty,
+             stretched_rbx, stretched_rby);
+       SelBox (drawWindow, revDefaultGC, stretched_sel_ltx-1,
+             stretched_sel_lty-1, stretched_sel_rbx+1, stretched_sel_rby+1);
+       return;
+    }
+    else if (lty == rby)
+    {
+       Msg ("Can not stretch!  Object has ZERO height!");
+       SelBox (drawWindow, revDefaultGC, stretched_ltx, stretched_lty,
+             stretched_rbx, stretched_rby);
+       SelBox (drawWindow, revDefaultGC, stretched_sel_ltx-1,
+             stretched_sel_lty-1, stretched_sel_rbx+1, stretched_sel_rby+1);
+       return;
+    }
  
     obj_w = (double)(moveX - pivotX);
*** text.c.orig	Thu Aug  2 09:48:37 1990
--- text.c	Thu Aug  2 09:48:39 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.c,v 1.6 90/06/26 00:11:37 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.c,v 1.9 90/07/30 11:02:09 william Exp $";
  #endif
  
***************
*** 26,29 ****
--- 26,30 ----
  #include "pattern.e"
  #include "poly.e"
+ #include "prtgif.e"
  #include "raster.e"
  #include "ruler.e"
***************
*** 368,372 ****
  }
  
- static
  void SetTextBBox (ObjPtr, Just, W, H, Rotate)
     struct ObjRec	* ObjPtr;
--- 369,372 ----
***************
*** 1380,1386 ****
  }
  
! void DumpTextObj (FP, ObjPtr)
     FILE				* FP;
     register struct ObjRec	* ObjPtr;
  {
     int			x, y, font_size, xinc, yinc;
--- 1380,1387 ----
  }
  
! void DumpTextObj (FP, ObjPtr, PRTGIF)
     FILE				* FP;
     register struct ObjRec	* ObjPtr;
+    int				PRTGIF;
  {
     int			x, y, font_size, xinc, yinc;
***************
*** 1390,1394 ****
     if (text_ptr->pen == NONEPAT) return;
  
!    SaveCurFont ();
     curFont = text_ptr->font;
     curStyle = text_ptr->style;
--- 1391,1396 ----
     if (text_ptr->pen == NONEPAT) return;
  
!    if (!PRTGIF) SaveCurFont ();
! 
     curFont = text_ptr->font;
     curStyle = text_ptr->style;
***************
*** 1397,1402 ****
     curRotate = text_ptr->rotate;
     penPat = text_ptr->pen;
-    SetCanvasFont ();
  
     x = ObjPtr->x;
     y = ObjPtr->y;
--- 1399,1412 ----
     curRotate = text_ptr->rotate;
     penPat = text_ptr->pen;
  
+    if (PRTGIF)
+    {
+       textCursorH = pDrawCursorH[FontIndex(curFont,curSize,curStyle)];
+       canvasFontAsc = pDrawFontAsc[FontIndex(curFont,curSize,curStyle)];
+       canvasFontDes = pDrawFontDes[FontIndex(curFont,curSize,curStyle)];
+    }
+    else
+       SetCanvasFont ();
+ 
     x = ObjPtr->x;
     y = ObjPtr->y;
***************
*** 1510,1514 ****
     fprintf (FP, "   grestore\n");
  
!    RestoreCurFont ();
  }
  
--- 1520,1524 ----
     fprintf (FP, "   grestore\n");
  
!    if (!PRTGIF) RestoreCurFont ();
  }
  
***************
*** 1648,1654 ****
  
     fprintf (FP, "text(%s,", colorMenuItems[ObjPtr->color]);
!    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,[\n", ObjPtr->x,
           ObjPtr->y, t_ptr->font, t_ptr->style, t_ptr->size,
!          t_ptr->lines, t_ptr->just, t_ptr->rotate, t_ptr->pen);
  
     for (s_ptr = t_ptr->first; s_ptr->next != NULL; s_ptr = s_ptr->next)
--- 1658,1666 ----
  
     fprintf (FP, "text(%s,", colorMenuItems[ObjPtr->color]);
!    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,[\n", ObjPtr->x,
           ObjPtr->y, t_ptr->font, t_ptr->style, t_ptr->size,
!          t_ptr->lines, t_ptr->just, t_ptr->rotate, t_ptr->pen,
!          ObjPtr->obbox.rbx-ObjPtr->obbox.ltx,
!          ObjPtr->obbox.rby-ObjPtr->obbox.lty);
  
     for (s_ptr = t_ptr->first; s_ptr->next != NULL; s_ptr = s_ptr->next)
***************
*** 1677,1684 ****
  }
  
! void ReadTextObj (FP, Inbuf, ObjPtr)
     FILE			* FP;
     char			* Inbuf;
     struct ObjRec	* * ObjPtr;
  {
     register int		i, max_len = 0, len;
--- 1689,1697 ----
  }
  
! void ReadTextObj (FP, Inbuf, ObjPtr, PRTGIF)
     FILE			* FP;
     char			* Inbuf;
     struct ObjRec	* * ObjPtr;
+    int			PRTGIF;
  {
     register int		i, max_len = 0, len;
***************
*** 1689,1692 ****
--- 1702,1706 ----
     int			num_lines, x, y, font, style, size;
     int			text_just, rotate, pen;
+    int			bbox_w, bbox_h;
  
     * ObjPtr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
***************
*** 1700,1706 ****
        pen = 1;
     }
!    else
        sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d", &x, &y, &font,
              &style, &size, &num_lines, &text_just, &rotate, &pen);
  
     text_ptr = (struct TextRec *) calloc (1, sizeof(struct TextRec));
--- 1714,1725 ----
        pen = 1;
     }
!    else if (fileVersion <= 6)
        sscanf (s, "%d , %d , %d , %d , %d , %d , %d , %d , %d", &x, &y, &font,
              &style, &size, &num_lines, &text_just, &rotate, &pen);
+    else
+       sscanf (s,
+             "%d , %d , %d , %d , %d , %d , %d , %d , %d , %d , %d",
+             &x, &y, &font, &style, &size, &num_lines, &text_just, &rotate, &pen,
+             &bbox_w, &bbox_h);
  
     text_ptr = (struct TextRec *) calloc (1, sizeof(struct TextRec));
***************
*** 1710,1714 ****
     text_ptr->pen = pen;
  
!    SaveCurFont ();
     curFont = text_ptr->font = font;
     curStyle = text_ptr->style = style;
--- 1729,1734 ----
     text_ptr->pen = pen;
  
!    if (!PRTGIF) SaveCurFont ();
! 
     curFont = text_ptr->font = font;
     curStyle = text_ptr->style = style;
***************
*** 1716,1721 ****
     textJust = text_just;
     curRotate = rotate;
-    SetCanvasFont ();
  
     for (i = 0; i < num_lines; i++)
     {
--- 1736,1749 ----
     textJust = text_just;
     curRotate = rotate;
  
+    if (PRTGIF)
+    {
+       penPat = pen;
+       textCursorH = pDrawCursorH[FontIndex(curFont,curSize,curStyle)];
+       canvasFontAsc = pDrawFontAsc[FontIndex(curFont,curSize,curStyle)];
+    }
+    else
+       SetCanvasFont ();
+ 
     for (i = 0; i < num_lines; i++)
     {
***************
*** 1727,1731 ****
        strcpy (s_ptr->s, tmp_str);
        AddStr (lastStr, NULL, s_ptr);
!       len = XTextWidth (canvasFontPtr, tmp_str, strlen (tmp_str));
        if (len > max_len) max_len = len;
     }
--- 1755,1762 ----
        strcpy (s_ptr->s, tmp_str);
        AddStr (lastStr, NULL, s_ptr);
!       if (PRTGIF)
!          len = strlen (tmp_str); /* assume string width = 1 pixel per char */
!       else
!          len = XTextWidth (canvasFontPtr, tmp_str, strlen (tmp_str));
        if (len > max_len) max_len = len;
     }
***************
*** 1739,1743 ****
     (*ObjPtr)->y = y;
  
!    SetTextBBox (*ObjPtr, text_just, max_len, num_lines*textCursorH, rotate);
  
     (*ObjPtr)->type = OBJ_TEXT;
--- 1770,1777 ----
     (*ObjPtr)->y = y;
  
!    if (PRTGIF && fileVersion > 6)
!       SetTextBBox (*ObjPtr, text_just, bbox_w, bbox_h, rotate);
!    else
!       SetTextBBox (*ObjPtr, text_just, max_len, num_lines*textCursorH, rotate);
  
     (*ObjPtr)->type = OBJ_TEXT;
***************
*** 1745,1749 ****
     (*ObjPtr)->detail.t = text_ptr;
  
!    RestoreCurFont ();
  }
  
--- 1779,1783 ----
     (*ObjPtr)->detail.t = text_ptr;
  
!    if (!PRTGIF) RestoreCurFont ();
  }
  
*** tgif.c.orig	Thu Aug  2 09:48:48 1990
--- tgif.c	Thu Aug  2 09:48:50 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.c,v 1.4 90/05/17 08:23:08 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.c,v 1.6 90/07/30 11:04:46 william Exp $";
  #endif
  
***************
*** 19,22 ****
--- 19,27 ----
  
  /* extern int	malloc_debug (); */
+ 
+ int	lastFile;
+ short	* pDrawCursorH;
+ short	* pDrawFontAsc;
+ short	* pDrawFontDes;
  
  static
*** version.c.orig	Thu Aug  2 09:48:56 1990
--- version.c	Thu Aug  2 09:48:57 1990
***************
*** 6,11 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/version.c,v 1.12 90/06/26 08:47:59 william Exp $";
  #endif
  
! char	* version_string = "1.9";
--- 6,11 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/version.c,v 1.15 90/08/02 09:05:03 william Exp $";
  #endif
  
! char	* version_string = "1.12";
*** attr.e.orig	Thu Aug  2 09:49:02 1990
--- attr.e	Thu Aug  2 09:49:03 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/attr.e,v 1.1 90/04/01 22:16:53 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/attr.e,v 1.2 90/07/30 11:09:08 william Exp $
   */
  
*** color.e.orig	Thu Aug  2 09:49:08 1990
--- color.e	Thu Aug  2 09:49:08 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.e,v 1.4 90/05/07 15:24:58 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.e,v 1.6 90/07/15 17:42:49 william Exp $
   */
  
***************
*** 19,20 ****
--- 19,21 ----
  extern void	ChangeAllSelColor ();
  extern void	ColorMenu ();
+ extern void	CleanUpColors ();
*** cursor.e.orig	Thu Aug  2 09:49:13 1990
--- cursor.e	Thu Aug  2 09:49:14 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/cursor.e,v 1.1 90/04/01 22:16:57 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/cursor.e,v 1.3 90/07/08 00:33:40 william Exp $
   */
  
*** dup.e.orig	Thu Aug  2 09:49:19 1990
--- dup.e	Thu Aug  2 09:49:20 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.e,v 1.1 90/04/01 22:17:00 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.e,v 1.2 90/07/06 18:00:44 william Exp $
   */
  
***************
*** 14,15 ****
--- 14,16 ----
  extern void	DupTextObj ();
  extern void	DupSelObj ();
+ extern void	JustDupSelObj ();
*** edit.e.orig	Thu Aug  2 09:49:24 1990
--- edit.e	Thu Aug  2 09:49:25 1990
***************
*** 4,10 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.e,v 1.1 90/04/01 22:17:02 william Exp $
   */
  
  extern void	EditMenu ();
  extern void	FrontProc ();
--- 4,12 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.e,v 1.2 90/07/04 21:07:20 william Exp $
   */
  
+ extern void	DeletePoint ();
+ extern void	AddPoint ();
  extern void	EditMenu ();
  extern void	FrontProc ();
*** file.e.orig	Thu Aug  2 09:49:30 1990
--- file.e	Thu Aug  2 09:49:31 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.e,v 1.6 90/05/24 10:35:30 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.e,v 1.11 90/07/30 15:53:31 william Exp $
   */
  
***************
*** 48,49 ****
--- 48,51 ----
  extern int	EscapeProc ();
  extern int	FileMenu ();
+ extern void	CleanUpFiles ();
+ extern void	EmergencySave ();
*** font.e.orig	Thu Aug  2 09:49:36 1990
--- font.e	Thu Aug  2 09:49:38 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.e,v 1.1 90/04/01 22:17:04 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.e,v 1.3 90/07/20 16:59:06 william Exp $
   */
  
***************
*** 27,30 ****
--- 27,31 ----
  
  extern int	pointSize[];
+ extern int	curFontDPI;
  extern int	curFont;
  extern int	curSize;
*** grid.e.orig	Thu Aug  2 09:49:42 1990
--- grid.e	Thu Aug  2 09:49:43 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.e,v 1.1 90/04/01 22:17:05 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.e,v 1.3 90/07/16 10:18:50 william Exp $
   */
  
***************
*** 9,13 ****
  extern int	gridOn;
  extern int	xyGrid;
- extern int	curScale;
  extern int	pageStyle;
  extern int	whereToPrint;
--- 9,12 ----
***************
*** 26,27 ****
--- 25,27 ----
  extern void	LayoutMenu ();
  extern void	GridXY ();
+ extern void	CleanUpGrids ();
*** mainloop.e.orig	Thu Aug  2 09:49:47 1990
--- mainloop.e	Thu Aug  2 09:49:47 1990
***************
*** 4,11 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.e,v 1.1 90/04/29 22:38:38 william Exp $
   */
  
  extern int	geometrySpecified;
  extern char	geometrySpec[];
  extern char	initMsg1[];
--- 4,12 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.e,v 1.2 90/07/17 18:04:57 william Exp $
   */
  
  extern int	geometrySpecified;
+ extern int	exitNormally;
  extern char	geometrySpec[];
  extern char	initMsg1[];
*** pattern.e.orig	Thu Aug  2 09:49:52 1990
--- pattern.e	Thu Aug  2 09:49:53 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/pattern.e,v 1.1 90/04/01 22:17:14 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/pattern.e,v 1.3 90/07/11 21:25:59 william Exp $
   */
  
***************
*** 18,21 ****
--- 18,22 ----
  extern void	ChangeAllSelLineWidth ();
  extern void	ChangeAllSelPen ();
+ extern void	ToggleAllSelLineType ();
  extern void	ModeMenu ();
  extern void	FillMenu ();
*** raster.e.orig	Thu Aug  2 09:50:00 1990
--- raster.e	Thu Aug  2 09:50:00 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.e,v 1.1 90/04/01 22:17:17 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/raster.e,v 1.2 90/07/16 09:10:17 william Exp $
   */
  
***************
*** 15,20 ****
  extern GC	defaultGC;
  extern GC	revDefaultGC;
- 
- extern Pixmap	colorPxMp[];
  
  extern Pixmap	choicePixmap[];
--- 15,18 ----
*** select.e.orig	Thu Aug  2 09:50:05 1990
--- select.e	Thu Aug  2 09:50:06 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.e,v 1.1 90/04/01 22:17:20 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/select.e,v 1.2 90/07/06 18:02:44 william Exp $
   */
  
***************
*** 21,25 ****
--- 21,27 ----
  extern void	MoveSelToTop ();
  extern void	MoveSelToBot ();
+ extern void	DelAllCutSel ();
  extern void	UndoDelete ();
+ extern void	CopySelToCut ();
  extern void	DelAllSelObj ();
  extern void	GroupSelObj ();
*** stk.e.orig	Thu Aug  2 09:50:11 1990
--- stk.e	Thu Aug  2 09:50:12 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.e,v 1.1 90/04/01 22:17:24 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stk.e,v 1.2 90/07/16 09:30:53 william Exp $
   */
  
***************
*** 10,11 ****
--- 10,12 ----
  extern void	PushIcon ();
  extern void	PopIcon ();
+ extern void	CleanUpStk ();
*** stretch.e.orig	Thu Aug  2 09:50:17 1990
--- stretch.e	Thu Aug  2 09:50:18 1990
***************
*** 4,10 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stretch.e,v 1.1 90/04/01 22:17:25 william Exp $
   */
  
  extern struct SelRec	* PtInSelMark ();
  extern void	StretchSel ();
--- 4,11 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/stretch.e,v 1.2 90/07/07 01:48:10 william Exp $
   */
  
+ extern int	* PtInPolyMark ();
  extern struct SelRec	* PtInSelMark ();
  extern void	StretchSel ();
*** text.e.orig	Thu Aug  2 09:50:24 1990
--- text.e	Thu Aug  2 09:50:25 1990
***************
*** 4,8 ****
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.e,v 1.1 90/04/01 22:17:26 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1989, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/text.e,v 1.2 90/07/27 09:33:44 william Exp $
   */
  
***************
*** 18,21 ****
--- 18,22 ----
  extern void	EraseTextCursor ();
  extern void	NewCurText ();
+ extern void	SetTextBBox ();
  extern void	UpdTextBBox ();
  extern void	FreeTextObj ();
*** types.h.orig	Thu Aug  2 09:50:32 1990
--- types.h	Thu Aug  2 09:50:33 1990
***************
*** 4,8 ****
   * Copyright (C) 1990, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/types.h,v 1.3 90/05/18 20:23:48 william Exp $
   */
  
--- 4,8 ----
   * Copyright (C) 1990, William Cheng.
   *
!  * @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/types.h,v 1.4 90/07/30 15:53:05 william Exp $
   */
  
*** Makefile.noimake.orig	Thu Aug  2 09:50:44 1990
--- Makefile.noimake	Thu Aug  2 09:50:45 1990
***************
*** 4,8 ****
  # Copyright (C) 1990, William Cheng.
  #
! # @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Makefile.noimake,v 1.10 90/06/13 14:32:34 william Exp $
  #
  
--- 4,8 ----
  # Copyright (C) 1990, William Cheng.
  #
! # @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Makefile.noimake,v 1.19 90/07/30 11:05:05 william Exp $
  #
  
***************
*** 19,23 ****
  OBJ1 =	align.o animate.o attr.o \
  	box.o button.o \
! 	color.o choice.o cursor.o \
  	dialog.o drawing.o dup.o \
  	edit.o \
--- 19,23 ----
  OBJ1 =	align.o animate.o attr.o \
  	box.o button.o \
! 	choice.o color.o cursor.o \
  	dialog.o drawing.o dup.o \
  	edit.o \
***************
*** 53,56 ****
--- 53,58 ----
  	bitmaps/poly.bm bitmaps/polygon.bm bitmaps/printer.bm bitmaps/text.bm
  
+ NAMES_BM = bitmaps/uparrow.bm bitmaps/downarrow.bm
+ 
  SCROLL_BM = bitmaps/uparrow.bm bitmaps/downarrow.bm bitmaps/rightarrow.bm \
  	bitmaps/leftarrow.bm
***************
*** 87,92 ****
  button.o:	const.h types.h \
  		box.e cursor.e font.e mainloop.e raster.e rect.e setup.e
- color.o:	const.h types.h \
- 		choice.e mark.e menu.e obj.e raster.e select.e setup.e text.e
  choice.o:	const.h types.h \
  		align.e box.e color.e cursor.e font.e grid.e mark.e msg.e \
--- 89,92 ----
***************
*** 93,99 ****
  		oval.e pattern.e poly.e polygon.e raster.e select.e setup.e \
  		text.e
  cursor.o:	const.h types.h $(CURSOR_BM) choice.e setup.e
! tgif.o:		const.h types.h mainloop.e setup.e version.e
! dialog.o:	const.h cursor.e box.e font.e mainloop.e raster.e setup.e
  drawing.o:	const.h types.h \
  		align.e animate.e attr.e box.e choice.e cursor.e dialog.e \
--- 93,100 ----
  		oval.e pattern.e poly.e polygon.e raster.e select.e setup.e \
  		text.e
+ color.o:	const.h types.h \
+ 		choice.e mark.e menu.e obj.e raster.e select.e setup.e text.e
  cursor.o:	const.h types.h $(CURSOR_BM) choice.e setup.e
! dialog.o:	const.h box.e cursor.e font.e mainloop.e raster.e setup.e
  drawing.o:	const.h types.h \
  		align.e animate.e attr.e box.e choice.e cursor.e dialog.e \
***************
*** 105,118 ****
  		attr.e drawing.e grid.e obj.e select.e setup.e
  edit.o:		const.h types.h \
! 		align.e color.e drawing.e dup.e group.e mark.e obj.e \
! 		raster.e select.e setup.e stretch.e
  file.o:		const.h types.h \
  		align.e attr.e box.e button.e choice.e color.e dialog.e \
! 		drawing.e file.e font.e grid.e group.e menu.e msg.e \
! 		poly.e polygon.e obj.e oval.e pattern.e rect.e ruler.e \
! 		scroll.e select.e setup.e stk.e text.e
  font.o:		const.h types.h \
! 		choice.e color.e drawing.e mark.e menu.e obj.e pattern.e \
! 		raster.e select.e setup.e text.e
  grid.o:		const.h types.h \
  		choice.e color.e drawing.e dup.e msg.e obj.e \
--- 106,119 ----
  		attr.e drawing.e grid.e obj.e select.e setup.e
  edit.o:		const.h types.h \
! 		align.e color.e cursor.e drawing.e dup.e font.e group.e mark.e \
! 		obj.e poly.e raster.e select.e setup.e spline.e stretch.e
  file.o:		const.h types.h \
  		align.e attr.e box.e button.e choice.e color.e dialog.e \
! 		drawing.e font.e grid.e group.e mainloop.e menu.e msg.e \
! 		names.e pattern.e poly.e polygon.e prtgif.e obj.e oval.e \
! 		rect.e ruler.e scroll.e select.e setup.e stk.e text.e
  font.o:		const.h types.h \
! 		choice.e color.e drawing.e mark.e menu.e obj.e \
! 		pattern.e raster.e select.e setup.e text.e
  grid.o:		const.h types.h \
  		choice.e color.e drawing.e dup.e msg.e obj.e \
***************
*** 122,127 ****
  mainloop.o:	const.h types.h \
  		animate.e choice.e color.e cursor.e dialog.e drawing.e \
! 		file.e font.e menu.e msg.e names.e obj.e raster.e \
! 		ruler.e scroll.e setup.e
  mark.o:		const.h types.h \
  		raster.e setup.e select.e
--- 123,128 ----
  mainloop.o:	const.h types.h \
  		animate.e choice.e color.e cursor.e dialog.e drawing.e \
! 		file.e font.e grid.e menu.e msg.e names.e obj.e raster.e \
! 		ruler.e scroll.e select.e setup.e stk.e text.e
  mark.o:		const.h types.h \
  		raster.e setup.e select.e
***************
*** 134,138 ****
  		raster.e ruler.e select.e setup.e
  msg.o:		const.h types.h font.e raster.e setup.e
! names.o:	const.h types.h $(SCROLL_BM) \
  		box.e button.e cursor.e font.e mainloop.e raster.e scroll.e \
  		setup.e
--- 135,139 ----
  		raster.e ruler.e select.e setup.e
  msg.o:		const.h types.h font.e raster.e setup.e
! names.o:	const.h types.h $(NAMES_BM) \
  		box.e button.e cursor.e font.e mainloop.e raster.e scroll.e \
  		setup.e
***************
*** 143,149 ****
  		color.e cursor.e file.e grid.e menu.e obj.e pattern.e \
  		poly.e raster.e ruler.e select.e setup.e
! prtgif.o:	const.h types.h \
! 		attr.e box.e file.e font.e grid.e group.e obj.e oval.e \
! 		pattern.e poly.e polygon.e setup.e text.e
  poly.o:		const.h types.h \
  		attr.e color.e cursor.e drawing.e file.e grid.e obj.e \
--- 144,150 ----
  		color.e cursor.e file.e grid.e menu.e obj.e pattern.e \
  		poly.e raster.e ruler.e select.e setup.e
! pattern.o:	const.h types.h \
! 		choice.e drawing.e mark.e menu.e obj.e poly.e raster.e \
! 		select.e setup.e spline.e
  poly.o:		const.h types.h \
  		attr.e color.e cursor.e drawing.e file.e grid.e obj.e \
***************
*** 152,158 ****
  		color.e cursor.e dialog.e grid.e file.e obj.e \
  		pattern.e poly.e raster.e ruler.e select.e setup.e spline.e
! pattern.o:	const.h types.h \
! 		choice.e drawing.e mark.e menu.e obj.e poly.e raster.e \
! 		select.e setup.e spline.e
  raster.o:	const.h types.h $(RASTER_BM) \
  		choice.e color.e font.e pattern.e setup.e
--- 153,158 ----
  		color.e cursor.e dialog.e grid.e file.e obj.e \
  		pattern.e poly.e raster.e ruler.e select.e setup.e spline.e
! prtgif.o:	const.h types.h \
! 		file.e grid.e obj.e setup.e
  raster.o:	const.h types.h $(RASTER_BM) \
  		choice.e color.e font.e pattern.e setup.e
***************
*** 166,173 ****
  		move.e obj.e raster.e rect.e ruler.e setup.e stretch.e
  setup.o:	const.h types.h \
! 		choice.e color.e cursor.e drawing.e font.e mainloop.e names.e \
! 		raster.e ruler.e scroll.e
  spline.o:	const.h types.h \
! 		poly.e rect.e raster.e setup.e
  special.o:	const.h types.h \
  		animate.e attr.e choice.e color.e cursor.e dialog.e drawing.e \
--- 166,173 ----
  		move.e obj.e raster.e rect.e ruler.e setup.e stretch.e
  setup.o:	const.h types.h \
! 		choice.e color.e cursor.e drawing.e font.e mainloop.e menu.e \
! 		names.e raster.e ruler.e scroll.e
  spline.o:	const.h types.h \
! 		poly.e raster.e rect.e setup.e
  special.o:	const.h types.h \
  		animate.e attr.e choice.e color.e cursor.e dialog.e drawing.e \
***************
*** 183,187 ****
  text.o:		const.h types.h \
  		attr.e choice.e color.e cursor.e dup.e file.e font.e \
! 		grid.e obj.e pattern.e poly.e raster.e ruler.e setup.e
  version.o:
  
--- 183,188 ----
  text.o:		const.h types.h \
  		attr.e choice.e color.e cursor.e dup.e file.e font.e \
! 		grid.e obj.e pattern.e poly.e prtgif.e raster.e ruler.e setup.e
! tgif.o:		const.h types.h mainloop.e setup.e version.e
  version.o:
  
*** Imakefile.orig	Thu Aug  2 09:50:53 1990
--- Imakefile	Thu Aug  2 09:50:54 1990
***************
*** 4,14 ****
  /**/# Copyright (C) 1990, William Cheng.
  /**/#
! /**/# @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Imakefile,v 1.16 90/06/26 08:48:16 william Exp $
  /**/#
  
! TGIFVERSION	= 1.9
  PROGRAMS	= tgif prtgif tgif2ps frontend11.o
  CDEBUGFLAGS	= -g
  BINDIR		= /u/tangram/bin
  DEFINES		= -DTGIF_PATH=\"/u/tangram/u/william/X11/TGIF\" \
  		  -DPSFILE_MOD=\"664\"
--- 4,15 ----
  /**/# Copyright (C) 1990, William Cheng.
  /**/#
! /**/# @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/Imakefile,v 1.21 90/08/02 09:15:42 william Exp $
  /**/#
  
! TGIFVERSION	= 1.12
  PROGRAMS	= tgif prtgif tgif2ps frontend11.o
  CDEBUGFLAGS	= -g
  BINDIR		= /u/tangram/bin
+ MANPATH		= /u/tangram/man
  DEFINES		= -DTGIF_PATH=\"/u/tangram/u/william/X11/TGIF\" \
  		  -DPSFILE_MOD=\"664\"
***************
*** 56,60 ****
  MISCTAR = *.man README Copyright tgif.pl spice//**/*.mod example.tex
  
! distr: tar shar version
  
  tar:
--- 57,61 ----
  MISCTAR = *.man README Copyright tgif.pl spice//**/*.mod example.tex
  
! distr: tar version
  
  tar:
*** prtgif.man.orig	Thu Aug  2 09:51:00 1990
--- prtgif.man	Thu Aug  2 09:51:01 1990
***************
*** 1,4 ****
! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/prtgif.man,v 1.1 90/05/10 09:27:25 william Exp $
! .TH PRTGIF 1 "Version 1.0" "PrTgif"
  .SH NAME
  \fIprtgif\fR \- Prints a \fItgif\fR object file without opening windows
--- 1,4 ----
! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/prtgif.man,v 1.2 90/07/17 17:01:52 william Exp $
! .TH PRTGIF 1 "Version 1.10 or above" "PrTgif"
  .SH NAME
  \fIprtgif\fR \- Prints a \fItgif\fR object file without opening windows
***************
*** 6,17 ****
  .SH SYNOPSIS
  .B prtgif
! \fIfile\fR
  .SH DESCRIPTION
! \fIprtgif\fR prints \fIfile.obj\fR into a PostScript(TM) page description file,
! /tmp/DRAW.PS, and pipes it to \fIlpr\fR.
! .SH FILES
! /tmp/DRAW.PS
  .SH SEE ALSO
! \fBlpr\fR(1), \fBtgif\fR(1)
  .SH COPYRIGHT
  Please see the ``Copyright'' file for details on the copyrights.
--- 6,18 ----
  .SH SYNOPSIS
  .B prtgif
! [\fB\-p\fR]
! [\fIfile\fR]
  .SH DESCRIPTION
! \fIprtgif\fR prints \fIfile.obj\fR into a PostScript(TM) page description file
! and pipes it to \fIlpr\fR if the \fB\-p\fR option is not specified.  Otherwise,
! it generates an encapsulated PostScript file in \fIfile.ps\fR.  (Note that
! prtgif calls \fItgif2ps\fR, which should be found in the path.)
  .SH SEE ALSO
! \fBlpr\fR(1), \fBtgif\fR(1), \fBtgif2ps\fR(1), \fBlatex\fR(1L)
  .SH COPYRIGHT
  Please see the ``Copyright'' file for details on the copyrights.
*** tgif.man.orig	Thu Aug  2 09:51:10 1990
--- tgif.man	Thu Aug  2 09:51:11 1990
***************
*** 1,4 ****
! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.man,v 1.6 90/06/05 12:19:24 william Exp $
! .TH TGIF 1 "Version 1.6" "Tgif"
  .SH NAME
  \fItgif\fR \- Xlib based 2-D drawing facility under X11.  Also supports
--- 1,4 ----
! .\"@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.man,v 1.10 90/07/30 16:06:37 william Exp $
! .TH TGIF 1 "Version 1.10 and Above" "Tgif"
  .SH NAME
  \fItgif\fR \- Xlib based 2-D drawing facility under X11.  Also supports
***************
*** 14,18 ****
  specifies a file of objects to be initially edited by tgif.
  Tgif is purely based on \fIXlib\fR.
! It is tested under X11-R3 and X11-R4, and
  it requires a 3 button mouse.
  .PP
--- 14,18 ----
  specifies a file of objects to be initially edited by tgif.
  Tgif is purely based on \fIXlib\fR.
! It is tested under X11-R4, and
  it requires a 3 button mouse.
  .PP
***************
*** 214,219 ****
--- 214,221 ----
    #.	scroll down\br
  \br
+  ^#A	add points to the selected poly or spline\br
   ^#B	change the text style to bold\br
   ^#C	change the text justification to center justified\br
+  ^#D	delete points from the selected poly or spline\br
   ^#G	toggle snapping to the grid points\br
   ^#I	make the selected complex object iconic\br
***************
*** 229,232 ****
--- 231,235 ----
   ^#T	change the text style to italic\br
   ^#V	change the drawing mode to oval\br
+  ^#W	toggle between poly and spline\br
  .DE
  .br
***************
*** 370,373 ****
--- 373,385 ----
  This specified the print command used for printing the PostScript file.
  Default is lpr (without any quotes).
+ .TP
+ .I Tgif*Synchronize: [on,off]
+ XSynchronize is called if this default is set to \fIon\fR.  Default is
+ \fIoff\fR.
+ .TP
+ .I Tgif*DoubleClickInterval: NUMBER
+ This specifies the maximum interval (in milli-seconds)
+ between two clicked to be recognized as one double-click.
+ Default is 300.
  .SH ENVIRONMENT
  .TP
*** tgif.pl.orig	Thu Aug  2 09:51:18 1990
--- tgif.pl	Thu Aug  2 09:51:19 1990
***************
*** 3,7 ****
  %	code.
  %
! % @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.pl,v 1.2 90/05/10 15:22:58 william Exp $
  %
  
--- 3,7 ----
  %	code.
  %
! % @(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/tgif.pl,v 1.3 90/07/30 17:30:05 william Exp $
  %
  
***************
*** 13,17 ****
  
  tgif_text(FileVersion, Obj) :-
! 	FileVersion >= 6,
  	(	var(Obj) ->
  		Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,
--- 13,17 ----
  
  tgif_text(FileVersion, Obj) :-
! 	FileVersion == 6,
  	(	var(Obj) ->
  		Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,
***************
*** 20,23 ****
--- 20,33 ----
  	;	Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,
  			_TextJust,_TextRotate,_PenPat,StrList)
+ 	),
+ 	tgif_strs(FileVersion, StrList).
+ tgif_text(FileVersion, Obj) :-
+ 	FileVersion >= 7,
+ 	(	var(Obj) ->
+ 		Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,
+ 			_TextJust,_TextRotate,_PenPat,_BBoxW,_BBoxH,StrList),
+ 		call(Obj)
+ 	;	Obj = text(_Color,_X,_Y,_Font,_TextStyle,_TextSize,_NumLines,
+ 			_TextJust,_TextRotate,_PenPat,_BBoxW,_BBoxH,StrList)
  	),
  	tgif_strs(FileVersion, StrList).
*** prtgif.e.orig	Mon Jul 30 17:20:49 1990
--- prtgif.e	Mon Jul 30 17:20:55 1990
***************
*** 0 ****
--- 1,12 ----
+ /*
+  * Author:	William Chia-Wei Cheng (william@cs.ucla.edu)
+  *
+  * Copyright (C) 1990, William Cheng.
+  *
+  * @(#) $Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/prtgif.e,v 1.1 90/07/30 11:08:07 william Exp $
+  */
+ 
+ extern int	lastFile;
+ extern short	pDrawCursorH[];
+ extern short	pDrawFontAsc[];
+ extern short	pDrawFontDes[];
---------------------------------> cut here <---------------------------------
--
Bill Cheng // UCLA Computer Science Department // (213) 206-7135
3277 Boelter Hall // Los Angeles, California 90024 // USA
william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william

dan
----------------------------------------------------
O'Reilly && Associates   argv@sun.com / argv@ora.com
Opinions expressed reflect those of the author only.