home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / sources / bugs / 323 < prev    next >
Encoding:
Text File  |  1993-01-07  |  65.5 KB  |  2,268 lines

  1. Newsgroups: comp.sources.bugs
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!usc!ucla-cs!lanai.cs.ucla.edu!william
  3. From: william@lanai.cs.ucla.edu (William Cheng)
  4. Subject: Tgif-2.12-patch16 (16th patch for tgif-2.12), Part 01/01
  5. Message-ID: <1993Jan7.062750.26736@cs.ucla.edu>
  6. Followup-To: william@cs.ucla.edu
  7. Keywords: draw, postscript, latex, hierarchical, x11, xlib, wysiwyg, bitmap
  8. Sender: usenet@cs.ucla.edu (Mr Usenet)
  9. Nntp-Posting-Host: lanai.cs.ucla.edu
  10. Organization: UCLA, Computer Science Department
  11. Date: Thu, 7 Jan 93 06:27:50 GMT
  12. Lines: 2254
  13.  
  14. Below is tgif-2.12-patch16 (16th patch for tgif-2.12).  (The complete
  15. source for tgif-2.12 at patchlevel 16 can be found in the following
  16. places for anonymous ftp:  export.lcs.mit.edu:/contrib/tgif-2.12-p16.tar.Z
  17. and cs.ucla.edu:/pub/tgif/tgif-2.12-p16.tar.Z.)
  18.  
  19. Tgif is an Xlib based 2-D drawing tool under X11.
  20.  
  21. Remove everything outside of the 'cut here' lines (inclusive) and save
  22. the file as tgif-2.12-patch16; then apply the patch with
  23. 'patch -p -N < tgif-2.12-patch16'.  Here is a short list of added
  24. features/bug fixes.
  25.  
  26. 1)  Allow the launch= attribute to be multiline.
  27. 2)  Make pasting work in text mode.  The default paste command is still
  28.     <Cntrl><Meta>y.
  29. 3)  Add user interrupt when redrawing.  Add a new X default,
  30.     Tgif*IntrCheckInterval to define the number of objects drawn before
  31.     checking for user interrupt.
  32. 4)  Fix some memory leaks.  Thanks to Mark Sterin <mark@FibHaifa.com> for
  33.     the fixes.
  34.  
  35. Please send bug reports to william@cs.ucla.edu.
  36. ---------------------------------> cut here <---------------------------------
  37. *** choice.c.orig    Wed Jan  6 22:06:37 1993
  38. --- choice.c    Wed Jan  6 22:06:38 1993
  39. ***************
  40. *** 25,29 ****
  41.   #ifndef lint
  42.   static char RCSid[] =
  43. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/choice.c,v 2.58.2.1 1992/10/16 05:17:33 william Exp $";
  44.   #endif
  45.   
  46. --- 25,29 ----
  47.   #ifndef lint
  48.   static char RCSid[] =
  49. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/choice.c,v 2.58.2.4 1993/01/03 23:34:16 william Exp $";
  50.   #endif
  51.   
  52. ***************
  53. *** 414,430 ****
  54.      switch (pageStyle)
  55.      {
  56. !       case PORTRAIT:
  57. !          XSetStipple (mainDisplay, rasterGC, filePixmap);
  58. !          XFillRectangle (mainDisplay, choiceWindow, rasterGC,
  59. !                FILE_COL*choiceImageW, FILE_ROW*choiceImageH,
  60. !                choiceImageW, choiceImageH);
  61. !          break;
  62. !       case LANDSCAPE:
  63. !          XSetStipple (mainDisplay, rasterGC, landscapePixmap);
  64. !          XFillRectangle (mainDisplay, choiceWindow, rasterGC,
  65. !                FILE_COL*choiceImageW, FILE_ROW*choiceImageH,
  66. !                choiceImageW, choiceImageH);
  67. !          break;
  68.      }
  69.   }
  70.   
  71. --- 414,422 ----
  72.      switch (pageStyle)
  73.      {
  74. !       case PORTRAIT: XSetStipple(mainDisplay,rasterGC,filePixmap); break;
  75. !       case LANDSCAPE: XSetStipple(mainDisplay,rasterGC,landscapePixmap); break;
  76.      }
  77. +    XFillRectangle (mainDisplay, choiceWindow, rasterGC, FILE_COL*choiceImageW,
  78. +          FILE_ROW*choiceImageH, choiceImageW, choiceImageH);
  79.   }
  80.   
  81. ***************
  82. *** 465,483 ****
  83.   void ShowMoveMode ()
  84.   {
  85. !    switch (moveMode)
  86. !    {
  87. !       case CONST_MOVE:
  88. !          XSetStipple (mainDisplay, rasterGC, moveModePixmap[CONST_MOVE]);
  89. !          XFillRectangle (mainDisplay, choiceWindow, rasterGC,
  90. !                MOVE_MODE_COL*choiceImageW, MOVE_MODE_ROW*choiceImageH,
  91. !                choiceImageW, choiceImageH);
  92. !          break;
  93. !       case UNCONST_MOVE:
  94. !          XSetStipple (mainDisplay, rasterGC, moveModePixmap[UNCONST_MOVE]);
  95. !          XFillRectangle (mainDisplay, choiceWindow, rasterGC,
  96. !                MOVE_MODE_COL*choiceImageW, MOVE_MODE_ROW*choiceImageH,
  97. !                choiceImageW, choiceImageH);
  98. !          break;
  99. !    }
  100.   }
  101.   
  102. --- 457,464 ----
  103.   void ShowMoveMode ()
  104.   {
  105. !    XSetStipple (mainDisplay, rasterGC, moveModePixmap[moveMode]);
  106. !    XFillRectangle (mainDisplay, choiceWindow, rasterGC,
  107. !          MOVE_MODE_COL*choiceImageW, MOVE_MODE_ROW*choiceImageH,
  108. !          choiceImageW, choiceImageH);
  109.   }
  110.   
  111. ***************
  112. *** 821,825 ****
  113.      zoomedIn = saved_zoomed_in;
  114.      zoomScale = saved_zoom_scale;
  115. !    PreciseZoom (new_zoomed_in, new_zoom_scale);
  116.   }
  117.   
  118. --- 802,806 ----
  119.      zoomedIn = saved_zoomed_in;
  120.      zoomScale = saved_zoom_scale;
  121. !    PreciseZoom (new_zoomed_in, new_zoom_scale, FALSE);
  122.   }
  123.   
  124. *** cmd.c.orig    Wed Jan  6 22:06:43 1993
  125. --- cmd.c    Wed Jan  6 22:06:44 1993
  126. ***************
  127. *** 25,29 ****
  128.   #ifndef lint
  129.   static char RCSid[] =
  130. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/cmd.c,v 2.18.2.1 1992/10/16 05:26:14 william Exp $";
  131.   #endif
  132.   
  133. --- 25,29 ----
  134.   #ifndef lint
  135.   static char RCSid[] =
  136. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/cmd.c,v 2.18.2.2 1993/01/02 20:21:17 william Exp $";
  137.   #endif
  138.   
  139. ***************
  140. *** 158,162 ****
  141.      struct CmdRec    * CmdPtr;
  142.   {
  143. !    register struct CmdRec    * cmd_ptr;
  144.   
  145.      if (curCmd == NULL)
  146. --- 158,162 ----
  147.      struct CmdRec    * CmdPtr;
  148.   {
  149. !    register struct CmdRec    * cmd_ptr, * next_cmd;
  150.   
  151.      if (curCmd == NULL)
  152. ***************
  153. *** 165,170 ****
  154.         cmd_ptr = curCmd->next;
  155.   
  156. !    for ( ; cmd_ptr != NULL; cmd_ptr = cmd_ptr->next)
  157.      {
  158.         DeleteARedoRecord (cmd_ptr);
  159.         historyCount--;
  160. --- 165,171 ----
  161.         cmd_ptr = curCmd->next;
  162.   
  163. !    for ( ; cmd_ptr != NULL; cmd_ptr = next_cmd)
  164.      {
  165. +       next_cmd = cmd_ptr->next;
  166.         DeleteARedoRecord (cmd_ptr);
  167.         historyCount--;
  168. ***************
  169. *** 175,182 ****
  170.   void CleanUpCmds ()
  171.   {
  172. !    register struct CmdRec    * cmd_ptr;
  173.   
  174. !    for (cmd_ptr = firstCmd; cmd_ptr != NULL; cmd_ptr = cmd_ptr->next)
  175.         DeleteARedoRecord (cmd_ptr);
  176.      firstCmd = lastCmd = curCmd = NULL;
  177.      historyCount = 0;
  178. --- 176,186 ----
  179.   void CleanUpCmds ()
  180.   {
  181. !    register struct CmdRec    * cmd_ptr, * next_cmd;
  182.   
  183. !    for (cmd_ptr = firstCmd; cmd_ptr != NULL; cmd_ptr = next_cmd)
  184. !    {
  185. !       next_cmd = cmd_ptr->next;
  186.         DeleteARedoRecord (cmd_ptr);
  187. +    }
  188.      firstCmd = lastCmd = curCmd = NULL;
  189.      historyCount = 0;
  190. *** copypaste.c.orig    Wed Jan  6 22:06:46 1993
  191. --- copypaste.c    Wed Jan  6 22:06:47 1993
  192. ***************
  193. *** 26,30 ****
  194.   #ifndef lint
  195.   static char RCSid[] =
  196. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.c,v 2.30.1.2 1992/10/16 05:07:26 william Exp $";
  197.   #endif
  198.   
  199. --- 26,30 ----
  200.   #ifndef lint
  201.   static char RCSid[] =
  202. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.c,v 2.30.1.4 1992/12/20 01:02:35 william Exp $";
  203.   #endif
  204.   
  205. ***************
  206. *** 42,45 ****
  207. --- 42,46 ----
  208.   #include "color.e"
  209.   #include "cursor.e"
  210. + #include "drawing.e"
  211.   #include "dup.e"
  212.   #include "file.e"
  213. ***************
  214. *** 279,283 ****
  215.   }
  216.   
  217. ! void PasteFromCutBuffer ()
  218.   {
  219.      FILE         * fp;
  220. --- 280,284 ----
  221.   }
  222.   
  223. ! int PasteFromCutBuffer ()
  224.   {
  225.      FILE         * fp;
  226. ***************
  227. *** 292,301 ****
  228.      {
  229.         Msg ("Cut buffer is empty");
  230. !       return;
  231.      }
  232.      if (((unsigned char)(*cut_buffer)) != header)
  233.      {
  234.         PasteString (cut_buffer);
  235. !       return;
  236.      }
  237.      cut_buffer++;
  238. --- 293,307 ----
  239.      {
  240.         Msg ("Cut buffer is empty");
  241. !       return (TRUE);
  242.      }
  243.      if (((unsigned char)(*cut_buffer)) != header)
  244.      {
  245. +       if (curChoice == DRAWTEXT)
  246. +       {
  247. +          pasteInDrawTextMode = TRUE;
  248. +          return (FALSE);
  249. +       }
  250.         PasteString (cut_buffer);
  251. !       return (TRUE);
  252.      }
  253.      cut_buffer++;
  254. ***************
  255. *** 308,312 ****
  256.         sprintf (msg, "Can not open %s for write.", tmpfile);
  257.         Msg (msg);
  258. !       return;
  259.      }
  260.      if (write (fileno(fp), cut_buffer, len) < len)
  261. --- 314,318 ----
  262.         sprintf (msg, "Can not open %s for write.", tmpfile);
  263.         Msg (msg);
  264. !       return (TRUE);
  265.      }
  266.      if (write (fileno(fp), cut_buffer, len) < len)
  267. ***************
  268. *** 317,321 ****
  269.               tmpfile);
  270.         Msg (msg);
  271. !       return;
  272.      }
  273.      fflush (fp);
  274. --- 323,327 ----
  275.               tmpfile);
  276.         Msg (msg);
  277. !       return (TRUE);
  278.      }
  279.      fflush (fp);
  280. ***************
  281. *** 353,357 ****
  282.               fileVersion);
  283.         Msg (msg);
  284. !       return;
  285.      }
  286.       
  287. --- 359,363 ----
  288.               fileVersion);
  289.         Msg (msg);
  290. !       return (TRUE);
  291.      }
  292.       
  293. ***************
  294. *** 403,406 ****
  295. --- 409,413 ----
  296.   
  297.      Msg ("Objects pasted from tgif.");
  298. +    return (TRUE);
  299.   }        
  300.   
  301. *** drawing.c.orig    Wed Jan  6 22:06:51 1993
  302. --- drawing.c    Wed Jan  6 22:06:54 1993
  303. ***************
  304. *** 25,29 ****
  305.   #ifndef lint
  306.   static char RCSid[] =
  307. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.115 1992/08/11 03:58:46 william Exp $";
  308.   #endif
  309.   
  310. --- 25,29 ----
  311.   #ifndef lint
  312.   static char RCSid[] =
  313. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.c,v 2.115.1.4 1993/01/03 01:14:56 william Exp $";
  314.   #endif
  315.   
  316. ***************
  317. *** 80,83 ****
  318. --- 80,85 ----
  319.   #define O_GRID (O_VIS+O_INVIS)
  320.   
  321. + int        intrCheckInterval=10;
  322. + int        pasteInDrawTextMode=FALSE;
  323.   int        numRedrawBBox=INVALID;
  324.   int        numClipRecs=0;
  325. ***************
  326. *** 181,187 ****
  327.   }
  328.   
  329. ! void DrawObj (Win, ObjPtr)
  330.      Window            Win;
  331.      register struct ObjRec    * ObjPtr;
  332.   {
  333.      register struct ObjRec    * obj_ptr;
  334. --- 183,254 ----
  335.   }
  336.   
  337. ! static int    intrShown=FALSE;
  338. ! static int    checkCount=0;
  339. ! void ShowInterrupt ()
  340. ! {
  341. !    GC        gc;
  342. !    XGCValues    values;
  343. !    if (intrCheckInterval <= 0) return;
  344. !    values.foreground = myFgPixel;
  345. !    values.background = myBgPixel;
  346. !    values.fill_style = FillOpaqueStippled;
  347. !    values.stipple = intrPixmap;
  348. !    gc = XCreateGC (mainDisplay, dummyWindow1,
  349. !          GCForeground | GCBackground | GCFillStyle | GCStipple, &values);
  350. !    XFillRectangle (mainDisplay, dummyWindow1, gc, 0, 0, scrollBarW, scrollBarW);
  351. !    XFreeGC(mainDisplay, gc);
  352. !    XSync (mainDisplay, False);
  353. !    intrShown = TRUE;
  354. ! }
  355. ! void HideInterrupt ()
  356. ! {
  357. !    XEvent    ev;
  358. !    while (XCheckWindowEvent (mainDisplay, dummyWindow1, ButtonPressMask, &ev)) ;
  359. !    XClearWindow (mainDisplay, dummyWindow1);
  360. !    intrShown = FALSE;
  361. !    checkCount = 0;
  362. ! }
  363. ! void RedrawDummyWindow1 ()
  364. ! {
  365. !    XEvent    ev;
  366. !    while (XCheckWindowEvent (mainDisplay, dummyWindow1, ExposureMask, &ev)) ;
  367. !    while (XCheckWindowEvent (mainDisplay, dummyWindow1, ButtonPressMask, &ev)) ;
  368. !    if (intrShown)
  369. !       ShowInterrupt ();
  370. !    else
  371. !       HideInterrupt ();
  372. ! }
  373. ! int CheckInterrupt ()
  374. ! {
  375. !    if (intrCheckInterval <= 0) return (FALSE);
  376. !    if (++checkCount >= intrCheckInterval)
  377. !    {
  378. !       XEvent    ev;
  379. !       checkCount = 0;
  380. !       if (XCheckWindowEvent (mainDisplay, dummyWindow1, ButtonPressMask, &ev))
  381. !       {
  382. !          while (XCheckWindowEvent (mainDisplay, dummyWindow1, ButtonPressMask,
  383. !                &ev)) ;
  384. !          return (TRUE);
  385. !       }
  386. !    }
  387. !    return (FALSE);
  388. ! }
  389. ! int DrawObj (Win, ObjPtr)
  390.      Window            Win;
  391.      register struct ObjRec    * ObjPtr;
  392. +    /* returns TRUE if all objects are drawn */
  393. +    /* returns FALSE if interrupted by the user */
  394.   {
  395.      register struct ObjRec    * obj_ptr;
  396. ***************
  397. *** 230,234 ****
  398.            for ( ; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  399.               if (!checkBBox || NeedToDraw (obj_ptr->bbox))
  400. !                DrawObj (Win, obj_ptr);
  401.            if (ObjPtr->type == OBJ_ICON && ObjPtr->dirty)
  402.            {
  403. --- 297,308 ----
  404.            for ( ; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  405.               if (!checkBBox || NeedToDraw (obj_ptr->bbox))
  406. !             {
  407. !                if (!DrawObj (Win, obj_ptr)) return (FALSE);
  408. !                if (CheckInterrupt ())
  409. !                {
  410. !                   Msg ("User interrupt.  Repaint aborted.");
  411. !                   return (FALSE);
  412. !                }
  413. !             }
  414.            if (ObjPtr->type == OBJ_ICON && ObjPtr->dirty)
  415.            {
  416. ***************
  417. *** 245,248 ****
  418. --- 319,323 ----
  419.            break;
  420.      }
  421. +    return (TRUE);
  422.   }
  423.   
  424. ***************
  425. *** 299,307 ****
  426.      smallArea[0].ltx = LtX; smallArea[0].lty = LtY;
  427.      smallArea[0].rbx = RbX; smallArea[0].rby = RbY;
  428.      for (obj_ptr = BotObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  429.         if (BBoxIntersect (obj_ptr->bbox, drawWinBBox) &&
  430.               BBoxIntersect (obj_ptr->bbox, smallArea[0]))
  431. !          DrawObj (drawWindow, obj_ptr);
  432.      SetDefaultDrawWinClipRecs ();
  433.   }
  434. --- 374,392 ----
  435.      smallArea[0].ltx = LtX; smallArea[0].lty = LtY;
  436.      smallArea[0].rbx = RbX; smallArea[0].rby = RbY;
  437. +    ShowInterrupt ();
  438.      for (obj_ptr = BotObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  439. +    {
  440.         if (BBoxIntersect (obj_ptr->bbox, drawWinBBox) &&
  441.               BBoxIntersect (obj_ptr->bbox, smallArea[0]))
  442. !       {
  443. !          if (!DrawObj (drawWindow, obj_ptr)) break;
  444. !          if (CheckInterrupt ())
  445. !          {
  446. !             Msg ("User interrupt.  Repaint aborted.");
  447. !             break;
  448. !          }
  449. !       }
  450. !    }
  451. !    HideInterrupt ();
  452.      SetDefaultDrawWinClipRecs ();
  453.   }
  454. ***************
  455. *** 465,468 ****
  456. --- 550,554 ----
  457.      smallArea[1].ltx = LtX2; smallArea[1].lty = LtY2;
  458.      smallArea[1].rbx = RbX2; smallArea[1].rby = RbY2;
  459. +    ShowInterrupt ();
  460.      for (obj_ptr = BotObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  461.      {
  462. ***************
  463. *** 470,476 ****
  464.               (BBoxIntersect (obj_ptr->bbox, bbox1) ||
  465.               BBoxIntersect (obj_ptr->bbox, bbox2)))
  466. !          DrawObj (drawWindow, obj_ptr);
  467.      }
  468.      SetDefaultDrawWinClipRecs ();
  469.   }
  470. --- 556,569 ----
  471.               (BBoxIntersect (obj_ptr->bbox, bbox1) ||
  472.               BBoxIntersect (obj_ptr->bbox, bbox2)))
  473. !       {
  474. !          if (!DrawObj (drawWindow, obj_ptr)) break;
  475. !          if (CheckInterrupt ())
  476. !          {
  477. !             Msg ("User interrupt.  Repaint aborted.");
  478. !             break;
  479. !          }
  480. !       }
  481.      }
  482. !    HideInterrupt ();
  483.      SetDefaultDrawWinClipRecs ();
  484.   }
  485. ***************
  486. *** 637,642 ****
  487.   
  488.      checkBBox = FALSE;
  489.      for (obj_ptr = botObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  490. !       DrawObj (pixmap, obj_ptr);
  491.      checkBBox = TRUE;
  492.   
  493. --- 730,751 ----
  494.   
  495.      checkBBox = FALSE;
  496. +    ShowInterrupt ();
  497.      for (obj_ptr = botObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  498. !    {
  499. !       if (!DrawObj (pixmap, obj_ptr))
  500. !       {
  501. !          XFreePixmap (mainDisplay, pixmap);
  502. !          pixmap = None;
  503. !          break;
  504. !       }
  505. !       if (CheckInterrupt ())
  506. !       {
  507. !          Msg ("User interrupt.  Repaint aborted.");
  508. !          XFreePixmap (mainDisplay, pixmap);
  509. !          pixmap = None;
  510. !          break;
  511. !       }
  512. !    }
  513. !    HideInterrupt ();
  514.      checkBBox = TRUE;
  515.   
  516. ***************
  517. *** 661,667 ****
  518.   
  519.      numRedrawBBox = 0;
  520.      for (obj_ptr = BotObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  521.         if (BBoxIntersect (obj_ptr->bbox, drawWinBBox))
  522. !          DrawObj (drawWindow, obj_ptr);
  523.   }
  524.   
  525. --- 770,787 ----
  526.   
  527.      numRedrawBBox = 0;
  528. +    ShowInterrupt ();
  529.      for (obj_ptr = BotObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  530. +    {
  531.         if (BBoxIntersect (obj_ptr->bbox, drawWinBBox))
  532. !       {
  533. !          if (!DrawObj (drawWindow, obj_ptr)) break;
  534. !          if (CheckInterrupt ())
  535. !          {
  536. !             Msg ("User interrupt.  Repaint aborted.");
  537. !             break;
  538. !          }
  539. !       }
  540. !    }
  541. !    HideInterrupt ();
  542.   }
  543.   
  544. ***************
  545. *** 863,867 ****
  546.               case 'w': /*^#w*/ ToggleAllSelLineType (); break;
  547.               case 'x': /*^#x*/ ToggleWhereToPrint (); break;
  548. !             case 'y': /*^#y*/ PasteFromCutBuffer (); break;
  549.               case 'z': /*^#z*/ SetCurChoice (DRAWARC); break;
  550.               case '.': /*^#.*/ ImportXBitmapFile (); break;
  551. --- 983,987 ----
  552.               case 'w': /*^#w*/ ToggleAllSelLineType (); break;
  553.               case 'x': /*^#x*/ ToggleWhereToPrint (); break;
  554. !             case 'y': /*^#y*/ if (!PasteFromCutBuffer()) return(INVALID); break;
  555.               case 'z': /*^#z*/ SetCurChoice (DRAWARC); break;
  556.               case '.': /*^#.*/ ImportXBitmapFile (); break;
  557. *** file.c.orig    Wed Jan  6 22:06:59 1993
  558. --- file.c    Wed Jan  6 22:07:02 1993
  559. ***************
  560. *** 25,29 ****
  561.   #ifndef lint
  562.   static char RCSid[] =
  563. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.192.1.11 1992/12/06 03:09:02 william Exp $";
  564.   #endif
  565.   
  566. --- 25,29 ----
  567.   #ifndef lint
  568.   static char RCSid[] =
  569. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/file.c,v 2.192.1.14 1992/12/22 05:43:04 william Exp $";
  570.   #endif
  571.   
  572. ***************
  573. *** 1874,1878 ****
  574.      FILE            * fp;
  575.      char         tmp_filename[MAXPATHLENGTH+1];
  576. !    int             tmp_linenum;
  577.   
  578.      strcpy (saved_cur_dir, curDir);
  579. --- 1874,1878 ----
  580.      FILE            * fp;
  581.      char         tmp_filename[MAXPATHLENGTH+1];
  582. !    int             tmp_linenum, interrupted;
  583.   
  584.      strcpy (saved_cur_dir, curDir);
  585. ***************
  586. *** 1914,1918 ****
  587. --- 1914,1921 ----
  588.   
  589.      numRedrawBBox = 0;
  590. +    ShowInterrupt ();
  591. +    interrupted = FALSE;
  592.      while ((read_status = ReadObj (fp, &obj_ptr)) == TRUE)
  593. +    {
  594.         if (obj_ptr != NULL)
  595.         {
  596. ***************
  597. *** 1919,1926 ****
  598.            AdjForOldVersion (obj_ptr);
  599.            AddObj (NULL, topObj, obj_ptr);
  600. !          if (PointInBBox (obj_ptr->x, obj_ptr->y, drawWinBBox) ||
  601. !                BBoxIntersect (obj_ptr->bbox, drawWinBBox))
  602. !             DrawObj (drawWindow, obj_ptr);
  603.         }
  604.   
  605.      strcpy (scanFileName, tmp_filename);
  606. --- 1922,1936 ----
  607.            AdjForOldVersion (obj_ptr);
  608.            AddObj (NULL, topObj, obj_ptr);
  609. !          if (!interrupted &&
  610. !                (PointInBBox (obj_ptr->x, obj_ptr->y, drawWinBBox) ||
  611. !                BBoxIntersect (obj_ptr->bbox, drawWinBBox)))
  612. !          {
  613. !             if (!DrawObj (drawWindow, obj_ptr)) interrupted = TRUE;
  614. !             if (CheckInterrupt ()) interrupted = TRUE;
  615. !          }
  616.         }
  617. +    }
  618. +    if (interrupted) Msg ("User interrupt.  Drawing aborted.");
  619. +    HideInterrupt ();
  620.   
  621.      strcpy (scanFileName, tmp_filename);
  622. *** grid.c.orig    Wed Jan  6 22:07:07 1993
  623. --- grid.c    Wed Jan  6 22:07:09 1993
  624. ***************
  625. *** 25,29 ****
  626.   #ifndef lint
  627.   static char RCSid[] =
  628. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/grid.c,v 2.77 1992/05/11 23:41:53 william Exp $";
  629.   #endif
  630.   
  631. --- 25,29 ----
  632.   #ifndef lint
  633.   static char RCSid[] =
  634. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/grid.c,v 2.78 1992/12/14 02:05:21 william Exp $";
  635.   #endif
  636.   
  637. ***************
  638. *** 676,685 ****
  639.   }
  640.   
  641. ! void PreciseZoom (zoomed_in, zoom_scale)
  642. !    int    zoomed_in, zoom_scale;
  643.   {
  644.      int    xc, yc;
  645.   
  646. !    if (zoomedIn == zoomed_in && zoomScale == zoom_scale) return;
  647.   
  648.      if (curChoice==DRAWTEXT && textCursorShown)
  649. --- 676,685 ----
  650.   }
  651.   
  652. ! void PreciseZoom (zoomed_in, zoom_scale, force_zoom)
  653. !    int    zoomed_in, zoom_scale, force_zoom;
  654.   {
  655.      int    xc, yc;
  656.   
  657. !    if (!force_zoom && zoomedIn == zoomed_in && zoomScale == zoom_scale) return;
  658.   
  659.      if (curChoice==DRAWTEXT && textCursorShown)
  660. *** mainloop.c.orig    Wed Jan  6 22:07:15 1993
  661. --- mainloop.c    Wed Jan  6 22:07:17 1993
  662. ***************
  663. *** 25,29 ****
  664.   #ifndef lint
  665.   static char RCSid[] =
  666. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainloop.c,v 2.79.1.6 1992/11/29 23:26:26 william Exp $";
  667.   #endif
  668.   
  669. --- 25,29 ----
  670.   #ifndef lint
  671.   static char RCSid[] =
  672. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainloop.c,v 2.79.1.7 1992/12/21 00:20:05 william Exp $";
  673.   #endif
  674.   
  675. ***************
  676. *** 305,308 ****
  677. --- 305,313 ----
  678.         RedrawHScrollWindow ();
  679.      }
  680. +    else if (input->xany.window == dummyWindow1)
  681. +    {
  682. +       while (XCheckWindowEvent (mainDisplay, dummyWindow1, ExposureMask, &ev)) ;
  683. +       RedrawDummyWindow1 ();
  684. +    }
  685.      else if (pinnedMainMenu && input->xany.window == mainMenuWindow)
  686.      {
  687. ***************
  688. *** 686,689 ****
  689. --- 691,696 ----
  690.               input.xany.window == hSBarWindow)
  691.            ScrollEventHandler (&input);
  692. +       else if (input.xany.window == dummyWindow1)
  693. +          RedrawDummyWindow1 ();
  694.         else if (input.xany.type == MappingNotify)
  695.            XRefreshKeyboardMapping (&(input.xmapping));
  696. *** mainmenu.c.orig    Wed Jan  6 22:07:21 1993
  697. --- mainmenu.c    Wed Jan  6 22:07:22 1993
  698. ***************
  699. *** 26,30 ****
  700.   #ifndef lint
  701.   static char RCSid[] =
  702. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainmenu.c,v 1.51 1992/08/08 08:26:43 william Exp $";
  703.   #endif
  704.   
  705. --- 26,30 ----
  706.   #ifndef lint
  707.   static char RCSid[] =
  708. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/mainmenu.c,v 1.51.1.3 1993/01/04 01:21:22 william Exp $";
  709.   #endif
  710.   
  711. ***************
  712. *** 327,331 ****
  713.      register int            i, j;
  714.      register unsigned char    hash_value;
  715. !    Window            root_win, parent_win, * child_win;
  716.      unsigned int            num_child;
  717.   
  718. --- 327,331 ----
  719.      register int            i, j;
  720.      register unsigned char    hash_value;
  721. !    Window            root_win, parent_win, * child_wins;
  722.      unsigned int            num_child;
  723.   
  724. ***************
  725. *** 344,348 ****
  726.         }
  727.   
  728. !    XQueryTree (mainDisplay, rootWindow, &root_win, &parent_win, &child_win,
  729.            &num_child);
  730.   
  731. --- 344,348 ----
  732.         }
  733.   
  734. !    XQueryTree (mainDisplay, rootWindow, &root_win, &parent_win, &child_wins,
  735.            &num_child);
  736.   
  737. ***************
  738. *** 353,360 ****
  739.      for (i = 0; i < num_child; i++)
  740.      {
  741. !       hash_value = child_win[i] & 0xff;
  742.         if (checkExtra[hash_value>>3] & (1<<(hash_value&0x7)))
  743.         {
  744. !          if (child_win[i] == mainMenuWindow)
  745.               stackingWins[numStacking++] = mainMenuWindow;
  746.            else
  747. --- 353,360 ----
  748.      for (i = 0; i < num_child; i++)
  749.      {
  750. !       hash_value = child_wins[i] & 0xff;
  751.         if (checkExtra[hash_value>>3] & (1<<(hash_value&0x7)))
  752.         {
  753. !          if (child_wins[i] == mainMenuWindow)
  754.               stackingWins[numStacking++] = mainMenuWindow;
  755.            else
  756. ***************
  757. *** 363,369 ****
  758.               {
  759.                  if (extraWinInfo[j].raise && extraWinInfo[j].mapped &&
  760. !                      extraWinInfo[j].window == child_win[i])
  761.                  {
  762. !                   stackingWins[numStacking++] = child_win[i];
  763.                     break;
  764.                  }
  765. --- 363,369 ----
  766.               {
  767.                  if (extraWinInfo[j].raise && extraWinInfo[j].mapped &&
  768. !                      extraWinInfo[j].window == child_wins[i])
  769.                  {
  770. !                   stackingWins[numStacking++] = child_wins[i];
  771.                     break;
  772.                  }
  773. ***************
  774. *** 372,375 ****
  775. --- 372,376 ----
  776.         }
  777.      }
  778. +    if (child_wins != NULL) XFree ((void *)child_wins);
  779.   }
  780.   
  781. ***************
  782. *** 749,753 ****
  783.               &num_child) == 0)
  784.            return;
  785. !       if (child_wins != NULL) cfree (child_wins);
  786.         if (parent_win == rootWindow)
  787.            done = TRUE;
  788. --- 750,754 ----
  789.               &num_child) == 0)
  790.            return;
  791. !       if (child_wins != NULL) XFree ((void *)child_wins);
  792.         if (parent_win == rootWindow)
  793.            done = TRUE;
  794. *** poly.c.orig    Wed Jan  6 22:07:30 1993
  795. --- poly.c    Wed Jan  6 22:07:31 1993
  796. ***************
  797. *** 25,29 ****
  798.   #ifndef lint
  799.   static char RCSid[] =
  800. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/poly.c,v 2.59.1.3 1992/11/07 23:32:42 william Exp $";
  801.   #endif
  802.   
  803. --- 25,29 ----
  804.   #ifndef lint
  805.   static char RCSid[] =
  806. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/poly.c,v 2.59.1.4 1993/01/03 23:34:24 william Exp $";
  807.   #endif
  808.   
  809. ***************
  810. *** 198,202 ****
  811.      struct ObjRec    * obj_ptr;
  812.      register int        i;
  813. !    XPoint        * v, * rv;
  814.      int            ltx, lty, rbx, rby;
  815.   
  816. --- 198,202 ----
  817.      struct ObjRec    * obj_ptr;
  818.      register int        i;
  819. !    XPoint        * v;
  820.      int            ltx, lty, rbx, rby;
  821.   
  822. ***************
  823. *** 204,209 ****
  824.      poly_ptr->n = NumPts;
  825.      v = (XPoint *) calloc (NumPts+1, sizeof(XPoint));
  826. !    rv = (XPoint *) calloc (NumPts+1, sizeof(XPoint));
  827. !    if (v == NULL || rv == NULL) fprintf (stderr, "Can not calloc().\n");
  828.      pt_ptr = lastPtPtr;
  829.      ltx = rbx = pt_ptr->x;
  830. --- 204,208 ----
  831.      poly_ptr->n = NumPts;
  832.      v = (XPoint *) calloc (NumPts+1, sizeof(XPoint));
  833. !    if (v == NULL) fprintf (stderr, "Can not calloc().\n");
  834.      pt_ptr = lastPtPtr;
  835.      ltx = rbx = pt_ptr->x;
  836. ***************
  837. *** 222,226 ****
  838.   
  839.      poly_ptr->vlist = v;
  840. -    poly_ptr->rvlist = rv;
  841.      poly_ptr->svlist = poly_ptr->asvlist = NULL;
  842.      poly_ptr->style = lineStyle;
  843. --- 221,224 ----
  844. ***************
  845. *** 809,813 ****
  846.      dash = ObjPtr->detail.p->dash;
  847.      rotation = ObjPtr->rotation;
  848. !    v = (rotation == 0) ? ObjPtr->detail.p->vlist : ObjPtr->detail.p->rvlist;
  849.      num_pts = ObjPtr->detail.p->n;
  850.   
  851. --- 807,811 ----
  852.      dash = ObjPtr->detail.p->dash;
  853.      rotation = ObjPtr->rotation;
  854. !    v = ObjPtr->detail.p->vlist;
  855.      num_pts = ObjPtr->detail.p->n;
  856.   
  857. ***************
  858. *** 1184,1188 ****
  859.      register int        i;
  860.      struct PolyRec    * poly_ptr;
  861. !    XPoint        * v, * rv;
  862.      char            color_str[20], * s, inbuf[MAXSTRING+1], msg[MAXSTRING];
  863.      int            num_pts, ltx=0, lty=0, rbx=0, rby=0, x, y, id=0;
  864. --- 1182,1186 ----
  865.      register int        i;
  866.      struct PolyRec    * poly_ptr;
  867. !    XPoint        * v;
  868.      char            color_str[20], * s, inbuf[MAXSTRING+1], msg[MAXSTRING];
  869.      int            num_pts, ltx=0, lty=0, rbx=0, rby=0, x, y, id=0;
  870. ***************
  871. *** 1218,1223 ****
  872.      {
  873.         v = (XPoint *) calloc (4, sizeof(XPoint));
  874. !       rv = (XPoint *) calloc (4, sizeof(XPoint));
  875. !       if (v == NULL || rv == NULL) fprintf (stderr, "Can not calloc().\n");
  876.      }
  877.      else
  878. --- 1216,1220 ----
  879.      {
  880.         v = (XPoint *) calloc (4, sizeof(XPoint));
  881. !       if (v == NULL) fprintf (stderr, "Can not calloc().\n");
  882.      }
  883.      else
  884. ***************
  885. *** 1224,1229 ****
  886.      {
  887.         v = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  888. !       rv = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  889. !       if (v == NULL || rv == NULL) fprintf (stderr, "Can not calloc().\n");
  890.      }
  891.   
  892. --- 1221,1225 ----
  893.      {
  894.         v = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  895. !       if (v == NULL) fprintf (stderr, "Can not calloc().\n");
  896.      }
  897.   
  898. ***************
  899. *** 1239,1243 ****
  900.               cfree (poly_ptr);
  901.               cfree (v);
  902. -             cfree (rv);
  903.               *ObjPtr = NULL;
  904.               return;
  905. --- 1235,1238 ----
  906. ***************
  907. *** 1269,1273 ****
  908.               cfree (poly_ptr);
  909.               cfree (v);
  910. -             cfree (rv);
  911.               *ObjPtr = NULL;
  912.               return;
  913. --- 1264,1267 ----
  914. ***************
  915. *** 1321,1325 ****
  916.            cfree (poly_ptr);
  917.            cfree (v);
  918. -          cfree (rv);
  919.            *ObjPtr = NULL;
  920.            return;
  921. --- 1315,1318 ----
  922. ***************
  923. *** 1350,1354 ****
  924.            cfree (poly_ptr);
  925.            cfree (v);
  926. -          cfree (rv);
  927.            *ObjPtr = NULL;
  928.            return;
  929. --- 1343,1346 ----
  930. ***************
  931. *** 1380,1384 ****
  932.            cfree (poly_ptr);
  933.            cfree (v);
  934. -          cfree (rv);
  935.            *ObjPtr = NULL;
  936.            return;
  937. --- 1372,1375 ----
  938. ***************
  939. *** 1404,1408 ****
  940.            cfree (poly_ptr);
  941.            cfree (v);
  942. -          cfree (rv);
  943.            *ObjPtr = NULL;
  944.            return;
  945. --- 1395,1398 ----
  946. ***************
  947. *** 1427,1431 ****
  948.            cfree (poly_ptr);
  949.            cfree (v);
  950. -          cfree (rv);
  951.            *ObjPtr = NULL;
  952.            return;
  953. --- 1417,1420 ----
  954. ***************
  955. *** 1446,1450 ****
  956.            cfree (poly_ptr);
  957.            cfree (v);
  958. -          cfree (rv);
  959.            *ObjPtr = NULL;
  960.            return;
  961. --- 1435,1438 ----
  962. ***************
  963. *** 1466,1470 ****
  964.            cfree (poly_ptr);
  965.            cfree (v);
  966. -          cfree (rv);
  967.            *ObjPtr = NULL;
  968.            return;
  969. --- 1454,1457 ----
  970. ***************
  971. *** 1488,1492 ****
  972.            cfree (poly_ptr);
  973.            cfree (v);
  974. -          cfree (rv);
  975.            *ObjPtr = NULL;
  976.            return;
  977. --- 1475,1478 ----
  978. ***************
  979. *** 1511,1515 ****
  980.            cfree (poly_ptr);
  981.            cfree (v);
  982. -          cfree (rv);
  983.            *ObjPtr = NULL;
  984.            return;
  985. --- 1497,1500 ----
  986. ***************
  987. *** 1537,1541 ****
  988.   
  989.      poly_ptr->vlist = v;
  990. -    poly_ptr->rvlist = rv;
  991.      poly_ptr->svlist = poly_ptr->asvlist = NULL;
  992.   
  993. --- 1522,1525 ----
  994. ***************
  995. *** 1562,1569 ****
  996.      struct ObjRec    * ObjPtr;
  997.   {
  998. !    if (ObjPtr->detail.p->curved) cfree (ObjPtr->detail.p->svlist);
  999.      if (ObjPtr->detail.p->asvlist != NULL) cfree (ObjPtr->detail.p->asvlist);
  1000.      cfree (ObjPtr->detail.p->vlist);
  1001. -    cfree (ObjPtr->detail.p->rvlist);
  1002.      cfree (ObjPtr->detail.p);
  1003.      cfree (ObjPtr);
  1004. --- 1546,1552 ----
  1005.      struct ObjRec    * ObjPtr;
  1006.   {
  1007. !    if (ObjPtr->detail.p->svlist != NULL) cfree (ObjPtr->detail.p->svlist);
  1008.      if (ObjPtr->detail.p->asvlist != NULL) cfree (ObjPtr->detail.p->asvlist);
  1009.      cfree (ObjPtr->detail.p->vlist);
  1010.      cfree (ObjPtr->detail.p);
  1011.      cfree (ObjPtr);
  1012. *** polygon.c.orig    Wed Jan  6 22:07:37 1993
  1013. --- polygon.c    Wed Jan  6 22:07:38 1993
  1014. ***************
  1015. *** 25,29 ****
  1016.   #ifndef lint
  1017.   static char RCSid[] =
  1018. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/polygon.c,v 2.58.1.3 1992/11/07 23:33:09 william Exp $";
  1019.   #endif
  1020.   
  1021. --- 25,29 ----
  1022.   #ifndef lint
  1023.   static char RCSid[] =
  1024. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/polygon.c,v 2.58.1.4 1993/01/03 23:34:24 william Exp $";
  1025.   #endif
  1026.   
  1027. ***************
  1028. *** 736,740 ****
  1029.      register int        i;
  1030.      struct PolygonRec    * polygon_ptr;
  1031. !    XPoint        * v, * rv;
  1032.      char            color_str[20], * s, inbuf[MAXSTRING], msg[MAXSTRING];
  1033.      int            num_pts, ltx=0, lty=0, rbx=0, rby=0, x, y, id=0;
  1034. --- 736,740 ----
  1035.      register int        i;
  1036.      struct PolygonRec    * polygon_ptr;
  1037. !    XPoint        * v;
  1038.      char            color_str[20], * s, inbuf[MAXSTRING], msg[MAXSTRING];
  1039.      int            num_pts, ltx=0, lty=0, rbx=0, rby=0, x, y, id=0;
  1040. ***************
  1041. *** 769,774 ****
  1042.      {
  1043.         v = (XPoint *) calloc (5, sizeof(XPoint));
  1044. !       rv = (XPoint *) calloc (5, sizeof(XPoint));
  1045. !       if (v == NULL || rv == NULL) fprintf (stderr, "Can not calloc().\n");
  1046.      }
  1047.      else
  1048. --- 769,773 ----
  1049.      {
  1050.         v = (XPoint *) calloc (5, sizeof(XPoint));
  1051. !       if (v == NULL) fprintf (stderr, "Can not calloc().\n");
  1052.      }
  1053.      else
  1054. ***************
  1055. *** 775,780 ****
  1056.      {
  1057.         v = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  1058. !       rv = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  1059. !       if (v == NULL || rv == NULL) fprintf (stderr, "Can not calloc().\n");
  1060.      }
  1061.   
  1062. --- 774,778 ----
  1063.      {
  1064.         v = (XPoint *) calloc (num_pts+1, sizeof(XPoint));
  1065. !       if (v == NULL) fprintf (stderr, "Can not calloc().\n");
  1066.      }
  1067.   
  1068. ***************
  1069. *** 790,794 ****
  1070.               cfree (polygon_ptr);
  1071.               cfree (v);
  1072. -             cfree (rv);
  1073.               *ObjPtr = NULL;
  1074.               return;
  1075. --- 788,791 ----
  1076. ***************
  1077. *** 820,824 ****
  1078.               cfree (polygon_ptr);
  1079.               cfree (v);
  1080. -             cfree (rv);
  1081.               *ObjPtr = NULL;
  1082.               return;
  1083. --- 817,820 ----
  1084. ***************
  1085. *** 885,889 ****
  1086.            cfree (polygon_ptr);
  1087.            cfree (v);
  1088. -          cfree (rv);
  1089.            *ObjPtr = NULL;
  1090.            return;
  1091. --- 881,884 ----
  1092. ***************
  1093. *** 913,917 ****
  1094.            cfree (polygon_ptr);
  1095.            cfree (v);
  1096. -          cfree (rv);
  1097.            *ObjPtr = NULL;
  1098.            return;
  1099. --- 908,911 ----
  1100. ***************
  1101. *** 934,938 ****
  1102.            cfree (polygon_ptr);
  1103.            cfree (v);
  1104. -          cfree (rv);
  1105.            *ObjPtr = NULL;
  1106.            return;
  1107. --- 928,931 ----
  1108. ***************
  1109. *** 951,955 ****
  1110.            cfree (polygon_ptr);
  1111.            cfree (v);
  1112. -          cfree (rv);
  1113.            *ObjPtr = NULL;
  1114.            return;
  1115. --- 944,947 ----
  1116. ***************
  1117. *** 969,973 ****
  1118.            cfree (polygon_ptr);
  1119.            cfree (v);
  1120. -          cfree (rv);
  1121.            *ObjPtr = NULL;
  1122.            return;
  1123. --- 961,964 ----
  1124. ***************
  1125. *** 988,992 ****
  1126.            cfree (polygon_ptr);
  1127.            cfree (v);
  1128. -          cfree (rv);
  1129.            *ObjPtr = NULL;
  1130.            return;
  1131. --- 979,982 ----
  1132. ***************
  1133. *** 1008,1012 ****
  1134.            cfree (polygon_ptr);
  1135.            cfree (v);
  1136. -          cfree (rv);
  1137.            *ObjPtr = NULL;
  1138.            return;
  1139. --- 998,1001 ----
  1140. ***************
  1141. *** 1026,1030 ****
  1142.   
  1143.      polygon_ptr->vlist = v;
  1144. -    polygon_ptr->rvlist = rv;
  1145.      polygon_ptr->svlist = NULL;
  1146.   
  1147. --- 1015,1018 ----
  1148. ***************
  1149. *** 1053,1059 ****
  1150.      struct ObjRec    * ObjPtr;
  1151.   {
  1152. !    if (ObjPtr->detail.g->curved) cfree (ObjPtr->detail.g->svlist);
  1153.      cfree (ObjPtr->detail.g->vlist);
  1154. -    cfree (ObjPtr->detail.g->rvlist);
  1155.      cfree (ObjPtr->detail.g);
  1156.      cfree (ObjPtr);
  1157. --- 1041,1046 ----
  1158.      struct ObjRec    * ObjPtr;
  1159.   {
  1160. !    if (ObjPtr->detail.g->svlist != NULL) cfree (ObjPtr->detail.g->svlist);
  1161.      cfree (ObjPtr->detail.g->vlist);
  1162.      cfree (ObjPtr->detail.g);
  1163.      cfree (ObjPtr);
  1164. *** raster.c.orig    Wed Jan  6 22:07:46 1993
  1165. --- raster.c    Wed Jan  6 22:07:47 1993
  1166. ***************
  1167. *** 25,29 ****
  1168.   #ifndef lint
  1169.   static char RCSid[] =
  1170. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/raster.c,v 2.42 1992/06/19 05:41:12 william Exp $";
  1171.   #endif
  1172.   
  1173. --- 25,29 ----
  1174.   #ifndef lint
  1175.   static char RCSid[] =
  1176. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/raster.c,v 2.42.1.2 1992/12/21 00:27:27 william Exp $";
  1177.   #endif
  1178.   
  1179. ***************
  1180. *** 168,171 ****
  1181. --- 168,172 ----
  1182.   #include "xbm/unconst_move.xbm"
  1183.   #include "xbm/edit.xbm"
  1184. + #include "xbm/intr.xbm"
  1185.   
  1186.   #include "xbm/rotate_0.xbm"
  1187. ***************
  1188. *** 203,206 ****
  1189. --- 204,209 ----
  1190.   Pixmap    moveModePixmap[MAXMOVEMODES];
  1191.   Pixmap    editPixmap;
  1192. + Pixmap    intrPixmap;
  1193.   Pixmap    rotatePixmap[4];
  1194.   Pixmap    whereToPrintPixmap[MAXWHERETOPRINT];
  1195. ***************
  1196. *** 557,560 ****
  1197. --- 560,566 ----
  1198.            edit_bits, edit_width, edit_height);
  1199.   
  1200. +    intrPixmap = XCreateBitmapFromData (mainDisplay, mainWindow,
  1201. +          intr_bits, intr_width, intr_height);
  1202.      rotatePixmap[0] = XCreateBitmapFromData (mainDisplay, mainWindow,
  1203.            rotate_0_bits, rotate_0_width, rotate_0_height);
  1204. ***************
  1205. *** 694,697 ****
  1206. --- 700,704 ----
  1207.         XFreePixmap (mainDisplay, moveModePixmap[i]);
  1208.      XFreePixmap (mainDisplay, editPixmap);
  1209. +    XFreePixmap (mainDisplay, intrPixmap);
  1210.      for (i = 0; i < 4; i++)
  1211.         XFreePixmap (mainDisplay, rotatePixmap[i]);
  1212. *** select.c.orig    Wed Jan  6 22:07:52 1993
  1213. --- select.c    Wed Jan  6 22:07:54 1993
  1214. ***************
  1215. *** 25,29 ****
  1216.   #ifndef lint
  1217.   static char RCSid[] =
  1218. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/select.c,v 2.70.1.5 1992/12/06 23:53:20 william Exp $";
  1219.   #endif
  1220.   
  1221. --- 25,29 ----
  1222.   #ifndef lint
  1223.   static char RCSid[] =
  1224. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/select.c,v 2.70.1.7 1993/01/03 23:45:28 william Exp $";
  1225.   #endif
  1226.   
  1227. ***************
  1228. *** 66,71 ****
  1229.   struct VSelRec    * topVSel = NULL, * botVSel = NULL;
  1230.   
  1231. - static struct SelRec    * topCutSel = NULL, * botCutSel = NULL;
  1232.   void CalcBBox (X1, Y1, X2, Y2, LtX, LtY, RbX, RbY)
  1233.      int X1, Y1, X2, Y2, * LtX, * LtY, * RbX, * RbY;
  1234. --- 66,69 ----
  1235. ***************
  1236. *** 1320,1327 ****
  1237.   {
  1238.      register char    * c_ptr, * buf_ptr;
  1239. !    char            * start_ptr, * new_c_ptr;
  1240.      char            buf[MAXSTRING+1], * cmd, * cmd_ptr;
  1241. !    int            cur_size=2*MAXSTRING, count=0, cmd_len=0;
  1242.      struct AttrRec    * attr_ptr;
  1243.   
  1244.      cmd = (char *) calloc (cur_size+1, sizeof(char));
  1245. --- 1318,1327 ----
  1246.   {
  1247.      register char    * c_ptr, * buf_ptr;
  1248. !    char            * new_c_ptr;
  1249.      char            buf[MAXSTRING+1], * cmd, * cmd_ptr;
  1250. !    int            cur_size=2*MAXSTRING, count=0, cmd_len=0, n;
  1251. !    int            first_time=TRUE;
  1252.      struct AttrRec    * attr_ptr;
  1253. +    struct StrRec    * str_ptr;
  1254.   
  1255.      cmd = (char *) calloc (cur_size+1, sizeof(char));
  1256. ***************
  1257. *** 1328,1392 ****
  1258.      cmd_ptr = cmd;
  1259.      buf_ptr = buf;
  1260. !    for (start_ptr = c_ptr = launch_attr->s; *c_ptr != '\0'; c_ptr++, count++)
  1261.      {
  1262. !       switch (*c_ptr)
  1263.         {
  1264. !          case '\\':
  1265. !             c_ptr++;
  1266. !             *buf_ptr++ = *c_ptr;
  1267. !             break;
  1268. !          case '$':
  1269. !             if (count != 0)
  1270. !             {
  1271. !                *buf_ptr = '\0';
  1272.                  if (count+cmd_len >= cur_size)
  1273.                  {
  1274. !                   int    n=cmd_ptr-cmd;
  1275. !  
  1276.                     cur_size += MAXSTRING;
  1277. !                   cmd = (char *) realloc (cmd, (cur_size+1)*sizeof(char));
  1278.                     cmd_ptr = cmd+n;
  1279.                  }
  1280. !                strcpy (cmd_ptr, buf);
  1281.                  cmd_ptr += count;
  1282. !                count = 0;
  1283. !                buf_ptr = buf;
  1284. !             }
  1285. !             if ((attr_ptr = ValidAttrArg (c_ptr, obj_ptr, &new_c_ptr)) == NULL)
  1286. !             {
  1287. !                cfree (cmd);
  1288. !                return;
  1289. !             }
  1290. !             count = strlen (attr_ptr->s);
  1291. !             if (count+cmd_len >= cur_size)
  1292. !             {
  1293. !                int    n=cmd_ptr-cmd;
  1294. !  
  1295. !                cur_size += MAXSTRING;
  1296. !                cmd = (char *) realloc (cmd, (cur_size+1)*sizeof(char));
  1297. !                cmd_ptr = cmd+n;
  1298. !             }
  1299. !             strcpy (cmd_ptr, attr_ptr->s);
  1300. !             cmd_ptr += count;
  1301. !             count = -1;
  1302. !             c_ptr = new_c_ptr;
  1303. !             break;
  1304. !          default:
  1305. !             *buf_ptr++ = *c_ptr;
  1306. !             break;
  1307.         }
  1308. !    }
  1309. !    if (count != 0)
  1310. !    {
  1311. !       *buf_ptr = '\0';
  1312. !       if (count+cmd_len >= cur_size)
  1313.         {
  1314. !          int    n=cmd_ptr-cmd;
  1315. !          cur_size += MAXSTRING;
  1316. !          cmd = (char *) realloc (cmd, (cur_size+1)*sizeof(char));
  1317. !          cmd_ptr = cmd+n;
  1318.         }
  1319. !       strcpy (cmd_ptr, buf);
  1320.      }
  1321.      LaunchIt (cmd);
  1322. --- 1328,1400 ----
  1323.      cmd_ptr = cmd;
  1324.      buf_ptr = buf;
  1325. !    for (str_ptr = launch_attr->obj->detail.t->first; str_ptr != NULL;
  1326. !          str_ptr = str_ptr->next)
  1327.      {
  1328. !       if (first_time)
  1329.         {
  1330. !          first_time = FALSE;
  1331. !          c_ptr = launch_attr->s;
  1332. !       }
  1333. !       else
  1334. !          c_ptr = str_ptr->s;
  1335. !       for ( ; *c_ptr != '\0'; c_ptr++, count++)
  1336. !       {
  1337. !          switch (*c_ptr)
  1338. !          {
  1339. !             case '\\': c_ptr++; *buf_ptr++ = *c_ptr; break;
  1340. !             case '$':
  1341. !                if (count != 0)
  1342. !                {
  1343. !                   *buf_ptr = '\0';
  1344. !                   if (count+cmd_len >= cur_size)
  1345. !                   {
  1346. !                      n = cmd_ptr-cmd;
  1347. !                      cur_size += MAXSTRING;
  1348. !                      cmd = (char *) realloc (cmd, (cur_size+2)*sizeof(char));
  1349. !                      cmd_ptr = cmd+n;
  1350. !                   }
  1351. !                   strcpy (cmd_ptr, buf);
  1352. !                   cmd_ptr += count;
  1353. !                   count = 0;
  1354. !                   buf_ptr = buf;
  1355. !                }
  1356. !                if ((attr_ptr = ValidAttrArg(c_ptr,obj_ptr,&new_c_ptr)) == NULL)
  1357. !                {
  1358. !                   cfree (cmd);
  1359. !                   return;
  1360. !                }
  1361. !                count = strlen (attr_ptr->s);
  1362.                  if (count+cmd_len >= cur_size)
  1363.                  {
  1364. !                   n = cmd_ptr-cmd;
  1365.                     cur_size += MAXSTRING;
  1366. !                   cmd = (char *) realloc (cmd, (cur_size+2)*sizeof(char));
  1367.                     cmd_ptr = cmd+n;
  1368.                  }
  1369. !                strcpy (cmd_ptr, attr_ptr->s);
  1370.                  cmd_ptr += count;
  1371. !                count = -1;
  1372. !                c_ptr = new_c_ptr;
  1373. !                break;
  1374. !             default: *buf_ptr++ = *c_ptr; break;
  1375. !          }
  1376.         }
  1377. !       if (count != 0)
  1378.         {
  1379. !          *buf_ptr = '\0';
  1380. !          if (count+cmd_len >= cur_size)
  1381. !          {
  1382. !             n = cmd_ptr-cmd;
  1383. !             cur_size += MAXSTRING;
  1384. !             cmd = (char *) realloc (cmd, (cur_size+2)*sizeof(char));
  1385. !             cmd_ptr = cmd+n;
  1386. !          }
  1387. !          strcpy (cmd_ptr, buf);
  1388. !          cmd_ptr += count;
  1389. !          count = 0;
  1390. !          buf_ptr = buf;
  1391.         }
  1392. !       if (str_ptr->next != NULL) { *cmd_ptr++ = ' '; *cmd_ptr = '\0'; }
  1393.      }
  1394.      LaunchIt (cmd);
  1395. *** setup.c.orig    Wed Jan  6 22:08:01 1993
  1396. --- setup.c    Wed Jan  6 22:08:02 1993
  1397. ***************
  1398. *** 25,29 ****
  1399.   #ifndef lint
  1400.   static char RCSid[] =
  1401. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/setup.c,v 2.100.2.3 1992/11/29 23:59:22 william Exp $";
  1402.   #endif
  1403.   
  1404. --- 25,29 ----
  1405.   #ifndef lint
  1406.   static char RCSid[] =
  1407. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/setup.c,v 2.100.2.9 1993/01/04 02:51:43 william Exp $";
  1408.   #endif
  1409.   
  1410. ***************
  1411. *** 165,169 ****
  1412.   short    handleSize=3;
  1413.   
  1414. ! static Window    dummyWindow1, dummyWindow2;
  1415.   
  1416.   static Atom    protocolAtom;
  1417. --- 165,169 ----
  1418.   short    handleSize=3;
  1419.   
  1420. ! Window    dummyWindow1, dummyWindow2;
  1421.   
  1422.   static Atom    protocolAtom;
  1423. ***************
  1424. *** 276,280 ****
  1425.            Msg (msg);
  1426.         }
  1427. !       XFree (c_ptr);
  1428.      }
  1429.   
  1430. --- 276,280 ----
  1431.            Msg (msg);
  1432.         }
  1433. !       XFree ((void *)c_ptr);
  1434.      }
  1435.   
  1436. ***************
  1437. *** 346,350 ****
  1438.                  titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW, hSBarW,
  1439.                  scrollBarW);
  1440. !          XMoveWindow (mainDisplay, dummyWindow1, drawWinW+rulerW+4*brdrW,
  1441.               titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW);
  1442.         }
  1443. --- 346,350 ----
  1444.                  titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW, hSBarW,
  1445.                  scrollBarW);
  1446. !          XMoveWindow (mainDisplay, dummyWindow2, drawWinW+rulerW+4*brdrW,
  1447.               titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW);
  1448.         }
  1449. ***************
  1450. *** 597,600 ****
  1451. --- 597,604 ----
  1452.            groupedTextEditable = TRUE;
  1453.      }
  1454. +    intrCheckInterval = 10;
  1455. +    if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME,
  1456. +          "IntrCheckInterval")) != NULL)
  1457. +       intrCheckInterval = atoi (c_ptr);
  1458.   
  1459.      strcpy (scanFileName, "No File");
  1460. ***************
  1461. *** 806,810 ****
  1462.      }
  1463.   
  1464. !    if ((dummyWindow1 = XCreateSimpleWindow (mainDisplay, mainWindow,
  1465.            rulerW+drawWinW+4*brdrW,
  1466.            titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW,
  1467. --- 810,814 ----
  1468.      }
  1469.   
  1470. !    if ((dummyWindow2 = XCreateSimpleWindow (mainDisplay, mainWindow,
  1471.            rulerW+drawWinW+4*brdrW,
  1472.            titleWindowH+choiceWindowH+rulerW+drawWinH+8*brdrW,
  1473. ***************
  1474. *** 812,816 ****
  1475.      { fprintf (stderr, "Could not create dummy window!\n"); exit(1); }
  1476.   
  1477. !    if ((dummyWindow2 = XCreateSimpleWindow (mainDisplay, mainWindow, 0,
  1478.            titleWindowH+choiceWindowH+4*brdrW, rulerW, rulerW,
  1479.            brdrW, myBorderPixel, myBgPixel)) == 0) 
  1480. --- 816,820 ----
  1481.      { fprintf (stderr, "Could not create dummy window!\n"); exit(1); }
  1482.   
  1483. !    if ((dummyWindow1 = XCreateSimpleWindow (mainDisplay, mainWindow, 0,
  1484.            titleWindowH+choiceWindowH+4*brdrW, rulerW, rulerW,
  1485.            brdrW, myBorderPixel, myBgPixel)) == 0) 
  1486. ***************
  1487. *** 897,900 ****
  1488. --- 901,906 ----
  1489.         XMapWindow (mainDisplay, hSBarWindow);
  1490.         XSelectInput (mainDisplay, hSBarWindow, ButtonPressMask | ExposureMask);
  1491. +       XMapWindow (mainDisplay, dummyWindow1);
  1492. +       XSelectInput (mainDisplay, dummyWindow1, ButtonPressMask | ExposureMask);
  1493.      }
  1494.   #else
  1495. ***************
  1496. *** 933,936 ****
  1497. --- 939,944 ----
  1498.         XSelectInput (mainDisplay, hSBarWindow, ButtonPressMask | ExposureMask);
  1499.         XMapWindow (mainDisplay, hSBarWindow);
  1500. +       XSelectInput (mainDisplay, dummyWindow1, ButtonPressMask | ExposureMask);
  1501. +       XMapWindow (mainDisplay, dummyWindow1);
  1502.      }
  1503.   #endif
  1504. ***************
  1505. *** 938,942 ****
  1506.      if (!canvasWindowOnly)
  1507.      {
  1508. -       XMapWindow (mainDisplay, dummyWindow1);
  1509.         XMapWindow (mainDisplay, dummyWindow2);
  1510.      }
  1511. --- 946,949 ----
  1512. *** special.c.orig    Wed Jan  6 22:08:07 1993
  1513. --- special.c    Wed Jan  6 22:08:08 1993
  1514. ***************
  1515. *** 25,29 ****
  1516.   #ifndef lint
  1517.   static char RCSid[] =
  1518. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/special.c,v 2.60 1992/03/31 07:56:57 william Exp $";
  1519.   #endif
  1520.   
  1521. --- 25,29 ----
  1522.   #ifndef lint
  1523.   static char RCSid[] =
  1524. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/special.c,v 2.60.1.1 1992/12/22 04:34:08 william Exp $";
  1525.   #endif
  1526.   
  1527. ***************
  1528. *** 248,252 ****
  1529. --- 248,254 ----
  1530.            MoveObj (ObjPtr, grid_dx, grid_dy);
  1531.            numRedrawBBox = 0;
  1532. +          ShowInterrupt ();
  1533.            DrawObj (drawWindow, ObjPtr);
  1534. +          HideInterrupt ();
  1535.         }
  1536.         else if (input.type == MotionNotify)
  1537. *** stk.c.orig    Wed Jan  6 22:08:12 1993
  1538. --- stk.c    Wed Jan  6 22:08:13 1993
  1539. ***************
  1540. *** 25,29 ****
  1541.   #ifndef lint
  1542.   static char RCSid[] =
  1543. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/stk.c,v 2.37.1.2 1992/10/21 05:00:55 william Exp $";
  1544.   #endif
  1545.   
  1546. --- 25,29 ----
  1547.   #ifndef lint
  1548.   static char RCSid[] =
  1549. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/stk.c,v 2.37.1.5 1992/12/22 05:43:04 william Exp $";
  1550.   #endif
  1551.   
  1552. ***************
  1553. *** 81,85 ****
  1554.      int            read_status, short_name;
  1555.      FILE            * fp;
  1556. !    int            tmp_linenum;
  1557.      char            tmp_filename[MAXPATHLENGTH];
  1558.   
  1559. --- 81,85 ----
  1560.      int            read_status, short_name;
  1561.      FILE            * fp;
  1562. !    int            tmp_linenum, interrupted;
  1563.      char            tmp_filename[MAXPATHLENGTH];
  1564.   
  1565. ***************
  1566. *** 193,197 ****
  1567. --- 193,200 ----
  1568.      SetWatchCursor (mainWindow);
  1569.      numRedrawBBox = 0;
  1570. +    ShowInterrupt ();
  1571. +    interrupted = FALSE;
  1572.      while ((read_status = ReadObj (fp, &obj_ptr)) == TRUE)
  1573. +    {
  1574.         if (obj_ptr != NULL)
  1575.         {
  1576. ***************
  1577. *** 198,205 ****
  1578.            AdjForOldVersion (obj_ptr);
  1579.            AddObj (NULL, topObj, obj_ptr);
  1580. !          if (PointInBBox (obj_ptr->x, obj_ptr->y, drawWinBBox) ||
  1581. !                BBoxIntersect (obj_ptr->bbox, drawWinBBox))
  1582. !             DrawObj (drawWindow, obj_ptr);
  1583.         }
  1584.   
  1585.      strcpy (scanFileName, tmp_filename);
  1586. --- 201,215 ----
  1587.            AdjForOldVersion (obj_ptr);
  1588.            AddObj (NULL, topObj, obj_ptr);
  1589. !          if (!interrupted &&
  1590. !                (PointInBBox (obj_ptr->x, obj_ptr->y, drawWinBBox) ||
  1591. !                BBoxIntersect (obj_ptr->bbox, drawWinBBox)))
  1592. !          {
  1593. !             if (!DrawObj (drawWindow, obj_ptr)) interrupted = TRUE;
  1594. !             if (CheckInterrupt ()) interrupted = TRUE;
  1595. !          }
  1596.         }
  1597. +    }
  1598. +    if (interrupted) Msg ("User interrupt.  Drawing aborted.");
  1599. +    HideInterrupt ();
  1600.   
  1601.      strcpy (scanFileName, tmp_filename);
  1602. *** text.c.orig    Wed Jan  6 22:08:21 1993
  1603. --- text.c    Wed Jan  6 22:08:24 1993
  1604. ***************
  1605. *** 25,29 ****
  1606.   #ifndef lint
  1607.   static char RCSid[] =
  1608. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.110 1992/10/21 05:14:30 william Exp $";
  1609.   #endif
  1610.   
  1611. --- 25,29 ----
  1612.   #ifndef lint
  1613.   static char RCSid[] =
  1614. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/text.c,v 2.111 1992/12/20 01:34:19 william Exp $";
  1615.   #endif
  1616.   
  1617. ***************
  1618. *** 1969,1972 ****
  1619. --- 1969,1974 ----
  1620.      ScrollTo (textCurX, textCurY);
  1621.   }
  1622. + #define TGIF_HEADER 0x80
  1623.    
  1624.   static XComposeStatus    c_stat;
  1625. ***************
  1626. *** 1975,1981 ****
  1627.      XEvent    * input;
  1628.   {
  1629. !    char            s[80];
  1630. !    XKeyEvent        * key_ev;
  1631. !    KeySym        key_sym;
  1632.   
  1633.      if (input->type == ButtonPress)
  1634. --- 1977,1983 ----
  1635.      XEvent    * input;
  1636.   {
  1637. !    char        s[80];
  1638. !    XKeyEvent    * key_ev;
  1639. !    KeySym    key_sym;
  1640.   
  1641.      if (input->type == ButtonPress)
  1642. ***************
  1643. *** 1984,1987 ****
  1644. --- 1986,2027 ----
  1645.      {
  1646.         if (!textCursorShown) return;
  1647. +       if (pasteInDrawTextMode)
  1648. +       {
  1649. +          char    * c_ptr, * cut_buffer;
  1650. +          int    len;
  1651. +          pasteInDrawTextMode = FALSE;
  1652. +          cut_buffer = (char *) XFetchBytes (mainDisplay, &len);
  1653. +          if (len == 0) { Msg ("Cut buffer is empty."); return; }
  1654. +          if (escPressed)
  1655. +          {
  1656. +             escPressed = FALSE;
  1657. +             Msg ("An <ESC> key press is ignored.");
  1658. +          }
  1659. +          s[1] = '\0';
  1660. +          EraseTextCursor ();
  1661. +          for (c_ptr = cut_buffer; *c_ptr != '\0'; c_ptr++)
  1662. +          {
  1663. +             s[0] = *c_ptr;
  1664. +             switch (s[0])
  1665. +             {
  1666. +                case '\r':
  1667. +                case '\n': HandleCRLF (colorIndex); break;
  1668. +                case '\177': Msg ("Can not paste <DEL>."); break;
  1669. +                case '\b': Msg ("Can not paste <BS>."); break;
  1670. +                case '\033': Msg ("Can not paste <ESC>."); break;
  1671. +                case '\t': Msg ("Can not paste <TAB>."); break;
  1672. +                default: HandleChar (s, colorIndex); break;
  1673. +             }
  1674. +          }
  1675. +          PutTextCursor ();
  1676. +          MarkRulers (textCurX, textCurY);
  1677. +          SetFileModified (TRUE);
  1678. +          return;
  1679. +       }
  1680.   
  1681.         key_ev = &(input->xkey);
  1682. *** xbitmap.c.orig    Wed Jan  6 22:08:31 1993
  1683. --- xbitmap.c    Wed Jan  6 22:08:33 1993
  1684. ***************
  1685. *** 25,29 ****
  1686.   #ifndef lint
  1687.   static char RCSid[] =
  1688. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/xbitmap.c,v 2.116 1992/11/24 06:02:46 william Exp $";
  1689.   #endif
  1690.   
  1691. --- 25,29 ----
  1692.   #ifndef lint
  1693.   static char RCSid[] =
  1694. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/xbitmap.c,v 2.117 1993/01/03 22:51:20 william Exp $";
  1695.   #endif
  1696.   
  1697. ***************
  1698. *** 2373,2379 ****
  1699.      xbm_ptr->cached_zoom = 0;
  1700.      if (xbm_ptr->data != NULL) cfree (xbm_ptr->data);
  1701.      if (xbm_ptr->real_type == XBM_EPS)
  1702.      {
  1703. -       if (xbm_ptr->filename != NULL) cfree (xbm_ptr->filename);
  1704.         for (i = 0; i < xbm_ptr->num_epsf_lines; i++)
  1705.            if (xbm_ptr->epsflines[i] != NULL)
  1706. --- 2373,2379 ----
  1707.      xbm_ptr->cached_zoom = 0;
  1708.      if (xbm_ptr->data != NULL) cfree (xbm_ptr->data);
  1709. +    if (xbm_ptr->filename != NULL) cfree (xbm_ptr->filename);
  1710.      if (xbm_ptr->real_type == XBM_EPS)
  1711.      {
  1712.         for (i = 0; i < xbm_ptr->num_epsf_lines; i++)
  1713.            if (xbm_ptr->epsflines[i] != NULL)
  1714. *** xpixmap.c.orig    Wed Jan  6 22:08:40 1993
  1715. --- xpixmap.c    Wed Jan  6 22:08:42 1993
  1716. ***************
  1717. *** 25,29 ****
  1718.   #ifndef lint
  1719.   static char RCSid[] =
  1720. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/xpixmap.c,v 2.119 1992/11/26 23:48:45 william Exp $";
  1721.   #endif
  1722.   
  1723. --- 25,29 ----
  1724.   #ifndef lint
  1725.   static char RCSid[] =
  1726. !       "@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/xpixmap.c,v 2.120 1992/12/18 05:34:11 william Exp $";
  1727.   #endif
  1728.   
  1729. ***************
  1730. *** 935,942 ****
  1731.               fprintf (FP, "%c", hexValue[(pixel_index>>4)&0x0f]);
  1732.               fprintf (FP, "%c", hexValue[pixel_index&0x0f]);
  1733. !             if (col%36 == 35) fprintf (FP, "\n   ");
  1734.            }
  1735.            if (col%36 != 0) fprintf (FP, "\n");
  1736. !          if (row != image_h-1) fprintf (FP, "   ");
  1737.         }
  1738.      }
  1739. --- 935,944 ----
  1740.               fprintf (FP, "%c", hexValue[(pixel_index>>4)&0x0f]);
  1741.               fprintf (FP, "%c", hexValue[pixel_index&0x0f]);
  1742. !             if (col%36 == 35)
  1743. !                fprintf (FP, "\n%s",
  1744. !                      (col==image_w-1 && row==image_h-1) ? "" : "   ");
  1745.            }
  1746.            if (col%36 != 0) fprintf (FP, "\n");
  1747. !          if (row != image_h-1 && (col%36) != 0) fprintf (FP, "   ");
  1748.         }
  1749.      }
  1750. *** copypaste.e.orig    Wed Jan  6 22:08:44 1993
  1751. --- copypaste.e    Wed Jan  6 22:08:45 1993
  1752. ***************
  1753. *** 24,28 ****
  1754.    * Copyright (C) 1990, 1991, 1992, William Cheng.
  1755.    *
  1756. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.e,v 2.6 1992/03/31 07:59:57 william Exp $
  1757.    */
  1758.   
  1759. --- 24,28 ----
  1760.    * Copyright (C) 1990, 1991, 1992, William Cheng.
  1761.    *
  1762. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/copypaste.e,v 2.7 1992/12/20 00:54:04 william Exp $
  1763.    */
  1764.   
  1765. ***************
  1766. *** 30,33 ****
  1767.   
  1768.   extern void    CopyToCutBuffer ();
  1769. ! extern void    PasteFromCutBuffer ();
  1770.   extern void    CleanUpCutBuffer ();
  1771. --- 30,33 ----
  1772.   
  1773.   extern void    CopyToCutBuffer ();
  1774. ! extern int    PasteFromCutBuffer ();
  1775.   extern void    CleanUpCutBuffer ();
  1776. *** drawing.e.orig    Wed Jan  6 22:08:47 1993
  1777. --- drawing.e    Wed Jan  6 22:08:48 1993
  1778. ***************
  1779. *** 23,29 ****
  1780.    * PERFORMANCE OF THIS SOFTWARE.
  1781.    *
  1782. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.e,v 2.9 1992/08/11 03:58:27 william Exp $
  1783.    */
  1784.   
  1785.   extern int    numRedrawBBox;
  1786.   extern int    numClipRecs;
  1787. --- 23,31 ----
  1788.    * PERFORMANCE OF THIS SOFTWARE.
  1789.    *
  1790. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/drawing.e,v 2.14 1992/12/21 00:51:44 william Exp $
  1791.    */
  1792.   
  1793. + extern int    intrCheckInterval;
  1794. + extern int    pasteInDrawTextMode;
  1795.   extern int    numRedrawBBox;
  1796.   extern int    numClipRecs;
  1797. ***************
  1798. *** 33,37 ****
  1799.   extern void    SetDefaultDrawWinClipRecs ();
  1800.   extern void    SetDefaultIconWinClipRecs ();
  1801. ! extern void    DrawObj ();
  1802.   extern void    DrawPaperBoundary ();
  1803.   extern void    RedrawAnArea ();
  1804. --- 35,43 ----
  1805.   extern void    SetDefaultDrawWinClipRecs ();
  1806.   extern void    SetDefaultIconWinClipRecs ();
  1807. ! extern void    ShowInterrupt ();
  1808. ! extern void    HideInterrupt ();
  1809. ! extern void    RedrawDummyWindow1 ();
  1810. ! extern int    CheckInterrupt ();
  1811. ! extern int    DrawObj ();
  1812.   extern void    DrawPaperBoundary ();
  1813.   extern void    RedrawAnArea ();
  1814. *** raster.e.orig    Wed Jan  6 22:08:52 1993
  1815. --- raster.e    Wed Jan  6 22:08:52 1993
  1816. ***************
  1817. *** 23,27 ****
  1818.    * PERFORMANCE OF THIS SOFTWARE.
  1819.    *
  1820. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/raster.e,v 2.24 1992/03/31 08:02:16 william Exp $
  1821.    */
  1822.   
  1823. --- 23,27 ----
  1824.    * PERFORMANCE OF THIS SOFTWARE.
  1825.    *
  1826. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/raster.e,v 2.25 1992/12/21 00:25:13 william Exp $
  1827.    */
  1828.   
  1829. ***************
  1830. *** 55,58 ****
  1831. --- 55,59 ----
  1832.   extern Pixmap    moveModePixmap[];
  1833.   extern Pixmap    editPixmap;
  1834. + extern Pixmap    intrPixmap;
  1835.   
  1836.   extern Pixmap    rotatePixmap[];
  1837. *** setup.e.orig    Wed Jan  6 22:08:55 1993
  1838. --- setup.e    Wed Jan  6 22:08:55 1993
  1839. ***************
  1840. *** 23,27 ****
  1841.    * PERFORMANCE OF THIS SOFTWARE.
  1842.    *
  1843. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/setup.e,v 2.13 1992/03/31 08:02:48 william Exp $
  1844.    */
  1845.   
  1846. --- 23,27 ----
  1847.    * PERFORMANCE OF THIS SOFTWARE.
  1848.    *
  1849. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/setup.e,v 2.14 1992/12/21 00:20:18 william Exp $
  1850.    */
  1851.   
  1852. ***************
  1853. *** 64,67 ****
  1854. --- 64,68 ----
  1855.   extern Window    iconWindow;
  1856.   extern Window    iconBaseWindow;
  1857. + extern Window    dummyWindow1, dummyWindow2;
  1858.   
  1859.   extern int    paperWidth;
  1860. *** patchlevel.h.orig    Wed Jan  6 22:08:58 1993
  1861. --- patchlevel.h    Wed Jan  6 22:08:59 1993
  1862. ***************
  1863. *** 23,28 ****
  1864.    * PERFORMANCE OF THIS SOFTWARE.
  1865.    *
  1866. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.29.1.4 1992/11/29 01:49:45 william Exp $
  1867.    */
  1868.   
  1869. ! #define TGIF_PATCHLEVEL 15
  1870. --- 23,28 ----
  1871.    * PERFORMANCE OF THIS SOFTWARE.
  1872.    *
  1873. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/patchlevel.h,v 2.29.1.5 1992/12/14 06:33:01 william Exp $
  1874.    */
  1875.   
  1876. ! #define TGIF_PATCHLEVEL 16
  1877. *** types.h.orig    Wed Jan  6 22:09:02 1993
  1878. --- types.h    Wed Jan  6 22:09:03 1993
  1879. ***************
  1880. *** 23,27 ****
  1881.    * PERFORMANCE OF THIS SOFTWARE.
  1882.    *
  1883. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/types.h,v 2.71 1992/08/08 08:27:29 william Exp $
  1884.    */
  1885.   
  1886. --- 23,27 ----
  1887.    * PERFORMANCE OF THIS SOFTWARE.
  1888.    *
  1889. !  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/types.h,v 2.71.1.1 1993/01/03 23:23:40 william Exp $
  1890.    */
  1891.   
  1892. ***************
  1893. *** 78,82 ****
  1894.      int            n;    /* number of points in the polyline */
  1895.      XPoint        * vlist;
  1896. -    XPoint        * rvlist; /* rotated vlist */
  1897.      int            sn;    /* number of points in the spline polyline */
  1898.      XPoint        * svlist;
  1899. --- 78,81 ----
  1900. ***************
  1901. *** 89,93 ****
  1902.      int            n;    /* number of points in the polygon */
  1903.      XPoint        * vlist;
  1904. -    XPoint        * rvlist; /* rotated vlist */
  1905.      int            sn;    /* number of points in the spline polygon */
  1906.      XPoint        * svlist;
  1907. --- 88,91 ----
  1908. ***************
  1909. *** 97,101 ****
  1910.   typedef struct BoxRec {
  1911.      int        fill, width, pen, dash;
  1912. -    XPoint    * rvlist; /* rotated vlist */
  1913.   } * BoxRecPtr;
  1914.   
  1915. --- 95,98 ----
  1916. ***************
  1917. *** 179,183 ****
  1918.   typedef struct RCBoxRec {
  1919.      int        fill, width, pen, dash, radius;
  1920. -    XPoint    * rvlist; /* rotated vlist */
  1921.   } * RCBoxRecPtr;
  1922.   
  1923. --- 176,179 ----
  1924. *** Makefile.noimake.orig    Wed Jan  6 22:09:06 1993
  1925. --- Makefile.noimake    Wed Jan  6 22:09:08 1993
  1926. ***************
  1927. *** 23,27 ****
  1928.   # PERFORMANCE OF THIS SOFTWARE.
  1929.   #
  1930. ! # @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Makefile.noimake,v 2.131.1.8 1992/11/29 07:09:55 william Exp $
  1931.   #
  1932.   
  1933. --- 23,27 ----
  1934.   # PERFORMANCE OF THIS SOFTWARE.
  1935.   #
  1936. ! # @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Makefile.noimake,v 2.131.1.12 1993/01/03 01:48:39 william Exp $
  1937.   #
  1938.   
  1939. ***************
  1940. *** 157,160 ****
  1941. --- 157,161 ----
  1942.       \
  1943.       xbm/rcbradius.xbm xbm/const_move.xbm xbm/unconst_move.xbm \
  1944. +     xbm/edit.xbm xbm/intr.xbm \
  1945.       \
  1946.       xbm/rotate_0.xbm xbm/rotate_90.xbm xbm/rotate_180.xbm xbm/rotate_270.xbm
  1947. ***************
  1948. *** 212,217 ****
  1949.           select.e setup.e text.e xpixmap.e
  1950.   copypaste.o:    const.h types.h \
  1951. !         auxtext.e box.e choice.e cmd.e color.e cursor.e dup.e file.e \
  1952. !         font.e move.e obj.e pattern.e select.e setup.e special.e text.e
  1953.   cursor.o:    const.h types.h $(CURSOR_BM) \
  1954.           choice.e color.e setup.e xbitmap.e
  1955. --- 213,219 ----
  1956.           select.e setup.e text.e xpixmap.e
  1957.   copypaste.o:    const.h types.h \
  1958. !         auxtext.e box.e choice.e cmd.e color.e cursor.e drawing.e \
  1959. !         dup.e file.e font.e move.e obj.e pattern.e select.e setup.e \
  1960. !         special.e text.e
  1961.   cursor.o:    const.h types.h $(CURSOR_BM) \
  1962.           choice.e color.e setup.e xbitmap.e
  1963. *** Imakefile.orig    Wed Jan  6 22:09:11 1993
  1964. --- Imakefile    Wed Jan  6 22:09:12 1993
  1965. ***************
  1966. *** 23,30 ****
  1967.   /**/# PERFORMANCE OF THIS SOFTWARE.
  1968.   /**/#
  1969. ! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.84.1.8 1992/12/07 00:27:40 william Exp $
  1970.   /**/#
  1971.   
  1972. ! TGIFVERSION    = 2.12-p15
  1973.   PROGRAMS    = tgif prtgif /**/#frontend11.o testdrive
  1974.   /**/#CDEBUGFLAGS= -g
  1975. --- 23,30 ----
  1976.   /**/# PERFORMANCE OF THIS SOFTWARE.
  1977.   /**/#
  1978. ! /**/# @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/Imakefile,v 2.84.1.9 1992/12/21 01:46:05 william Exp $
  1979.   /**/#
  1980.   
  1981. ! TGIFVERSION    = 2.12-p16
  1982.   PROGRAMS    = tgif prtgif /**/#frontend11.o testdrive
  1983.   /**/#CDEBUGFLAGS= -g
  1984. *** tgif.man.orig    Wed Jan  6 22:09:17 1993
  1985. --- tgif.man    Wed Jan  6 22:09:20 1993
  1986. ***************
  1987. *** 1,4 ****
  1988. ! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.man,v 2.132 1992/11/29 23:58:54 william Exp $
  1989. ! .TH TGIF n "Version 2.12-p15 and Above" "Tgif"
  1990.   .SH NAME
  1991.   \fItgif\fR \- Xlib based interactive 2-D drawing facility under X11.
  1992. --- 1,4 ----
  1993. ! .\"@(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.man,v 2.136 1992/12/22 05:36:07 william Exp $
  1994. ! .TH TGIF n "Version 2.12-p16 and Above" "Tgif"
  1995.   .SH NAME
  1996.   \fItgif\fR \- Xlib based interactive 2-D drawing facility under X11.
  1997. ***************
  1998. *** 423,426 ****
  1999. --- 423,437 ----
  2000.   units any more.
  2001.   .TP
  2002. + .I Interrupt Window
  2003. + .br
  2004. + This window is right below the Message Window and to the left of the
  2005. + horizontal ruler.  When the Tgif*IntrCheckInterval X default has a
  2006. + positive value, an interrupt icon is visible when the Canvas Window
  2007. + is being redrawn.  If the user clicks on this window when the
  2008. + interrupt icon is visible, tgif aborts the repainting of the objects.
  2009. + If this is done when a file is being opened (either through Open()
  2010. + or Push()), the drawing of objects is stopped, but the reading of
  2011. + the file continues (reading of the file is not aborted).
  2012. + .TP
  2013.   .I Popup Menus
  2014.   .br
  2015. ***************
  2016. *** 1251,1254 ****
  2017. --- 1262,1270 ----
  2018.   (which is 128/72).
  2019.   The default value is 1.
  2020. + .TP
  2021. + .I Tgif*IntrCheckInterval: NUMBER
  2022. + This specifies the number of objects drawn before tgif checks for
  2023. + interrupts.  If this is set to be 0 or less, interrupt is not allowed.
  2024. + The default value is 10.
  2025.   .TP
  2026.   .I Tgif*MaxColors: NUMBER
  2027. *** HISTORY.orig    Wed Jan  6 22:09:28 1993
  2028. --- HISTORY    Wed Jan  6 22:09:29 1993
  2029. ***************
  2030. *** 1,5 ****
  2031.   /*
  2032. !  *  @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.39 1992/12/07 00:58:38 william Exp $
  2033.    */
  2034.   -----------------------> tgif-2.12-p14 => tgif-2.12-p15 <-----------------------
  2035.   I've just put tgif-2.12-patch15 (15 patch for tgif-2.12) in the
  2036. --- 1,26 ----
  2037.   /*
  2038. !  *  @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/HISTORY,v 2.40 1993/01/04 01:06:09 william Exp $
  2039.    */
  2040. + -----------------------> tgif-2.12-p15 => tgif-2.12-p16 <-----------------------
  2041. + I've just put tgif-2.12-patch16 (16 patch for tgif-2.12) in the
  2042. + following places for anonymous ftp:
  2043. +     export.lcs.mit.edu:/contrib/tgif-2.12-patch16.Z
  2044. +     cs.ucla.edu:/pub/tgif/tgif-2.12-patch16.Z
  2045. + The patch is also posted to comp.sources.bugs.
  2046. + Please uncompress and then apply the patch with
  2047. + 'patch -p -N < tgif-2.12-patch16'.
  2048. + Here's a short list of added features/bug fixes.
  2049. + 1)  Allow the launch= attribute to be multiline.
  2050. + 2)  Make pasting work in text mode.  The default paste command is still
  2051. +     <Cntrl><Meta>y.
  2052. + 3)  Add user interrupt when redrawing.  Add a new X default,
  2053. +     Tgif*IntrCheckInterval to define the number of objects drawn before
  2054. +     checking for user interrupt.
  2055. + 4)  Fix some memory leaks.  Thanks to Mark Sterin <mark@FibHaifa.com> for
  2056. +     the fixes.
  2057.   -----------------------> tgif-2.12-p14 => tgif-2.12-p15 <-----------------------
  2058.   I've just put tgif-2.12-patch15 (15 patch for tgif-2.12) in the
  2059. *** descrip.mms.orig    Wed Jan  6 22:09:33 1993
  2060. --- descrip.mms    Wed Jan  6 22:09:34 1993
  2061. ***************
  2062. *** 6,10 ****
  2063.   ! $ DEFINE SYS SYS$LIBRARY
  2064.   !
  2065. ! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/descrip.mms,v 2.124.1.6 1992/11/29 07:09:55 william Exp $
  2066.   !
  2067.   
  2068. --- 6,10 ----
  2069.   ! $ DEFINE SYS SYS$LIBRARY
  2070.   !
  2071. ! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/descrip.mms,v 2.124.1.10 1993/01/03 01:49:13 william Exp $
  2072.   !
  2073.   
  2074. ***************
  2075. *** 132,135 ****
  2076. --- 132,136 ----
  2077.       -
  2078.       xbm/rcbradius.xbm,xbm/const_move.xbm,xbm/unconst_move.xbm,-
  2079. +     xbm/edit.xbm,xbm/intr.xbm,-
  2080.       -
  2081.       xbm/rotate_0.xbm,xbm/rotate_90.xbm,xbm/rotate_180.xbm,xbm/rotate_270.xbm
  2082. ***************
  2083. *** 186,191 ****
  2084.           select.e,setup.e,text.e,xpixmap.e
  2085.   copypaste.obj depends_on copypaste.c,    const.h,types.h,-
  2086. !         auxtext.e,box.e,choice.e,cmd.e,color.e,cursor.e,dup.e,file.e,-
  2087. !         font.e,move.e,obj.e,pattern.e,select.e,setup.e,special.e,text.e
  2088.   cursor.obj depends_on cursor.c,        const.h,types.h,$(CURSOR_BM),-
  2089.           choice.e,color.e,setup.e,xbitmap.e
  2090. --- 187,193 ----
  2091.           select.e,setup.e,text.e,xpixmap.e
  2092.   copypaste.obj depends_on copypaste.c,    const.h,types.h,-
  2093. !         auxtext.e,box.e,choice.e,cmd.e,color.e,cursor.e,drawing.e,-
  2094. !         dup.e,file.e,font.e,move.e,obj.e,pattern.e,select.e,setup.e,-
  2095. !         special.e,text.e
  2096.   cursor.obj depends_on cursor.c,        const.h,types.h,$(CURSOR_BM),-
  2097.           choice.e,color.e,setup.e,xbitmap.e
  2098. *** xbm/intr.xbm.orig    Wed Jan  6 22:09:36 1993
  2099. --- xbm/intr.xbm    Wed Jan  6 22:09:37 1993
  2100. ***************
  2101. *** 0 ****
  2102. --- 1,11 ----
  2103. + /*
  2104. +  * @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/xbm/RCS/intr.xbm,v 2.0 1992/12/21 02:19:11 william Exp $
  2105. +  */
  2106. + #define intr_width 16
  2107. + #define intr_height 16
  2108. + #define intr_x_hot 0
  2109. + #define intr_y_hot 0
  2110. + static char intr_bits[] = {
  2111. +    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xe0,
  2112. +    0x00, 0xf8, 0x00, 0xf0, 0xc0, 0xf9, 0xe0, 0x99, 0xe0, 0x0d, 0xb0, 0x0f,
  2113. +    0x98, 0x07, 0x9c, 0x03, 0x0c, 0x00, 0x00, 0x00};
  2114. *** tgif.Xdefaults.orig    Wed Jan  6 22:09:39 1993
  2115. --- tgif.Xdefaults    Wed Jan  6 22:09:39 1993
  2116. ***************
  2117. *** 3,7 ****
  2118.   ! suitable for appending to any .Xdefaults file.
  2119.   !
  2120. ! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.Xdefaults,v 2.30 1992/11/24 03:51:15 william Exp $
  2121.   !
  2122.   Tgif*Geometry:            640x512-40+20
  2123. --- 3,7 ----
  2124.   ! suitable for appending to any .Xdefaults file.
  2125.   !
  2126. ! ! @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/tgif.Xdefaults,v 2.32 1992/12/21 01:36:41 william Exp $
  2127.   !
  2128.   Tgif*Geometry:            640x512-40+20
  2129. ***************
  2130. *** 86,89 ****
  2131. --- 86,90 ----
  2132.   Tgif*DefaultEPSScaling:        1
  2133.   !Tgif*DefaultEPSScaling:    1.7778
  2134. + Tgif*IntrCheckInterval:        10
  2135.   !
  2136.   Tgif*MaxColors:            11
  2137. *** launch-demo-1.obj.orig    Wed Jan  6 22:09:41 1993
  2138. --- launch-demo-1.obj    Wed Jan  6 22:09:42 1993
  2139. ***************
  2140. *** 1,6 ****
  2141. ! %TGIF 2.12-p15
  2142.   state(0,27,100,0,0,0,8,1,0,2,0,0,0,1,0,1,0,0,0,3,1,0,0,10,0,0,1,1,0,16,1).
  2143.   %
  2144. ! % @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/launch-demo-1.obj,v 2.0 1992/12/07 00:24:47 william Exp $
  2145.   % %W%
  2146.   %
  2147. --- 1,6 ----
  2148. ! %TGIF 2.12-p16
  2149.   state(0,27,100,0,0,0,8,1,0,2,0,0,0,1,0,1,0,0,0,3,1,0,0,10,0,0,1,1,0,16,1).
  2150.   %
  2151. ! % @(#)$Header: /amnt/kona/tangram/u/william/X11/TGIF2/RCS/launch-demo-1.obj,v 2.1 1993/01/04 02:28:39 william Exp $
  2152.   % %W%
  2153.   %
  2154. ***************
  2155. *** 34,46 ****
  2156.   ]).
  2157.   group([
  2158. ! text('green',88,320,0,0,3,7,0,0,1,292,166,648,1,18,4,0,2,0,0,[
  2159.       "To get a fancier look.  Select an",
  2160.       "object and type <Meta>m.",
  2161. !     "Then use left button to get a popup",
  2162. !     "menu; select an attribute; click right",
  2163. !     "button to hide the attribute or click",
  2164. !     "the middle button to hide the attribute",
  2165.       "name."]),
  2166. ! text('green',64,320,0,0,3,1,0,0,1,16,22,649,1,18,4,0,0,0,0,[
  2167.       "3)"])
  2168.   ],
  2169. --- 34,47 ----
  2170.   ]).
  2171.   group([
  2172. ! text('green',88,312,0,0,3,8,0,0,1,246,190,648,1,18,4,0,2,0,0,[
  2173.       "To get a fancier look.  Select an",
  2174.       "object and type <Meta>m.",
  2175. !     "Then use left button to get a",
  2176. !     "popup menu; select an attribute;",
  2177. !     "click right button to hide the",
  2178. !     "attribute or click the middle",
  2179. !     "button to hide the attribute",
  2180.       "name."]),
  2181. ! text('green',64,312,0,0,3,1,0,0,1,16,22,649,1,18,4,0,0,0,0,[
  2182.       "3)"])
  2183.   ],
  2184. ***************
  2185. *** 84,86 ****
  2186. --- 85,132 ----
  2187.   text('blue',512,128,2,0,5,1,1,0,1,166,29,54,0,24,5,0,0,0,0,[
  2188.       "name=example"]))
  2189. + ]).
  2190. + group([
  2191. + polygon('cyan',5,[
  2192. +     502,448,493,480,547,480,556,448,502,448],2,1,0,0,1465,0,0,0,[
  2193. + ]),
  2194. + polygon('cyan',5,[
  2195. +     493,480,484,512,538,512,547,480,493,480],2,1,0,0,1466,0,0,0,[
  2196. + ]),
  2197. + poly('cyan',2,[
  2198. +     502,448,556,448],0,1,1,1467,0,0,0,0,8,3,0,[
  2199. + ]),
  2200. + poly('cyan',2,[
  2201. +     484,512,538,512],0,1,1,1468,0,0,0,0,8,3,0,[
  2202. + ]),
  2203. + poly('cyan',3,[
  2204. +     502,448,484,464,493,480],0,1,1,1469,1,2,0,0,8,3,0,[
  2205. + ]),
  2206. + poly('cyan',3,[
  2207. +     484,512,502,496,493,480],0,1,1,1470,1,2,0,0,8,3,0,[
  2208. + ]),
  2209. + poly('cyan',3,[
  2210. +     556,448,538,464,547,480],0,1,1,1471,1,2,0,0,8,3,0,[
  2211. + ]),
  2212. + poly('cyan',3,[
  2213. +     538,512,556,496,547,480],0,1,1,1472,1,2,0,0,8,3,0,[
  2214. + ])
  2215. + ],
  2216. + 1464,0,[
  2217. + attr("page=", "1", 1, 1, 0,
  2218. + text('magenta',520,452,2,2,5,1,1,0,1,82,29,1473,0,24,5,0,0,0,0,[
  2219. +     "page=1"])),
  2220. + attr("dir=", "/u/tangram/u/william/X11/TGIF2", 1, 1, 0,
  2221. + text('yellow',520,512,0,0,3,1,1,0,1,289,22,1474,1,18,4,0,0,0,0,[
  2222. +     "dir=/u/tangram/u/william/X11/TGIF2"])),
  2223. + attr("launch=", "cd $(dir);", 1, 1, 0,
  2224. + text('yellow',512,384,0,0,3,3,1,0,1,370,66,1475,1,18,4,0,0,0,0,[
  2225. +     "launch=cd $(dir);",
  2226. +     "dvips -N -n 1 -p $(page) $(name) > $(tmpfile);",
  2227. +     "xterm -geom 40x8+200+400 -e gs $(tmpfile) &"])),
  2228. + attr("name=", "example", 1, 1, 0,
  2229. + text('green',524,476,2,0,5,1,1,0,1,166,29,1476,0,24,5,0,0,0,0,[
  2230. +     "name=example"])),
  2231. + attr("tmpfile=", "/tmp/tgif.ps", 1, 1, 0,
  2232. + text('yellow',520,536,0,0,3,1,1,0,1,151,22,1551,1,18,4,0,0,0,0,[
  2233. +     "tmpfile=/tmp/tgif.ps"]))
  2234.   ]).
  2235. ---------------------------------> cut here <---------------------------------
  2236. -- 
  2237. Bill Cheng // UCLA Computer Science Department // (310) 645-8328
  2238. 3564-C Boelter Hall // Los Angeles, California 90024 // USA
  2239. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  2240.