home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume21 / xfig / patch02f < prev    next >
Encoding:
Text File  |  1993-10-21  |  33.6 KB  |  1,062 lines

  1. Newsgroups: comp.sources.x
  2. From: envbvs@epb12.lbl.gov (Brian V. Smith)
  3. Subject: v21i026:  xfig - Draw amd manipulate objects in an X-Window, Patch02f/16
  4. Message-ID: <1993Oct21.185822.6977@sparky.sterling.com>
  5. X-Md4-Signature: eba687bfd06d00a16fae0f88b989652a
  6. Sender: chris@sparky.sterling.com (Chris Olson)
  7. Organization: Sterling Software
  8. Date: Thu, 21 Oct 1993 18:58:22 GMT
  9. Approved: chris@sterling.com
  10.  
  11. Submitted-by: envbvs@epb12.lbl.gov (Brian V. Smith)
  12. Posting-number: Volume 21, Issue 26
  13. Archive-name: xfig/patch02f
  14. Environment: patch, X11, xfig
  15. Patch-To: xfig: Volume 19, Issue 113-139
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # Contents:  xfig.07
  22. # Wrapped by chris@sparky on Thu Oct 21 13:40:06 1993
  23. PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:/usr/lbin ; export PATH
  24. echo If this archive is complete, you will see the following message:
  25. echo '          "shar: End of archive 6 (of 16)."'
  26. if test -f 'xfig.07' -a "${1}" != "-c" ; then 
  27.   echo shar: Will not clobber existing file \"'xfig.07'\"
  28. else
  29.   echo shar: Extracting \"'xfig.07'\" \(31221 characters\)
  30.   sed "s/^X//" >'xfig.07' <<'END_OF_FILE'
  31. X!     for (i = 1; i < NUM_PS_FONTS + 1; i++)
  32. X!     if (ps_fontinfo[i].xfontnum == f)
  33. X!         {
  34. X!         sprintf(fn, "%s-%d", ps_fontinfo[i].name, s);
  35. X!         break;
  36. X!         }
  37. X! 
  38. X!     for (i = strlen(fn) - 1; i >= 0; i--)
  39. X!     if (isupper(fn[i]))
  40. X!         fn[i] = tolower(fn[i]);
  41. X!     if (appres.DEBUG)
  42. X!     fprintf(stderr, "Loading font %s\n", fn);
  43. X!     set_temp_cursor(wait_cursor);
  44. X!     app_flush();
  45. X!     fontst = XRotLoadFont(tool_d, fn, angle);
  46. X!     if (fontst == NULL) {
  47. X!     fprintf(stderr, "xfig: Can't load font %s ?!, using %s\n",
  48. X!         fn, appres.normalFont);
  49. X!     fontst = XRotLoadFont(tool_d, appres.normalFont, angle);
  50. X!     }
  51. X!     reset_cursor();
  52. X!     return (fontst);
  53. X!   }
  54. X! 
  55. X! #else
  56. X!   {
  57. X      char        fn[128];
  58. X      char        template[200];
  59. X      Boolean        found;
  60. X      struct xfont   *newfont, *nf, *oldnf;
  61. X-     struct flist   *lp, *nlp, *oldlp;
  62. X  
  63. X!     /* see if we've already loaded that font size 's' at angle 'angle' 
  64. X         from the font family 'f' */
  65. X!     /* actually, we've reduced the number of angles to four - 0, 90, 180 and 270 */
  66. X!     if (angle < 0.0)
  67. X!         angle += 2.0*M_PI;
  68. X!     dir = (int)(angle/M_PI_2+0.0001);
  69. X!     if (dir > 3)
  70. X!         dir -= 4;
  71. X      found = False;
  72. X!     /* start with the basic font name (e.g. adobe-times-medium-r-normal-...) */
  73. X      nf = x_fontinfo[f].xfontlist;
  74. X      oldnf = nf;
  75. X      if (nf != NULL) {
  76. X--- 199,232 ----
  77. X  }
  78. X  
  79. X  /*
  80. X!  * Lookup an X font, "f" corresponding to a Postscript font style that is 
  81. X!  * close in size to "s"
  82. X   */
  83. X  
  84. X! PIX_FONT
  85. X! lookfont(f, s)
  86. X      int            f, s;
  87. X  {
  88. X!     PIX_FONT        fontst;
  89. X      char        fn[128];
  90. X      char        template[200];
  91. X      Boolean        found;
  92. X      struct xfont   *newfont, *nf, *oldnf;
  93. X  
  94. X! 
  95. X!     if (f == DEFAULT)
  96. X!         f = 0;        /* pass back the -normal font font */
  97. X!     if (s < 0)
  98. X!         s = DEF_FONTSIZE;    /* default font size */
  99. X! 
  100. X!     /* see if we've already loaded that font size 's' 
  101. X         from the font family 'f' */
  102. X! 
  103. X      found = False;
  104. X! 
  105. X!     /* start with the basic font name (e.g. adobe-times-medium-r-normal-... 
  106. X!         OR times-roman for OpenWindows fonts) */
  107. X! 
  108. X      nf = x_fontinfo[f].xfontlist;
  109. X      oldnf = nf;
  110. X      if (nf != NULL) {
  111. X***************
  112. X*** 268,278 ****
  113. X          strcpy(fn,nf->fname);  /* put the name in fn */
  114. X          if (s < nf->size)
  115. X          put_msg("Font size %d not found, using larger %d point",s,nf->size);
  116. X      } else if (!appres.SCALABLEFONTS) {    /* not found, use largest available */
  117. X          nf = oldnf;
  118. X!         strcpy(fn,nf->fname);  /* put the name in fn */
  119. X          if (s > nf->size)
  120. X          put_msg("Font size %d not found, using smaller %d point",s,nf->size);
  121. X      } else { /* SCALABLE; none yet of that size, alloc one and put it in the list */
  122. X          newfont = (struct xfont *) malloc(sizeof(struct xfont));
  123. X          /* add it on to the end of the list */
  124. X--- 246,260 ----
  125. X          strcpy(fn,nf->fname);  /* put the name in fn */
  126. X          if (s < nf->size)
  127. X          put_msg("Font size %d not found, using larger %d point",s,nf->size);
  128. X+         if (appres.DEBUG)
  129. X+         fprintf(stderr, "Located font %s\n", fn);
  130. X      } else if (!appres.SCALABLEFONTS) {    /* not found, use largest available */
  131. X          nf = oldnf;
  132. X!         strcpy(fn,nf->fname);          /* put the name in fn */
  133. X          if (s > nf->size)
  134. X          put_msg("Font size %d not found, using smaller %d point",s,nf->size);
  135. X+         if (appres.DEBUG)
  136. X+         fprintf(stderr, "Using font %s for size %d\n", fn, s);
  137. X      } else { /* SCALABLE; none yet of that size, alloc one and put it in the list */
  138. X          newfont = (struct xfont *) malloc(sizeof(struct xfont));
  139. X          /* add it on to the end of the list */
  140. X***************
  141. X*** 282,369 ****
  142. X              oldnf->next = newfont;
  143. X          nf = newfont;        /* keep current ptr */
  144. X          nf->size = s;        /* store the size here */
  145. X!         nf->list = NULL;
  146. X          nf->next = NULL;
  147. X  
  148. X!         /* create a full XLFD font name */
  149. X!         strcpy(template,x_fontinfo[f].template);
  150. X!         /* attach pointsize to font name */
  151. X!         strcat(template,"%d-*-*-*-*-*-");
  152. X!         /* add ISO8859 (if not Symbol font or ZapfDingbats) to font name */
  153. X!         if (strstr(template,"symbol") == NULL && 
  154. X          strstr(template,"zapfdingbats") == NULL)
  155. X              strcat(template,"ISO8859-*");
  156. X!         else
  157. X          strcat(template,"*-*");
  158. X!         /* use the pixel field instead of points in the fontname so that the
  159. X          font scales with screen size */
  160. X!         sprintf(fn, template, s);
  161. X          /* allocate space for the name and put it in the structure */
  162. X!         nf->fname = (char *) malloc(strlen(fn));
  163. X          strcpy(nf->fname, fn);
  164. X!     } /* if (!found) */
  165. X!     if (appres.DEBUG)
  166. X!         fprintf(stderr, "Loading font %s at angle %f (%f)\n", 
  167. X!             fn, (float) dir*90.0, angle);
  168. X!     lp = nf->list;
  169. X!     oldlp = lp;
  170. X!     found = False;
  171. X!     while (lp) {
  172. X!         if (lp->dir == dir) {
  173. X!             found = True;
  174. X!             break;
  175. X!         }
  176. X!         oldlp = lp;
  177. X!         lp = lp->next;
  178. X!     } /* while (lp) */
  179. X!     if (!found) {
  180. X!         nlp = (struct flist *) malloc(sizeof(struct flist));
  181. X!         nlp->next = NULL;
  182. X!         if (oldlp)
  183. X!             oldlp->next = nlp;    /* add this to the list */
  184. X!         else
  185. X!             nf->list = nlp;        /* first on the list */
  186. X!         nlp->dir = dir;
  187. X!         set_temp_cursor(wait_cursor);
  188. X!         app_flush();
  189. X!         fontst = XRotLoadFont(tool_d, fn, (float) dir*90.0);
  190. X!         reset_cursor();
  191. X!         if (fontst == NULL) {
  192. X!             fprintf(stderr, "xfig: Can't load font %s ?!, using %s\n",
  193. X              fn, appres.normalFont);
  194. X!             fontst = XRotLoadFont(tool_d, appres.normalFont, (float) dir*90.0);
  195. X!             nf->fname = fn;    /* keep actual name */
  196. X!         }
  197. X!         /* put the structure in the list */
  198. X!         nlp->fstruct = fontst;
  199. X!         lp = nlp;
  200. X!     } /* if (!found) */
  201. X!     fontst = lp->fstruct;
  202. X!     return (fontst);
  203. X!   }
  204. X  
  205. X! #endif                /* !OPENWIN */
  206. X! 
  207. X  }
  208. X  
  209. X! /* print "string" in window "w" using font specified in fstruct at (x,y) */
  210. X  
  211. X! pw_text(w, x, y, op, fstruct, string, color)
  212. X      Window        w;
  213. X      int            x, y, op;
  214. X!     PIX_ROT_FONT    fstruct;
  215. X      char       *string;
  216. X      Color        color;
  217. X  {
  218. X      if (fstruct == NULL)
  219. X      fprintf(stderr,"Error, in pw_text, fstruct==NULL\n");
  220. X!     pwx_text(w, x, y, op, fstruct, string, color);
  221. X  }
  222. X  
  223. X! pwx_text(w, x, y, op, fstruct, string, color)
  224. X      Window        w;
  225. X      int            x, y, op;
  226. X!     PIX_ROT_FONT    fstruct;
  227. X      char       *string;
  228. X      Color        color;
  229. X  {
  230. X--- 264,335 ----
  231. X              oldnf->next = newfont;
  232. X          nf = newfont;        /* keep current ptr */
  233. X          nf->size = s;        /* store the size here */
  234. X!         nf->fstruct = NULL;
  235. X          nf->next = NULL;
  236. X  
  237. X!         if (openwinfonts) {
  238. X!         /* OpenWindows fonts, create font name like times-roman-13 */
  239. X!         sprintf(fn, "%s-%d", x_fontinfo[f].template, s);
  240. X!         } else {
  241. X!         /* X11 fonts, create a full XLFD font name */
  242. X!         strcpy(template,x_fontinfo[f].template);
  243. X!         /* attach pointsize to font name */
  244. X!         strcat(template,"%d-*-*-*-*-*-");
  245. X!         /* add ISO8859 (if not Symbol font or ZapfDingbats) to font name */
  246. X!         if (strstr(template,"symbol") == NULL && 
  247. X          strstr(template,"zapfdingbats") == NULL)
  248. X              strcat(template,"ISO8859-*");
  249. X!         else
  250. X          strcat(template,"*-*");
  251. X!         /* use the pixel field instead of points in the fontname so that the
  252. X          font scales with screen size */
  253. X!         sprintf(fn, template, s);
  254. X!         }
  255. X          /* allocate space for the name and put it in the structure */
  256. X!         nf->fname = (char *) malloc(strlen(fn)+1);
  257. X          strcpy(nf->fname, fn);
  258. X!     } /* scalable */
  259. X!     if (nf->fstruct == NULL) {
  260. X!         if (appres.DEBUG)
  261. X!         fprintf(stderr, "Loading font %s\n", fn);
  262. X!         set_temp_cursor(wait_cursor);
  263. X!         app_flush();
  264. X!         fontst = XLoadQueryFont(tool_d, fn);
  265. X!         reset_cursor();
  266. X!         if (fontst == NULL) {
  267. X!         fprintf(stderr, "xfig: Can't load font %s ?!, using %s\n",
  268. X              fn, appres.normalFont);
  269. X!         fontst = XLoadQueryFont(tool_d, appres.normalFont);
  270. X!         nf->fname = fn;    /* keep actual name */
  271. X!         }
  272. X!         /* put the structure in the list */
  273. X!         nf->fstruct = fontst;
  274. X!     } /* if (nf->fstruct == NULL) */
  275. X  
  276. X!     return (nf->fstruct);
  277. X  }
  278. X  
  279. X! /* print "string" in window "w" using font specified in fstruct at angle
  280. X!     "angle" (radians) at (x,y) */
  281. X  
  282. X! pw_text(w, x, y, op, fstruct, angle, string, color)
  283. X      Window        w;
  284. X      int            x, y, op;
  285. X!     PIX_FONT        fstruct;
  286. X!     float        angle;
  287. X      char       *string;
  288. X      Color        color;
  289. X  {
  290. X      if (fstruct == NULL)
  291. X      fprintf(stderr,"Error, in pw_text, fstruct==NULL\n");
  292. X!     pwx_text(w, x, y, op, fstruct, angle, string, color);
  293. X  }
  294. X  
  295. X! pwx_text(w, x, y, op, fstruct, angle, string, color)
  296. X      Window        w;
  297. X      int            x, y, op;
  298. X!     PIX_FONT        fstruct;
  299. X!     float        angle;
  300. X      char       *string;
  301. X      Color        color;
  302. X  {
  303. X***************
  304. X*** 385,404 ****
  305. X          gc_color[op] = writing_bitmap? color : x_color(color);
  306. X          }
  307. X      }
  308. X!     zXRotDrawString(tool_d, w, fstruct, gccache[op], x, y, 
  309. X!             string, strlen(string));
  310. X  }
  311. X  
  312. X  pr_size
  313. X  pf_textwidth(fstruct, n, s)
  314. X!     PIX_ROT_FONT    fstruct;
  315. X      int            n;
  316. X      char       *s;
  317. X  {
  318. X      pr_size        ret;
  319. X  
  320. X!     ret.x = XRotTextWidth(fstruct, s, n);
  321. X!     ret.y = XRotTextHeight(fstruct, s, n);
  322. X      return (ret);
  323. X  }
  324. X  
  325. X--- 351,370 ----
  326. X          gc_color[op] = writing_bitmap? color : x_color(color);
  327. X          }
  328. X      }
  329. X!     zXRotDrawString(tool_d, fstruct, angle, w, gccache[op], 
  330. X!             x, y, string);
  331. X  }
  332. X  
  333. X  pr_size
  334. X  pf_textwidth(fstruct, n, s)
  335. X!     PIX_FONT        fstruct;
  336. X      int            n;
  337. X      char       *s;
  338. X  {
  339. X      pr_size        ret;
  340. X  
  341. X!     ret.x = XTextWidth(fstruct, s, n);
  342. X!     ret.y = char_height(fstruct);
  343. X      return (ret);
  344. X  }
  345. X  
  346. X***************
  347. X*** 476,487 ****
  348. X      gcv.arc_mode = ArcPieSlice; /* fill mode for arcs */
  349. X      gcv.fill_rule = EvenOddRule /* WindingRule */ ;
  350. X      for (i = 0; i < NUMFILLPATS; i++) {
  351. X!     /* make color fill pattern with black bg (fg is set later in set_x_color() */
  352. X      fill_gc[i] = makegc(PAINT, x_fg_color.pixel, x_color(BLACK));
  353. X!     un_fill_gc[i] = makegc(ERASE, x_fg_color.pixel, x_color(BLACK));
  354. X      /* make black fill pattern with default background */
  355. X      black_fill_gc[i] = makegc(PAINT, x_fg_color.pixel, x_bg_color.pixel);
  356. X!     black_un_fill_gc[i] = makegc(ERASE, x_fg_color.pixel, x_bg_color.pixel);
  357. X      gcv.stipple = fill_pm[i];
  358. X      XChangeGC(tool_d, fill_gc[i],
  359. X            GCStipple | GCFillStyle | GCFillRule | GCArcMode, &gcv);
  360. X--- 442,454 ----
  361. X      gcv.arc_mode = ArcPieSlice; /* fill mode for arcs */
  362. X      gcv.fill_rule = EvenOddRule /* WindingRule */ ;
  363. X      for (i = 0; i < NUMFILLPATS; i++) {
  364. X!     /* make color fill pattern with black bg - fg is set later in set_fillgc() */
  365. X      fill_gc[i] = makegc(PAINT, x_fg_color.pixel, x_color(BLACK));
  366. X!     /* make un-fill gc's with canvas background color as foreground */
  367. X!     un_fill_gc[i] = makegc(PAINT, x_bg_color.pixel, x_color(BLACK));
  368. X      /* make black fill pattern with default background */
  369. X      black_fill_gc[i] = makegc(PAINT, x_fg_color.pixel, x_bg_color.pixel);
  370. X!     black_un_fill_gc[i] = makegc(PAINT, x_bg_color.pixel, x_fg_color.pixel);
  371. X      gcv.stipple = fill_pm[i];
  372. X      XChangeGC(tool_d, fill_gc[i],
  373. X            GCStipple | GCFillStyle | GCFillRule | GCArcMode, &gcv);
  374. X***************
  375. X*** 744,755 ****
  376. X      Color        color;
  377. X  {
  378. X      short        xmin, ymin;
  379. X!     unsigned short  wd, ht;
  380. X  
  381. X!     xmin = (short) min2(xstart, xend);
  382. X!     ymin = (short) min2(ystart, yend);
  383. X!     wd = (unsigned short) abs(xstart - xend);
  384. X!     ht = (unsigned short) abs(ystart - yend);
  385. X  
  386. X      /* if it's a fill pat we know about */
  387. X      if (fill_style >= 1 && fill_style <= NUMFILLPATS) {
  388. X--- 711,722 ----
  389. X      Color        color;
  390. X  {
  391. X      short        xmin, ymin;
  392. X!     unsigned int    wd, ht;
  393. X  
  394. X!     xmin = min2(xstart, xend);
  395. X!     ymin = min2(ystart, yend);
  396. X!     wd = (unsigned int) abs(xstart - xend);
  397. X!     ht = (unsigned int) abs(ystart - yend);
  398. X  
  399. X      /* if it's a fill pat we know about */
  400. X      if (fill_style >= 1 && fill_style <= NUMFILLPATS) {
  401. X***************
  402. X*** 891,899 ****
  403. X      Color        color;
  404. X  {
  405. X      if (op == PAINT) {
  406. X!     fillgc = ((color==BLACK || 
  407. X!          (color==DEFAULT_COLOR && x_fg_color.pixel==appres.color[BLACK]) ||
  408. X!          (!all_colors_available && color!=WHITE))? 
  409. X          black_fill_gc[fill_style - 1]: fill_gc[fill_style - 1]);
  410. X      if (writing_bitmap)
  411. X          {
  412. X--- 858,865 ----
  413. X      Color        color;
  414. X  {
  415. X      if (op == PAINT) {
  416. X!     fillgc = (color==BLACK || 
  417. X!          (color==DEFAULT_COLOR && x_fg_color.pixel==appres.color[BLACK])?
  418. X          black_fill_gc[fill_style - 1]: fill_gc[fill_style - 1]);
  419. X      if (writing_bitmap)
  420. X          {
  421. X***************
  422. X*** 904,915 ****
  423. X          XSetForeground(tool_d,fillgc,color);
  424. X          }
  425. X      else
  426. X!         set_x_color(fillgc, color);
  427. X      } else
  428. X!     fillgc = ((color==BLACK || 
  429. X!          (color==DEFAULT_COLOR && x_fg_color.pixel==appres.color[BLACK]) ||
  430. X!          (!all_colors_available && color!=WHITE))? 
  431. X!         black_un_fill_gc[fill_style - 1]: un_fill_gc[fill_style - 1]);
  432. X      XSetClipRectangles(tool_d, fillgc, 0, 0, clip, 1, YXBanded);
  433. X  }
  434. X  
  435. X--- 870,880 ----
  436. X          XSetForeground(tool_d,fillgc,color);
  437. X          }
  438. X      else
  439. X!         set_fill_color(fillgc, color);
  440. X      } else
  441. X!     fillgc = (color==BLACK || 
  442. X!          (color==DEFAULT_COLOR && x_fg_color.pixel==appres.color[BLACK])?
  443. X!         black_un_fill_gc[NUMFILLPATS-1]: un_fill_gc[NUMFILLPATS-1]);
  444. X      XSetClipRectangles(tool_d, fillgc, 0, 0, clip, 1, YXBanded);
  445. X  }
  446. X  
  447. X***************
  448. X*** 920,926 ****
  449. X  {
  450. X      XGCValues        gcv;
  451. X      unsigned long   mask;
  452. X!     static unsigned char dash_list[2] = {-1, -1};
  453. X  
  454. X      switch (style) {
  455. X      case RUBBER_LINE:
  456. X--- 885,891 ----
  457. X  {
  458. X      XGCValues        gcv;
  459. X      unsigned long   mask;
  460. X!     static unsigned char dash_list[2] = {255, 255};
  461. X  
  462. X      switch (style) {
  463. X      case RUBBER_LINE:
  464. X***************
  465. X*** 952,958 ****
  466. X  
  467. X      if (width == gc_thickness[op] && style == gc_line_style[op] &&
  468. X      (writing_bitmap? color == gc_color[op] : x_color(color) == gc_color[op]) &&
  469. X!     (style != DASH_LINE && style != DOTTED_LINE ||
  470. X       dash_list[1] == (char) round(style_val * zoomscale)))
  471. X      return;            /* no need to change anything */
  472. X  
  473. X--- 917,923 ----
  474. X  
  475. X      if (width == gc_thickness[op] && style == gc_line_style[op] &&
  476. X      (writing_bitmap? color == gc_color[op] : x_color(color) == gc_color[op]) &&
  477. X!     ((style != DASH_LINE && style != DOTTED_LINE) ||
  478. X       dash_list[1] == (char) round(style_val * zoomscale)))
  479. X      return;            /* no need to change anything */
  480. X  
  481. Xdiff -rc xfig.2.1.7a/w_drawprim.h xfig.2.1.8/w_drawprim.h
  482. X*** xfig.2.1.7a/w_drawprim.h    Wed Jan  6 11:26:39 1993
  483. X--- xfig.2.1.8/w_drawprim.h    Fri Sep  3 11:14:29 1993
  484. X***************
  485. X*** 14,20 ****
  486. X  extern PIX_FONT bold_font;
  487. X  extern PIX_FONT roman_font;
  488. X  extern PIX_FONT button_font;
  489. X! extern PIX_ROT_FONT canvas_font;
  490. X  
  491. X  /* Maximum number of points for polygons etc */
  492. X  #define        MAXNUMPTS    10000
  493. X--- 14,20 ----
  494. X  extern PIX_FONT bold_font;
  495. X  extern PIX_FONT roman_font;
  496. X  extern PIX_FONT button_font;
  497. X! extern PIX_FONT canvas_font;
  498. X  
  499. X  /* Maximum number of points for polygons etc */
  500. X  #define        MAXNUMPTS    10000
  501. X***************
  502. X*** 26,44 ****
  503. X  #define        char_height(font) \
  504. X          ((font)->max_bounds.ascent + (font)->max_bounds.descent)
  505. X  
  506. X! #define        rot_char_width(rotfont)    ((rotfont)->width)
  507. X! #define        rot_char_height(rotfont) \
  508. X!         ((rotfont)->max_ascent + (rotfont)->max_descent)
  509. X  
  510. X! #define        rot_char_advance(font,char) \
  511. X              (((font)->per_char)?\
  512. X!             ((font)->per_char[(char)-(font)->min_char].width):\
  513. X!             ((font)->width))
  514. X  
  515. X  #define set_x_color(gc,col) XSetForeground(tool_d,gc,\
  516. X      (!all_colors_available? (col==WHITE?x_bg_color.pixel:x_fg_color.pixel): \
  517. X!     (col<0||col>=NUMCOLORS)? x_fg_color.pixel:appres.color[col]))
  518. X  
  519. X  #define x_color(col)\
  520. X      (!all_colors_available? (col==WHITE?x_bg_color.pixel:x_fg_color.pixel): \
  521. X!     (col<0||col>=NUMCOLORS)? x_fg_color.pixel:appres.color[col])
  522. X--- 26,46 ----
  523. X  #define        char_height(font) \
  524. X          ((font)->max_bounds.ascent + (font)->max_bounds.descent)
  525. X  
  526. X! #define        char_width(font) ((font)->max_bounds.width)
  527. X  
  528. X! #define        char_advance(font,char) \
  529. X              (((font)->per_char)?\
  530. X!             ((font)->per_char[(char)-(font)->min_char_or_byte2].width):\
  531. X!             ((font)->max_bounds.width))
  532. X  
  533. X  #define set_x_color(gc,col) XSetForeground(tool_d,gc,\
  534. X      (!all_colors_available? (col==WHITE?x_bg_color.pixel:x_fg_color.pixel): \
  535. X!         (col<0||col>=NUMCOLORS)? x_fg_color.pixel:appres.color[col]))
  536. X  
  537. X+ #define set_fill_color(gc,col) XSetForeground(tool_d,gc,\
  538. X+     (!all_colors_available? (col==BLACK?x_fg_color.pixel:x_bg_color.pixel): \
  539. X+         (col<0||col>=NUMCOLORS)? x_fg_color.pixel:appres.color[col]))
  540. X+ 
  541. X  #define x_color(col)\
  542. X      (!all_colors_available? (col==WHITE?x_bg_color.pixel:x_fg_color.pixel): \
  543. X!         (col<0||col>=NUMCOLORS)? x_fg_color.pixel:appres.color[col])
  544. Xdiff -rc xfig.2.1.7a/w_export.c xfig.2.1.8/w_export.c
  545. X*** xfig.2.1.7a/w_export.c    Fri Apr 16 10:35:46 1993
  546. X--- xfig.2.1.8/w_export.c    Tue Aug 24 14:21:33 1993
  547. X***************
  548. X*** 22,27 ****
  549. X--- 22,28 ----
  550. X  extern String    text_translations;
  551. X  extern Widget    make_popup_menu();
  552. X  extern char    *panel_get_value();
  553. X+ extern Boolean    query_save();
  554. X  extern Widget    file_popup;
  555. X  extern Widget    file_dir;
  556. X  
  557. X***************
  558. X*** 31,36 ****
  559. X--- 32,41 ----
  560. X  
  561. X  /* LOCAL */
  562. X  
  563. X+ static String    file_list_translations =
  564. X+     "<Btn1Down>,<Btn1Up>: Set()Notify()\n\
  565. X+     <Btn1Down>(2): export()\n\
  566. X+     <Key>Return: ExportFile()\n";
  567. X  static String    file_name_translations =
  568. X      "<Key>Return: ExportFile()\n";
  569. X  void        do_export();
  570. X***************
  571. X*** 104,109 ****
  572. X--- 109,115 ----
  573. X  }
  574. X  
  575. X  static char    export_msg[] = "EXPORT";
  576. X+ static char    exp_msg[] = "The current figure is modified.\nDo you want to save it before exporting?";
  577. X  
  578. X  void
  579. X  do_export(w)
  580. X***************
  581. X*** 116,121 ****
  582. X--- 122,131 ----
  583. X      if (emptyfigure_msg(export_msg))
  584. X          return;
  585. X  
  586. X+     /* if modified (and non-empty) ask to save first */
  587. X+     if (!query_save(exp_msg))
  588. X+         return;        /* cancel, do not export */
  589. X+ 
  590. X      if (!export_popup) 
  591. X          create_export_panel(w);
  592. X      FirstArg(XtNstring, &fval);
  593. X***************
  594. X*** 123,130 ****
  595. X      if (emptyname(fval)) {        /* output filename is empty, use default */
  596. X          fval = default_export_file;
  597. X          warnexist = False;        /* don't warn if this file exists */
  598. X!     } else {
  599. X!         warnexist = True;        /* otherwise warn if the file exists */
  600. X      }
  601. X  
  602. X      /* if not absolute path, change directory */
  603. X--- 133,140 ----
  604. X      if (emptyname(fval)) {        /* output filename is empty, use default */
  605. X          fval = default_export_file;
  606. X          warnexist = False;        /* don't warn if this file exists */
  607. X!     } else if (strcmp(fval,default_export_file) != 0) {
  608. X!         warnexist = True;        /* warn if the file exists and is diff. from default */
  609. X      }
  610. X  
  611. X      /* if not absolute path, change directory */
  612. X***************
  613. X*** 394,402 ****
  614. X  
  615. X      create_dirinfo(export_panel, exp_selfile, &beside, &below,
  616. X                 &exp_mask, &exp_dir, &exp_flist, &exp_dlist);
  617. X!     /* make <return> in the file list window export the file */
  618. X      XtOverrideTranslations(exp_flist,
  619. X!                XtParseTranslationTable(file_name_translations));
  620. X  
  621. X      FirstArg(XtNlabel, "Cancel");
  622. X      NextArg(XtNfromHoriz, beside);
  623. X--- 404,412 ----
  624. X  
  625. X      create_dirinfo(export_panel, exp_selfile, &beside, &below,
  626. X                 &exp_mask, &exp_dir, &exp_flist, &exp_dlist);
  627. X!     /* make <return> or double click in the file list window export the file */
  628. X      XtOverrideTranslations(exp_flist,
  629. X!                XtParseTranslationTable(file_list_translations));
  630. X  
  631. X      FirstArg(XtNlabel, "Cancel");
  632. X      NextArg(XtNfromHoriz, beside);
  633. X***************
  634. X*** 463,467 ****
  635. X--- 473,479 ----
  636. X      FirstArg(XtNstring, &dval);
  637. X      GetValues(file_dir);
  638. X      strcpy(export_dir,dval);
  639. X+     } else {
  640. X+     strcpy(export_dir,cur_dir);
  641. X      }
  642. X  }
  643. Xdiff -rc xfig.2.1.7a/w_file.c xfig.2.1.8/w_file.c
  644. X*** xfig.2.1.7a/w_file.c    Mon Mar 22 14:41:00 1993
  645. X--- xfig.2.1.8/w_file.c    Tue Aug 31 13:40:00 1993
  646. X***************
  647. X*** 33,38 ****
  648. X--- 33,42 ----
  649. X  static Widget    cancel, save, merge, load;
  650. X  static Widget    file_w;
  651. X  static Position xposn, yposn;
  652. X+ static String    file_list_translations =
  653. X+     "<Btn1Down>,<Btn1Up>: Set()Notify()\n\
  654. X+     <Btn1Down>(2): load()\n\
  655. X+     <Key>Return: load()\n";
  656. X  static String    file_name_translations =
  657. X      "<Key>Return: load()\n";
  658. X  static void    file_panel_cancel(), do_merge();
  659. X***************
  660. X*** 79,85 ****
  661. X      Widget        w;
  662. X      XButtonEvent   *ev;
  663. X  {
  664. X!     char        filename[100];
  665. X      char       *fval, *dval;
  666. X  
  667. X      FirstArg(XtNstring, &fval);
  668. X--- 83,89 ----
  669. X      Widget        w;
  670. X      XButtonEvent   *ev;
  671. X  {
  672. X!     char        filename[200];
  673. X      char       *fval, *dval;
  674. X  
  675. X      FirstArg(XtNstring, &fval);
  676. X***************
  677. X*** 107,112 ****
  678. X--- 111,126 ----
  679. X  {
  680. X      char       *fval, *dval;
  681. X  
  682. X+     /* first check if the figure was modified before reloading it */
  683. X+     if (!emptyfigure() && figure_modified) {
  684. X+     if (file_popup)
  685. X+         XtSetSensitive(load, False);
  686. X+     if (!popup_query(QUERY_YESCAN, load_msg)) {
  687. X+         if (file_popup)
  688. X+         XtSetSensitive(load, True);
  689. X+         return;
  690. X+     }
  691. X+     }
  692. X      if (file_popup) {
  693. X      FirstArg(XtNstring, &dval);
  694. X      GetValues(file_dir);
  695. X***************
  696. X*** 113,131 ****
  697. X      FirstArg(XtNstring, &fval);
  698. X      GetValues(file_selfile);    /* check the ascii widget for a filename */
  699. X      if (emptyname(fval))
  700. X!         fval = cur_filename;    /* "Filename" widget empty, use current filename */
  701. X! 
  702. X      if (emptyname_msg(fval, "LOAD"))
  703. X          return;
  704. X- 
  705. X-     if (!emptyfigure() && figure_modified) {
  706. X-         XtSetSensitive(load, False);
  707. X-         if (!popup_query(QUERY_YES, load_msg)) {
  708. X-         XtSetSensitive(load, True);
  709. X-         return;
  710. X-         }
  711. X-         XtSetSensitive(load, True);
  712. X-     }
  713. X      if (change_directory(dval) == 0) {
  714. X          if (load_file(fval) == 0) {
  715. X          FirstArg(XtNlabel, fval);
  716. X--- 127,135 ----
  717. X      FirstArg(XtNstring, &fval);
  718. X      GetValues(file_selfile);    /* check the ascii widget for a filename */
  719. X      if (emptyname(fval))
  720. X!         fval = cur_filename;    /* Filename widget empty, use current filename */
  721. X      if (emptyname_msg(fval, "LOAD"))
  722. X          return;
  723. X      if (change_directory(dval) == 0) {
  724. X          if (load_file(fval) == 0) {
  725. X          FirstArg(XtNlabel, fval);
  726. X***************
  727. X*** 133,138 ****
  728. X--- 137,143 ----
  729. X          if (fval != cur_filename)
  730. X              update_cur_filename(fval);    /* and update cur_filename */
  731. X          update_def_filename();        /* and the default export filename */
  732. X+         XtSetSensitive(load, True);
  733. X          file_panel_dismiss();
  734. X          }
  735. X      }
  736. X***************
  737. X*** 191,196 ****
  738. X--- 196,223 ----
  739. X      }
  740. X  }
  741. X  
  742. X+ Boolean
  743. X+ query_save(msg)
  744. X+     char       *msg;
  745. X+ {
  746. X+     int            qresult;
  747. X+     if (!emptyfigure() && figure_modified && !aborting) {
  748. X+     if ((qresult = popup_query(QUERY_YESNOCAN, msg)) == RESULT_CANCEL) 
  749. X+         return False;
  750. X+     else if (qresult == RESULT_YES) {
  751. X+         do_save((Widget) 0);
  752. X+         /*
  753. X+          * if saving was not successful, figure_modified is still true:
  754. X+          * do not quit!
  755. X+          */
  756. X+         if (figure_modified)
  757. X+         return False;
  758. X+     }
  759. X+     }
  760. X+     /* ok */
  761. X+     return True;
  762. X+ }
  763. X+ 
  764. X  static void
  765. X  file_panel_cancel(w, ev)
  766. X      Widget        w;
  767. X***************
  768. X*** 230,236 ****
  769. X  create_file_panel(w)
  770. X      Widget           w;
  771. X  {
  772. X!     Widget           file, dir, beside, below;
  773. X      PIX_FONT       temp_font;
  774. X      static int       actions_added=0;
  775. X      file_w = w;
  776. X--- 257,263 ----
  777. X  create_file_panel(w)
  778. X      Widget           w;
  779. X  {
  780. X!     Widget           file, beside, below;
  781. X      PIX_FONT       temp_font;
  782. X      static int       actions_added=0;
  783. X      file_w = w;
  784. X***************
  785. X*** 314,328 ****
  786. X          XtAppAddActions(tool_app, file_name_actions, XtNumber(file_name_actions));
  787. X      }
  788. X  
  789. X      /* make <return> in the filename window load the file */
  790. X      XtOverrideTranslations(file_selfile,
  791. X                 XtParseTranslationTable(file_name_translations));
  792. X  
  793. X!     create_dirinfo(file_panel, file_selfile, &beside, &below,
  794. X!                &file_mask, &file_dir, &file_flist, &file_dlist);
  795. X!     /* make <return> in the file list window load the file */
  796. X!     XtOverrideTranslations(file_flist,
  797. X!                XtParseTranslationTable(file_name_translations));
  798. X      FirstArg(XtNlabel, "Cancel");
  799. X      NextArg(XtNvertDistance, 15);
  800. X      NextArg(XtNhorizDistance, 25);
  801. X--- 341,356 ----
  802. X          XtAppAddActions(tool_app, file_name_actions, XtNumber(file_name_actions));
  803. X      }
  804. X  
  805. X+     create_dirinfo(file_panel, file_selfile, &beside, &below,
  806. X+                &file_mask, &file_dir, &file_flist, &file_dlist);
  807. X+ 
  808. X      /* make <return> in the filename window load the file */
  809. X      XtOverrideTranslations(file_selfile,
  810. X                 XtParseTranslationTable(file_name_translations));
  811. X  
  812. X!     /* make <return> and a double click in the file list window load the file */
  813. X!     XtAugmentTranslations(file_flist,
  814. X!                XtParseTranslationTable(file_list_translations));
  815. X      FirstArg(XtNlabel, "Cancel");
  816. X      NextArg(XtNvertDistance, 15);
  817. X      NextArg(XtNhorizDistance, 25);
  818. Xdiff -rc xfig.2.1.7a/w_fontbits3.c xfig.2.1.8/w_fontbits3.c
  819. X*** xfig.2.1.7a/w_fontbits3.c    Wed Dec  9 17:26:05 1992
  820. X--- xfig.2.1.8/w_fontbits3.c    Mon Aug 23 15:26:38 1993
  821. X***************
  822. X*** 771,780 ****
  823. X      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  824. X  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  825. X  
  826. X! Pixmap        psfont_menu_bitmaps[NUM_PS_FONTS + 1];
  827. X  Pixmap        latexfont_menu_bitmaps[NUM_LATEX_FONTS];
  828. X  
  829. X! unsigned char           *psfont_menu_bits[NUM_PS_FONTS + 1] = {
  830. X      PS_Default_bits,
  831. X      Times_Roman_bits,
  832. X      Times_Italic_bits,
  833. X--- 771,780 ----
  834. X      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  835. X  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  836. X  
  837. X! Pixmap        psfont_menu_bitmaps[NUM_FONTS + 1];
  838. X  Pixmap        latexfont_menu_bitmaps[NUM_LATEX_FONTS];
  839. X  
  840. X! unsigned char           *psfont_menu_bits[NUM_FONTS + 1] = {
  841. X      PS_Default_bits,
  842. X      Times_Roman_bits,
  843. X      Times_Italic_bits,
  844. Xdiff -rc xfig.2.1.7a/w_fontpanel.c xfig.2.1.8/w_fontpanel.c
  845. X*** xfig.2.1.7a/w_fontpanel.c    Sat Jan  2 18:42:19 1993
  846. X--- xfig.2.1.8/w_fontpanel.c    Mon Aug 23 16:22:59 1993
  847. X***************
  848. X*** 24,31 ****
  849. X  extern Pixmap    psfont_menu_bitmaps[];
  850. X  extern Pixmap    latexfont_menu_bitmaps[];
  851. X  extern Atom    wm_delete_window;
  852. X! extern struct _fstruct ps_fontinfo[];    /* font names */
  853. X! extern struct _fstruct latex_fontinfo[];    /* font names */
  854. X  
  855. X  /* LOCAL VARIABLES */
  856. X  
  857. X--- 24,31 ----
  858. X  extern Pixmap    psfont_menu_bitmaps[];
  859. X  extern Pixmap    latexfont_menu_bitmaps[];
  860. X  extern Atom    wm_delete_window;
  861. X! extern struct _fstruct ps_fontinfo[];      /* PostScript/OpenWindows font names */
  862. X! extern struct _fstruct latex_fontinfo[];  /* LaTeX font names */
  863. X  
  864. X  /* LOCAL VARIABLES */
  865. X  
  866. X***************
  867. X*** 37,43 ****
  868. X  
  869. X  /********************  local variables    ***************************/
  870. X  
  871. X! static MenuItemRec ps_fontmenu_items[NUM_PS_FONTS + 1];
  872. X  static MenuItemRec latex_fontmenu_items[NUM_LATEX_FONTS];
  873. X  
  874. X  static void    fontpane_select();
  875. X--- 37,43 ----
  876. X  
  877. X  /********************  local variables    ***************************/
  878. X  
  879. X! static MenuItemRec ps_fontmenu_items[NUM_FONTS + 1];
  880. X  static MenuItemRec latex_fontmenu_items[NUM_LATEX_FONTS];
  881. X  
  882. X  static void    fontpane_select();
  883. X***************
  884. X*** 59,65 ****
  885. X  
  886. X  static TOOL    ps_fontpanes, ps_buttons;
  887. X  static TOOL    latex_fontpanes, latex_buttons;
  888. X! static TOOL    ps_fontpane[NUM_PS_FONTS + 1];
  889. X  static TOOL    latex_fontpane[NUM_LATEX_FONTS];
  890. X  
  891. X  init_fontmenu(tool)
  892. X--- 59,65 ----
  893. X  
  894. X  static TOOL    ps_fontpanes, ps_buttons;
  895. X  static TOOL    latex_fontpanes, latex_buttons;
  896. X! static TOOL    ps_fontpane[NUM_FONTS+1];
  897. X  static TOOL    latex_fontpane[NUM_LATEX_FONTS];
  898. X  
  899. X  init_fontmenu(tool)
  900. X***************
  901. X*** 96,102 ****
  902. X      latex_fontpanes = XtCreateManagedWidget("menu", boxWidgetClass,
  903. X                          latex_fontmenu, Args, ArgCount);
  904. X  
  905. X!     for (i = 0; i < NUM_PS_FONTS + 1; i++) {
  906. X      ps_fontmenu_items[i].type = MENU_IMAGESTRING;    /* put the fontnames in
  907. X                               * menu */
  908. X      ps_fontmenu_items[i].label = ps_fontinfo[i].name;
  909. X--- 96,102 ----
  910. X      latex_fontpanes = XtCreateManagedWidget("menu", boxWidgetClass,
  911. X                          latex_fontmenu, Args, ArgCount);
  912. X  
  913. X!     for (i = 0; i < NUM_FONTS + 1; i++) {
  914. X      ps_fontmenu_items[i].type = MENU_IMAGESTRING;    /* put the fontnames in
  915. X                               * menu */
  916. X      ps_fontmenu_items[i].label = ps_fontinfo[i].name;
  917. X***************
  918. X*** 161,167 ****
  919. X      NextArg(XtNborderWidth, INTERNAL_BW);
  920. X      NextArg(XtNresize, False);    /* don't allow resize */
  921. X  
  922. X!     for (i = 0; i < NUM_PS_FONTS + 1; ++i) {
  923. X      mi = &ps_fontmenu_items[i];
  924. X      pane_callbacks[0].closure = (caddr_t) mi;
  925. X      ps_fontpane[i] = XtCreateManagedWidget("pane", commandWidgetClass,
  926. X--- 161,167 ----
  927. X      NextArg(XtNborderWidth, INTERNAL_BW);
  928. X      NextArg(XtNresize, False);    /* don't allow resize */
  929. X  
  930. X!     for (i = 0; i < NUM_FONTS + 1; ++i) {
  931. X      mi = &ps_fontmenu_items[i];
  932. X      pane_callbacks[0].closure = (caddr_t) mi;
  933. X      ps_fontpane[i] = XtCreateManagedWidget("pane", commandWidgetClass,
  934. X***************
  935. X*** 197,203 ****
  936. X  
  937. X      /* Create the bitmaps */
  938. X  
  939. X!     for (i = 0; i < NUM_PS_FONTS + 1; i++)
  940. X      psfont_menu_bitmaps[i] = XCreatePixmapFromBitmapData(tool_d,
  941. X                     XtWindow(ind_panel), (char *) psfont_menu_bits[i],
  942. X                       PS_FONTPANE_WD, PS_FONTPANE_HT, fg, bg,
  943. X--- 197,203 ----
  944. X  
  945. X      /* Create the bitmaps */
  946. X  
  947. X!     for (i = 0; i < NUM_FONTS + 1; i++)
  948. X      psfont_menu_bitmaps[i] = XCreatePixmapFromBitmapData(tool_d,
  949. X                     XtWindow(ind_panel), (char *) psfont_menu_bits[i],
  950. X                       PS_FONTPANE_WD, PS_FONTPANE_HT, fg, bg,
  951. X***************
  952. X*** 210,216 ****
  953. X                         XDefaultDepthOfScreen(tool_s));
  954. X  
  955. X      /* Store the bitmaps in the menu panes */
  956. X!     for (i = 0; i < NUM_PS_FONTS + 1; i++) {
  957. X      FirstArg(XtNbitmap, psfont_menu_bitmaps[i]);
  958. X      SetValues(ps_fontpane[i]);
  959. X      }
  960. X--- 210,216 ----
  961. X                         XDefaultDepthOfScreen(tool_s));
  962. X  
  963. X      /* Store the bitmaps in the menu panes */
  964. X!     for (i = 0; i < NUM_FONTS + 1; i++) {
  965. X      FirstArg(XtNbitmap, psfont_menu_bitmaps[i]);
  966. X      SetValues(ps_fontpane[i]);
  967. X      }
  968. Xdiff -rc xfig.2.1.7a/w_indpanel.c xfig.2.1.8/w_indpanel.c
  969. X*** xfig.2.1.7a/w_indpanel.c    Thu Oct 21 10:23:00 1993
  970. X--- xfig.2.1.8/w_indpanel.c    Tue Sep 14 09:14:06 1993
  971. X***************
  972. X*** 25,30 ****
  973. X--- 25,31 ----
  974. X  #include "w_util.h"
  975. X  #include "w_zoom.h"
  976. X  
  977. X+ #define MAX_SCROLL_WD 50
  978. X  extern Pixmap    psfont_menu_bitmaps[], latexfont_menu_bitmaps[];
  979. X  extern Atom    wm_delete_window;
  980. X  extern struct    _fstruct ps_fontinfo[], latex_fontinfo[];
  981. X***************
  982. X*** 88,93 ****
  983. X--- 89,95 ----
  984. X  
  985. X  static int    popup_fonts();
  986. X  static void    note_state();
  987. X+ static void    set_all_update(), clr_all_update(), tog_all_update();
  988. X  
  989. X  static char    indbuf[12];
  990. X  static float    old_zoomscale = -1.0;
  991. X***************
  992. X*** 94,99 ****
  993. X--- 96,103 ----
  994. X  static int    old_rotnangle = -1;
  995. X  static float    old_elltextangle = -1.0;
  996. X  
  997. X+ Widget        upd_ctrl, set_upd, upd_tog,
  998. X+         clr_upd, tog_upd, upd_ctrl_lab, upd_ctrl_btns;
  999. X  #define        DEF_IND_SW_HT        32
  1000. X  #define        DEF_IND_SW_WD        64
  1001. X  #define        FONT_IND_SW_WD        (40+PS_FONTPANE_WD)
  1002. X***************
  1003. X*** 115,133 ****
  1004. X  #define NUM_ANGLEGEOM_CHOICES (sizeof(anglegeom_choices)/sizeof(choice_info))
  1005. X  
  1006. X  static choice_info valign_choices[] = {
  1007. X!     {NONE, &none_ic,},
  1008. X!     {TOP, &valignt_ic,},
  1009. X!     {CENTER, &valignc_ic,},
  1010. X!     {BOTTOM, &valignb_ic,},
  1011. X  };
  1012. X  
  1013. X  #define NUM_VALIGN_CHOICES (sizeof(valign_choices)/sizeof(choice_info))
  1014. X  
  1015. X  static choice_info halign_choices[] = {
  1016. X!     {NONE, &none_ic,},
  1017. X!     {LEFT, &halignl_ic,},
  1018. X!     {CENTER, &halignc_ic,},
  1019. X!     {RIGHT, &halignr_ic,},
  1020. X  };
  1021. X  
  1022. X  #define NUM_HALIGN_CHOICES (sizeof(halign_choices)/sizeof(choice_info))
  1023. X--- 119,137 ----
  1024. X  #define NUM_ANGLEGEOM_CHOICES (sizeof(anglegeom_choices)/sizeof(choice_info))
  1025. X  
  1026. X  static choice_info valign_choices[] = {
  1027. X!     {ALIGN_NONE, &none_ic,},
  1028. X!     {ALIGN_TOP, &valignt_ic,},
  1029. X!     {ALIGN_CENTER, &valignc_ic,},
  1030. X!     {ALIGN_BOTTOM, &valignb_ic,},
  1031. END_OF_FILE
  1032.   if test 31221 -ne `wc -c <'xfig.07'`; then
  1033.     echo shar: \"'xfig.07'\" unpacked with wrong size!
  1034.   fi
  1035.   # end of 'xfig.07'
  1036. fi
  1037. echo shar: End of archive 6 \(of 16\).
  1038. cp /dev/null ark6isdone
  1039. MISSING=""
  1040. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
  1041.     if test ! -f ark${I}isdone ; then
  1042.     MISSING="${MISSING} ${I}"
  1043.     fi
  1044. done
  1045. if test "${MISSING}" = "" ; then
  1046.     echo You have unpacked all 16 archives.
  1047.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1048.     echo Creating merged patch file xfig.p2
  1049.     cat xfig.[01][0-9] > xfig.p2
  1050.     rm -f xfig.[01][0-9]
  1051. else
  1052.     echo You still must unpack the following archives:
  1053.     echo "        " ${MISSING}
  1054. fi
  1055. exit 0
  1056. exit 0 # Just in case...
  1057. -- 
  1058.   // chris@Sterling.COM           | Send comp.sources.x submissions to:
  1059. \X/  Amiga - The only way to fly! |    sources-x@sterling.com
  1060.  "It's intuitively obvious to the |
  1061.   most casual observer..."        | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
  1062.