home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume8 / tgif / patch1.01 next >
Internet Message Format  |  1990-07-08  |  61KB

  1. Path: uunet!cs.utexas.edu!sun-barr!newstop!sun!CS.UCLA.EDU
  2. From: william@CS.UCLA.EDU (William Cheng)
  3. Newsgroups: comp.sources.x
  4. Subject: v08i046: tgif 1.9, Patch1, Part01/03
  5. Message-ID: <138562@sun.Eng.Sun.COM>
  6. Date: 9 Jul 90 07:21:39 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 2032
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: william@CS.UCLA.EDU (William Cheng)
  12. Posting-number: Volume 8, Issue 46
  13. Archive-name: tgif/patch2.01
  14. Patch-To: tgif: Volume 7, Issue 56-76
  15.  
  16. [ This is patch #1 because it is to be applied to the last full posting
  17. of this software in Volume 7 --dan ]
  18.  
  19. This patch takes tgif from version 1.2 to 1.9.  The most recent version
  20. is available for anonymous ftp at the following places.
  21.  
  22.     expo.lcs.mit.edu    contrib/tgif-1.9.tar.Z
  23.     rye.cs.ucla.edu        pub/tgif-1.9.tar.Z
  24.  
  25. --Bill
  26. ---------------------------------> cut here <---------------------------------
  27. *** align.c.orig    Wed Jun 27 13:25:05 1990
  28. --- align.c    Wed Jun 27 13:25:06 1990
  29. ***************
  30. *** 6,10 ****
  31.   #ifndef lint
  32.   static char RCSid[] =
  33. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/align.c,v 1.1 90/04/01 22:15:59 william Exp $";
  34.   #endif
  35.   
  36. --- 6,10 ----
  37.   #ifndef lint
  38.   static char RCSid[] =
  39. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/align.c,v 1.2 90/06/26 00:05:49 william Exp $";
  40.   #endif
  41.   
  42. ***************
  43. *** 79,83 ****
  44.            selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  45.      HighLightForward ();
  46. !    fileModified = TRUE;
  47.      justDupped = TRUE;
  48.   }
  49. --- 79,83 ----
  50.            selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  51.      HighLightForward ();
  52. !    SetFileModified (TRUE);
  53.      justDupped = TRUE;
  54.   }
  55. ***************
  56. *** 124,128 ****
  57.            selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  58.      HighLightForward ();
  59. !    fileModified = TRUE;
  60.      justDupped = TRUE;
  61.   }
  62. --- 124,128 ----
  63.            selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  64.      HighLightForward ();
  65. !    SetFileModified (TRUE);
  66.      justDupped = TRUE;
  67.   }
  68. *** attr.c.orig    Wed Jun 27 13:25:13 1990
  69. --- attr.c    Wed Jun 27 13:25:15 1990
  70. ***************
  71. *** 6,10 ****
  72.   #ifndef lint
  73.   static char RCSid[] =
  74. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/attr.c,v 1.2 90/05/07 15:26:32 william Exp $";
  75.   #endif
  76.   
  77. --- 6,10 ----
  78.   #ifndef lint
  79.   static char RCSid[] =
  80. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/attr.c,v 1.4 90/06/26 00:03:55 william Exp $";
  81.   #endif
  82.   
  83. ***************
  84. *** 107,111 ****
  85.   static
  86.   short ParseAttrStr(Str, name, s)
  87. !    char    Str[80], name[80], s[80];
  88.   {
  89.      char    * eq_ptr, * str_ptr, * ptr;
  90. --- 107,111 ----
  91.   static
  92.   short ParseAttrStr(Str, name, s)
  93. !    char    * Str, * name, * s;
  94.   {
  95.      char    * eq_ptr, * str_ptr, * ptr;
  96. ***************
  97. *** 147,151 ****
  98.      /*   and its ObjRec after an attribute was edited.        */
  99.   {
  100. !    char    s[80], name[80];
  101.   
  102.      if (AttrPtr->nameshown)
  103. --- 147,151 ----
  104.      /*   and its ObjRec after an attribute was edited.        */
  105.   {
  106. !    char    s[MAXSTRING+1], name[MAXSTRING+1];
  107.   
  108.      if (AttrPtr->nameshown)
  109. ***************
  110. *** 305,309 ****
  111.      struct TextRec    * text_ptr;
  112.      int            found = FALSE;
  113. !    char            name[80], value[80];
  114.   
  115.      text_ptr = TextObjPtr->detail.t; 
  116. --- 305,309 ----
  117.      struct TextRec    * text_ptr;
  118.      int            found = FALSE;
  119. !    char            name[MAXSTRING+1], value[MAXSTRING+1];
  120.   
  121.      text_ptr = TextObjPtr->detail.t; 
  122. ***************
  123. *** 501,505 ****
  124.   {
  125.      struct ObjRec    * TextObj;
  126. !    char            inbuf[255], * s, name[80], value[80];
  127.      int            len, shown, nameshown, inherited;
  128.    
  129. --- 501,506 ----
  130.   {
  131.      struct ObjRec    * TextObj;
  132. !    char            inbuf[MAXSTRING+1], * s;
  133. !    char            name[MAXSTRING+1], value[MAXSTRING+1];
  134.      int            len, shown, nameshown, inherited;
  135.    
  136. ***************
  137. *** 550,554 ****
  138.      struct AttrRec    * attr_ptr;
  139.      int            has_attr, picture_changed = FALSE, obj_changed;
  140. !    char            * s;
  141.   
  142.      for (sel_ptr = topSel; sel_ptr != NULL; sel_ptr = sel_ptr->next)
  143. --- 551,556 ----
  144.      struct AttrRec    * attr_ptr;
  145.      int            has_attr, picture_changed = FALSE, obj_changed;
  146. !    int            len1, len2;
  147. !    char            * s, msg[80];
  148.   
  149.      for (sel_ptr = topSel; sel_ptr != NULL; sel_ptr = sel_ptr->next)
  150. ***************
  151. *** 573,576 ****
  152. --- 575,589 ----
  153.                  s = attr_ptr->obj->detail.t->first->s;
  154.                  strcpy (s, attr_ptr->name);
  155. +                len1 = strlen (attr_ptr->name);
  156. +                len2 = strlen (attr_ptr->s);
  157. +                if (len1+len2 >= MAXSTRING)
  158. +                {
  159. +                   sprintf (msg, "String length exceeds %1d.  String truncated.",
  160. +                         MAXSTRING);
  161. +                   Msg (msg);
  162. +                   attr_ptr->s[MAXSTRING-len1] = '\0';
  163. +                }
  164.                  strcat (s, attr_ptr->s);
  165.                  attr_ptr->nameshown = TRUE;
  166. ***************
  167. *** 594,598 ****
  168.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  169.         HighLightForward ();
  170. !       fileModified = TRUE;
  171.      }
  172.   }
  173. --- 607,611 ----
  174.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  175.         HighLightForward ();
  176. !       SetFileModified (TRUE);
  177.      }
  178.   }
  179. ***************
  180. *** 655,659 ****
  181.               sel_rbx+(1<<zoomScale), sel_rby+(1<<zoomScale));
  182.         HighLightForward ();
  183. !       fileModified = TRUE;
  184.      }
  185.   }
  186. --- 668,672 ----
  187.               sel_rbx+(1<<zoomScale), sel_rby+(1<<zoomScale));
  188.         HighLightForward ();
  189. !       SetFileModified (TRUE);
  190.      }
  191.   }
  192. ***************
  193. *** 665,669 ****
  194.      struct AttrRec    * attr_ptr = ObjPtr->detail.r->fattr;
  195.      struct SelRec    * new_sel_ptr;
  196. !    char            * s;
  197.   
  198.      for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
  199. --- 678,683 ----
  200.      struct AttrRec    * attr_ptr = ObjPtr->detail.r->fattr;
  201.      struct SelRec    * new_sel_ptr;
  202. !    int            len1, len2;
  203. !    char            * s, msg[80];
  204.   
  205.      for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
  206. ***************
  207. *** 673,676 ****
  208. --- 687,701 ----
  209.            s = attr_ptr->obj->detail.t->first->s;
  210.            strcpy (s, attr_ptr->name);
  211. +          len1 = strlen (attr_ptr->name);
  212. +          len2 = strlen (attr_ptr->s);
  213. +          if (len1+len2 >= MAXSTRING)
  214. +          {
  215. +             sprintf (msg, "String length exceeds %1d.  String truncated.",
  216. +                   MAXSTRING);
  217. +             Msg (msg);
  218. +             attr_ptr->s[MAXSTRING-len1] = '\0';
  219. +          }
  220.            strcat (s, attr_ptr->s);
  221.            UpdTextBBox (attr_ptr->obj);
  222. ***************
  223. *** 768,772 ****
  224.         RedrawAnArea (botObj, selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  225.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  226. !       fileModified = TRUE;
  227.      }
  228.      HighLightForward ();
  229. --- 793,797 ----
  230.         RedrawAnArea (botObj, selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  231.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  232. !       SetFileModified (TRUE);
  233.      }
  234.      HighLightForward ();
  235. ***************
  236. *** 777,783 ****
  237. --- 802,822 ----
  238.      /* Update the text object's string value associated with AttrPtr */
  239.   {
  240. +    int    len1, len2;
  241. +    char    msg[80];
  242.      if (AttrPtr->nameshown)
  243.      {
  244.         strcpy (AttrPtr->obj->detail.t->first->s, AttrPtr->name);
  245. +       len1 = strlen (AttrPtr->name);
  246. +       len2 = strlen (AttrPtr->s);
  247. +       if (len1+len2 >= MAXSTRING)
  248. +       {
  249. +          sprintf (msg, "String length exceeds %1d.  String truncated.",
  250. +                MAXSTRING);
  251. +          Msg (msg);
  252. +          AttrPtr->s[MAXSTRING-len1] = '\0';
  253. +       }
  254.         strcat (AttrPtr->obj->detail.t->first->s, AttrPtr->s);
  255.      }
  256. ***************
  257. *** 975,979 ****
  258.      int            picture_changed, sel_ltx, sel_lty, sel_rbx, sel_rby;
  259.      int            * fore_colors, * pixel_ptr, * valid, * flag_ptr;
  260. !    char            * * attrStrs, * s, buf[256];
  261.      unsigned int        button;
  262.   
  263. --- 1014,1019 ----
  264.      int            picture_changed, sel_ltx, sel_lty, sel_rbx, sel_rby;
  265.      int            * fore_colors, * pixel_ptr, * valid, * flag_ptr;
  266. !    int            len1, len2;
  267. !    char            * * attrStrs, * s, buf[256], msg[80];
  268.      unsigned int        button;
  269.   
  270. ***************
  271. *** 1006,1012 ****
  272.      for (i = 0; i < num_attrs; i++, attr_ptr1 = attr_ptr1->next)
  273.      {
  274. !       s = (char *) calloc (80, sizeof(char));
  275.         attrStrs[i] = s;
  276.         strcpy (s, attr_ptr1->name);
  277.         strcat (s, attr_ptr1->s);
  278.         *pixel_ptr++ = colorPixels[attr_ptr1->obj->color];
  279. --- 1046,1063 ----
  280.      for (i = 0; i < num_attrs; i++, attr_ptr1 = attr_ptr1->next)
  281.      {
  282. !       s = (char *) calloc (MAXSTRING, sizeof(char));
  283.         attrStrs[i] = s;
  284.         strcpy (s, attr_ptr1->name);
  285. +       len1 = strlen (attr_ptr1->name);
  286. +       len2 = strlen (attr_ptr1->s);
  287. +       if (len1+len2 >= MAXSTRING)
  288. +       {
  289. +          sprintf (msg, "String length exceeds %1d.  String truncated.",
  290. +                MAXSTRING);
  291. +          Msg (msg);
  292. +          attr_ptr1->s[MAXSTRING-len1] = '\0';
  293. +       }
  294.         strcat (s, attr_ptr1->s);
  295.         *pixel_ptr++ = colorPixels[attr_ptr1->obj->color];
  296. ***************
  297. *** 1035,1039 ****
  298.                     selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  299.                     selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  300. !             fileModified = TRUE;
  301.               HighLightForward ();
  302.            }
  303. --- 1086,1090 ----
  304.                     selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  305.                     selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  306. !             SetFileModified (TRUE);
  307.               HighLightForward ();
  308.            }
  309. ***************
  310. *** 1049,1053 ****
  311.                     selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  312.                     selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  313. !             fileModified = TRUE;
  314.               HighLightForward ();
  315.            }
  316. --- 1100,1104 ----
  317.                     selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  318.                     selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  319. !             SetFileModified (TRUE);
  320.               HighLightForward ();
  321.            }
  322. *** box.c.orig    Wed Jun 27 13:25:22 1990
  323. --- box.c    Wed Jun 27 13:25:24 1990
  324. ***************
  325. *** 6,10 ****
  326.   #ifndef lint
  327.   static char RCSid[] =
  328. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/box.c,v 1.2 90/05/16 08:30:24 william Exp $";
  329.   #endif
  330.   
  331. --- 6,10 ----
  332.   #ifndef lint
  333.   static char RCSid[] =
  334. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/box.c,v 1.4 90/06/26 00:04:27 william Exp $";
  335.   #endif
  336.   
  337. ***************
  338. *** 177,181 ****
  339.      if (fill != 0)
  340.      {
  341. !       values.foreground = (fill == 2) ? myBlackPixel : pixel;
  342.         values.function = GXcopy;
  343.         values.fill_style = FillOpaqueStippled;
  344. --- 177,181 ----
  345.      if (fill != 0)
  346.      {
  347. !       values.foreground = (fill == 2) ? myBgPixel : pixel;
  348.         values.function = GXcopy;
  349.         values.fill_style = FillOpaqueStippled;
  350. ***************
  351. *** 188,192 ****
  352.      if (pen != 0)
  353.      {
  354. !       values.foreground = (pen == 2) ? myBlackPixel : pixel;
  355.         values.function = GXcopy;
  356.         values.fill_style = FillOpaqueStippled;
  357. --- 188,192 ----
  358.      if (pen != 0)
  359.      {
  360. !       values.foreground = (pen == 2) ? myBgPixel : pixel;
  361.         values.function = GXcopy;
  362.         values.fill_style = FillOpaqueStippled;
  363. ***************
  364. *** 310,314 ****
  365.         DrawBoxObj (drawWindow, drawOrigX, drawOrigY, topObj);
  366.         boxDrawn = TRUE;
  367. !       fileModified = TRUE;
  368.      }
  369.   }
  370. --- 310,314 ----
  371.         DrawBoxObj (drawWindow, drawOrigX, drawOrigY, topObj);
  372.         boxDrawn = TRUE;
  373. !       SetFileModified (TRUE);
  374.      }
  375.   }
  376. *** button.c.orig    Wed Jun 27 13:25:32 1990
  377. --- button.c    Wed Jun 27 13:25:33 1990
  378. ***************
  379. *** 6,10 ****
  380.   #ifndef lint
  381.   static char RCSid[] =
  382. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/button.c,v 1.1 90/04/01 22:16:04 william Exp $";
  383.   #endif
  384.   
  385. --- 6,10 ----
  386.   #ifndef lint
  387.   static char RCSid[] =
  388. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/button.c,v 1.5 90/05/22 16:57:56 william Exp $";
  389.   #endif
  390.   
  391. ***************
  392. *** 114,118 ****
  393.   
  394.      if ((confirm_win = XCreateSimpleWindow (mainDisplay, rootWindow,
  395. !          win_x, win_y, w, h, brdrW, myWhitePixel, myBlackPixel)) == 0)
  396.      { printf ("Could not create yes-no-okay window!\n"); exit (-1); }
  397.   
  398. --- 114,118 ----
  399.   
  400.      if ((confirm_win = XCreateSimpleWindow (mainDisplay, rootWindow,
  401. !          win_x, win_y, w, h, brdrW, myBorderPixel, myBgPixel)) == 0)
  402.      { printf ("Could not create yes-no-okay window!\n"); exit (-1); }
  403.   
  404. ***************
  405. *** 130,133 ****
  406. --- 130,134 ----
  407.         if (input.type == Expose)
  408.         {
  409. +          XDrawRectangle (mainDisplay, confirm_win, defaultGC, 0, 0, w-1, h-1);
  410.            XDrawString (mainDisplay, confirm_win, defaultGC, str_start,
  411.                  defaultFontHeight+top, Str, strlen(Str));
  412. *** choice.c.orig    Wed Jun 27 13:25:39 1990
  413. --- choice.c    Wed Jun 27 13:25:40 1990
  414. ***************
  415. *** 6,10 ****
  416.   #ifndef lint
  417.   static char RCSid[] =
  418. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.c,v 1.2 90/05/07 15:15:04 william Exp $";
  419.   #endif
  420.   
  421. --- 6,10 ----
  422.   #ifndef lint
  423.   static char RCSid[] =
  424. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/choice.c,v 1.5 90/06/26 15:22:27 william Exp $";
  425.   #endif
  426.   
  427. ***************
  428. *** 39,44 ****
  429.      XGCValues    values;
  430.   
  431. !    values.foreground = myWhitePixel;
  432. !    values.background = myBlackPixel;
  433.      values.font = defaultFontPtr->fid;
  434.      choiceGC = XCreateGC (mainDisplay, choiceWindow,
  435. --- 39,44 ----
  436.      XGCValues    values;
  437.   
  438. !    values.foreground = 1;
  439. !    values.background = 0;
  440.      values.font = defaultFontPtr->fid;
  441.      choiceGC = XCreateGC (mainDisplay, choiceWindow,
  442. ***************
  443. *** 107,110 ****
  444. --- 107,111 ----
  445.      XRectangle    recs[1];
  446.      XImage    * image;
  447. +    XGCValues    values;
  448.   
  449.      recs[0].x = 2*choiceImageW;
  450. ***************
  451. *** 159,163 ****
  452. --- 160,173 ----
  453.      {
  454.         XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  455. +       values.foreground = myFgPixel;
  456. +       values.background = myBgPixel;
  457. +       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  458.         XDrawString (mainDisplay, choiceWindow, choiceGC, x, y, "W", 1);
  459. +       values.foreground = 1;
  460. +       values.background = 0;
  461. +       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  462.      }
  463.      else
  464. ***************
  465. *** 168,178 ****
  466.               XYPixmap);
  467.         XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  468.         saved_x = x;
  469.         saved_y = y;
  470.         for (i = 0; i < w; i++)
  471. -       {
  472.            for (j = 0; j < h; j++)
  473. !          {
  474. !             if (XGetPixel (image, i, j) == 0)
  475.               {
  476.                  switch (curRotate)
  477. --- 178,191 ----
  478.               XYPixmap);
  479.         XSetClipRectangles (mainDisplay, choiceGC, 0, 0, recs, 1, YXBanded);
  480. +       values.foreground = myFgPixel;
  481. +       values.background = myBgPixel;
  482. +       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  483.         saved_x = x;
  484.         saved_y = y;
  485.         for (i = 0; i < w; i++)
  486.            for (j = 0; j < h; j++)
  487. !             if (XGetPixel (image, i, j) == 1)
  488.               {
  489.                  switch (curRotate)
  490. ***************
  491. *** 183,191 ****
  492.                  }
  493.   /*             XDrawPoint (mainDisplay, choiceWindow, defaultGC, x, y); */
  494. !                /* Hack to run on RTs -- stupid IBM */
  495. !                XDrawLine (mainDisplay, choiceWindow, defaultGC, x, y, x, y);
  496.               }
  497. !          }
  498. !       }
  499.      }
  500.   
  501. --- 196,206 ----
  502.                  }
  503.   /*             XDrawPoint (mainDisplay, choiceWindow, defaultGC, x, y); */
  504. ! /*                Hack to run on RTs -- crash server on RTs             */
  505. !                XDrawLine (mainDisplay,choiceWindow,defaultGC,x,y,x,y);
  506.               }
  507. !       values.foreground = 1;
  508. !       values.background = 0;
  509. !       XChangeGC (mainDisplay, choiceGC, GCForeground | GCBackground, &values);
  510.      }
  511.   
  512. ***************
  513. *** 229,234 ****
  514.      XGCValues    values;
  515.   
  516. !    values.foreground = myWhitePixel;
  517. !    values.background = myBlackPixel;
  518.      values.function = GXcopy;
  519.      values.fill_style = FillOpaqueStippled;
  520. --- 244,249 ----
  521.      XGCValues    values;
  522.   
  523. !    values.foreground = myFgPixel;
  524. !    values.background = myBgPixel;
  525.      values.function = GXcopy;
  526.      values.fill_style = FillOpaqueStippled;
  527. ***************
  528. *** 246,251 ****
  529.      XGCValues    values;
  530.   
  531. !    values.foreground = myWhitePixel;
  532. !    values.background = myBlackPixel;
  533.      values.function = GXcopy;
  534.      values.fill_style = FillOpaqueStippled;
  535. --- 261,266 ----
  536.      XGCValues    values;
  537.   
  538. !    values.foreground = myFgPixel;
  539. !    values.background = myBgPixel;
  540.      values.function = GXcopy;
  541.      values.fill_style = FillOpaqueStippled;
  542. *** color.c.orig    Wed Jun 27 13:25:45 1990
  543. --- color.c    Wed Jun 27 13:25:46 1990
  544. ***************
  545. *** 6,10 ****
  546.   #ifndef lint
  547.   static char RCSid[] =
  548. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.c,v 1.6 90/05/17 08:21:55 william Exp $";
  549.   #endif
  550.   
  551. --- 6,10 ----
  552.   #ifndef lint
  553.   static char RCSid[] =
  554. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/color.c,v 1.9 90/06/26 00:04:37 william Exp $";
  555.   #endif
  556.   
  557. ***************
  558. *** 41,45 ****
  559.      register int    i, * fore_pixels, pixel, * valid;
  560.   
  561. !    pixel = myWhitePixel;
  562.      *ForePixels = fore_pixels = (int *) calloc (Entries, sizeof(int));
  563.      *Valid = valid = (int *) calloc (Entries, sizeof(int));
  564. --- 41,45 ----
  565.      register int    i, * fore_pixels, pixel, * valid;
  566.   
  567. !    pixel = myFgPixel;
  568.      *ForePixels = fore_pixels = (int *) calloc (Entries, sizeof(int));
  569.      *Valid = valid = (int *) calloc (Entries, sizeof(int));
  570. ***************
  571. *** 74,109 ****
  572.      register int    i;
  573.      XColor    color, exact_def;
  574. !    char        buf[80], * c_ptr;
  575.      int        num, color_in_x_default = FALSE;
  576. !    int        black_allocated = FALSE, white_allocated = FALSE;
  577.   
  578. !    if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "MaxColors")) != NULL)
  579.      {
  580. !       color_in_x_default = TRUE;
  581. !       maxColors = atoi (c_ptr);
  582. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "DefaultColorIndex")) !=
  583. !             NULL)
  584.         {
  585. !          num = atoi (c_ptr);
  586. !          if (num < maxColors)
  587. !             defaultColorIndex = num;
  588. !          else
  589.            {
  590. !             printf ("Warning:  DefaultColorIndex >= MaxColors, ");
  591. !             printf ("Use 0 for DefaultColorIndex\n");
  592. !             defaultColorIndex = 0;
  593.            }
  594.         }
  595.         else
  596. !          defaultColorIndex = 0;
  597.      }
  598.      else
  599.      {
  600. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "DefaultColorIndex")) !=
  601. !             NULL)
  602.         {
  603. !          num = atoi (c_ptr);
  604. !          if (num < maxColors) defaultColorIndex = num;
  605.         }
  606.      }
  607.   
  608. --- 74,143 ----
  609.      register int    i;
  610.      XColor    color, exact_def;
  611. !    char        buf[80], * c_ptr, fg_color[80], bg_color[80], brdr_color[80];
  612.      int        num, color_in_x_default = FALSE;
  613. !    int        bg_allocated=FALSE, fg_allocated=FALSE, brdr_allocated=FALSE;
  614.   
  615. !    if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "ReverseVideo")) != NULL)
  616. !       reverseVideo = (strcmp (c_ptr, "on") == 0);
  617. !    if (colorDisplay)
  618.      {
  619. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "Foreground")) != NULL)
  620. !          strcpy (fg_color, c_ptr);
  621. !       else
  622. !          strcpy (fg_color, "white");
  623. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "Background")) != NULL)
  624. !          strcpy (bg_color, c_ptr);
  625. !       else
  626. !          strcpy (bg_color, "black");
  627. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "BorderColor")) != NULL)
  628. !          strcpy (brdr_color, c_ptr);
  629. !       else
  630. !          strcpy (fg_color, "white");
  631. !       if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "MaxColors")) != NULL)
  632.         {
  633. !          color_in_x_default = TRUE;
  634. !          maxColors = atoi (c_ptr);
  635. !          if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "DefaultColorIndex"))
  636. !                != NULL)
  637.            {
  638. !             num = atoi (c_ptr);
  639. !             if (num < maxColors)
  640. !                defaultColorIndex = num;
  641. !             else
  642. !             {
  643. !                printf ("Warning:  DefaultColorIndex >= MaxColors, ");
  644. !                printf ("Use 0 for DefaultColorIndex\n");
  645. !                defaultColorIndex = 0;
  646. !             }
  647.            }
  648. +          else
  649. +             defaultColorIndex = 0;
  650.         }
  651.         else
  652. !       {
  653. !          if ((c_ptr = XGetDefault (mainDisplay, TOOL_NAME, "DefaultColorIndex"))
  654. !                != NULL)
  655. !          {
  656. !             num = atoi (c_ptr);
  657. !             if (num < maxColors) defaultColorIndex = num;
  658. !          }
  659. !       }
  660.      }
  661.      else
  662.      {
  663. !       if (reverseVideo)
  664.         {
  665. !          strcpy (fg_color, "white");
  666. !          strcpy (bg_color, "black");
  667. !          strcpy (brdr_color, "white");
  668.         }
  669. +       else
  670. +       {
  671. +          strcpy (fg_color, "black");
  672. +          strcpy (bg_color, "white");
  673. +          strcpy (brdr_color, "black");
  674. +       }
  675.      }
  676.   
  677. ***************
  678. *** 143,185 ****
  679.            colorPixels[i] = color.pixel;
  680.      
  681. !          if (strcmp (colorMenuItems[i], "white") == 0)
  682.            {
  683. !             colorPixels[i] = myWhitePixel = color.pixel;
  684. !             white_allocated = TRUE;
  685.            }
  686. !          else if (strcmp (colorMenuItems[i], "black") == 0)
  687.            {
  688. !             colorPixels[i] = myBlackPixel = color.pixel;
  689. !             black_allocated = TRUE;
  690.            }
  691.         }
  692.   
  693. !       if (!white_allocated)
  694.         {
  695. !          XAllocNamedColor(mainDisplay, mainColormap, "white", &color,
  696.                  &exact_def);
  697. !          myWhitePixel = color.pixel;
  698.         }
  699. !       if (!black_allocated)
  700.         {
  701. !          XAllocNamedColor(mainDisplay, mainColormap, "black", &color,
  702.                  &exact_def);
  703. !          myBlackPixel = color.pixel;
  704.         }
  705.   
  706.         for (i = 0; i < maxColors; i++)
  707. !          xorColorPixels[i] = colorPixels[i] ^ myBlackPixel;
  708.      }
  709.      else
  710.      {
  711. !       XAllocNamedColor(mainDisplay, mainColormap, "white", &color, &exact_def);
  712. !       myWhitePixel = color.pixel;
  713. !       XAllocNamedColor(mainDisplay, mainColormap, "black", &color, &exact_def);
  714. !       myBlackPixel = color.pixel;
  715.   
  716.         for (i = 0; i < maxColors; i++)
  717.         {
  718. !          colorPixels[i] = myWhitePixel;
  719. !          xorColorPixels[i] = myWhitePixel ^ myBlackPixel;
  720.         }
  721.         colorIndex = 0;
  722. --- 177,248 ----
  723.            colorPixels[i] = color.pixel;
  724.      
  725. !          if (strcmp (colorMenuItems[i], fg_color) == 0)
  726.            {
  727. !             if (reverseVideo)
  728. !                myBgPixel = color.pixel;
  729. !             else
  730. !                myFgPixel = color.pixel;
  731. !             fg_allocated = TRUE;
  732.            }
  733. !          if (strcmp (colorMenuItems[i], bg_color) == 0)
  734.            {
  735. !             if (reverseVideo)
  736. !                myFgPixel = color.pixel;
  737. !             else
  738. !                myBgPixel = color.pixel;
  739. !             bg_allocated = TRUE;
  740.            }
  741. +          if (strcmp (colorMenuItems[i], brdr_color) == 0)
  742. +          {
  743. +             myBorderPixel = color.pixel;
  744. +             brdr_allocated = TRUE;
  745. +          }
  746.         }
  747.   
  748. !       if (!fg_allocated)
  749.         {
  750. !          XAllocNamedColor(mainDisplay, mainColormap, fg_color, &color,
  751.                  &exact_def);
  752. !          if (reverseVideo)
  753. !             myBgPixel = color.pixel;
  754. !          else
  755. !             myFgPixel = color.pixel;
  756.         }
  757. !       if (!bg_allocated)
  758.         {
  759. !          XAllocNamedColor(mainDisplay, mainColormap, bg_color, &color,
  760.                  &exact_def);
  761. !          if (reverseVideo)
  762. !             myFgPixel = color.pixel;
  763. !          else
  764. !             myBgPixel = color.pixel;
  765.         }
  766. +       if (!brdr_allocated)
  767. +       {
  768. +          XAllocNamedColor(mainDisplay, mainColormap, brdr_color, &color,
  769. +                &exact_def);
  770. +          myBorderPixel = color.pixel;
  771. +       }
  772.   
  773.         for (i = 0; i < maxColors; i++)
  774. !          xorColorPixels[i] = colorPixels[i] ^ myBgPixel;
  775.      }
  776.      else
  777.      {
  778. !       XAllocNamedColor(mainDisplay,mainColormap,fg_color,&color,&exact_def);
  779. !       myFgPixel = color.pixel;
  780.   
  781. +       XAllocNamedColor(mainDisplay,mainColormap,bg_color,&color,&exact_def);
  782. +       myBgPixel = color.pixel;
  783. +       XAllocNamedColor(mainDisplay,mainColormap,brdr_color,&color,&exact_def);
  784. +       myBorderPixel = color.pixel;
  785.         for (i = 0; i < maxColors; i++)
  786.         {
  787. !          colorPixels[i] = myFgPixel;
  788. !          xorColorPixels[i] = myFgPixel ^ myBgPixel;
  789.         }
  790.         colorIndex = 0;
  791. ***************
  792. *** 273,277 ****
  793.      {
  794.         HighLightReverse ();
  795. !       fileModified = TRUE;
  796.         RedrawAnArea (botObj, selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  797.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  798. --- 336,340 ----
  799.      {
  800.         HighLightReverse ();
  801. !       SetFileModified (TRUE);
  802.         RedrawAnArea (botObj, selLtX-(1<<zoomScale), selLtY-(1<<zoomScale),
  803.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  804. *** cursor.c.orig    Wed Jun 27 13:25:51 1990
  805. --- cursor.c    Wed Jun 27 13:25:53 1990
  806. ***************
  807. *** 6,10 ****
  808.   #ifndef lint
  809.   static char RCSid[] =
  810. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/cursor.c,v 1.1 90/04/01 22:16:09 william Exp $";
  811.   #endif
  812.   
  813. --- 6,10 ----
  814.   #ifndef lint
  815.   static char RCSid[] =
  816. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/cursor.c,v 1.2 90/05/22 14:08:44 william Exp $";
  817.   #endif
  818.   
  819. ***************
  820. *** 66,71 ****
  821.            text_cur_image_bits, text_cur_image_width, text_cur_image_height);
  822.   
  823. !    values.foreground = myWhitePixel;
  824. !    values.background = myBlackPixel;
  825.      values.fill_style = FillOpaqueStippled;
  826.      values.stipple = textPixmap;
  827. --- 66,71 ----
  828.            text_cur_image_bits, text_cur_image_width, text_cur_image_height);
  829.   
  830. !    values.foreground = myFgPixel;
  831. !    values.background = myBgPixel;
  832.      values.fill_style = FillOpaqueStippled;
  833.      values.stipple = textPixmap;
  834. *** dialog.c.orig    Wed Jun 27 13:26:00 1990
  835. --- dialog.c    Wed Jun 27 13:26:03 1990
  836. ***************
  837. *** 6,10 ****
  838.   #ifndef lint
  839.   static char RCSid[] =
  840. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dialog.c,v 1.1 90/04/01 22:16:10 william Exp $";
  841.   #endif
  842.   
  843. --- 6,10 ----
  844.   #ifndef lint
  845.   static char RCSid[] =
  846. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dialog.c,v 1.4 90/05/25 13:36:58 william Exp $";
  847.   #endif
  848.   
  849. ***************
  850. *** 12,22 ****
  851.   #include <X11/Xutil.h>
  852.   #include "const.h"
  853. - #include "setup.e"
  854.   
  855. - #include "cursor.e"
  856.   #include "box.e"
  857.   #include "font.e"
  858.   #include "mainloop.e"
  859.   #include "raster.e"
  860.   
  861.   static int    curX, curY;
  862. --- 12,22 ----
  863.   #include <X11/Xutil.h>
  864.   #include "const.h"
  865.   
  866.   #include "box.e"
  867. + #include "cursor.e"
  868.   #include "font.e"
  869.   #include "mainloop.e"
  870.   #include "raster.e"
  871. + #include "setup.e"
  872.   
  873.   static int    curX, curY;
  874. ***************
  875. *** 51,55 ****
  876.      int        w, h, str_w, left, top, fore_draw_pixel, fore_erase_pixel;
  877.      XEvent    input;
  878. -    int        brdr_pixel, bg_pixel;
  879.      int        win_x, win_y;
  880.      int        dialoging = TRUE, index = 0, dsp_w, dsp_h;
  881. --- 51,54 ----
  882. ***************
  883. *** 67,74 ****
  884.      top = 2 * defaultFontHeight;
  885.   
  886. !    brdr_pixel = myWhitePixel;
  887. !    bg_pixel = myBlackPixel;
  888. !    fore_draw_pixel = myWhitePixel;
  889. !    fore_erase_pixel = myBlackPixel;
  890.   
  891.      dsp_w = DisplayWidth (mainDisplay, mainScreen);
  892. --- 66,71 ----
  893.      top = 2 * defaultFontHeight;
  894.   
  895. !    fore_draw_pixel = myFgPixel;
  896. !    fore_erase_pixel = myBgPixel;
  897.   
  898.      dsp_w = DisplayWidth (mainDisplay, mainScreen);
  899. ***************
  900. *** 79,83 ****
  901.   
  902.      if ((dialogWindow = XCreateSimpleWindow (mainDisplay, rootWindow, win_x,
  903. !          win_y, w, h, brdrW, brdr_pixel, bg_pixel)) == 0)
  904.      { printf ("Could not create dialog window!\n"); exit (-1); }
  905.   
  906. --- 76,80 ----
  907.   
  908.      if ((dialogWindow = XCreateSimpleWindow (mainDisplay, rootWindow, win_x,
  909. !          win_y, w, h, brdrW, myBorderPixel, myBgPixel)) == 0)
  910.      { printf ("Could not create dialog window!\n"); exit (-1); }
  911.   
  912. ***************
  913. *** 97,100 ****
  914. --- 94,98 ----
  915.         if (input.type == Expose)
  916.         {
  917. +          XDrawRectangle (mainDisplay, dialogWindow, defaultGC, 0, 0, w-1, h-1);
  918.            MyBox (dialogWindow, defaultGC, 10, 10, w-9, h-9);
  919.            MyBox (dialogWindow, defaultGC, 11, 11, w-10, h-10);
  920. *** drawing.c.orig    Wed Jun 27 13:26:34 1990
  921. --- drawing.c    Wed Jun 27 13:26:36 1990
  922. ***************
  923. *** 6,10 ****
  924.   #ifndef lint
  925.   static char RCSid[] =
  926. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/drawing.c,v 1.1 90/04/01 22:16:11 william Exp $";
  927.   #endif
  928.   
  929. --- 6,10 ----
  930.   #ifndef lint
  931.   static char RCSid[] =
  932. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/drawing.c,v 1.3 90/05/22 14:10:35 william Exp $";
  933.   #endif
  934.   
  935. ***************
  936. *** 32,35 ****
  937. --- 32,36 ----
  938.   #include "oval.e"
  939.   #include "obj.e"
  940. + #include "pattern.e"
  941.   #include "poly.e"
  942.   #include "polygon.e"
  943. ***************
  944. *** 37,40 ****
  945. --- 38,42 ----
  946.   #include "rect.e"
  947.   #include "ruler.e"
  948. + #include "scroll.e"
  949.   #include "select.e"
  950.   #include "setup.e"
  951. ***************
  952. *** 113,117 ****
  953.      int    ltx, lty, rbx, rby, x_start, x_end, y_start, y_end, pixel;
  954.   
  955. !    pixel = myWhitePixel;
  956.   
  957.      ltx = ((ObjPtr->obbox.ltx - XOff - QUARTER_INCH) >> zoomScale) + 1;
  958. --- 115,119 ----
  959.      int    ltx, lty, rbx, rby, x_start, x_end, y_start, y_end, pixel;
  960.   
  961. !    pixel = myFgPixel;
  962.   
  963.      ltx = ((ObjPtr->obbox.ltx - XOff - QUARTER_INCH) >> zoomScale) + 1;
  964. ***************
  965. *** 174,178 ****
  966.   void DrawPaperBoundary ()
  967.   {
  968. !    register int    x_end, y_end, pixel = myWhitePixel;
  969.   
  970.      if (drawOrigX+drawWinW > paperWidth)
  971. --- 176,180 ----
  972.   void DrawPaperBoundary ()
  973.   {
  974. !    register int    x_end, y_end, pixel = myFgPixel;
  975.   
  976.      if (drawOrigX+drawWinW > paperWidth)
  977. ***************
  978. *** 480,483 ****
  979. --- 482,487 ----
  980.               case '\031': /*^Y*/ break;
  981.               case '\032': /*^Z*/ return (AnimateProc ()); break;
  982. +             case ',': /*^,*/ ScrollLeft (); break;
  983. +             case '.': /*^.*/ ScrollRight (); break;
  984.            }
  985.         }
  986. ***************
  987. *** 496,500 ****
  988.               case 'i': /*#I*/ IncGrid (); break;
  989.               case 'j': /*#J*/ HideAllAttrNames (); break;
  990. !             case 'k': /*#K*/ break;
  991.               case 'l': /*#L*/ CornerLoop (&x, &y); LineStyleMenu (x, y); break;
  992.               case 'm': /*#M*/ MoveAttr (); break;
  993. --- 500,504 ----
  994.               case 'i': /*#I*/ IncGrid (); break;
  995.               case 'j': /*#J*/ HideAllAttrNames (); break;
  996. !             case 'k': /*#K*/ SetCurChoice (NOTHING); break;
  997.               case 'l': /*#L*/ CornerLoop (&x, &y); LineStyleMenu (x, y); break;
  998.               case 'm': /*#M*/ MoveAttr (); break;
  999. ***************
  1000. *** 518,521 ****
  1001. --- 522,527 ----
  1002.               case '4': /*#4*/ ChangeFontSize (4); break;
  1003.               case '5': /*#5*/ ChangeFontSize (5); break;
  1004. +             case ',': /*#,*/ ScrollUp (); break;
  1005. +             case '.': /*#.*/ ScrollDown (); break;
  1006.            }
  1007.         }
  1008. *** dup.c.orig    Wed Jun 27 13:26:50 1990
  1009. --- dup.c    Wed Jun 27 13:26:52 1990
  1010. ***************
  1011. *** 6,10 ****
  1012.   #ifndef lint
  1013.   static char RCSid[] =
  1014. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.c,v 1.1 90/04/01 22:16:13 william Exp $";
  1015.   #endif
  1016.   
  1017. --- 6,10 ----
  1018.   #ifndef lint
  1019.   static char RCSid[] =
  1020. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/dup.c,v 1.2 90/06/26 00:04:49 william Exp $";
  1021.   #endif
  1022.   
  1023. ***************
  1024. *** 305,308 ****
  1025.            selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1026.      HighLightForward ();
  1027. !    fileModified = TRUE;
  1028.   }
  1029. --- 305,308 ----
  1030.            selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1031.      HighLightForward ();
  1032. !    SetFileModified (TRUE);
  1033.   }
  1034. *** edit.c.orig    Wed Jun 27 13:27:00 1990
  1035. --- edit.c    Wed Jun 27 13:27:01 1990
  1036. ***************
  1037. *** 6,10 ****
  1038.   #ifndef lint
  1039.   static char RCSid[] =
  1040. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.c,v 1.1 90/04/01 22:16:14 william Exp $";
  1041.   #endif
  1042.   
  1043. --- 6,10 ----
  1044.   #ifndef lint
  1045.   static char RCSid[] =
  1046. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/edit.c,v 1.2 90/06/26 00:04:59 william Exp $";
  1047.   #endif
  1048.   
  1049. ***************
  1050. *** 69,73 ****
  1051.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1052.         HighLightForward ();
  1053. !       fileModified = TRUE;
  1054.      }
  1055.   }
  1056. --- 69,73 ----
  1057.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1058.         HighLightForward ();
  1059. !       SetFileModified (TRUE);
  1060.      }
  1061.   }
  1062. ***************
  1063. *** 82,86 ****
  1064.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1065.         HighLightForward ();
  1066. !       fileModified = TRUE;
  1067.      }
  1068.   }
  1069. --- 82,86 ----
  1070.               selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1071.         HighLightForward ();
  1072. !       SetFileModified (TRUE);
  1073.      }
  1074.   }
  1075. *** file.c.orig    Wed Jun 27 13:27:25 1990
  1076. --- file.c    Wed Jun 27 13:27:29 1990
  1077. ***************
  1078. *** 6,12 ****
  1079.   #ifndef lint
  1080.   static char RCSid[] =
  1081. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.2 90/05/07 15:25:55 william Exp $";
  1082.   #endif
  1083.   
  1084.   #include <stdio.h>
  1085.   #include <X11/Xlib.h>
  1086. --- 6,14 ----
  1087.   #ifndef lint
  1088.   static char RCSid[] =
  1089. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/file.c,v 1.15 90/06/26 13:03:47 william Exp $";
  1090.   #endif
  1091.   
  1092. + #include <sys/types.h>
  1093. + #include <sys/file.h>
  1094.   #include <stdio.h>
  1095.   #include <X11/Xlib.h>
  1096. ***************
  1097. *** 43,50 ****
  1098.   #define CUR_VERSION 6
  1099.   
  1100. ! char    curFileName[80];
  1101.   int    curFileDefined = FALSE;
  1102.   int    fileVersion = INVALID;
  1103.   int    importingFile = FALSE;
  1104.   
  1105.   void ClearFileInfo ()
  1106. --- 45,61 ----
  1107.   #define CUR_VERSION 6
  1108.   
  1109. ! char    curFileName[MAXPATHLENGTH];
  1110.   int    curFileDefined = FALSE;
  1111.   int    fileVersion = INVALID;
  1112.   int    importingFile = FALSE;
  1113. + int    psDotsPerInch = 72;
  1114. + char    *psXOffStr[MAXPAGESTYLES]={"0.55","0.4","0.28","0.2","0.565","0.4"};
  1115. + float    psXOff[MAXPAGESTYLES] =   { 0.55,  0.4,  0.28,  0.2,  0.565,  0.4 };
  1116. + char    *psYOffStr[MAXPAGESTYLES]={"10.4","-0.6","10.7","-0.3","10.4","-0.6"};
  1117. + float    psYOff[MAXPAGESTYLES] =   { 10.4,  -0.6,  10.7,  -0.3,  10.4,  -0.6 };
  1118. + char    *psScaleStr[MAXPAGESTYLES]={"0.565","0.565","0.28","0.28","1.13","1.13"};
  1119. + float    psScale[MAXPAGESTYLES] =   { 0.565,  0.565,  0.28,  0.28,  1.13,  1.13 };
  1120. + float    psPageWidthInInch[MAXPAGESTYLES] = { 7.5, 10, 15.5, 21, 3.75, 5 };
  1121. + float    psPageHeightInInch[MAXPAGESTYLES] = { 10, 7.5, 21, 15.5, 5, 3.75 };
  1122.   
  1123.   void ClearFileInfo ()
  1124. ***************
  1125. *** 57,63 ****
  1126.      char    * FileName;
  1127.   {
  1128. !    char s[256];
  1129.   
  1130. !    if (fopen (FileName, "r") == NULL) return (TRUE);
  1131.      switch (YesNoCancel ("File exists, okay to overwrite? [ync](y)"))
  1132.      {
  1133. --- 68,76 ----
  1134.      char    * FileName;
  1135.   {
  1136. !    char s[MAXSTRING];
  1137. !    FILE    * fp;
  1138.   
  1139. !    if ((fp = fopen (FileName, "r")) == NULL) return (TRUE);
  1140. !    fclose (fp);
  1141.      switch (YesNoCancel ("File exists, okay to overwrite? [ync](y)"))
  1142.      {
  1143. ***************
  1144. *** 66,71 ****
  1145.         case CONFIRM_CANCEL: return (FALSE);
  1146.      }
  1147. !    sprintf (s, "rm -f %s", FileName);
  1148. !    system (s);
  1149.      return (TRUE);
  1150.   }
  1151. --- 79,83 ----
  1152.         case CONFIRM_CANCEL: return (FALSE);
  1153.      }
  1154. !    unlink (FileName);
  1155.      return (TRUE);
  1156.   }
  1157. ***************
  1158. *** 125,129 ****
  1159.      /* return TRUE if file successfully saved */
  1160.   {
  1161. !    char            new_file_name[80], s[80];
  1162.      FILE            * fp;
  1163.      int            count = 0, status = INVALID;
  1164. --- 137,141 ----
  1165.      /* return TRUE if file successfully saved */
  1166.   {
  1167. !    char            new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1168.      FILE            * fp;
  1169.      int            count = 0, status = INVALID;
  1170. ***************
  1171. *** 144,149 ****
  1172.      }
  1173.   
  1174. !    sprintf (s, "rm -f %s", new_file_name);
  1175. !    system (s);
  1176.   
  1177.      if ((fp = fopen (new_file_name, "w")) == NULL)
  1178. --- 156,160 ----
  1179.      }
  1180.   
  1181. !    unlink (new_file_name);
  1182.   
  1183.      if ((fp = fopen (new_file_name, "w")) == NULL)
  1184. ***************
  1185. *** 167,176 ****
  1186.   void SaveNewFile ()
  1187.   {
  1188. !    char            new_file_name[80], s[80], new_full_name[MAXPATHLENGTH];
  1189.      FILE            * fp;
  1190. !    int            count = 0;
  1191.      struct ObjRec    * obj_ptr;
  1192.   
  1193.      Dialog ("Please Enter New File Name:", new_file_name);
  1194.      if (*new_file_name == '\0') return;
  1195.   
  1196. --- 178,189 ----
  1197.   void SaveNewFile ()
  1198.   {
  1199. !    char            new_file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1200. !    char            new_full_name[MAXPATHLENGTH];
  1201.      FILE            * fp;
  1202. !    int            count = 0, len;
  1203.      struct ObjRec    * obj_ptr;
  1204.   
  1205.      Dialog ("Please Enter New File Name:", new_file_name);
  1206. +    len = strlen (new_file_name);
  1207.      if (*new_file_name == '\0') return;
  1208.   
  1209. ***************
  1210. *** 180,185 ****
  1211.      switch (count)
  1212.      {
  1213. !       case 0: strcat (new_file_name, ".obj"); break;
  1214. !       case 1: strcat (new_file_name, ".sym"); break;
  1215.         default:
  1216.            Msg ("TOO MANY SYMBOLS!  Symbol file not saved.");
  1217. --- 193,236 ----
  1218.      switch (count)
  1219.      {
  1220. !       case 0:
  1221. !          if (strlen (new_file_name) >= 4)
  1222. !          {
  1223. !             if (strcmp (&new_file_name[len-4], ".sym") == 0)
  1224. !             {
  1225. !                Msg ("Can not save as a .sym file, no symbol defined.");
  1226. !                return;
  1227. !             }
  1228. !             else if (strcmp (&new_file_name[len-4], ".obj") != 0)
  1229. !                strcat (new_file_name, ".obj");
  1230. !             if (strlen (new_file_name) == 4)
  1231. !             {
  1232. !                Msg ("No file name specified.  File not saved.");
  1233. !                return;
  1234. !             }
  1235. !          }
  1236. !          else
  1237. !             strcat (new_file_name, ".obj");
  1238. !          break;
  1239. !       case 1:
  1240. !          if (strlen (new_file_name) >= 4)
  1241. !          {
  1242. !             if (strcmp (&new_file_name[len-4], ".obj") == 0)
  1243. !             {
  1244. !                Msg ("Can not save as a .obj file, ther is a symbol defined.");
  1245. !                return;
  1246. !             }
  1247. !             else if (strcmp (&new_file_name[len-4], ".sym") != 0)
  1248. !                strcat (new_file_name, ".sym");
  1249. !             if (strlen (new_file_name) == 4)
  1250. !             {
  1251. !                Msg ("No file name specified.  File not saved.");
  1252. !                return;
  1253. !             }
  1254. !          }
  1255. !          else
  1256. !             strcat (new_file_name, ".sym");
  1257. !          break;
  1258.         default:
  1259.            Msg ("TOO MANY SYMBOLS!  Symbol file not saved.");
  1260. ***************
  1261. *** 208,212 ****
  1262.      sprintf (s, "File '%s' saved.", new_file_name);
  1263.      Msg (s);
  1264. !    fileModified = FALSE;
  1265.   
  1266.      RedrawTitleWindow ();
  1267. --- 259,263 ----
  1268.      sprintf (s, "File '%s' saved.", new_file_name);
  1269.      Msg (s);
  1270. !    SetFileModified (FALSE);
  1271.   
  1272.      RedrawTitleWindow ();
  1273. ***************
  1274. *** 218,222 ****
  1275.      struct ObjRec    * obj_ptr;
  1276.      FILE            * fp;
  1277. !    char            ext[80], s[80], full_name[MAXPATHLENGTH];
  1278.   
  1279.      if (!curFileDefined)
  1280. --- 269,274 ----
  1281.      struct ObjRec    * obj_ptr;
  1282.      FILE            * fp;
  1283. !    char            ext[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1284. !    char            full_name[MAXPATHLENGTH];
  1285.   
  1286.      if (!curFileDefined)
  1287. ***************
  1288. *** 275,279 ****
  1289.      sprintf (s, "File '%s' saved.", curFileName);
  1290.      Msg (s);
  1291. !    fileModified = FALSE;
  1292.   }
  1293.   
  1294. --- 327,331 ----
  1295.      sprintf (s, "File '%s' saved.", curFileName);
  1296.      Msg (s);
  1297. !    SetFileModified (FALSE);
  1298.   }
  1299.   
  1300. ***************
  1301. *** 371,376 ****
  1302.      struct ObjRec    * * ObjPtr;
  1303.   {
  1304. !    char            inbuf[256], obj_name[10], tmp_str[256], * s, * s1;
  1305. !    char            * line = NULL, * c_ptr;
  1306.      int            len, id, old_len, cur_size, done = FALSE;
  1307.      int            allocated = FALSE;
  1308. --- 423,428 ----
  1309.      struct ObjRec    * * ObjPtr;
  1310.   {
  1311. !    char            inbuf[MAXSTRING+1], obj_name[10], tmp_str[MAXSTRING+1];
  1312. !    char            * line = NULL, * c_ptr, * s, * s1;
  1313.      int            len, id, old_len, cur_size, done = FALSE;
  1314.      int            allocated = FALSE;
  1315. ***************
  1316. *** 379,383 ****
  1317.      struct AttrRec       * top_attr = NULL, * bot_attr = NULL, * attr_ptr;
  1318.   
  1319. !    while (fgets (inbuf, 256, FP) != NULL)
  1320.      {
  1321.         if (inbuf[0] == ']') return (FALSE);
  1322. --- 431,435 ----
  1323.      struct AttrRec       * top_attr = NULL, * bot_attr = NULL, * attr_ptr;
  1324.   
  1325. !    while (fgets (inbuf, MAXSTRING, FP) != NULL)
  1326.      {
  1327.         if (inbuf[0] == ']') return (FALSE);
  1328. ***************
  1329. *** 385,396 ****
  1330.         len = strlen(inbuf);
  1331.         if (inbuf[len-1] != '\r' && inbuf[len-1] != '\n')
  1332. !       {  /* line longer than 256 characters */
  1333. !          /* inbuf[255] == '\0' and len == 255 now */
  1334. !          cur_size = 510;
  1335.            allocated = TRUE;
  1336.            line = (char *) calloc (cur_size, sizeof(char));
  1337.            strcpy (line, inbuf);
  1338. !          c_ptr = &(line[255]);
  1339. !          while (fgets (inbuf, 256, FP) != NULL && !done)
  1340.            {
  1341.               len = strlen(inbuf);
  1342. --- 437,448 ----
  1343.         len = strlen(inbuf);
  1344.         if (inbuf[len-1] != '\r' && inbuf[len-1] != '\n')
  1345. !       {  /* line longer than MAXSTRING characters */
  1346. !          /* inbuf[MAXSTRING-1] == '\0' and len == MAXSTRING-1 now */
  1347. !          cur_size = 2*(MAXSTRING-1);
  1348.            allocated = TRUE;
  1349.            line = (char *) calloc (cur_size, sizeof(char));
  1350.            strcpy (line, inbuf);
  1351. !          c_ptr = &(line[MAXSTRING-1]);
  1352. !          while (fgets (inbuf, MAXSTRING, FP) != NULL && !done)
  1353.            {
  1354.               len = strlen(inbuf);
  1355. ***************
  1356. *** 403,410 ****
  1357.               else
  1358.               {
  1359. !                cur_size += 255;
  1360.                  line = (char *) realloc (line, cur_size);
  1361.                  strcpy (c_ptr, inbuf);
  1362. !                c_ptr += 255;
  1363.               }
  1364.            }
  1365. --- 455,462 ----
  1366.               else
  1367.               {
  1368. !                cur_size += MAXSTRING-1;
  1369.                  line = (char *) realloc (line, cur_size);
  1370.                  strcpy (c_ptr, inbuf);
  1371. !                c_ptr += MAXSTRING-1;
  1372.               }
  1373.            }
  1374. ***************
  1375. *** 517,521 ****
  1376.            ReadGroupObj (FP, ObjPtr);
  1377.            (*ObjPtr)->type = OBJ_ICON;
  1378. !          if (fgets (line, 256, FP) == NULL)
  1379.            {
  1380.               if (allocated) cfree (line);
  1381. --- 569,573 ----
  1382.            ReadGroupObj (FP, ObjPtr);
  1383.            (*ObjPtr)->type = OBJ_ICON;
  1384. !          if (fgets (line, MAXSTRING, FP) == NULL)
  1385.            {
  1386.               if (allocated) cfree (line);
  1387. ***************
  1388. *** 568,572 ****
  1389.   void ChangeDomain ()
  1390.   {
  1391. !    char     domain_name[80], s[80];
  1392.      register int    i;
  1393.   
  1394. --- 620,624 ----
  1395.   void ChangeDomain ()
  1396.   {
  1397. !    char     domain_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1398.      register int    i;
  1399.   
  1400. ***************
  1401. *** 611,615 ****
  1402.   {
  1403.      struct ObjRec    * obj_ptr, * saved_top_obj, * saved_bot_obj;
  1404. !    char         file_name[80], s[80], full_name[MAXPATHLENGTH];
  1405.      FILE            * fp;
  1406.   
  1407. --- 663,668 ----
  1408.   {
  1409.      struct ObjRec    * obj_ptr, * saved_top_obj, * saved_bot_obj;
  1410. !    char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1411. !    char         full_name[MAXPATHLENGTH];
  1412.      FILE            * fp;
  1413.   
  1414. ***************
  1415. *** 645,649 ****
  1416.      fclose (fp);
  1417.      importingFile = FALSE;
  1418. !    if (topObj != NULL) fileModified = TRUE;
  1419.   
  1420.      RedrawDrawWindow (botObj);
  1421. --- 698,702 ----
  1422.      fclose (fp);
  1423.      importingFile = FALSE;
  1424. !    if (topObj != NULL) SetFileModified (TRUE);
  1425.   
  1426.      RedrawDrawWindow (botObj);
  1427. ***************
  1428. *** 668,672 ****
  1429.   {
  1430.      struct ObjRec    * obj_ptr;
  1431. !    char         file_name[80], s[80], full_name[MAXPATHLENGTH];
  1432.      FILE            * fp;
  1433.   
  1434. --- 721,726 ----
  1435.   {
  1436.      struct ObjRec    * obj_ptr;
  1437. !    char         file_name[MAXPATHLENGTH], s[MAXPATHLENGTH];
  1438. !    char         full_name[MAXPATHLENGTH];
  1439.      FILE            * fp;
  1440.   
  1441. ***************
  1442. *** 712,716 ****
  1443.      curFileDefined = TRUE;
  1444.   
  1445. !    fileModified = FALSE;
  1446.      sprintf (s, "Current file is '%s'.", file_name);
  1447.      Msg (s);
  1448. --- 766,770 ----
  1449.      curFileDefined = TRUE;
  1450.   
  1451. !    SetFileModified (FALSE);
  1452.      sprintf (s, "Current file is '%s'.", file_name);
  1453.      Msg (s);
  1454. ***************
  1455. *** 777,786 ****
  1456.   }
  1457.   
  1458.   void Dump ()
  1459.   {
  1460.      register struct ObjRec    * obj_ptr;
  1461. !    char                cmd[256], tmp_str[256];
  1462.      int                i, len;
  1463. !    FILE                * fp;
  1464.   
  1465.      if (botObj == NULL) { Msg ("No object to print."); return; }
  1466. --- 831,886 ----
  1467.   }
  1468.   
  1469. + void DumpBBox (fp)
  1470. +    FILE    * fp;
  1471. + {
  1472. +    register struct ObjRec    * obj_ptr;
  1473. +    int                ltx, lty, rbx, rby;
  1474. +    double            llx1, lly1, urx1, ury1, real_ps_dots_per_inch;
  1475. +    if ((obj_ptr = topObj) == NULL)
  1476. +    {
  1477. +       fprintf (fp, "%%%%BoundingBox: 0 0 0 0\n");
  1478. +       printf ("Warning:  The PostScript bounding box is empty!\n");
  1479. +       Msg ("Warning:  The PostScript bounding box is empty!\n");
  1480. +       return;
  1481. +    }
  1482. +    ltx = obj_ptr->bbox.ltx; lty = obj_ptr->bbox.lty;
  1483. +    rbx = obj_ptr->bbox.rbx; rby = obj_ptr->bbox.rby;
  1484. +    for (obj_ptr = topObj->next; obj_ptr != NULL; obj_ptr = obj_ptr->next)
  1485. +    {
  1486. +       if (obj_ptr->bbox.ltx < ltx) ltx = obj_ptr->bbox.ltx;
  1487. +       if (obj_ptr->bbox.lty < lty) lty = obj_ptr->bbox.lty;
  1488. +       if (obj_ptr->bbox.rbx > rbx) rbx = obj_ptr->bbox.rbx;
  1489. +       if (obj_ptr->bbox.rby > rby) rby = obj_ptr->bbox.rby;
  1490. +    }
  1491. +    switch (pageStyle)
  1492. +    {
  1493. +       case PORTRAIT: real_ps_dots_per_inch = psDotsPerInch; break;
  1494. +       case LANDSCAPE: real_ps_dots_per_inch = psDotsPerInch; break;
  1495. +       case HIGHPORT: real_ps_dots_per_inch = psDotsPerInch/2.0; break;
  1496. +       case HIGHLAND: real_ps_dots_per_inch = psDotsPerInch/2.0; break;
  1497. +       case SLIDEPORT: real_ps_dots_per_inch = psDotsPerInch*2.0; break;
  1498. +       case SLIDELAND: real_ps_dots_per_inch = psDotsPerInch*2.0; break;
  1499. +    }
  1500. +    llx1 = 1.0*ltx*real_ps_dots_per_inch/(PIX_PER_INCH);
  1501. +    lly1 = -1.0*rby*real_ps_dots_per_inch/(PIX_PER_INCH);
  1502. +    urx1 = 1.0*rbx*real_ps_dots_per_inch/(PIX_PER_INCH);
  1503. +    ury1 = -1.0*lty*real_ps_dots_per_inch/(PIX_PER_INCH);
  1504. +    fprintf (fp,"%%%%BoundingBox: %.3f %.3f %.3f %.3f\n",llx1,lly1,urx1,ury1);
  1505. + }
  1506.   void Dump ()
  1507.   {
  1508.      register struct ObjRec    * obj_ptr;
  1509. !    char                * c_ptr, cmd[MAXSTRING+1], tmp_str[MAXSTRING+1];
  1510. !    char                tmp_file[MAXSTRING+1], ps_file[MAXSTRING+1];
  1511. !    char                message[MAXSTRING+1];
  1512.      int                i, len;
  1513. !    FILE                * fp, * fps;
  1514.   
  1515.      if (botObj == NULL) { Msg ("No object to print."); return; }
  1516. ***************
  1517. *** 787,841 ****
  1518.   
  1519.      Msg ("Generating print file ...");
  1520.   
  1521. !    system ("rm -f /tmp/DRAW.PS /tmp/DUMP.PS");
  1522. !    if ((fp = fopen ("/tmp/DUMP.PS", "w")) == NULL)
  1523.      {
  1524. !       Msg ("Can not create /tmp/DUMP.PS, print aborted.");
  1525.         return;
  1526.      }
  1527.   
  1528. !    for (obj_ptr = botObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  1529. !       DumpAllObj (fp, obj_ptr);
  1530.   
  1531. !    fprintf (fp, "grestore\n\n");
  1532. !    fprintf (fp, "showpage\n");
  1533. !    fclose (fp);
  1534.      switch (pageStyle)
  1535.      {
  1536. -       case PORTRAIT:
  1537. -          sprintf (cmd, "cat %s/.psmac %s/.port /tmp/DUMP.PS > /tmp/DRAW.PS",
  1538. -                drawPath, drawPath);
  1539. -          break;
  1540.         case LANDSCAPE:
  1541. -          sprintf (cmd, "cat %s/.psmac %s/.land /tmp/DUMP.PS > /tmp/DRAW.PS",
  1542. -                drawPath, drawPath);
  1543. -          break;
  1544. -       case HIGHPORT:
  1545. -          sprintf (cmd, "cat %s/.psmac %s/.hiport /tmp/DUMP.PS > /tmp/DRAW.PS",
  1546. -                drawPath, drawPath);
  1547. -          break;
  1548.         case HIGHLAND:
  1549. !          sprintf (cmd, "cat %s/.psmac %s/.hiland /tmp/DUMP.PS > /tmp/DRAW.PS",
  1550. !                drawPath, drawPath);
  1551. !          break;
  1552. !       case SLIDEPORT:
  1553. !          sprintf (cmd, "cat %s/.psmac %s/.slideport /tmp/DUMP.PS > /tmp/DRAW.PS",
  1554. !                drawPath, drawPath);
  1555. !          break;
  1556. !       case SLIDELAND:
  1557. !          sprintf (cmd, "cat %s/.psmac %s/.slideland /tmp/DUMP.PS > /tmp/DRAW.PS",
  1558. !                drawPath, drawPath);
  1559. !          break;
  1560.      }
  1561. !    system (cmd);
  1562. !    chmod ("/tmp/DRAW.PS", 0777);
  1563. !    chmod ("/tmp/DUMP.PS", 0777);
  1564.   
  1565.      switch (whereToPrint)
  1566.      {
  1567.         case PRINTER:
  1568. !          system ("lpr /tmp/DRAW.PS &");
  1569. !          Msg ("Printing in background.");
  1570.            break;
  1571.         case LATEX_FIG:
  1572. --- 887,955 ----
  1573.   
  1574.      Msg ("Generating print file ...");
  1575. +    strcpy (tmp_file, "/tmp/TgifXXXXXX");
  1576. +    mktemp (tmp_file);
  1577. +    unlink (tmp_file);
  1578.   
  1579. !    if ((fp = fopen (tmp_file, "w")) == NULL)
  1580.      {
  1581. !       sprintf (tmp_str, "Can not create %s, print aborted.", tmp_file);
  1582. !       Msg (tmp_str);
  1583.         return;
  1584.      }
  1585.   
  1586. !    fprintf (fp, "%%!\n");
  1587. !    DumpBBox (fp);
  1588. !    sprintf(ps_file, "%s/.psmac", drawPath);
  1589. !    if ((fps = fopen (ps_file, "r")) == NULL) 
  1590. !    {
  1591. !       sprintf (message, "Can not find %s, print aborted.", ps_file);
  1592. !       Msg (message);
  1593. !       fclose (fp);
  1594. !       unlink (tmp_file);
  1595. !       return;
  1596. !    }
  1597. !    while (fgets (tmp_str, MAXSTRING, fps) != NULL) /* copy the header file */
  1598. !       fputs (tmp_str, fp);
  1599.   
  1600. !    fprintf (fp, "gsave\n\n");
  1601.      switch (pageStyle)
  1602.      {
  1603.         case LANDSCAPE:
  1604.         case HIGHLAND:
  1605. !       case SLIDELAND: fprintf (fp, "90 rotate\n"); break;
  1606.      }
  1607. !    fprintf (fp, "%1d %s mul %1d %s mul translate\n", psDotsPerInch,
  1608. !          psXOffStr[pageStyle], psDotsPerInch, psYOffStr[pageStyle]);
  1609. !    fprintf (fp, "%s -%s scale\n\n",
  1610. !          psScaleStr[pageStyle], psScaleStr[pageStyle]);
  1611.   
  1612. +    for (obj_ptr = botObj; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  1613. +       DumpAllObj (fp, obj_ptr);
  1614. +    fprintf (fp, "grestore\n\n");
  1615. +    fprintf (fp, "showpage\n");
  1616. +    fclose (fp);
  1617.      switch (whereToPrint)
  1618.      {
  1619.         case PRINTER:
  1620. !          if ((c_ptr = XGetDefault (mainDisplay,"Tgif","PrintCommand")) != NULL)
  1621. !             sprintf (cmd, "%s %s 2>&1", c_ptr, tmp_file);
  1622. !          else
  1623. !             sprintf (cmd, "lpr %s 2>&1", tmp_file);
  1624. !          if ((fp = popen (cmd, "r")) == NULL)
  1625. !          {
  1626. !             sprintf (message, "Can not execute '%s', print aborted.", cmd);
  1627. !             Msg (message);
  1628. !             unlink (tmp_file);
  1629. !             return;
  1630. !          }
  1631. !          while (fgets (tmp_str, MAXSTRING, fp) != NULL)
  1632. !          {
  1633. !             Msg (tmp_str);
  1634. !             sleep (5);
  1635. !          }
  1636. !          pclose (fp);
  1637.            break;
  1638.         case LATEX_FIG:
  1639. ***************
  1640. *** 843,870 ****
  1641.            {
  1642.               Dialog ("No current file.  Can not generate LaTeX output!", cmd);
  1643.               return;
  1644.            }
  1645.   
  1646. !          strcpy (tmp_str, curDomainName);
  1647. !          if (*curDomainName != '\0') strcat (tmp_str, "/");
  1648. !          strcat (tmp_str, curFileName);
  1649. !          len = strlen (tmp_str);
  1650. !          for (i = len-1; tmp_str[i] != '.'; i--) ;
  1651. !          strcpy (&tmp_str[i], ".ps");
  1652. !          if ((fp = fopen (tmp_str, "w")) == NULL)
  1653.            {
  1654. !             sprintf (cmd, "Can not open %s, file not saved.", tmp_str);
  1655. !             Msg (cmd);
  1656.               return;
  1657.            }
  1658. !          fclose (fp);
  1659. ! /*       tmp_str[i] = '\0'; */
  1660. !          sprintf (cmd, "Printing into '%s'.", tmp_str);
  1661. !          Msg (cmd);
  1662. !          sprintf (cmd, "rm -f %s; tgif2ps < /tmp/DRAW.PS > %s; chmod 660 %s",
  1663. !                tmp_str, tmp_str, tmp_str);
  1664. !          system (cmd);
  1665.            break;
  1666.      }
  1667.   }
  1668.   
  1669. --- 957,990 ----
  1670.            {
  1671.               Dialog ("No current file.  Can not generate LaTeX output!", cmd);
  1672. +             unlink (tmp_file);
  1673.               return;
  1674.            }
  1675.   
  1676. !          strcpy (ps_file, curDomainName);
  1677. !          if (*curDomainName != '\0') strcat (ps_file, "/");
  1678. !          strcat (ps_file, curFileName);
  1679. !          len = strlen (ps_file);
  1680. !          for (i = len-1; ps_file[i] != '.'; i--) ;
  1681. !          strcpy (&ps_file[i], ".ps");
  1682. !          sprintf (cmd, "Printing into '%s'.", ps_file);
  1683. !          Msg (cmd);
  1684. !          sprintf (cmd, "tgif2ps < %s 1> %s 2>&1; chmod %s %s", tmp_file,
  1685. !                ps_file, PSFILE_MOD, ps_file);
  1686. !          if ((fp = popen (cmd, "r")) == NULL)
  1687.            {
  1688. !             sprintf (message, "Can not execute '%s', file not saved.", cmd);
  1689. !             Msg (message);
  1690. !             unlink (tmp_file);
  1691.               return;
  1692.            }
  1693. !          while (fgets(tmp_str, MAXSTRING, fp) != NULL)
  1694. !          {
  1695. !             Msg (tmp_str);
  1696. !             sleep (5);
  1697. !          }
  1698. !          pclose (fp);
  1699.            break;
  1700.      }
  1701. +    unlink (tmp_file);
  1702.   }
  1703.   
  1704. ***************
  1705. *** 871,875 ****
  1706.   void NewProc ()
  1707.   {
  1708. !    char    s[80];
  1709.   
  1710.      if (fileModified)
  1711. --- 991,995 ----
  1712.   void NewProc ()
  1713.   {
  1714. !    char    s[MAXPATHLENGTH];
  1715.   
  1716.      if (fileModified)
  1717. ***************
  1718. *** 881,885 ****
  1719.            case CONFIRM_CANCEL: return;
  1720.         }
  1721. !       fileModified = FALSE;
  1722.      }
  1723.      CleanUpDrawingWindow ();
  1724. --- 1001,1005 ----
  1725.            case CONFIRM_CANCEL: return;
  1726.         }
  1727. !       SetFileModified (FALSE);
  1728.      }
  1729.      CleanUpDrawingWindow ();
  1730. *** font.c.orig    Wed Jun 27 13:27:40 1990
  1731. --- font.c    Wed Jun 27 13:27:42 1990
  1732. ***************
  1733. *** 6,10 ****
  1734.   #ifndef lint
  1735.   static char RCSid[] =
  1736. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.1 90/04/01 22:16:16 william Exp $";
  1737.   #endif
  1738.   
  1739. --- 6,10 ----
  1740.   #ifndef lint
  1741.   static char RCSid[] =
  1742. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.2 90/06/26 00:05:27 william Exp $";
  1743.   #endif
  1744.   
  1745. ***************
  1746. *** 398,402 ****
  1747.               selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1748.               selRbY+(1<<zoomScale));
  1749. !       fileModified = TRUE;
  1750.         HighLightForward ();
  1751.      }
  1752. --- 398,402 ----
  1753.               selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1754.               selRbY+(1<<zoomScale));
  1755. !       SetFileModified (TRUE);
  1756.         HighLightForward ();
  1757.      }
  1758. ***************
  1759. *** 448,452 ****
  1760.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1761.                  selRbY+(1<<zoomScale));
  1762. !          fileModified = TRUE;
  1763.            HighLightForward ();
  1764.         }
  1765. --- 448,452 ----
  1766.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1767.                  selRbY+(1<<zoomScale));
  1768. !          SetFileModified (TRUE);
  1769.            HighLightForward ();
  1770.         }
  1771. ***************
  1772. *** 565,569 ****
  1773.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1774.                  selRbY+(1<<zoomScale));
  1775. !          fileModified = TRUE;
  1776.            HighLightForward ();
  1777.         }
  1778. --- 565,569 ----
  1779.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1780.                  selRbY+(1<<zoomScale));
  1781. !          SetFileModified (TRUE);
  1782.            HighLightForward ();
  1783.         }
  1784. ***************
  1785. *** 676,680 ****
  1786.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1787.                  selRbY+(1<<zoomScale));
  1788. !          fileModified = TRUE;
  1789.            HighLightForward ();
  1790.         }
  1791. --- 676,680 ----
  1792.                  selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  1793.                  selRbY+(1<<zoomScale));
  1794. !          SetFileModified (TRUE);
  1795.            HighLightForward ();
  1796.         }
  1797. *** grid.c.orig    Wed Jun 27 13:28:00 1990
  1798. --- grid.c    Wed Jun 27 13:28:02 1990
  1799. ***************
  1800. *** 6,10 ****
  1801.   #ifndef lint
  1802.   static char RCSid[] =
  1803. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.1 90/04/01 22:16:18 william Exp $";
  1804.   #endif
  1805.   
  1806. --- 6,10 ----
  1807.   #ifndef lint
  1808.   static char RCSid[] =
  1809. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/grid.c,v 1.4 90/06/26 00:05:37 william Exp $";
  1810.   #endif
  1811.   
  1812. ***************
  1813. *** 44,48 ****
  1814.      for (x = XStart; x < XEnd; x += 8)
  1815.   /*    XDrawPoint (mainDisplay, Win, defaultGC, x, Y); */
  1816. ! /* Hack to run on RTs -- stupid IBM */
  1817.         XDrawLine (mainDisplay, Win, defaultGC, x, Y, x, Y);
  1818.   }
  1819. --- 44,48 ----
  1820.      for (x = XStart; x < XEnd; x += 8)
  1821.   /*    XDrawPoint (mainDisplay, Win, defaultGC, x, Y); */
  1822. ! /*       Hack to run on RTs -- crash server on RTs    */
  1823.         XDrawLine (mainDisplay, Win, defaultGC, x, Y, x, Y);
  1824.   }
  1825. ***************
  1826. *** 56,60 ****
  1827.      for (y = YStart; y < YEnd; y += 8)
  1828.   /*    XDrawPoint (mainDisplay, Win, defaultGC, X, y); */
  1829. ! /* Hack to run on RTs -- stupid IBM */
  1830.         XDrawLine (mainDisplay, Win, defaultGC, X, y, X, y);
  1831.   }
  1832. --- 56,60 ----
  1833.      for (y = YStart; y < YEnd; y += 8)
  1834.   /*    XDrawPoint (mainDisplay, Win, defaultGC, X, y); */
  1835. ! /*       Hack to run on RTs -- crash server on RTs    */
  1836.         XDrawLine (mainDisplay, Win, defaultGC, X, y, X, y);
  1837.   }
  1838. ***************
  1839. *** 64,68 ****
  1840.      register int    i, inc = HALF_INCH, abs_grid = HALF_INCH<<zoomScale;
  1841.      int        x_start, y_start, x_end, y_end, x_grid_start, y_grid_start;
  1842. !    int        pixel = myWhitePixel;
  1843.   
  1844.      if (!gridShown) return;
  1845. --- 64,68 ----
  1846.      register int    i, inc = HALF_INCH, abs_grid = HALF_INCH<<zoomScale;
  1847.      int        x_start, y_start, x_end, y_end, x_grid_start, y_grid_start;
  1848. !    int        pixel = myFgPixel;
  1849.   
  1850.      if (!gridShown) return;
  1851. ***************
  1852. *** 102,106 ****
  1853.      int        x_start, y_start, x_end, y_end;
  1854.      int        x_grid_start, y_grid_start, x_grid_end, y_grid_end;
  1855. !    int        pixel = myWhitePixel;
  1856.   
  1857.      if (!gridShown) return;
  1858. --- 102,106 ----
  1859.      int        x_start, y_start, x_end, y_end;
  1860.      int        x_grid_start, y_grid_start, x_grid_end, y_grid_end;
  1861. !    int        pixel = myFgPixel;
  1862.   
  1863.      if (!gridShown) return;
  1864. ***************
  1865. *** 475,479 ****
  1866.               }
  1867.               RedrawRulers ();
  1868. !             fileModified = TRUE;
  1869.               Msg ("Page style changed to Landscape.");
  1870.            }
  1871. --- 475,479 ----
  1872.               }
  1873.               RedrawRulers ();
  1874. !             SetFileModified (TRUE);
  1875.               Msg ("Page style changed to Landscape.");
  1876.            }
  1877. ***************
  1878. *** 488,492 ****
  1879.               }
  1880.               RedrawRulers ();
  1881. !             fileModified = TRUE;
  1882.               Msg ("Page style changed to Portrait.");
  1883.            }
  1884. --- 488,492 ----
  1885.               }
  1886.               RedrawRulers ();
  1887. !             SetFileModified (TRUE);
  1888.               Msg ("Page style changed to Portrait.");
  1889.            }
  1890. ***************
  1891. *** 501,505 ****
  1892.               }
  1893.               RedrawRulers ();
  1894. !             fileModified = TRUE;
  1895.               Msg ("Page style changed to HighLand.");
  1896.            }
  1897. --- 501,505 ----
  1898.               }
  1899.               RedrawRulers ();
  1900. !             SetFileModified (TRUE);
  1901.               Msg ("Page style changed to HighLand.");
  1902.            }
  1903. ***************
  1904. *** 514,518 ****
  1905.               }
  1906.               RedrawRulers ();
  1907. !             fileModified = TRUE;
  1908.               Msg ("Page style changed to HighPort.");
  1909.            }
  1910. --- 514,518 ----
  1911.               }
  1912.               RedrawRulers ();
  1913. !             SetFileModified (TRUE);
  1914.               Msg ("Page style changed to HighPort.");
  1915.            }
  1916. ***************
  1917. *** 527,531 ****
  1918.               }
  1919.               RedrawRulers ();
  1920. !             fileModified = TRUE;
  1921.               Msg ("Page style changed to SlideLand.");
  1922.            }
  1923. --- 527,531 ----
  1924.               }
  1925.               RedrawRulers ();
  1926. !             SetFileModified (TRUE);
  1927.               Msg ("Page style changed to SlideLand.");
  1928.            }
  1929. ***************
  1930. *** 540,544 ****
  1931.               }
  1932.               RedrawRulers ();
  1933. !             fileModified = TRUE;
  1934.               Msg ("Page style changed to SlidePort.");
  1935.            }
  1936. --- 540,544 ----
  1937.               }
  1938.               RedrawRulers ();
  1939. !             SetFileModified (TRUE);
  1940.               Msg ("Page style changed to SlidePort.");
  1941.            }
  1942. *** group.c.orig    Wed Jun 27 13:28:09 1990
  1943. --- group.c    Wed Jun 27 13:28:10 1990
  1944. ***************
  1945. *** 6,10 ****
  1946.   #ifndef lint
  1947.   static char RCSid[] =
  1948. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.1 90/04/01 22:16:19 william Exp $";
  1949.   #endif
  1950.   
  1951. --- 6,10 ----
  1952.   #ifndef lint
  1953.   static char RCSid[] =
  1954. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.2 90/06/26 00:05:45 william Exp $";
  1955.   #endif
  1956.   
  1957. ***************
  1958. *** 238,242 ****
  1959.            selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1960.      HighLightForward ();
  1961. !    fileModified = TRUE;
  1962.      justDupped = FALSE;
  1963.   }
  1964. --- 238,242 ----
  1965.            selRbX+(1<<zoomScale), selRbY+(1<<zoomScale));
  1966.      HighLightForward ();
  1967. !    SetFileModified (TRUE);
  1968.      justDupped = FALSE;
  1969.   }
  1970. *** mainloop.c.orig    Wed Jun 27 13:28:17 1990
  1971. --- mainloop.c    Wed Jun 27 13:28:18 1990
  1972. ***************
  1973. *** 6,10 ****
  1974.   #ifndef lint
  1975.   static char RCSid[] =
  1976. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.2 90/05/07 15:15:33 william Exp $";
  1977.   #endif
  1978.   
  1979. --- 6,10 ----
  1980.   #ifndef lint
  1981.   static char RCSid[] =
  1982. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.4 90/06/26 00:10:31 william Exp $";
  1983.   #endif
  1984.   
  1985. ***************
  1986. *** 183,187 ****
  1987.               curFileDefined = TRUE;
  1988.   
  1989. !             fileModified = FALSE;
  1990.               sprintf (s, "Current file is '%s'.", file_name);
  1991.               Msg (s);
  1992. --- 183,187 ----
  1993.               curFileDefined = TRUE;
  1994.   
  1995. !             SetFileModified (FALSE);
  1996.               sprintf (s, "Current file is '%s'.", file_name);
  1997.               Msg (s);
  1998. ---------------------------------> cut here <---------------------------------
  1999. --
  2000.  
  2001. -- Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  2002.    3277 Boelter Hall // Los Angeles, California 90024 // USA
  2003.    william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  2004.  
  2005. dan
  2006. ----------------------------------------------------
  2007. O'Reilly && Associates   argv@sun.com / argv@ora.com
  2008. Opinions expressed reflect those of the author only.
  2009.