home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume8 / tgif / patch3.02 < prev    next >
Internet Message Format  |  1990-08-20  |  54KB

  1. Path: uunet!decwrl!sun-barr!newstop!sun!CS.UCLA.EDU
  2. From: william@CS.UCLA.EDU (William Cheng)
  3. Newsgroups: comp.sources.x
  4. Subject: v08i088: tgif, Patch3, Part02/03
  5. Message-ID: <140969@sun.Eng.Sun.COM>
  6. Date: 20 Aug 90 18:13:53 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 1402
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: william@CS.UCLA.EDU (William Cheng)
  12. Posting-number: Volume 8, Issue 88
  13. Archive-name: tgif/patch3.02
  14. Patch-To: Volume 8, Issue 58-60 (Patch2: tgif-1.9 => tgif-1.12)
  15. Patch-To: Volume 8, Issue 46-48 (Patch1: tgif-1.2 => tgif-1.9)
  16. Patch-To: Volume 7, Issue 56-76 (original: tgif-1.2)
  17.  
  18. ---------------------------------> cut here <---------------------------------
  19. *** font.c.orig    Fri Aug 17 13:47:28 1990
  20. --- font.c    Fri Aug 17 13:47:29 1990
  21. ***************
  22. *** 6,10 ****
  23.   #ifndef lint
  24.   static char RCSid[] =
  25. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.5 90/07/30 15:54:02 william Exp $";
  26.   #endif
  27.   
  28. --- 6,10 ----
  29.   #ifndef lint
  30.   static char RCSid[] =
  31. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.9 90/08/16 15:44:24 william Exp $";
  32.   #endif
  33.   
  34. ***************
  35. *** 32,37 ****
  36.   #define COUR24R 29
  37.   
  38. ! #define FIndex(FONT,SIZE,STYLE) (SIZE+MAXFONTSIZES*(STYLE+MAXFONTSTYLES*FONT))
  39. ! #define FONTTABLESIZE (MAXFONTSIZES*MAXFONTSTYLES*MAXFONTS)
  40.   
  41.   struct MyFontRec {
  42. --- 32,39 ----
  43.   #define COUR24R 29
  44.   
  45. ! #define FONTS_PER_DPI (((MAXFONTS-1)*MAXFONTSTYLES+1)*MAXFONTSIZES)
  46. ! #define FONTTABLESIZE (MAXFONTDPIS*FONTS_PER_DPI)
  47. ! /* #define FIndex(FONT,SIZE,STYLE) (SIZE+MAXFONTSIZES*(STYLE+MAXFONTSTYLES*FONT)) */
  48. ! /* #define FONTTABLESIZE (MAXFONTSIZES*MAXFONTSTYLES*MAXFONTS) */
  49.   
  50.   struct MyFontRec {
  51. ***************
  52. *** 59,68 ****
  53.   int    defaultFontDes;
  54.   
  55. ! int    pointSize[] = { 8, 10, 12, 14, 18, 24 };
  56.   int    curFont = FONT_COU;
  57.   int    curSize = 4;
  58.   int    curStyle = STYLE_NR;
  59.   int    curRotate = ROTATE0;
  60.   
  61.   static struct MyFontRec    myFontInfo[FONTTABLESIZE];
  62.   
  63. --- 61,74 ----
  64.   int    defaultFontDes;
  65.   
  66. ! int    * pointSize;
  67.   int    curFont = FONT_COU;
  68.   int    curSize = 4;
  69.   int    curStyle = STYLE_NR;
  70. + int    curFontDPI = FONT_DPI_75;
  71.   int    curRotate = ROTATE0;
  72.   
  73. + int    pointSize75[] = { 8, 10, 12, 14, 18, 24 };
  74. + int    pointSize100[] = { 11, 14, 17, 20, 25, 34 };
  75.   static struct MyFontRec    myFontInfo[FONTTABLESIZE];
  76.   
  77. ***************
  78. *** 71,75 ****
  79.      "Times", "Courier", "Helvetica", "NewCentury", "Symbol"
  80.   };
  81. ! static char    * sizeMenuStr[] =
  82.   {
  83.      "8  #0",
  84. --- 77,83 ----
  85.      "Times", "Courier", "Helvetica", "NewCentury", "Symbol"
  86.   };
  87. ! static char    * fontDPIMenuStr[] = { "75dpi", "100dpi" };
  88. ! static char    * * sizeMenuStr;
  89. ! static char    * sizeMenuStr75[] =
  90.   {
  91.      "8  #0",
  92. ***************
  93. *** 80,83 ****
  94. --- 88,100 ----
  95.      "24 #5"
  96.   };
  97. + static char    * sizeMenuStr100[] =
  98. + {
  99. +    "11 #0",
  100. +    "14 #1",
  101. +    "17 #2",
  102. +    "20 #3",
  103. +    "25 #4",
  104. +    "34 #5"
  105. + };
  106.   static char    * styleMenuStr[] =
  107.   {
  108. ***************
  109. *** 94,203 ****
  110.   static char    * fontNameStr[] =
  111.   {
  112. !    "-adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1",
  113. !    "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
  114. !    "-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-1",
  115. !    "-adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1",
  116. !    "-adobe-times-medium-r-normal--18-180-75-75-p-94-iso8859-1",
  117. !    "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
  118. !    "-adobe-times-bold-r-normal--8-80-75-75-p-47-iso8859-1",
  119. !    "-adobe-times-bold-r-normal--10-100-75-75-p-57-iso8859-1",
  120. !    "-adobe-times-bold-r-normal--12-120-75-75-p-67-iso8859-1",
  121. !    "-adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1",
  122. !    "-adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1",
  123. !    "-adobe-times-bold-r-normal--24-240-75-75-p-132-iso8859-1",
  124. !    "-adobe-times-medium-i-normal--8-80-75-75-p-42-iso8859-1",
  125. !    "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-1",
  126. !    "-adobe-times-medium-i-normal--12-120-75-75-p-63-iso8859-1",
  127. !    "-adobe-times-medium-i-normal--14-140-75-75-p-73-iso8859-1",
  128. !    "-adobe-times-medium-i-normal--18-180-75-75-p-94-iso8859-1",
  129. !    "-adobe-times-medium-i-normal--24-240-75-75-p-125-iso8859-1",
  130. !    "-adobe-times-bold-i-normal--8-80-75-75-p-47-iso8859-1",
  131. !    "-adobe-times-bold-i-normal--10-100-75-75-p-57-iso8859-1",
  132. !    "-adobe-times-bold-i-normal--12-120-75-75-p-68-iso8859-1",
  133. !    "-adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-1",
  134. !    "-adobe-times-bold-i-normal--18-180-75-75-p-98-iso8859-1",
  135. !    "-adobe-times-bold-i-normal--24-240-75-75-p-128-iso8859-1",
  136.   
  137. !    "-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1",
  138. !    "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1",
  139. !    "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1",
  140. !    "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1",
  141. !    "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1",
  142. !    "-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1",
  143. !    "-adobe-courier-bold-r-normal--8-80-75-75-m-50-iso8859-1",
  144. !    "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1",
  145. !    "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1",
  146. !    "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1",
  147. !    "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1",
  148. !    "-adobe-courier-bold-r-normal--24-240-75-75-m-150-iso8859-1",
  149. !    "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1",
  150. !    "-adobe-courier-medium-o-normal--10-100-75-75-m-60-iso8859-1",
  151. !    "-adobe-courier-medium-o-normal--12-120-75-75-m-70-iso8859-1",
  152. !    "-adobe-courier-medium-o-normal--14-140-75-75-m-90-iso8859-1",
  153. !    "-adobe-courier-medium-o-normal--18-180-75-75-m-110-iso8859-1",
  154. !    "-adobe-courier-medium-o-normal--24-240-75-75-m-150-iso8859-1",
  155. !    "-adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1",
  156. !    "-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1",
  157. !    "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1",
  158. !    "-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1",
  159. !    "-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1",
  160. !    "-adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1",
  161.   
  162. !    "-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1",
  163. !    "-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1",
  164. !    "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1",
  165. !    "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1",
  166. !    "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1",
  167. !    "-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1",
  168. !    "-adobe-helvetica-bold-r-normal--8-80-75-75-p-50-iso8859-1",
  169. !    "-adobe-helvetica-bold-r-normal--10-100-75-75-p-60-iso8859-1",
  170. !    "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1",
  171. !    "-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1",
  172. !    "-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1",
  173. !    "-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1",
  174. !    "-adobe-helvetica-medium-o-normal--8-80-75-75-p-47-iso8859-1",
  175. !    "-adobe-helvetica-medium-o-normal--10-100-75-75-p-57-iso8859-1",
  176. !    "-adobe-helvetica-medium-o-normal--12-120-75-75-p-67-iso8859-1",
  177. !    "-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1",
  178. !    "-adobe-helvetica-medium-o-normal--18-180-75-75-p-98-iso8859-1",
  179. !    "-adobe-helvetica-medium-o-normal--24-240-75-75-p-130-iso8859-1",
  180. !    "-adobe-helvetica-bold-o-normal--8-80-75-75-p-50-iso8859-1",
  181. !    "-adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1",
  182. !    "-adobe-helvetica-bold-o-normal--12-120-75-75-p-69-iso8859-1",
  183. !    "-adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1",
  184. !    "-adobe-helvetica-bold-o-normal--18-180-75-75-p-104-iso8859-1",
  185. !    "-adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1",
  186.   
  187. !    "-adobe-new century schoolbook-medium-r-normal--8-80-75-75-p-50-iso8859-1",
  188. !    "-adobe-new century schoolbook-medium-r-normal--10-100-75-75-p-60-iso8859-1",
  189. !    "-adobe-new century schoolbook-medium-r-normal--12-120-75-75-p-70-iso8859-1",
  190. !    "-adobe-new century schoolbook-medium-r-normal--14-140-75-75-p-82-iso8859-1",
  191. !    "-adobe-new century schoolbook-medium-r-normal--18-180-75-75-p-103-iso8859-1",
  192. !    "-adobe-new century schoolbook-medium-r-normal--24-240-75-75-p-137-iso8859-1",
  193. !    "-adobe-new century schoolbook-bold-r-normal--8-80-75-75-p-56-iso8859-1",
  194. !    "-adobe-new century schoolbook-bold-r-normal--10-100-75-75-p-66-iso8859-1",
  195. !    "-adobe-new century schoolbook-bold-r-normal--12-120-75-75-p-77-iso8859-1",
  196. !    "-adobe-new century schoolbook-bold-r-normal--14-140-75-75-p-87-iso8859-1",
  197. !    "-adobe-new century schoolbook-bold-r-normal--18-180-75-75-p-113-iso8859-1",
  198. !    "-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1",
  199. !    "-adobe-new century schoolbook-medium-i-normal--8-80-75-75-p-50-iso8859-1",
  200. !    "-adobe-new century schoolbook-medium-i-normal--10-100-75-75-p-60-iso8859-1",
  201. !    "-adobe-new century schoolbook-medium-i-normal--12-120-75-75-p-70-iso8859-1",
  202. !    "-adobe-new century schoolbook-medium-i-normal--14-140-75-75-p-81-iso8859-1",
  203. !    "-adobe-new century schoolbook-medium-i-normal--18-180-75-75-p-104-iso8859-1",
  204. !    "-adobe-new century schoolbook-medium-i-normal--24-240-75-75-p-136-iso8859-1",
  205. !    "-adobe-new century schoolbook-bold-i-normal--8-80-75-75-p-56-iso8859-1",
  206. !    "-adobe-new century schoolbook-bold-i-normal--10-100-75-75-p-66-iso8859-1",
  207. !    "-adobe-new century schoolbook-bold-i-normal--12-120-75-75-p-76-iso8859-1",
  208. !    "-adobe-new century schoolbook-bold-i-normal--14-140-75-75-p-88-iso8859-1",
  209. !    "-adobe-new century schoolbook-bold-i-normal--18-180-75-75-p-111-iso8859-1",
  210. !    "-adobe-new century schoolbook-bold-i-normal--24-240-75-75-p-148-iso8859-1",
  211.   
  212. !    "-adobe-symbol-medium-r-normal--8-80-75-75-p-51-adobe-fontspecific",
  213. !    "-adobe-symbol-medium-r-normal--10-100-75-75-p-61-adobe-fontspecific",
  214. !    "-adobe-symbol-medium-r-normal--12-120-75-75-p-74-adobe-fontspecific",
  215. !    "-adobe-symbol-medium-r-normal--14-140-75-75-p-85-adobe-fontspecific",
  216. !    "-adobe-symbol-medium-r-normal--18-180-75-75-p-107-adobe-fontspecific",
  217. !    "-adobe-symbol-medium-r-normal--24-240-75-75-p-142-adobe-fontspecific"
  218.   };
  219.   
  220. --- 111,329 ----
  221.   static char    * fontNameStr[] =
  222.   {
  223. ! /* 75 dpi fonts */
  224. !   "-adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1",
  225. !   "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
  226. !   "-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-1",
  227. !   "-adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1",
  228. !   "-adobe-times-medium-r-normal--18-180-75-75-p-94-iso8859-1",
  229. !   "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
  230. !   "-adobe-times-bold-r-normal--8-80-75-75-p-47-iso8859-1",
  231. !   "-adobe-times-bold-r-normal--10-100-75-75-p-57-iso8859-1",
  232. !   "-adobe-times-bold-r-normal--12-120-75-75-p-67-iso8859-1",
  233. !   "-adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1",
  234. !   "-adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1",
  235. !   "-adobe-times-bold-r-normal--24-240-75-75-p-132-iso8859-1",
  236. !   "-adobe-times-medium-i-normal--8-80-75-75-p-42-iso8859-1",
  237. !   "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-1",
  238. !   "-adobe-times-medium-i-normal--12-120-75-75-p-63-iso8859-1",
  239. !   "-adobe-times-medium-i-normal--14-140-75-75-p-73-iso8859-1",
  240. !   "-adobe-times-medium-i-normal--18-180-75-75-p-94-iso8859-1",
  241. !   "-adobe-times-medium-i-normal--24-240-75-75-p-125-iso8859-1",
  242. !   "-adobe-times-bold-i-normal--8-80-75-75-p-47-iso8859-1",
  243. !   "-adobe-times-bold-i-normal--10-100-75-75-p-57-iso8859-1",
  244. !   "-adobe-times-bold-i-normal--12-120-75-75-p-68-iso8859-1",
  245. !   "-adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-1",
  246. !   "-adobe-times-bold-i-normal--18-180-75-75-p-98-iso8859-1",
  247. !   "-adobe-times-bold-i-normal--24-240-75-75-p-128-iso8859-1",
  248.   
  249. !   "-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1",
  250. !   "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1",
  251. !   "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1",
  252. !   "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1",
  253. !   "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1",
  254. !   "-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1",
  255. !   "-adobe-courier-bold-r-normal--8-80-75-75-m-50-iso8859-1",
  256. !   "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1",
  257. !   "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1",
  258. !   "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1",
  259. !   "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1",
  260. !   "-adobe-courier-bold-r-normal--24-240-75-75-m-150-iso8859-1",
  261. !   "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1",
  262. !   "-adobe-courier-medium-o-normal--10-100-75-75-m-60-iso8859-1",
  263. !   "-adobe-courier-medium-o-normal--12-120-75-75-m-70-iso8859-1",
  264. !   "-adobe-courier-medium-o-normal--14-140-75-75-m-90-iso8859-1",
  265. !   "-adobe-courier-medium-o-normal--18-180-75-75-m-110-iso8859-1",
  266. !   "-adobe-courier-medium-o-normal--24-240-75-75-m-150-iso8859-1",
  267. !   "-adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1",
  268. !   "-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1",
  269. !   "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1",
  270. !   "-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1",
  271. !   "-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1",
  272. !   "-adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1",
  273.   
  274. !   "-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1",
  275. !   "-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1",
  276. !   "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1",
  277. !   "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1",
  278. !   "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1",
  279. !   "-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1",
  280. !   "-adobe-helvetica-bold-r-normal--8-80-75-75-p-50-iso8859-1",
  281. !   "-adobe-helvetica-bold-r-normal--10-100-75-75-p-60-iso8859-1",
  282. !   "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1",
  283. !   "-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1",
  284. !   "-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1",
  285. !   "-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1",
  286. !   "-adobe-helvetica-medium-o-normal--8-80-75-75-p-47-iso8859-1",
  287. !   "-adobe-helvetica-medium-o-normal--10-100-75-75-p-57-iso8859-1",
  288. !   "-adobe-helvetica-medium-o-normal--12-120-75-75-p-67-iso8859-1",
  289. !   "-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1",
  290. !   "-adobe-helvetica-medium-o-normal--18-180-75-75-p-98-iso8859-1",
  291. !   "-adobe-helvetica-medium-o-normal--24-240-75-75-p-130-iso8859-1",
  292. !   "-adobe-helvetica-bold-o-normal--8-80-75-75-p-50-iso8859-1",
  293. !   "-adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1",
  294. !   "-adobe-helvetica-bold-o-normal--12-120-75-75-p-69-iso8859-1",
  295. !   "-adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1",
  296. !   "-adobe-helvetica-bold-o-normal--18-180-75-75-p-104-iso8859-1",
  297. !   "-adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1",
  298.   
  299. !   "-adobe-new century schoolbook-medium-r-normal--8-80-75-75-p-50-iso8859-1",
  300. !   "-adobe-new century schoolbook-medium-r-normal--10-100-75-75-p-60-iso8859-1",
  301. !   "-adobe-new century schoolbook-medium-r-normal--12-120-75-75-p-70-iso8859-1",
  302. !   "-adobe-new century schoolbook-medium-r-normal--14-140-75-75-p-82-iso8859-1",
  303. !   "-adobe-new century schoolbook-medium-r-normal--18-180-75-75-p-103-iso8859-1",
  304. !   "-adobe-new century schoolbook-medium-r-normal--24-240-75-75-p-137-iso8859-1",
  305. !   "-adobe-new century schoolbook-bold-r-normal--8-80-75-75-p-56-iso8859-1",
  306. !   "-adobe-new century schoolbook-bold-r-normal--10-100-75-75-p-66-iso8859-1",
  307. !   "-adobe-new century schoolbook-bold-r-normal--12-120-75-75-p-77-iso8859-1",
  308. !   "-adobe-new century schoolbook-bold-r-normal--14-140-75-75-p-87-iso8859-1",
  309. !   "-adobe-new century schoolbook-bold-r-normal--18-180-75-75-p-113-iso8859-1",
  310. !   "-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1",
  311. !   "-adobe-new century schoolbook-medium-i-normal--8-80-75-75-p-50-iso8859-1",
  312. !   "-adobe-new century schoolbook-medium-i-normal--10-100-75-75-p-60-iso8859-1",
  313. !   "-adobe-new century schoolbook-medium-i-normal--12-120-75-75-p-70-iso8859-1",
  314. !   "-adobe-new century schoolbook-medium-i-normal--14-140-75-75-p-81-iso8859-1",
  315. !   "-adobe-new century schoolbook-medium-i-normal--18-180-75-75-p-104-iso8859-1",
  316. !   "-adobe-new century schoolbook-medium-i-normal--24-240-75-75-p-136-iso8859-1",
  317. !   "-adobe-new century schoolbook-bold-i-normal--8-80-75-75-p-56-iso8859-1",
  318. !   "-adobe-new century schoolbook-bold-i-normal--10-100-75-75-p-66-iso8859-1",
  319. !   "-adobe-new century schoolbook-bold-i-normal--12-120-75-75-p-76-iso8859-1",
  320. !   "-adobe-new century schoolbook-bold-i-normal--14-140-75-75-p-88-iso8859-1",
  321. !   "-adobe-new century schoolbook-bold-i-normal--18-180-75-75-p-111-iso8859-1",
  322. !   "-adobe-new century schoolbook-bold-i-normal--24-240-75-75-p-148-iso8859-1",
  323.   
  324. !   "-adobe-symbol-medium-r-normal--8-80-75-75-p-51-adobe-fontspecific",
  325. !   "-adobe-symbol-medium-r-normal--10-100-75-75-p-61-adobe-fontspecific",
  326. !   "-adobe-symbol-medium-r-normal--12-120-75-75-p-74-adobe-fontspecific",
  327. !   "-adobe-symbol-medium-r-normal--14-140-75-75-p-85-adobe-fontspecific",
  328. !   "-adobe-symbol-medium-r-normal--18-180-75-75-p-107-adobe-fontspecific",
  329. !   "-adobe-symbol-medium-r-normal--24-240-75-75-p-142-adobe-fontspecific",
  330. ! /* 100 dpi fonts */
  331. !   "-adobe-times-medium-r-normal--11-80-100-100-p-54-iso8859-1",
  332. !   "-adobe-times-medium-r-normal--14-100-100-100-p-74-iso8859-1",
  333. !   "-adobe-times-medium-r-normal--17-120-100-100-p-84-iso8859-1",
  334. !   "-adobe-times-medium-r-normal--20-140-100-100-p-96-iso8859-1",
  335. !   "-adobe-times-medium-r-normal--25-180-100-100-p-125-iso8859-1",
  336. !   "-adobe-times-medium-r-normal--34-240-100-100-p-170-iso8859-1",
  337. !   "-adobe-times-bold-r-normal--11-80-100-100-p-57-iso8859-1",
  338. !   "-adobe-times-bold-r-normal--14-100-100-100-p-76-iso8859-1",
  339. !   "-adobe-times-bold-r-normal--17-120-100-100-p-88-iso8859-1",
  340. !   "-adobe-times-bold-r-normal--20-140-100-100-p-100-iso8859-1",
  341. !   "-adobe-times-bold-r-normal--25-180-100-100-p-132-iso8859-1",
  342. !   "-adobe-times-bold-r-normal--34-240-100-100-p-177-iso8859-1",
  343. !   "-adobe-times-medium-i-normal--11-80-100-100-p-52-iso8859-1",
  344. !   "-adobe-times-medium-i-normal--14-100-100-100-p-73-iso8859-1",
  345. !   "-adobe-times-medium-i-normal--17-120-100-100-p-84-iso8859-1",
  346. !   "-adobe-times-medium-i-normal--20-140-100-100-p-94-iso8859-1",
  347. !   "-adobe-times-medium-i-normal--25-180-100-100-p-125-iso8859-1",
  348. !   "-adobe-times-medium-i-normal--34-240-100-100-p-168-iso8859-1",
  349. !   "-adobe-times-bold-i-normal--11-80-100-100-p-57-iso8859-1",
  350. !   "-adobe-times-bold-i-normal--14-100-100-100-p-77-iso8859-1",
  351. !   "-adobe-times-bold-i-normal--17-120-100-100-p-86-iso8859-1",
  352. !   "-adobe-times-bold-i-normal--20-140-100-100-p-98-iso8859-1",
  353. !   "-adobe-times-bold-i-normal--25-180-100-100-p-128-iso8859-1",
  354. !   "-adobe-times-bold-i-normal--34-240-100-100-p-170-iso8859-1",
  355. !   "-adobe-courier-medium-r-normal--11-80-100-100-m-60-iso8859-1",
  356. !   "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso8859-1",
  357. !   "-adobe-courier-medium-r-normal--17-120-100-100-m-100-iso8859-1",
  358. !   "-adobe-courier-medium-r-normal--20-140-100-100-m-110-iso8859-1",
  359. !   "-adobe-courier-medium-r-normal--25-180-100-100-m-150-iso8859-1",
  360. !   "-adobe-courier-medium-r-normal--34-240-100-100-m-200-iso8859-1",
  361. !   "-adobe-courier-bold-r-normal--11-80-100-100-m-60-iso8859-1",
  362. !   "-adobe-courier-bold-r-normal--14-100-100-100-m-90-iso8859-1",
  363. !   "-adobe-courier-bold-r-normal--17-120-100-100-m-100-iso8859-1",
  364. !   "-adobe-courier-bold-r-normal--20-140-100-100-m-110-iso8859-1",
  365. !   "-adobe-courier-bold-r-normal--25-180-100-100-m-150-iso8859-1",
  366. !   "-adobe-courier-bold-r-normal--34-240-100-100-m-200-iso8859-1",
  367. !   "-adobe-courier-medium-o-normal--11-80-100-100-m-60-iso8859-1",
  368. !   "-adobe-courier-medium-o-normal--14-100-100-100-m-90-iso8859-1",
  369. !   "-adobe-courier-medium-o-normal--17-120-100-100-m-100-iso8859-1",
  370. !   "-adobe-courier-medium-o-normal--20-140-100-100-m-110-iso8859-1",
  371. !   "-adobe-courier-medium-o-normal--25-180-100-100-m-150-iso8859-1",
  372. !   "-adobe-courier-medium-o-normal--34-240-100-100-m-200-iso8859-1",
  373. !   "-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso8859-1",
  374. !   "-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso8859-1",
  375. !   "-adobe-courier-bold-o-normal--17-120-100-100-m-100-iso8859-1",
  376. !   "-adobe-courier-bold-o-normal--20-140-100-100-m-110-iso8859-1",
  377. !   "-adobe-courier-bold-o-normal--25-180-100-100-m-150-iso8859-1",
  378. !   "-adobe-courier-bold-o-normal--34-240-100-100-m-200-iso8859-1",
  379. !   "-adobe-helvetica-medium-r-normal--11-80-100-100-p-56-iso8859-1",
  380. !   "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1",
  381. !   "-adobe-helvetica-medium-r-normal--17-120-100-100-p-88-iso8859-1",
  382. !   "-adobe-helvetica-medium-r-normal--20-140-100-100-p-100-iso8859-1",
  383. !   "-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8859-1",
  384. !   "-adobe-helvetica-medium-r-normal--34-240-100-100-p-176-iso8859-1",
  385. !   "-adobe-helvetica-bold-r-normal--11-80-100-100-p-60-iso8859-1",
  386. !   "-adobe-helvetica-bold-r-normal--14-100-100-100-p-82-iso8859-1",
  387. !   "-adobe-helvetica-bold-r-normal--17-120-100-100-p-92-iso8859-1",
  388. !   "-adobe-helvetica-bold-r-normal--20-140-100-100-p-105-iso8859-1",
  389. !   "-adobe-helvetica-bold-r-normal--25-180-100-100-p-138-iso8859-1",
  390. !   "-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1",
  391. !   "-adobe-helvetica-medium-o-normal--11-80-100-100-p-57-iso8859-1",
  392. !   "-adobe-helvetica-medium-o-normal--14-100-100-100-p-78-iso8859-1",
  393. !   "-adobe-helvetica-medium-o-normal--17-120-100-100-p-88-iso8859-1",
  394. !   "-adobe-helvetica-medium-o-normal--20-140-100-100-p-98-iso8859-1",
  395. !   "-adobe-helvetica-medium-o-normal--25-180-100-100-p-130-iso8859-1",
  396. !   "-adobe-helvetica-medium-o-normal--34-240-100-100-p-176-iso8859-1",
  397. !   "-adobe-helvetica-bold-o-normal--11-80-100-100-p-60-iso8859-1",
  398. !   "-adobe-helvetica-bold-o-normal--14-100-100-100-p-82-iso8859-1",
  399. !   "-adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1",
  400. !   "-adobe-helvetica-bold-o-normal--20-140-100-100-p-103-iso8859-1",
  401. !   "-adobe-helvetica-bold-o-normal--25-180-100-100-p-138-iso8859-1",
  402. !   "-adobe-helvetica-bold-o-normal--34-240-100-100-p-182-iso8859-1",
  403. !   "-adobe-new century schoolbook-medium-r-normal--11-80-100-100-p-60-iso8859-1",
  404. !   "-adobe-new century schoolbook-medium-r-normal--14-100-100-100-p-82-iso8859-1",
  405. !   "-adobe-new century schoolbook-medium-r-normal--17-120-100-100-p-91-iso8859-1",
  406. !   "-adobe-new century schoolbook-medium-r-normal--20-140-100-100-p-103-iso8859-1",
  407. !   "-adobe-new century schoolbook-medium-r-normal--25-180-100-100-p-136-iso8859-1",
  408. !   "-adobe-new century schoolbook-medium-r-normal--34-240-100-100-p-181-iso8859-1",
  409. !   "-adobe-new century schoolbook-bold-r-normal--11-80-100-100-p-66-iso8859-1",
  410. !   "-adobe-new century schoolbook-bold-r-normal--14-100-100-100-p-87-iso8859-1",
  411. !   "-adobe-new century schoolbook-bold-r-normal--17-120-100-100-p-99-iso8859-1",
  412. !   "-adobe-new century schoolbook-bold-r-normal--20-140-100-100-p-113-iso8859-1",
  413. !   "-adobe-new century schoolbook-bold-r-normal--25-180-100-100-p-149-iso8859-1",
  414. !   "-adobe-new century schoolbook-bold-r-normal--34-240-100-100-p-193-iso8859-1",
  415. !   "-adobe-new century schoolbook-medium-i-normal--11-80-100-100-p-60-iso8859-1",
  416. !   "-adobe-new century schoolbook-medium-i-normal--14-100-100-100-p-81-iso8859-1",
  417. !   "-adobe-new century schoolbook-medium-i-normal--17-120-100-100-p-92-iso8859-1",
  418. !   "-adobe-new century schoolbook-medium-i-normal--20-140-100-100-p-104-iso8859-1",
  419. !   "-adobe-new century schoolbook-medium-i-normal--25-180-100-100-p-136-iso8859-1",
  420. !   "-adobe-new century schoolbook-medium-i-normal--34-240-100-100-p-182-iso8859-1",
  421. !   "-adobe-new century schoolbook-bold-i-normal--11-80-100-100-p-66-iso8859-1",
  422. !   "-adobe-new century schoolbook-bold-i-normal--14-100-100-100-p-88-iso8859-1",
  423. !   "-adobe-new century schoolbook-bold-i-normal--17-120-100-100-p-99-iso8859-1",
  424. !   "-adobe-new century schoolbook-bold-i-normal--20-140-100-100-p-111-iso8859-1",
  425. !   "-adobe-new century schoolbook-bold-i-normal--25-180-100-100-p-148-iso8859-1",
  426. !   "-adobe-new century schoolbook-bold-i-normal--34-240-100-100-p-193-iso8859-1",
  427. !   "-adobe-symbol-medium-r-normal--11-80-100-100-p-61-adobe-fontspecific",
  428. !   "-adobe-symbol-medium-r-normal--14-100-100-100-p-85-adobe-fontspecific",
  429. !   "-adobe-symbol-medium-r-normal--17-120-100-100-p-95-adobe-fontspecific",
  430. !   "-adobe-symbol-medium-r-normal--20-140-100-100-p-107-adobe-fontspecific",
  431. !   "-adobe-symbol-medium-r-normal--25-180-100-100-p-142-adobe-fontspecific",
  432. !   "-adobe-symbol-medium-r-normal--34-240-100-100-p-191-adobe-fontspecific"
  433.   };
  434.   
  435. ***************
  436. *** 208,218 ****
  437.   }
  438.   
  439. ! int FontIndex (font_index, size_index, style_index)
  440. !    register int    font_index, size_index, style_index;
  441.   {
  442.      if (font_index == FONT_SYM)
  443. !       return (FIndex(font_index,size_index,0));
  444.      else
  445. !       return (FIndex(font_index,size_index,style_index));
  446.   }
  447.   
  448. --- 334,351 ----
  449.   }
  450.   
  451. ! int FontIndex (dpi_index, font_index, size_index, style_index)
  452. !    register int    dpi_index, font_index, size_index, style_index;
  453.   {
  454. + /* if (font_index == FONT_SYM) */
  455. + /*    return (FIndex(font_index,size_index,0)); */
  456. + /* else */
  457. + /*    return (FIndex(font_index,size_index,style_index)); */
  458.      if (font_index == FONT_SYM)
  459. !       return (size_index+MAXFONTSIZES*(MAXFONTSTYLES*font_index) +
  460. !             dpi_index*FONTS_PER_DPI);
  461.      else
  462. !       return (size_index+MAXFONTSIZES*(style_index+MAXFONTSTYLES*font_index) +
  463. !             dpi_index*FONTS_PER_DPI);
  464.   }
  465.   
  466. ***************
  467. *** 221,225 ****
  468.      register int    index;
  469.   
  470. !    canvasFontIndex = index = FontIndex (curFont, curSize, curStyle);
  471.   
  472.      if (!myFontInfo[index].valid)
  473. --- 354,358 ----
  474.      register int    index;
  475.   
  476. !    canvasFontIndex = index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  477.   
  478.      if (!myFontInfo[index].valid)
  479. ***************
  480. *** 234,239 ****
  481.   
  482.      canvasFontPtr = myFontInfo[index].xfs;
  483. !    canvasFontAsc = canvasFontPtr->ascent;
  484. !    canvasFontDes = canvasFontPtr->descent;
  485.      canvasFontHeight = canvasFontAsc + canvasFontDes;
  486.   
  487. --- 367,372 ----
  488.   
  489.      canvasFontPtr = myFontInfo[index].xfs;
  490. !    canvasFontAsc = canvasFontPtr->max_bounds.ascent;
  491. !    canvasFontDes = canvasFontPtr->max_bounds.descent;
  492.      canvasFontHeight = canvasFontAsc + canvasFontDes;
  493.   
  494. ***************
  495. *** 241,244 ****
  496. --- 374,380 ----
  497.   
  498.      textCursorH = canvasFontHeight;
  499. +    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  500. +    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  501.   }
  502.   
  503. ***************
  504. *** 247,250 ****
  505. --- 383,389 ----
  506.      register int    i;
  507.   
  508. +    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  509. +    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  510.      for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  511.   
  512. ***************
  513. *** 263,268 ****
  514.      rulerFontPtr = myFontInfo[COUR10R].xfs;
  515.      rulerFontWidth = rulerFontPtr->max_bounds.width;
  516. !    rulerFontAsc = rulerFontPtr->ascent;
  517. !    rulerFontDes = rulerFontPtr->descent;
  518.      rulerFontHeight = rulerFontAsc + rulerFontDes;
  519.   
  520. --- 402,407 ----
  521.      rulerFontPtr = myFontInfo[COUR10R].xfs;
  522.      rulerFontWidth = rulerFontPtr->max_bounds.width;
  523. !    rulerFontAsc = rulerFontPtr->max_bounds.ascent;
  524. !    rulerFontDes = rulerFontPtr->max_bounds.descent;
  525.      rulerFontHeight = rulerFontAsc + rulerFontDes;
  526.   
  527. ***************
  528. *** 269,274 ****
  529.      defaultFontPtr = myFontInfo[COUR18R].xfs;
  530.      defaultFontWidth = defaultFontPtr->max_bounds.width;
  531. !    defaultFontAsc = defaultFontPtr->ascent;
  532. !    defaultFontDes = defaultFontPtr->descent;
  533.      defaultFontHeight = defaultFontAsc + defaultFontDes;
  534.   }
  535. --- 408,413 ----
  536.      defaultFontPtr = myFontInfo[COUR18R].xfs;
  537.      defaultFontWidth = defaultFontPtr->max_bounds.width;
  538. !    defaultFontAsc = defaultFontPtr->max_bounds.ascent;
  539. !    defaultFontDes = defaultFontPtr->max_bounds.descent;
  540.      defaultFontHeight = defaultFontAsc + defaultFontDes;
  541.   }
  542. ***************
  543. *** 709,713 ****
  544.   }
  545.   
  546. ! static int    savedFont, savedSize, savedStyle;
  547.   static int    savedJust, savedRotate, savedPen;
  548.   
  549. --- 848,965 ----
  550.   }
  551.   
  552. ! static
  553. ! int ChangeObjTextFontDPI (ObjPtr, FontDPIIndex)
  554. !    register struct ObjRec    * ObjPtr;
  555. !    register int            FontDPIIndex;
  556. ! {
  557. !    register struct ObjRec    * obj_ptr;
  558. !    register int            changed = FALSE;
  559. !    for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
  560. !       switch (obj_ptr->type)
  561. !       {
  562. !          case OBJ_TEXT:
  563. !             if (obj_ptr->detail.t->dpi != FontDPIIndex)
  564. !             {
  565. !                obj_ptr->detail.t->dpi = FontDPIIndex;
  566. !                UpdTextBBox (obj_ptr);
  567. !                changed = TRUE;
  568. !             }
  569. !             break;
  570. !          case OBJ_GROUP:
  571. !          case OBJ_SYM:
  572. !             if (ChangeObjTextFontDPI (obj_ptr->detail.r->last, FontDPIIndex))
  573. !             {
  574. !                changed = TRUE;
  575. !                AdjObjBBox (obj_ptr);
  576. !             }
  577. !             break;
  578. !       }
  579. !    return (changed);
  580. ! }
  581. ! void ChangeFontDPI (FontDPIIndex)
  582. !    int    FontDPIIndex;
  583. ! {
  584. !    register struct SelRec    * sel_ptr;
  585. !    register struct ObjRec    * obj_ptr;
  586. !    int                changed = FALSE, text_cursor_shown;
  587. !    int                ltx, lty, rbx, rby, text_obj_created;
  588. !    if (FontDPIIndex == INVALID) return;
  589. !    if (topSel != NULL)
  590. !    {
  591. !       for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev)
  592. !       {
  593. !          obj_ptr = sel_ptr->obj;
  594. !          switch (obj_ptr->type)
  595. !          {
  596. !             case OBJ_TEXT:
  597. !                if (obj_ptr->detail.t->dpi != FontDPIIndex)
  598. !                {
  599. !                   obj_ptr->detail.t->dpi = FontDPIIndex;
  600. !                   UpdTextBBox (obj_ptr);
  601. !                   changed = TRUE;
  602. !                }
  603. !                break;
  604. !             case OBJ_GROUP:
  605. !             case OBJ_SYM:
  606. !                if (ChangeObjTextFont (obj_ptr->detail.r->last, FontDPIIndex))
  607. !                {
  608. !                   changed = TRUE;
  609. !                   AdjObjBBox (obj_ptr);
  610. !                }
  611. !                break;
  612. !          }
  613. !       }
  614. !       if (changed)
  615. !       {
  616. !          HighLightReverse ();
  617. !          ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY;
  618. !          UpdSelBBox ();
  619. !          RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale),
  620. !                rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale),
  621. !                selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
  622. !                selRbY+(1<<zoomScale));
  623. !          SetFileModified (TRUE);
  624. !          HighLightForward ();
  625. !       }
  626. !    }
  627. !    else
  628. !    {
  629. !       text_cursor_shown = textCursorShown;
  630. !       text_obj_created = TieLooseEnds ();
  631. !       curFontDPI = FontDPIIndex;
  632. !       SetCanvasFont ();
  633. !       if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown)
  634. !       {
  635. !          NewCurText ();
  636. !          RedrawCurText ();
  637. !       }
  638. !       else
  639. !          textCursorShown = FALSE;
  640. !       ShowCurFont ();
  641. !       pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
  642. !       sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  643. !    }
  644. ! }
  645. ! void FontDPIMenu (X, Y)
  646. !    int  X, Y;
  647. ! {
  648. !    register int            index;
  649. !    int                * fore_colors, * valid;
  650. !    DefaultColorArrays (MAXFONTDPIS, &fore_colors, &valid);
  651. !    index = TextMenuLoop (X, Y, fontDPIMenuStr, MAXFONTDPIS, fore_colors, valid,
  652. !          SINGLECOLOR);
  653. !    ChangeFontDPI (index);
  654. ! }
  655. ! static int    savedFont, savedSize, savedStyle, savedDPI;
  656.   static int    savedJust, savedRotate, savedPen;
  657.   
  658. ***************
  659. *** 717,720 ****
  660. --- 969,973 ----
  661.      savedSize = curSize;
  662.      savedStyle = curStyle;
  663. +    savedDPI = curFontDPI;
  664.      savedJust = textJust;
  665.      savedRotate = curRotate;
  666. ***************
  667. *** 727,730 ****
  668. --- 980,984 ----
  669.      curSize = savedSize;
  670.      curStyle = savedStyle;
  671. +    curFontDPI = savedDPI;
  672.      textJust = savedJust;
  673.      curRotate = savedRotate;
  674. ***************
  675. *** 734,738 ****
  676.   }
  677.   
  678. ! static int    pushedFont, pushedSize, pushedStyle, pushedJust;
  679.   static int    pushedColorIndex, pushedRotate, pushedPen;
  680.   
  681. --- 988,992 ----
  682.   }
  683.   
  684. ! static int    pushedFont, pushedSize, pushedStyle, pushedDPI, pushedJust;
  685.   static int    pushedColorIndex, pushedRotate, pushedPen;
  686.   
  687. ***************
  688. *** 742,745 ****
  689. --- 996,1000 ----
  690.      pushedSize = curSize;
  691.      pushedStyle = curStyle;
  692. +    pushedDPI = curFontDPI;
  693.      pushedJust = textJust;
  694.      pushedRotate = curRotate;
  695. ***************
  696. *** 753,756 ****
  697. --- 1008,1012 ----
  698.      curSize = pushedSize;
  699.      curStyle = pushedStyle;
  700. +    curFontDPI = pushedDPI;
  701.      textJust = pushedJust;
  702.      curRotate = pushedRotate;
  703. ***************
  704. *** 771,773 ****
  705. --- 1027,1081 ----
  706.            myFontInfo[i].valid = FALSE;
  707.         }
  708. + }
  709. + static
  710. + void GenerateFontInfo ()
  711. +    /* This procedure is used to generate pdrawFontAsc[] and */
  712. +    /*    pDrawFontDes[], to be used in ``prtgif.c''.  It is */
  713. +    /*    supposed to be called within dbx and not tgif.     */
  714. + {
  715. +    register int    i, j, num_rows;
  716. +    for (i = 0; i < FONTTABLESIZE; i++)
  717. +       if (!myFontInfo[i].valid)
  718. +       {
  719. +          if ((myFontInfo[i].xfs =
  720. +                XLoadQueryFont (mainDisplay, fontNameStr[i])) == NULL)
  721. +          {
  722. +             printf ("Can not open %s.  Abort.\n\n", fontNameStr[i]);
  723. +             exit (-1);
  724. +          }
  725. +          myFontInfo[i].valid = TRUE;
  726. +       }
  727. +    num_rows = FONTTABLESIZE / MAXFONTSIZES;
  728. +    printf ("short\tpDrawFontAsc[] =\n{\n");
  729. +    for (i = 0; i < num_rows; i++)
  730. +    {
  731. +       printf ("   ");
  732. +       for (j = 0; j < MAXFONTSIZES; j++)
  733. +          if (i == num_rows-1 && j == MAXFONTSIZES-1)
  734. +             printf ("%2d ",
  735. +                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent);
  736. +          else
  737. +             printf ("%2d, ",
  738. +                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent);
  739. +       printf ("\n");
  740. +    }
  741. +    printf ("};\n\n");
  742. +    printf ("short\tpDrawFontDes[] =\n{\n");
  743. +    for (i = 0; i < num_rows; i++)
  744. +    {
  745. +       printf ("   ");
  746. +       for (j = 0; j < MAXFONTSIZES; j++)
  747. +          if (i == num_rows-1 && j == MAXFONTSIZES-1)
  748. +             printf ("%2d ",
  749. +                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent);
  750. +          else
  751. +             printf ("%2d, ",
  752. +                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent);
  753. +       printf ("\n");
  754. +    }
  755. +    printf ("};\n");
  756.   }
  757. *** group.c.orig    Fri Aug 17 13:47:37 1990
  758. --- group.c    Fri Aug 17 13:47:38 1990
  759. ***************
  760. *** 6,10 ****
  761.   #ifndef lint
  762.   static char RCSid[] =
  763. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.3 90/07/30 11:10:25 william Exp $";
  764.   #endif
  765.   
  766. --- 6,10 ----
  767.   #ifndef lint
  768.   static char RCSid[] =
  769. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.6 90/08/13 09:23:41 william Exp $";
  770.   #endif
  771.   
  772. ***************
  773. *** 32,36 ****
  774.      group_ptr->first = TopObjPtr;
  775.      group_ptr->last = BotObjPtr;
  776. -    group_ptr->fattr = group_ptr->lattr = NULL;
  777.      obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
  778.      obj_ptr->x = selObjLtX; /* note:  selLtX, selLtY are absolute */
  779. --- 32,35 ----
  780. ***************
  781. *** 46,49 ****
  782. --- 45,49 ----
  783.      obj_ptr->obbox.rby = selObjRbY;
  784.      obj_ptr->detail.r = group_ptr;
  785. +    obj_ptr->fattr = obj_ptr->lattr = NULL;
  786.      AddObj (NULL, topObj, obj_ptr);
  787.   }
  788. ***************
  789. *** 57,61 ****
  790.      Save (FP, ObjPtr->detail.r->last, Level+1);
  791.      fprintf (FP, "],");
  792. !    SaveAttrs (FP, ObjPtr->detail.r->lattr);
  793.      fprintf (FP, ")");
  794.   }
  795. --- 57,61 ----
  796.      Save (FP, ObjPtr->detail.r->last, Level+1);
  797.      fprintf (FP, "],");
  798. !    SaveAttrs (FP, ObjPtr->lattr);
  799.      fprintf (FP, ")");
  800.   }
  801. ***************
  802. *** 69,73 ****
  803.      Save (FP, ObjPtr->detail.r->last, Level+1);
  804.      fprintf (FP, "],");
  805. !    SaveAttrs (FP, ObjPtr->detail.r->lattr);
  806.      fprintf (FP, ")");
  807.   }
  808. --- 69,73 ----
  809.      Save (FP, ObjPtr->detail.r->last, Level+1);
  810.      fprintf (FP, "],");
  811. !    SaveAttrs (FP, ObjPtr->lattr);
  812.      fprintf (FP, ")");
  813.   }
  814. ***************
  815. *** 81,86 ****
  816.      Save (FP, ObjPtr->detail.r->last, Level+1);
  817.      fprintf (FP, "],\n");
  818. !    fprintf (FP, "\"%s\",%1d,", ObjPtr->detail.r->s,ObjPtr->detail.r->id);
  819. !    SaveAttrs (FP, ObjPtr->detail.r->lattr);
  820.      fprintf (FP, ")");
  821.   }
  822. --- 81,86 ----
  823.      Save (FP, ObjPtr->detail.r->last, Level+1);
  824.      fprintf (FP, "],\n");
  825. !    fprintf (FP, "\"%s\",%1d,", ObjPtr->detail.r->s,ObjPtr->id);
  826. !    SaveAttrs (FP, ObjPtr->lattr);
  827.      fprintf (FP, ")");
  828.   }
  829. *** mainloop.c.orig    Fri Aug 17 13:47:44 1990
  830. --- mainloop.c    Fri Aug 17 13:47:45 1990
  831. ***************
  832. *** 6,10 ****
  833.   #ifndef lint
  834.   static char RCSid[] =
  835. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.12 90/07/30 11:01:17 william Exp $";
  836.   #endif
  837.   
  838. --- 6,10 ----
  839.   #ifndef lint
  840.   static char RCSid[] =
  841. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.15 90/08/16 09:35:09 william Exp $";
  842.   #endif
  843.   
  844. ***************
  845. *** 18,21 ****
  846. --- 18,22 ----
  847.   #include "choice.e"
  848.   #include "color.e"
  849. + #include "copypaste.e"
  850.   #include "cursor.e"
  851.   #include "dialog.e"
  852. ***************
  853. *** 131,134 ****
  854. --- 132,136 ----
  855.      CleanUpFiles ();
  856.      CleanUpGrids ();
  857. +    CleanUpCutBuffer ();
  858.   
  859.      DelAllCutSel ();
  860. ***************
  861. *** 412,416 ****
  862.         poly_id = atoi (PolyId);
  863.         for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
  864. !          if (obj_ptr->type == OBJ_POLY && obj_ptr->detail.p->id == poly_id)
  865.               break;
  866.   
  867. --- 414,418 ----
  868.         poly_id = atoi (PolyId);
  869.         for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
  870. !          if (obj_ptr->type == OBJ_POLY && obj_ptr->id == poly_id)
  871.               break;
  872.   
  873. ***************
  874. *** 511,515 ****
  875.   
  876.      for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
  877. !       if (obj_ptr->type == OBJ_ICON && obj_ptr->detail.r->id == obj_id)
  878.            break;
  879.   
  880. --- 513,520 ----
  881.   
  882.      for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
  883. !       if ((obj_ptr->type == OBJ_ICON || obj_ptr->type == OBJ_POLY ||
  884. !             obj_ptr->type == OBJ_BOX || obj_ptr->type == OBJ_OVAL ||
  885. !             obj_ptr->type == OBJ_POLYGON) &&
  886. !             obj_ptr->id == obj_id)
  887.            break;
  888.   
  889. ***************
  890. *** 521,525 ****
  891.      else
  892.      {
  893. !       attr_ptr = obj_ptr->detail.r->fattr;
  894.         for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
  895.         {
  896. --- 526,530 ----
  897.      else
  898.      {
  899. !       attr_ptr = obj_ptr->fattr;
  900.         for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
  901.         {
  902. *** menu.c.orig    Fri Aug 17 13:47:56 1990
  903. --- menu.c    Fri Aug 17 13:47:58 1990
  904. ***************
  905. *** 6,10 ****
  906.   #ifndef lint
  907.   static char RCSid[] =
  908. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.11 90/07/30 11:00:59 william Exp $";
  909.   #endif
  910.   
  911. --- 6,10 ----
  912.   #ifndef lint
  913.   static char RCSid[] =
  914. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.12 90/08/15 16:00:27 william Exp $";
  915.   #endif
  916.   
  917. ***************
  918. *** 388,394 ****
  919.   }
  920.   
  921.   static char    * mainMenuStr[MAXMENUS] =
  922.   {
  923. !    "Mode", "File", "Edit", "TextStyle", "TextSize", "Font",
  924.      "Layout", "Arrange", "Fill", "LineStyle", "Pen", "Color", "Special"
  925.   };
  926. --- 388,411 ----
  927.   }
  928.   
  929. + #define MENU_MODE 0
  930. + #define MENU_FILE 1
  931. + #define MENU_EDIT 2
  932. + #define MENU_STYLE 3
  933. + #define MENU_SIZE 4
  934. + #define MENU_FONT 5
  935. + #define MENU_FONTDPI 6
  936. + #define MENU_LAYOUT 7
  937. + #define MENU_ARRANGE 8
  938. + #define MENU_FILL 9
  939. + #define MENU_LINESTYLE 10
  940. + #define MENU_PEN 11
  941. + #define MENU_COLOR 12
  942. + #define MENU_SPECIAL 13
  943. + #define MAXMENUS 14
  944.   static char    * mainMenuStr[MAXMENUS] =
  945.   {
  946. !    "Mode", "File", "Edit", "TextStyle", "TextSize", "Font", "FontDPI",
  947.      "Layout", "Arrange", "Fill", "LineStyle", "Pen", "Color", "Special"
  948.   };
  949. ***************
  950. *** 427,430 ****
  951. --- 444,448 ----
  952.         case MENU_SIZE: SizeMenu (x, y); break;
  953.         case MENU_FONT: FontMenu (x, y); break;
  954. +       case MENU_FONTDPI: FontDPIMenu (x, y); break;
  955.         case MENU_LAYOUT: LayoutMenu (x, y); break;
  956.         case MENU_ARRANGE: ArrangeMenu (x, y); break;
  957. *** move.c.orig    Fri Aug 17 13:48:04 1990
  958. --- move.c    Fri Aug 17 13:48:05 1990
  959. ***************
  960. *** 7,11 ****
  961.   #ifndef lint
  962.   static char RCSid[] =
  963. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.6 90/07/07 23:57:07 william Exp $";
  964.   #endif
  965.   #include <stdio.h>
  966. --- 7,11 ----
  967.   #ifndef lint
  968.   static char RCSid[] =
  969. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.7 90/08/11 00:14:18 william Exp $";
  970.   #endif
  971.   #include <stdio.h>
  972. ***************
  973. *** 88,102 ****
  974.      {
  975.         case OBJ_POLY:
  976. !          MoveAttrs(ObjPtr->detail.p->fattr, Dx,Dy);
  977.            MovePoly (ObjPtr, Dx, Dy); 
  978.            break;
  979. !       case OBJ_BOX : break;
  980. !       case OBJ_OVAL: break;
  981.         case OBJ_TEXT: break;
  982. !       case OBJ_POLYGON: MovePolygon (ObjPtr, Dx, Dy); break;
  983.         case OBJ_SYM:
  984.         case OBJ_ICON:
  985.         case OBJ_GROUP:
  986. !          MoveAttrs(ObjPtr->detail.r->fattr, Dx,Dy);
  987.            for (ptr = ObjPtr->detail.r->first; ptr != NULL; ptr = ptr->next)
  988.               MoveObj (ptr, Dx, Dy);
  989. --- 88,105 ----
  990.      {
  991.         case OBJ_POLY:
  992. !          MoveAttrs(ObjPtr->fattr, Dx,Dy);
  993.            MovePoly (ObjPtr, Dx, Dy); 
  994.            break;
  995. !       case OBJ_BOX : MoveAttrs(ObjPtr->fattr, Dx,Dy); break;
  996. !       case OBJ_OVAL: MoveAttrs(ObjPtr->fattr, Dx,Dy); break;
  997.         case OBJ_TEXT: break;
  998. !       case OBJ_POLYGON:
  999. !          MoveAttrs(ObjPtr->fattr, Dx,Dy);
  1000. !          MovePolygon (ObjPtr, Dx, Dy);
  1001. !          break;
  1002.         case OBJ_SYM:
  1003.         case OBJ_ICON:
  1004.         case OBJ_GROUP:
  1005. !          MoveAttrs(ObjPtr->fattr, Dx,Dy);
  1006.            for (ptr = ObjPtr->detail.r->first; ptr != NULL; ptr = ptr->next)
  1007.               MoveObj (ptr, Dx, Dy);
  1008. *** obj.c.orig    Fri Aug 17 13:48:11 1990
  1009. --- obj.c    Fri Aug 17 13:48:12 1990
  1010. ***************
  1011. *** 6,10 ****
  1012.   #ifndef lint
  1013.   static char RCSid[] =
  1014. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/obj.c,v 1.1 90/04/01 22:16:27 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/obj.c,v 1.2 90/08/11 00:14:20 william Exp $";
  1021.   #endif
  1022.   
  1023. ***************
  1024. *** 62,79 ****
  1025.      switch (ObjPtr->type)
  1026.      {
  1027. !       case OBJ_POLY:
  1028. !          DelAllAttrs(ObjPtr->detail.p->fattr);
  1029. !          FreePolyObj (ObjPtr); 
  1030. !          break;
  1031. !       case OBJ_BOX: FreeBoxObj (ObjPtr); break;
  1032. !       case OBJ_OVAL: FreeOvalObj (ObjPtr); break;
  1033.         case OBJ_TEXT: FreeTextObj (ObjPtr); break;
  1034. !       case OBJ_POLYGON: FreePolygonObj (ObjPtr); break;
  1035.         case OBJ_SYM:
  1036.         case OBJ_ICON:
  1037. !       case OBJ_GROUP:
  1038. !          DelAllAttrs(ObjPtr->detail.r->fattr);
  1039. !          FreeGroupObj (ObjPtr); 
  1040. !          break;
  1041.      }
  1042.   }
  1043. --- 62,74 ----
  1044.      switch (ObjPtr->type)
  1045.      {
  1046. !       case OBJ_POLY: DelAllAttrs(ObjPtr->fattr); FreePolyObj (ObjPtr); break;
  1047. !       case OBJ_BOX: DelAllAttrs(ObjPtr->fattr); FreeBoxObj (ObjPtr); break;
  1048. !       case OBJ_OVAL: DelAllAttrs(ObjPtr->fattr); FreeOvalObj (ObjPtr); break;
  1049.         case OBJ_TEXT: FreeTextObj (ObjPtr); break;
  1050. !       case OBJ_POLYGON: DelAllAttrs(ObjPtr->fattr); FreePolygonObj (ObjPtr);
  1051. !          break;
  1052.         case OBJ_SYM:
  1053.         case OBJ_ICON:
  1054. !       case OBJ_GROUP: DelAllAttrs(ObjPtr->fattr); FreeGroupObj (ObjPtr); break;
  1055.      }
  1056.   }
  1057. ***************
  1058. *** 166,177 ****
  1059.            break;
  1060.      }
  1061. !    switch (ObjPtr->type)
  1062. !    {
  1063. !       case OBJ_POLY: attr_ptr = ObjPtr->detail.p->fattr; break;
  1064. !       case OBJ_SYM:
  1065. !       case OBJ_GROUP:
  1066. !       case OBJ_ICON: attr_ptr = ObjPtr->detail.r->fattr; break;
  1067. !       default: return; /* only the above 4 types can have attributes */
  1068. !    }
  1069.   
  1070.      ltx = ObjPtr->bbox.ltx;
  1071. --- 161,166 ----
  1072.            break;
  1073.      }
  1074. !    attr_ptr = ObjPtr->fattr;
  1075.   
  1076.      ltx = ObjPtr->bbox.ltx;
  1077. *** oval.c.orig    Fri Aug 17 13:48:17 1990
  1078. --- oval.c    Fri Aug 17 13:48:19 1990
  1079. ***************
  1080. *** 6,10 ****
  1081.   #ifndef lint
  1082.   static char RCSid[] =
  1083. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.5 90/06/26 08:52:36 william Exp $";
  1084.   #endif
  1085.   
  1086. --- 6,10 ----
  1087.   #ifndef lint
  1088.   static char RCSid[] =
  1089. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.7 90/08/13 09:23:35 william Exp $";
  1090.   #endif
  1091.   
  1092. ***************
  1093. *** 227,231 ****
  1094. --- 227,234 ----
  1095.      obj_ptr->type = OBJ_OVAL;
  1096.      obj_ptr->color = colorIndex;
  1097. +    obj_ptr->id = objId++;
  1098. +    obj_ptr->dirty = FALSE;
  1099.      obj_ptr->detail.o = oval_ptr;
  1100. +    obj_ptr->fattr = obj_ptr->lattr = NULL;
  1101.      AddObj (NULL, topObj, obj_ptr);
  1102.   }
  1103. ***************
  1104. *** 331,337 ****
  1105.   {
  1106.      fprintf (FP, "oval(%s,", colorMenuItems[ObjPtr->color]);
  1107. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d)", ObjPtr->obbox.ltx,
  1108.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  1109. !          ObjPtr->detail.o->fill, ObjPtr->detail.o->width, ObjPtr->detail.o->pen);
  1110.   }
  1111.   
  1112. --- 334,343 ----
  1113.   {
  1114.      fprintf (FP, "oval(%s,", colorMenuItems[ObjPtr->color]);
  1115. !    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
  1116.            ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
  1117. !          ObjPtr->detail.o->fill, ObjPtr->detail.o->width,
  1118. !          ObjPtr->detail.o->pen, ObjPtr->id);
  1119. !    SaveAttrs (FP, ObjPtr->lattr);
  1120. !    fprintf (FP, ")");
  1121.   }
  1122.   
  1123. ***************
  1124. *** 358,365 ****
  1125.            case 2: width = 6; break;
  1126.         }
  1127.      }
  1128. !    else
  1129.         sscanf (s, "%d , %d, %d , %d , %d , %d , %d",
  1130.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  1131.   
  1132.      oval_ptr->fill = fill;
  1133. --- 364,381 ----
  1134.            case 2: width = 6; break;
  1135.         }
  1136. +       (*ObjPtr)->id = objId++;
  1137.      }
  1138. !    else if (fileVersion <= 7)
  1139. !    {
  1140.         sscanf (s, "%d , %d, %d , %d , %d , %d , %d",
  1141.               <x, <y, &rbx, &rby, &fill, &width, &pen);
  1142. +       (*ObjPtr)->id = objId++;
  1143. +    }
  1144. +    else
  1145. +    {
  1146. +       sscanf (s, "%d , %d, %d , %d , %d , %d , %d , %d",
  1147. +             <x, <y, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id));
  1148. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1149. +    }
  1150.   
  1151.      oval_ptr->fill = fill;
  1152. ***************
  1153. *** 369,372 ****
  1154. --- 385,389 ----
  1155.      (*ObjPtr)->y = lty;
  1156.      (*ObjPtr)->color = FindColorIndex (color_str);
  1157. +    (*ObjPtr)->dirty = FALSE;
  1158.      (*ObjPtr)->type = OBJ_OVAL;
  1159.      (*ObjPtr)->obbox.ltx = ltx;
  1160. *** poly.c.orig    Fri Aug 17 13:48:29 1990
  1161. --- poly.c    Fri Aug 17 13:48:31 1990
  1162. ***************
  1163. *** 6,10 ****
  1164.   #ifndef lint
  1165.   static char RCSid[] =
  1166. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.4 90/06/26 00:11:18 william Exp $";
  1167.   #endif
  1168.   
  1169. --- 6,10 ----
  1170.   #ifndef lint
  1171.   static char RCSid[] =
  1172. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.6 90/08/13 09:23:49 william Exp $";
  1173.   #endif
  1174.   
  1175. ***************
  1176. *** 115,120 ****
  1177.      poly_ptr->width = lineWidth;
  1178.      poly_ptr->pen = penPat;
  1179. -    poly_ptr->fattr = poly_ptr->lattr = NULL;
  1180. -    poly_ptr->id = objId++;
  1181.      poly_ptr->curved = curSpline;
  1182.      poly_ptr->fill = objFill;
  1183. --- 115,118 ----
  1184. ***************
  1185. *** 133,137 ****
  1186. --- 131,138 ----
  1187.      obj_ptr->bbox.rbx += w;
  1188.      obj_ptr->bbox.rby += w;
  1189. +    obj_ptr->id = objId++;
  1190. +    obj_ptr->dirty = FALSE;
  1191.      obj_ptr->detail.p = poly_ptr;
  1192. +    obj_ptr->fattr = obj_ptr->lattr = NULL;
  1193.      AddObj (NULL, topObj, obj_ptr);
  1194.   }
  1195. ***************
  1196. *** 697,702 ****
  1197.      fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
  1198.      fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
  1199. !          poly_ptr->pen, poly_ptr->id, poly_ptr->curved, poly_ptr->fill);
  1200. !    SaveAttrs (FP, ObjPtr->detail.p->lattr);
  1201.      fprintf (FP, ")");
  1202.   }
  1203. --- 698,703 ----
  1204.      fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
  1205.      fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
  1206. !          poly_ptr->pen, ObjPtr->id, poly_ptr->curved, poly_ptr->fill);
  1207. !    SaveAttrs (FP, ObjPtr->lattr);
  1208.      fprintf (FP, ")");
  1209.   }
  1210. ***************
  1211. *** 739,743 ****
  1212.         sscanf (s, "%d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
  1213.               &(poly_ptr->pen));
  1214. !       poly_ptr->id = objId++;
  1215.         poly_ptr->fill = NONEPAT;
  1216.         if (poly_ptr->width == LINE_CURVED)
  1217. --- 740,744 ----
  1218.         sscanf (s, "%d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
  1219.               &(poly_ptr->pen));
  1220. !       (*ObjPtr)->id = objId++;
  1221.         poly_ptr->fill = NONEPAT;
  1222.         if (poly_ptr->width == LINE_CURVED)
  1223. ***************
  1224. *** 757,762 ****
  1225.      {
  1226.         sscanf (s, "%d , %d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
  1227. !             &(poly_ptr->pen), &(poly_ptr->id));
  1228. !       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
  1229.         poly_ptr->fill = NONEPAT;
  1230.         if (poly_ptr->width == LINE_CURVED)
  1231. --- 758,763 ----
  1232.      {
  1233.         sscanf (s, "%d , %d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
  1234. !             &(poly_ptr->pen), &((*ObjPtr)->id));
  1235. !       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1236.         poly_ptr->fill = NONEPAT;
  1237.         if (poly_ptr->width == LINE_CURVED)
  1238. ***************
  1239. *** 776,782 ****
  1240.      {
  1241.         sscanf (s, "%d , %d , %d , %d, %d", &(poly_ptr->style),
  1242. !             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
  1243.               &(poly_ptr->curved));
  1244. !       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
  1245.         poly_ptr->fill = NONEPAT;
  1246.         switch (poly_ptr->width)
  1247. --- 777,783 ----
  1248.      {
  1249.         sscanf (s, "%d , %d , %d , %d, %d", &(poly_ptr->style),
  1250. !             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
  1251.               &(poly_ptr->curved));
  1252. !       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1253.         poly_ptr->fill = NONEPAT;
  1254.         switch (poly_ptr->width)
  1255. ***************
  1256. *** 789,795 ****
  1257.      {
  1258.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  1259. !             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
  1260.               &(poly_ptr->curved), &(poly_ptr->fill));
  1261. !       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
  1262.         switch (poly_ptr->width)
  1263.         {
  1264. --- 790,796 ----
  1265.      {
  1266.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  1267. !             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
  1268.               &(poly_ptr->curved), &(poly_ptr->fill));
  1269. !       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1270.         switch (poly_ptr->width)
  1271.         {
  1272. ***************
  1273. *** 801,807 ****
  1274.      {
  1275.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  1276. !             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
  1277.               &(poly_ptr->curved), &(poly_ptr->fill));
  1278. !       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
  1279.      }
  1280.   
  1281. --- 802,808 ----
  1282.      {
  1283.         sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
  1284. !             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
  1285.               &(poly_ptr->curved), &(poly_ptr->fill));
  1286. !       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1287.      }
  1288.   
  1289. *** polygon.c.orig    Fri Aug 17 13:48:42 1990
  1290. --- polygon.c    Fri Aug 17 13:48:44 1990
  1291. ***************
  1292. *** 6,10 ****
  1293.   #ifndef lint
  1294.   static char RCSid[] =
  1295. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.3 90/06/26 00:11:22 william Exp $";
  1296.   #endif
  1297.   
  1298. --- 6,10 ----
  1299.   #ifndef lint
  1300.   static char RCSid[] =
  1301. !       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.5 90/08/13 09:23:36 william Exp $";
  1302.   #endif
  1303.   
  1304. ***************
  1305. *** 288,292 ****
  1306. --- 288,295 ----
  1307.      obj_ptr->bbox.rbx += w;
  1308.      obj_ptr->bbox.rby += w;
  1309. +    obj_ptr->id = objId++;
  1310. +    obj_ptr->dirty = FALSE;
  1311.      obj_ptr->detail.g = polygon_ptr;
  1312. +    obj_ptr->fattr = obj_ptr->lattr = NULL;
  1313.      AddObj (NULL, topObj, obj_ptr);
  1314.   }
  1315. ***************
  1316. *** 499,505 ****
  1317.         fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  1318.   
  1319. !    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d)", polygon_ptr->vlist[n-1].x,
  1320.            polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
  1321. !          polygon_ptr->pen, polygon_ptr->curved);
  1322.   }
  1323.   
  1324. --- 502,510 ----
  1325.         fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  1326.   
  1327. !    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d,%1d,", polygon_ptr->vlist[n-1].x,
  1328.            polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
  1329. !          polygon_ptr->pen, polygon_ptr->curved, ObjPtr->id);
  1330. !    SaveAttrs (FP, ObjPtr->lattr);
  1331. !    fprintf (FP, ")");
  1332.   }
  1333.   
  1334. ***************
  1335. *** 553,556 ****
  1336. --- 558,562 ----
  1337.            case 2: width = 6; break;
  1338.         }
  1339. +       (*ObjPtr)->id = objId++;
  1340.      }
  1341.      else if (fileVersion <= 5)
  1342. ***************
  1343. *** 562,568 ****
  1344.            case 2: width = 6; break;
  1345.         }
  1346.      }
  1347. !    else
  1348.         sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
  1349.   
  1350.      polygon_ptr->vlist = v;
  1351. --- 568,584 ----
  1352.            case 2: width = 6; break;
  1353.         }
  1354. +       (*ObjPtr)->id = objId++;
  1355.      }
  1356. !    else if (fileVersion <= 7)
  1357. !    {
  1358.         sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
  1359. +       (*ObjPtr)->id = objId++;
  1360. +    }
  1361. +    else
  1362. +    {
  1363. +       sscanf (s, "%d , %d , %d , %d , %d", &fill, &width, &pen, &curved,
  1364. +             &((*ObjPtr)->id));
  1365. +       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
  1366. +    }
  1367.   
  1368.      polygon_ptr->vlist = v;
  1369. ***************
  1370. *** 577,580 ****
  1371. --- 593,597 ----
  1372.      (*ObjPtr)->y = lty;
  1373.      (*ObjPtr)->color = FindColorIndex (color_str);
  1374. +    (*ObjPtr)->dirty = FALSE;
  1375.      (*ObjPtr)->type = OBJ_POLYGON;
  1376.      (*ObjPtr)->obbox.ltx = ltx;
  1377. ---------------------------------> cut here <---------------------------------
  1378. --
  1379. Bill Cheng // UCLA Computer Science Department // (213) 206-7135
  1380. 3277 Boelter Hall // Los Angeles, California 90024 // USA
  1381. william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william
  1382.  
  1383. dan
  1384. ----------------------------------------------------
  1385. O'Reilly && Associates   argv@sun.com / argv@ora.com
  1386. Opinions expressed reflect those of the author only.
  1387.