[comp.sources.x] v08i088: tgif, Patch3, Part02/03

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

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

---------------------------------> cut here <---------------------------------
*** font.c.orig	Fri Aug 17 13:47:28 1990
--- font.c	Fri Aug 17 13:47:29 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.5 90/07/30 15:54:02 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/font.c,v 1.9 90/08/16 15:44:24 william Exp $";
  #endif
  
***************
*** 32,37 ****
  #define COUR24R 29
  
! #define FIndex(FONT,SIZE,STYLE) (SIZE+MAXFONTSIZES*(STYLE+MAXFONTSTYLES*FONT))
! #define FONTTABLESIZE (MAXFONTSIZES*MAXFONTSTYLES*MAXFONTS)
  
  struct MyFontRec {
--- 32,39 ----
  #define COUR24R 29
  
! #define FONTS_PER_DPI (((MAXFONTS-1)*MAXFONTSTYLES+1)*MAXFONTSIZES)
! #define FONTTABLESIZE (MAXFONTDPIS*FONTS_PER_DPI)
! /* #define FIndex(FONT,SIZE,STYLE) (SIZE+MAXFONTSIZES*(STYLE+MAXFONTSTYLES*FONT)) */
! /* #define FONTTABLESIZE (MAXFONTSIZES*MAXFONTSTYLES*MAXFONTS) */
  
  struct MyFontRec {
***************
*** 59,68 ****
  int	defaultFontDes;
  
! int	pointSize[] = { 8, 10, 12, 14, 18, 24 };
  int	curFont = FONT_COU;
  int	curSize = 4;
  int	curStyle = STYLE_NR;
  int	curRotate = ROTATE0;
  
  static struct MyFontRec	myFontInfo[FONTTABLESIZE];
  
--- 61,74 ----
  int	defaultFontDes;
  
! int	* pointSize;
  int	curFont = FONT_COU;
  int	curSize = 4;
  int	curStyle = STYLE_NR;
+ int	curFontDPI = FONT_DPI_75;
  int	curRotate = ROTATE0;
  
+ int	pointSize75[] = { 8, 10, 12, 14, 18, 24 };
+ int	pointSize100[] = { 11, 14, 17, 20, 25, 34 };
+ 
  static struct MyFontRec	myFontInfo[FONTTABLESIZE];
  
***************
*** 71,75 ****
     "Times", "Courier", "Helvetica", "NewCentury", "Symbol"
  };
! static char	* sizeMenuStr[] =
  {
     "8  #0",
--- 77,83 ----
     "Times", "Courier", "Helvetica", "NewCentury", "Symbol"
  };
! static char	* fontDPIMenuStr[] = { "75dpi", "100dpi" };
! static char	* * sizeMenuStr;
! static char	* sizeMenuStr75[] =
  {
     "8  #0",
***************
*** 80,83 ****
--- 88,100 ----
     "24 #5"
  };
+ static char	* sizeMenuStr100[] =
+ {
+    "11 #0",
+    "14 #1",
+    "17 #2",
+    "20 #3",
+    "25 #4",
+    "34 #5"
+ };
  static char	* styleMenuStr[] =
  {
***************
*** 94,203 ****
  static char	* fontNameStr[] =
  {
!    "-adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1",
!    "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
!    "-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-1",
!    "-adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1",
!    "-adobe-times-medium-r-normal--18-180-75-75-p-94-iso8859-1",
!    "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
!    "-adobe-times-bold-r-normal--8-80-75-75-p-47-iso8859-1",
!    "-adobe-times-bold-r-normal--10-100-75-75-p-57-iso8859-1",
!    "-adobe-times-bold-r-normal--12-120-75-75-p-67-iso8859-1",
!    "-adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1",
!    "-adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1",
!    "-adobe-times-bold-r-normal--24-240-75-75-p-132-iso8859-1",
!    "-adobe-times-medium-i-normal--8-80-75-75-p-42-iso8859-1",
!    "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-1",
!    "-adobe-times-medium-i-normal--12-120-75-75-p-63-iso8859-1",
!    "-adobe-times-medium-i-normal--14-140-75-75-p-73-iso8859-1",
!    "-adobe-times-medium-i-normal--18-180-75-75-p-94-iso8859-1",
!    "-adobe-times-medium-i-normal--24-240-75-75-p-125-iso8859-1",
!    "-adobe-times-bold-i-normal--8-80-75-75-p-47-iso8859-1",
!    "-adobe-times-bold-i-normal--10-100-75-75-p-57-iso8859-1",
!    "-adobe-times-bold-i-normal--12-120-75-75-p-68-iso8859-1",
!    "-adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-1",
!    "-adobe-times-bold-i-normal--18-180-75-75-p-98-iso8859-1",
!    "-adobe-times-bold-i-normal--24-240-75-75-p-128-iso8859-1",
  
!    "-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1",
!    "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1",
!    "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1",
!    "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1",
!    "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1",
!    "-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1",
!    "-adobe-courier-bold-r-normal--8-80-75-75-m-50-iso8859-1",
!    "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1",
!    "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1",
!    "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1",
!    "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1",
!    "-adobe-courier-bold-r-normal--24-240-75-75-m-150-iso8859-1",
!    "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1",
!    "-adobe-courier-medium-o-normal--10-100-75-75-m-60-iso8859-1",
!    "-adobe-courier-medium-o-normal--12-120-75-75-m-70-iso8859-1",
!    "-adobe-courier-medium-o-normal--14-140-75-75-m-90-iso8859-1",
!    "-adobe-courier-medium-o-normal--18-180-75-75-m-110-iso8859-1",
!    "-adobe-courier-medium-o-normal--24-240-75-75-m-150-iso8859-1",
!    "-adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1",
!    "-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1",
!    "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1",
!    "-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1",
!    "-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1",
!    "-adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1",
  
!    "-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1",
!    "-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1",
!    "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1",
!    "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1",
!    "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1",
!    "-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--8-80-75-75-p-50-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--10-100-75-75-p-60-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1",
!    "-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--8-80-75-75-p-47-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--10-100-75-75-p-57-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--12-120-75-75-p-67-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--18-180-75-75-p-98-iso8859-1",
!    "-adobe-helvetica-medium-o-normal--24-240-75-75-p-130-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--8-80-75-75-p-50-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--12-120-75-75-p-69-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--18-180-75-75-p-104-iso8859-1",
!    "-adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1",
  
!    "-adobe-new century schoolbook-medium-r-normal--8-80-75-75-p-50-iso8859-1",
!    "-adobe-new century schoolbook-medium-r-normal--10-100-75-75-p-60-iso8859-1",
!    "-adobe-new century schoolbook-medium-r-normal--12-120-75-75-p-70-iso8859-1",
!    "-adobe-new century schoolbook-medium-r-normal--14-140-75-75-p-82-iso8859-1",
!    "-adobe-new century schoolbook-medium-r-normal--18-180-75-75-p-103-iso8859-1",
!    "-adobe-new century schoolbook-medium-r-normal--24-240-75-75-p-137-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--8-80-75-75-p-56-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--10-100-75-75-p-66-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--12-120-75-75-p-77-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--14-140-75-75-p-87-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--18-180-75-75-p-113-iso8859-1",
!    "-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--8-80-75-75-p-50-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--10-100-75-75-p-60-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--12-120-75-75-p-70-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--14-140-75-75-p-81-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--18-180-75-75-p-104-iso8859-1",
!    "-adobe-new century schoolbook-medium-i-normal--24-240-75-75-p-136-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--8-80-75-75-p-56-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--10-100-75-75-p-66-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--12-120-75-75-p-76-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--14-140-75-75-p-88-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--18-180-75-75-p-111-iso8859-1",
!    "-adobe-new century schoolbook-bold-i-normal--24-240-75-75-p-148-iso8859-1",
  
!    "-adobe-symbol-medium-r-normal--8-80-75-75-p-51-adobe-fontspecific",
!    "-adobe-symbol-medium-r-normal--10-100-75-75-p-61-adobe-fontspecific",
!    "-adobe-symbol-medium-r-normal--12-120-75-75-p-74-adobe-fontspecific",
!    "-adobe-symbol-medium-r-normal--14-140-75-75-p-85-adobe-fontspecific",
!    "-adobe-symbol-medium-r-normal--18-180-75-75-p-107-adobe-fontspecific",
!    "-adobe-symbol-medium-r-normal--24-240-75-75-p-142-adobe-fontspecific"
  };
  
--- 111,329 ----
  static char	* fontNameStr[] =
  {
! /* 75 dpi fonts */
!   "-adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1",
!   "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
!   "-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-1",
!   "-adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1",
!   "-adobe-times-medium-r-normal--18-180-75-75-p-94-iso8859-1",
!   "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
!   "-adobe-times-bold-r-normal--8-80-75-75-p-47-iso8859-1",
!   "-adobe-times-bold-r-normal--10-100-75-75-p-57-iso8859-1",
!   "-adobe-times-bold-r-normal--12-120-75-75-p-67-iso8859-1",
!   "-adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1",
!   "-adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1",
!   "-adobe-times-bold-r-normal--24-240-75-75-p-132-iso8859-1",
!   "-adobe-times-medium-i-normal--8-80-75-75-p-42-iso8859-1",
!   "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-1",
!   "-adobe-times-medium-i-normal--12-120-75-75-p-63-iso8859-1",
!   "-adobe-times-medium-i-normal--14-140-75-75-p-73-iso8859-1",
!   "-adobe-times-medium-i-normal--18-180-75-75-p-94-iso8859-1",
!   "-adobe-times-medium-i-normal--24-240-75-75-p-125-iso8859-1",
!   "-adobe-times-bold-i-normal--8-80-75-75-p-47-iso8859-1",
!   "-adobe-times-bold-i-normal--10-100-75-75-p-57-iso8859-1",
!   "-adobe-times-bold-i-normal--12-120-75-75-p-68-iso8859-1",
!   "-adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-1",
!   "-adobe-times-bold-i-normal--18-180-75-75-p-98-iso8859-1",
!   "-adobe-times-bold-i-normal--24-240-75-75-p-128-iso8859-1",
  
!   "-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1",
!   "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1",
!   "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1",
!   "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1",
!   "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1",
!   "-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1",
!   "-adobe-courier-bold-r-normal--8-80-75-75-m-50-iso8859-1",
!   "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1",
!   "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1",
!   "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1",
!   "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1",
!   "-adobe-courier-bold-r-normal--24-240-75-75-m-150-iso8859-1",
!   "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1",
!   "-adobe-courier-medium-o-normal--10-100-75-75-m-60-iso8859-1",
!   "-adobe-courier-medium-o-normal--12-120-75-75-m-70-iso8859-1",
!   "-adobe-courier-medium-o-normal--14-140-75-75-m-90-iso8859-1",
!   "-adobe-courier-medium-o-normal--18-180-75-75-m-110-iso8859-1",
!   "-adobe-courier-medium-o-normal--24-240-75-75-m-150-iso8859-1",
!   "-adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1",
!   "-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1",
!   "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1",
!   "-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1",
!   "-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1",
!   "-adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1",
  
!   "-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--8-80-75-75-p-50-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--10-100-75-75-p-60-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--8-80-75-75-p-47-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--10-100-75-75-p-57-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--12-120-75-75-p-67-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--18-180-75-75-p-98-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--24-240-75-75-p-130-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--8-80-75-75-p-50-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--12-120-75-75-p-69-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--18-180-75-75-p-104-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1",
  
!   "-adobe-new century schoolbook-medium-r-normal--8-80-75-75-p-50-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--10-100-75-75-p-60-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--12-120-75-75-p-70-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--14-140-75-75-p-82-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--18-180-75-75-p-103-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--24-240-75-75-p-137-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--8-80-75-75-p-56-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--10-100-75-75-p-66-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--12-120-75-75-p-77-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--14-140-75-75-p-87-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--18-180-75-75-p-113-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--8-80-75-75-p-50-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--10-100-75-75-p-60-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--12-120-75-75-p-70-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--14-140-75-75-p-81-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--18-180-75-75-p-104-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--24-240-75-75-p-136-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--8-80-75-75-p-56-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--10-100-75-75-p-66-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--12-120-75-75-p-76-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--14-140-75-75-p-88-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--18-180-75-75-p-111-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--24-240-75-75-p-148-iso8859-1",
  
!   "-adobe-symbol-medium-r-normal--8-80-75-75-p-51-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--10-100-75-75-p-61-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--12-120-75-75-p-74-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--14-140-75-75-p-85-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--18-180-75-75-p-107-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--24-240-75-75-p-142-adobe-fontspecific",
! 
! /* 100 dpi fonts */
!   "-adobe-times-medium-r-normal--11-80-100-100-p-54-iso8859-1",
!   "-adobe-times-medium-r-normal--14-100-100-100-p-74-iso8859-1",
!   "-adobe-times-medium-r-normal--17-120-100-100-p-84-iso8859-1",
!   "-adobe-times-medium-r-normal--20-140-100-100-p-96-iso8859-1",
!   "-adobe-times-medium-r-normal--25-180-100-100-p-125-iso8859-1",
!   "-adobe-times-medium-r-normal--34-240-100-100-p-170-iso8859-1",
!   "-adobe-times-bold-r-normal--11-80-100-100-p-57-iso8859-1",
!   "-adobe-times-bold-r-normal--14-100-100-100-p-76-iso8859-1",
!   "-adobe-times-bold-r-normal--17-120-100-100-p-88-iso8859-1",
!   "-adobe-times-bold-r-normal--20-140-100-100-p-100-iso8859-1",
!   "-adobe-times-bold-r-normal--25-180-100-100-p-132-iso8859-1",
!   "-adobe-times-bold-r-normal--34-240-100-100-p-177-iso8859-1",
!   "-adobe-times-medium-i-normal--11-80-100-100-p-52-iso8859-1",
!   "-adobe-times-medium-i-normal--14-100-100-100-p-73-iso8859-1",
!   "-adobe-times-medium-i-normal--17-120-100-100-p-84-iso8859-1",
!   "-adobe-times-medium-i-normal--20-140-100-100-p-94-iso8859-1",
!   "-adobe-times-medium-i-normal--25-180-100-100-p-125-iso8859-1",
!   "-adobe-times-medium-i-normal--34-240-100-100-p-168-iso8859-1",
!   "-adobe-times-bold-i-normal--11-80-100-100-p-57-iso8859-1",
!   "-adobe-times-bold-i-normal--14-100-100-100-p-77-iso8859-1",
!   "-adobe-times-bold-i-normal--17-120-100-100-p-86-iso8859-1",
!   "-adobe-times-bold-i-normal--20-140-100-100-p-98-iso8859-1",
!   "-adobe-times-bold-i-normal--25-180-100-100-p-128-iso8859-1",
!   "-adobe-times-bold-i-normal--34-240-100-100-p-170-iso8859-1",
! 
!   "-adobe-courier-medium-r-normal--11-80-100-100-m-60-iso8859-1",
!   "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso8859-1",
!   "-adobe-courier-medium-r-normal--17-120-100-100-m-100-iso8859-1",
!   "-adobe-courier-medium-r-normal--20-140-100-100-m-110-iso8859-1",
!   "-adobe-courier-medium-r-normal--25-180-100-100-m-150-iso8859-1",
!   "-adobe-courier-medium-r-normal--34-240-100-100-m-200-iso8859-1",
!   "-adobe-courier-bold-r-normal--11-80-100-100-m-60-iso8859-1",
!   "-adobe-courier-bold-r-normal--14-100-100-100-m-90-iso8859-1",
!   "-adobe-courier-bold-r-normal--17-120-100-100-m-100-iso8859-1",
!   "-adobe-courier-bold-r-normal--20-140-100-100-m-110-iso8859-1",
!   "-adobe-courier-bold-r-normal--25-180-100-100-m-150-iso8859-1",
!   "-adobe-courier-bold-r-normal--34-240-100-100-m-200-iso8859-1",
!   "-adobe-courier-medium-o-normal--11-80-100-100-m-60-iso8859-1",
!   "-adobe-courier-medium-o-normal--14-100-100-100-m-90-iso8859-1",
!   "-adobe-courier-medium-o-normal--17-120-100-100-m-100-iso8859-1",
!   "-adobe-courier-medium-o-normal--20-140-100-100-m-110-iso8859-1",
!   "-adobe-courier-medium-o-normal--25-180-100-100-m-150-iso8859-1",
!   "-adobe-courier-medium-o-normal--34-240-100-100-m-200-iso8859-1",
!   "-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso8859-1",
!   "-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso8859-1",
!   "-adobe-courier-bold-o-normal--17-120-100-100-m-100-iso8859-1",
!   "-adobe-courier-bold-o-normal--20-140-100-100-m-110-iso8859-1",
!   "-adobe-courier-bold-o-normal--25-180-100-100-m-150-iso8859-1",
!   "-adobe-courier-bold-o-normal--34-240-100-100-m-200-iso8859-1",
! 
!   "-adobe-helvetica-medium-r-normal--11-80-100-100-p-56-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--17-120-100-100-p-88-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--20-140-100-100-p-100-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8859-1",
!   "-adobe-helvetica-medium-r-normal--34-240-100-100-p-176-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--11-80-100-100-p-60-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--14-100-100-100-p-82-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--17-120-100-100-p-92-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--20-140-100-100-p-105-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--25-180-100-100-p-138-iso8859-1",
!   "-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--11-80-100-100-p-57-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--14-100-100-100-p-78-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--17-120-100-100-p-88-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--20-140-100-100-p-98-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--25-180-100-100-p-130-iso8859-1",
!   "-adobe-helvetica-medium-o-normal--34-240-100-100-p-176-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--11-80-100-100-p-60-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--14-100-100-100-p-82-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--20-140-100-100-p-103-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--25-180-100-100-p-138-iso8859-1",
!   "-adobe-helvetica-bold-o-normal--34-240-100-100-p-182-iso8859-1",
! 
!   "-adobe-new century schoolbook-medium-r-normal--11-80-100-100-p-60-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--14-100-100-100-p-82-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--17-120-100-100-p-91-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--20-140-100-100-p-103-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--25-180-100-100-p-136-iso8859-1",
!   "-adobe-new century schoolbook-medium-r-normal--34-240-100-100-p-181-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--11-80-100-100-p-66-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--14-100-100-100-p-87-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--17-120-100-100-p-99-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--20-140-100-100-p-113-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--25-180-100-100-p-149-iso8859-1",
!   "-adobe-new century schoolbook-bold-r-normal--34-240-100-100-p-193-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--11-80-100-100-p-60-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--14-100-100-100-p-81-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--17-120-100-100-p-92-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--20-140-100-100-p-104-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--25-180-100-100-p-136-iso8859-1",
!   "-adobe-new century schoolbook-medium-i-normal--34-240-100-100-p-182-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--11-80-100-100-p-66-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--14-100-100-100-p-88-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--17-120-100-100-p-99-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--20-140-100-100-p-111-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--25-180-100-100-p-148-iso8859-1",
!   "-adobe-new century schoolbook-bold-i-normal--34-240-100-100-p-193-iso8859-1",
! 
!   "-adobe-symbol-medium-r-normal--11-80-100-100-p-61-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--14-100-100-100-p-85-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--17-120-100-100-p-95-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--20-140-100-100-p-107-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--25-180-100-100-p-142-adobe-fontspecific",
!   "-adobe-symbol-medium-r-normal--34-240-100-100-p-191-adobe-fontspecific"
  };
  
***************
*** 208,218 ****
  }
  
! int FontIndex (font_index, size_index, style_index)
!    register int	font_index, size_index, style_index;
  {
     if (font_index == FONT_SYM)
!       return (FIndex(font_index,size_index,0));
     else
!       return (FIndex(font_index,size_index,style_index));
  }
  
--- 334,351 ----
  }
  
! int FontIndex (dpi_index, font_index, size_index, style_index)
!    register int	dpi_index, font_index, size_index, style_index;
  {
+ /* if (font_index == FONT_SYM) */
+ /*    return (FIndex(font_index,size_index,0)); */
+ /* else */
+ /*    return (FIndex(font_index,size_index,style_index)); */
+ 
     if (font_index == FONT_SYM)
!       return (size_index+MAXFONTSIZES*(MAXFONTSTYLES*font_index) +
!             dpi_index*FONTS_PER_DPI);
     else
!       return (size_index+MAXFONTSIZES*(style_index+MAXFONTSTYLES*font_index) +
!             dpi_index*FONTS_PER_DPI);
  }
  
***************
*** 221,225 ****
     register int	index;
  
!    canvasFontIndex = index = FontIndex (curFont, curSize, curStyle);
  
     if (!myFontInfo[index].valid)
--- 354,358 ----
     register int	index;
  
!    canvasFontIndex = index = FontIndex (curFontDPI, curFont, curSize, curStyle);
  
     if (!myFontInfo[index].valid)
***************
*** 234,239 ****
  
     canvasFontPtr = myFontInfo[index].xfs;
!    canvasFontAsc = canvasFontPtr->ascent;
!    canvasFontDes = canvasFontPtr->descent;
     canvasFontHeight = canvasFontAsc + canvasFontDes;
  
--- 367,372 ----
  
     canvasFontPtr = myFontInfo[index].xfs;
!    canvasFontAsc = canvasFontPtr->max_bounds.ascent;
!    canvasFontDes = canvasFontPtr->max_bounds.descent;
     canvasFontHeight = canvasFontAsc + canvasFontDes;
  
***************
*** 241,244 ****
--- 374,380 ----
  
     textCursorH = canvasFontHeight;
+ 
+    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
+    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
  }
  
***************
*** 247,250 ****
--- 383,389 ----
     register int	i;
  
+    pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
+    sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
+ 
     for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE;
  
***************
*** 263,268 ****
     rulerFontPtr = myFontInfo[COUR10R].xfs;
     rulerFontWidth = rulerFontPtr->max_bounds.width;
!    rulerFontAsc = rulerFontPtr->ascent;
!    rulerFontDes = rulerFontPtr->descent;
     rulerFontHeight = rulerFontAsc + rulerFontDes;
  
--- 402,407 ----
     rulerFontPtr = myFontInfo[COUR10R].xfs;
     rulerFontWidth = rulerFontPtr->max_bounds.width;
!    rulerFontAsc = rulerFontPtr->max_bounds.ascent;
!    rulerFontDes = rulerFontPtr->max_bounds.descent;
     rulerFontHeight = rulerFontAsc + rulerFontDes;
  
***************
*** 269,274 ****
     defaultFontPtr = myFontInfo[COUR18R].xfs;
     defaultFontWidth = defaultFontPtr->max_bounds.width;
!    defaultFontAsc = defaultFontPtr->ascent;
!    defaultFontDes = defaultFontPtr->descent;
     defaultFontHeight = defaultFontAsc + defaultFontDes;
  }
--- 408,413 ----
     defaultFontPtr = myFontInfo[COUR18R].xfs;
     defaultFontWidth = defaultFontPtr->max_bounds.width;
!    defaultFontAsc = defaultFontPtr->max_bounds.ascent;
!    defaultFontDes = defaultFontPtr->max_bounds.descent;
     defaultFontHeight = defaultFontAsc + defaultFontDes;
  }
***************
*** 709,713 ****
  }
  
! static int	savedFont, savedSize, savedStyle;
  static int	savedJust, savedRotate, savedPen;
  
--- 848,965 ----
  }
  
! static
! int ChangeObjTextFontDPI (ObjPtr, FontDPIIndex)
!    register struct ObjRec	* ObjPtr;
!    register int			FontDPIIndex;
! {
!    register struct ObjRec	* obj_ptr;
!    register int			changed = FALSE;
! 
!    for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev)
!       switch (obj_ptr->type)
!       {
!          case OBJ_TEXT:
!             if (obj_ptr->detail.t->dpi != FontDPIIndex)
!             {
!                obj_ptr->detail.t->dpi = FontDPIIndex;
!                UpdTextBBox (obj_ptr);
!                changed = TRUE;
!             }
!             break;
! 
!          case OBJ_GROUP:
!          case OBJ_SYM:
!             if (ChangeObjTextFontDPI (obj_ptr->detail.r->last, FontDPIIndex))
!             {
!                changed = TRUE;
!                AdjObjBBox (obj_ptr);
!             }
!             break;
!       }
!    return (changed);
! }
! 
! void ChangeFontDPI (FontDPIIndex)
!    int	FontDPIIndex;
! {
!    register struct SelRec	* sel_ptr;
!    register struct ObjRec	* obj_ptr;
!    int				changed = FALSE, text_cursor_shown;
!    int				ltx, lty, rbx, rby, text_obj_created;
! 
!    if (FontDPIIndex == INVALID) return;
! 
!    if (topSel != NULL)
!    {
!       for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev)
!       {
!          obj_ptr = sel_ptr->obj;
!          switch (obj_ptr->type)
!          {
!             case OBJ_TEXT:
!                if (obj_ptr->detail.t->dpi != FontDPIIndex)
!                {
!                   obj_ptr->detail.t->dpi = FontDPIIndex;
!                   UpdTextBBox (obj_ptr);
!                   changed = TRUE;
!                }
!                break;
!             case OBJ_GROUP:
!             case OBJ_SYM:
!                if (ChangeObjTextFont (obj_ptr->detail.r->last, FontDPIIndex))
!                {
!                   changed = TRUE;
!                   AdjObjBBox (obj_ptr);
!                }
!                break;
!          }
!       }
! 
!       if (changed)
!       {
!          HighLightReverse ();
!          ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY;
!          UpdSelBBox ();
!          RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale),
!                rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale),
!                selLtY-(1<<zoomScale), selRbX+(1<<zoomScale),
!                selRbY+(1<<zoomScale));
!          SetFileModified (TRUE);
!          HighLightForward ();
!       }
!    }
!    else
!    {
!       text_cursor_shown = textCursorShown;
!       text_obj_created = TieLooseEnds ();
!       curFontDPI = FontDPIIndex;
!       SetCanvasFont ();
!       if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown)
!       {
!          NewCurText ();
!          RedrawCurText ();
!       }
!       else
!          textCursorShown = FALSE;
!       ShowCurFont ();
! 
!       pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100;
!       sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100;
!    }
! }
! 
! void FontDPIMenu (X, Y)
!    int  X, Y;
! {
!    register int			index;
!    int				* fore_colors, * valid;
! 
!    DefaultColorArrays (MAXFONTDPIS, &fore_colors, &valid);
!    index = TextMenuLoop (X, Y, fontDPIMenuStr, MAXFONTDPIS, fore_colors, valid,
!          SINGLECOLOR);
!    ChangeFontDPI (index);
! }
! 
! static int	savedFont, savedSize, savedStyle, savedDPI;
  static int	savedJust, savedRotate, savedPen;
  
***************
*** 717,720 ****
--- 969,973 ----
     savedSize = curSize;
     savedStyle = curStyle;
+    savedDPI = curFontDPI;
     savedJust = textJust;
     savedRotate = curRotate;
***************
*** 727,730 ****
--- 980,984 ----
     curSize = savedSize;
     curStyle = savedStyle;
+    curFontDPI = savedDPI;
     textJust = savedJust;
     curRotate = savedRotate;
***************
*** 734,738 ****
  }
  
! static int	pushedFont, pushedSize, pushedStyle, pushedJust;
  static int	pushedColorIndex, pushedRotate, pushedPen;
  
--- 988,992 ----
  }
  
! static int	pushedFont, pushedSize, pushedStyle, pushedDPI, pushedJust;
  static int	pushedColorIndex, pushedRotate, pushedPen;
  
***************
*** 742,745 ****
--- 996,1000 ----
     pushedSize = curSize;
     pushedStyle = curStyle;
+    pushedDPI = curFontDPI;
     pushedJust = textJust;
     pushedRotate = curRotate;
***************
*** 753,756 ****
--- 1008,1012 ----
     curSize = pushedSize;
     curStyle = pushedStyle;
+    curFontDPI = pushedDPI;
     textJust = pushedJust;
     curRotate = pushedRotate;
***************
*** 771,773 ****
--- 1027,1081 ----
           myFontInfo[i].valid = FALSE;
        }
+ }
+ 
+ static
+ void GenerateFontInfo ()
+    /* This procedure is used to generate pdrawFontAsc[] and */
+    /*    pDrawFontDes[], to be used in ``prtgif.c''.  It is */
+    /*    supposed to be called within dbx and not tgif.     */
+ {
+    register int	i, j, num_rows;
+ 
+    for (i = 0; i < FONTTABLESIZE; i++)
+       if (!myFontInfo[i].valid)
+       {
+          if ((myFontInfo[i].xfs =
+                XLoadQueryFont (mainDisplay, fontNameStr[i])) == NULL)
+          {
+             printf ("Can not open %s.  Abort.\n\n", fontNameStr[i]);
+             exit (-1);
+          }
+          myFontInfo[i].valid = TRUE;
+       }
+ 
+    num_rows = FONTTABLESIZE / MAXFONTSIZES;
+    printf ("short\tpDrawFontAsc[] =\n{\n");
+    for (i = 0; i < num_rows; i++)
+    {
+       printf ("   ");
+       for (j = 0; j < MAXFONTSIZES; j++)
+          if (i == num_rows-1 && j == MAXFONTSIZES-1)
+             printf ("%2d ",
+                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent);
+          else
+             printf ("%2d, ",
+                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent);
+       printf ("\n");
+    }
+    printf ("};\n\n");
+ 
+    printf ("short\tpDrawFontDes[] =\n{\n");
+    for (i = 0; i < num_rows; i++)
+    {
+       printf ("   ");
+       for (j = 0; j < MAXFONTSIZES; j++)
+          if (i == num_rows-1 && j == MAXFONTSIZES-1)
+             printf ("%2d ",
+                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent);
+          else
+             printf ("%2d, ",
+                   (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent);
+       printf ("\n");
+    }
+    printf ("};\n");
  }
*** group.c.orig	Fri Aug 17 13:47:37 1990
--- group.c	Fri Aug 17 13:47:38 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.3 90/07/30 11:10:25 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/group.c,v 1.6 90/08/13 09:23:41 william Exp $";
  #endif
  
***************
*** 32,36 ****
     group_ptr->first = TopObjPtr;
     group_ptr->last = BotObjPtr;
-    group_ptr->fattr = group_ptr->lattr = NULL;
     obj_ptr = (struct ObjRec *) calloc (1, sizeof(struct ObjRec));
     obj_ptr->x = selObjLtX; /* note:  selLtX, selLtY are absolute */
--- 32,35 ----
***************
*** 46,49 ****
--- 45,49 ----
     obj_ptr->obbox.rby = selObjRbY;
     obj_ptr->detail.r = group_ptr;
+    obj_ptr->fattr = obj_ptr->lattr = NULL;
     AddObj (NULL, topObj, obj_ptr);
  }
***************
*** 57,61 ****
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],");
!    SaveAttrs (FP, ObjPtr->detail.r->lattr);
     fprintf (FP, ")");
  }
--- 57,61 ----
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],");
!    SaveAttrs (FP, ObjPtr->lattr);
     fprintf (FP, ")");
  }
***************
*** 69,73 ****
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],");
!    SaveAttrs (FP, ObjPtr->detail.r->lattr);
     fprintf (FP, ")");
  }
--- 69,73 ----
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],");
!    SaveAttrs (FP, ObjPtr->lattr);
     fprintf (FP, ")");
  }
***************
*** 81,86 ****
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],\n");
!    fprintf (FP, "\"%s\",%1d,", ObjPtr->detail.r->s,ObjPtr->detail.r->id);
!    SaveAttrs (FP, ObjPtr->detail.r->lattr);
     fprintf (FP, ")");
  }
--- 81,86 ----
     Save (FP, ObjPtr->detail.r->last, Level+1);
     fprintf (FP, "],\n");
!    fprintf (FP, "\"%s\",%1d,", ObjPtr->detail.r->s,ObjPtr->id);
!    SaveAttrs (FP, ObjPtr->lattr);
     fprintf (FP, ")");
  }
*** mainloop.c.orig	Fri Aug 17 13:47:44 1990
--- mainloop.c	Fri Aug 17 13:47:45 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.12 90/07/30 11:01:17 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/mainloop.c,v 1.15 90/08/16 09:35:09 william Exp $";
  #endif
  
***************
*** 18,21 ****
--- 18,22 ----
  #include "choice.e"
  #include "color.e"
+ #include "copypaste.e"
  #include "cursor.e"
  #include "dialog.e"
***************
*** 131,134 ****
--- 132,136 ----
     CleanUpFiles ();
     CleanUpGrids ();
+    CleanUpCutBuffer ();
  
     DelAllCutSel ();
***************
*** 412,416 ****
        poly_id = atoi (PolyId);
        for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
!          if (obj_ptr->type == OBJ_POLY && obj_ptr->detail.p->id == poly_id)
              break;
  
--- 414,418 ----
        poly_id = atoi (PolyId);
        for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
!          if (obj_ptr->type == OBJ_POLY && obj_ptr->id == poly_id)
              break;
  
***************
*** 511,515 ****
  
     for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
!       if (obj_ptr->type == OBJ_ICON && obj_ptr->detail.r->id == obj_id)
           break;
  
--- 513,520 ----
  
     for (obj_ptr = topObj; obj_ptr != NULL; obj_ptr = obj_ptr->next)
!       if ((obj_ptr->type == OBJ_ICON || obj_ptr->type == OBJ_POLY ||
!             obj_ptr->type == OBJ_BOX || obj_ptr->type == OBJ_OVAL ||
!             obj_ptr->type == OBJ_POLYGON) &&
!             obj_ptr->id == obj_id)
           break;
  
***************
*** 521,525 ****
     else
     {
!       attr_ptr = obj_ptr->detail.r->fattr;
        for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
        {
--- 526,530 ----
     else
     {
!       attr_ptr = obj_ptr->fattr;
        for ( ; attr_ptr != NULL; attr_ptr = attr_ptr->next)
        {
*** menu.c.orig	Fri Aug 17 13:47:56 1990
--- menu.c	Fri Aug 17 13:47:58 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.11 90/07/30 11:00:59 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/menu.c,v 1.12 90/08/15 16:00:27 william Exp $";
  #endif
  
***************
*** 388,394 ****
  }
  
  static char	* mainMenuStr[MAXMENUS] =
  {
!    "Mode", "File", "Edit", "TextStyle", "TextSize", "Font",
     "Layout", "Arrange", "Fill", "LineStyle", "Pen", "Color", "Special"
  };
--- 388,411 ----
  }
  
+ #define MENU_MODE 0
+ #define MENU_FILE 1
+ #define MENU_EDIT 2
+ #define MENU_STYLE 3
+ #define MENU_SIZE 4
+ #define MENU_FONT 5
+ #define MENU_FONTDPI 6
+ #define MENU_LAYOUT 7
+ #define MENU_ARRANGE 8
+ #define MENU_FILL 9
+ #define MENU_LINESTYLE 10
+ #define MENU_PEN 11
+ #define MENU_COLOR 12
+ #define MENU_SPECIAL 13
+ 
+ #define MAXMENUS 14
+ 
  static char	* mainMenuStr[MAXMENUS] =
  {
!    "Mode", "File", "Edit", "TextStyle", "TextSize", "Font", "FontDPI",
     "Layout", "Arrange", "Fill", "LineStyle", "Pen", "Color", "Special"
  };
***************
*** 427,430 ****
--- 444,448 ----
        case MENU_SIZE: SizeMenu (x, y); break;
        case MENU_FONT: FontMenu (x, y); break;
+       case MENU_FONTDPI: FontDPIMenu (x, y); break;
        case MENU_LAYOUT: LayoutMenu (x, y); break;
        case MENU_ARRANGE: ArrangeMenu (x, y); break;
*** move.c.orig	Fri Aug 17 13:48:04 1990
--- move.c	Fri Aug 17 13:48:05 1990
***************
*** 7,11 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.6 90/07/07 23:57:07 william Exp $";
  #endif
  #include <stdio.h>
--- 7,11 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/move.c,v 1.7 90/08/11 00:14:18 william Exp $";
  #endif
  #include <stdio.h>
***************
*** 88,102 ****
     {
        case OBJ_POLY:
!          MoveAttrs(ObjPtr->detail.p->fattr, Dx,Dy);
           MovePoly (ObjPtr, Dx, Dy); 
           break;
!       case OBJ_BOX : break;
!       case OBJ_OVAL: break;
        case OBJ_TEXT: break;
!       case OBJ_POLYGON: MovePolygon (ObjPtr, Dx, Dy); break;
        case OBJ_SYM:
        case OBJ_ICON:
        case OBJ_GROUP:
!          MoveAttrs(ObjPtr->detail.r->fattr, Dx,Dy);
           for (ptr = ObjPtr->detail.r->first; ptr != NULL; ptr = ptr->next)
              MoveObj (ptr, Dx, Dy);
--- 88,105 ----
     {
        case OBJ_POLY:
!          MoveAttrs(ObjPtr->fattr, Dx,Dy);
           MovePoly (ObjPtr, Dx, Dy); 
           break;
!       case OBJ_BOX : MoveAttrs(ObjPtr->fattr, Dx,Dy); break;
!       case OBJ_OVAL: MoveAttrs(ObjPtr->fattr, Dx,Dy); break;
        case OBJ_TEXT: break;
!       case OBJ_POLYGON:
!          MoveAttrs(ObjPtr->fattr, Dx,Dy);
!          MovePolygon (ObjPtr, Dx, Dy);
!          break;
        case OBJ_SYM:
        case OBJ_ICON:
        case OBJ_GROUP:
!          MoveAttrs(ObjPtr->fattr, Dx,Dy);
           for (ptr = ObjPtr->detail.r->first; ptr != NULL; ptr = ptr->next)
              MoveObj (ptr, Dx, Dy);
*** obj.c.orig	Fri Aug 17 13:48:11 1990
--- obj.c	Fri Aug 17 13:48:12 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/obj.c,v 1.1 90/04/01 22:16:27 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/obj.c,v 1.2 90/08/11 00:14:20 william Exp $";
  #endif
  
***************
*** 62,79 ****
     switch (ObjPtr->type)
     {
!       case OBJ_POLY:
!          DelAllAttrs(ObjPtr->detail.p->fattr);
!          FreePolyObj (ObjPtr); 
!          break;
!       case OBJ_BOX: FreeBoxObj (ObjPtr); break;
!       case OBJ_OVAL: FreeOvalObj (ObjPtr); break;
        case OBJ_TEXT: FreeTextObj (ObjPtr); break;
!       case OBJ_POLYGON: FreePolygonObj (ObjPtr); break;
        case OBJ_SYM:
        case OBJ_ICON:
!       case OBJ_GROUP:
!          DelAllAttrs(ObjPtr->detail.r->fattr);
!          FreeGroupObj (ObjPtr); 
!          break;
     }
  }
--- 62,74 ----
     switch (ObjPtr->type)
     {
!       case OBJ_POLY: DelAllAttrs(ObjPtr->fattr); FreePolyObj (ObjPtr); break;
!       case OBJ_BOX: DelAllAttrs(ObjPtr->fattr); FreeBoxObj (ObjPtr); break;
!       case OBJ_OVAL: DelAllAttrs(ObjPtr->fattr); FreeOvalObj (ObjPtr); break;
        case OBJ_TEXT: FreeTextObj (ObjPtr); break;
!       case OBJ_POLYGON: DelAllAttrs(ObjPtr->fattr); FreePolygonObj (ObjPtr);
!          break;
        case OBJ_SYM:
        case OBJ_ICON:
!       case OBJ_GROUP: DelAllAttrs(ObjPtr->fattr); FreeGroupObj (ObjPtr); break;
     }
  }
***************
*** 166,177 ****
           break;
     }
!    switch (ObjPtr->type)
!    {
!       case OBJ_POLY: attr_ptr = ObjPtr->detail.p->fattr; break;
!       case OBJ_SYM:
!       case OBJ_GROUP:
!       case OBJ_ICON: attr_ptr = ObjPtr->detail.r->fattr; break;
!       default: return; /* only the above 4 types can have attributes */
!    }
  
     ltx = ObjPtr->bbox.ltx;
--- 161,166 ----
           break;
     }
! 
!    attr_ptr = ObjPtr->fattr;
  
     ltx = ObjPtr->bbox.ltx;
*** oval.c.orig	Fri Aug 17 13:48:17 1990
--- oval.c	Fri Aug 17 13:48:19 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.5 90/06/26 08:52:36 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/oval.c,v 1.7 90/08/13 09:23:35 william Exp $";
  #endif
  
***************
*** 227,231 ****
--- 227,234 ----
     obj_ptr->type = OBJ_OVAL;
     obj_ptr->color = colorIndex;
+    obj_ptr->id = objId++;
+    obj_ptr->dirty = FALSE;
     obj_ptr->detail.o = oval_ptr;
+    obj_ptr->fattr = obj_ptr->lattr = NULL;
     AddObj (NULL, topObj, obj_ptr);
  }
***************
*** 331,337 ****
  {
     fprintf (FP, "oval(%s,", colorMenuItems[ObjPtr->color]);
!    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d)", ObjPtr->obbox.ltx,
           ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
!          ObjPtr->detail.o->fill, ObjPtr->detail.o->width, ObjPtr->detail.o->pen);
  }
  
--- 334,343 ----
  {
     fprintf (FP, "oval(%s,", colorMenuItems[ObjPtr->color]);
!    fprintf (FP, "%1d,%1d,%1d,%1d,%1d,%1d,%1d,%1d,", ObjPtr->obbox.ltx,
           ObjPtr->obbox.lty, ObjPtr->obbox.rbx, ObjPtr->obbox.rby,
!          ObjPtr->detail.o->fill, ObjPtr->detail.o->width,
!          ObjPtr->detail.o->pen, ObjPtr->id);
!    SaveAttrs (FP, ObjPtr->lattr);
!    fprintf (FP, ")");
  }
  
***************
*** 358,365 ****
           case 2: width = 6; break;
        }
     }
!    else
        sscanf (s, "%d , %d, %d , %d , %d , %d , %d",
              &ltx, &lty, &rbx, &rby, &fill, &width, &pen);
  
     oval_ptr->fill = fill;
--- 364,381 ----
           case 2: width = 6; break;
        }
+       (*ObjPtr)->id = objId++;
     }
!    else if (fileVersion <= 7)
!    {
        sscanf (s, "%d , %d, %d , %d , %d , %d , %d",
              &ltx, &lty, &rbx, &rby, &fill, &width, &pen);
+       (*ObjPtr)->id = objId++;
+    }
+    else
+    {
+       sscanf (s, "%d , %d, %d , %d , %d , %d , %d , %d",
+             &ltx, &lty, &rbx, &rby, &fill, &width, &pen, &((*ObjPtr)->id));
+       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
+    }
  
     oval_ptr->fill = fill;
***************
*** 369,372 ****
--- 385,389 ----
     (*ObjPtr)->y = lty;
     (*ObjPtr)->color = FindColorIndex (color_str);
+    (*ObjPtr)->dirty = FALSE;
     (*ObjPtr)->type = OBJ_OVAL;
     (*ObjPtr)->obbox.ltx = ltx;
*** poly.c.orig	Fri Aug 17 13:48:29 1990
--- poly.c	Fri Aug 17 13:48:31 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.4 90/06/26 00:11:18 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/poly.c,v 1.6 90/08/13 09:23:49 william Exp $";
  #endif
  
***************
*** 115,120 ****
     poly_ptr->width = lineWidth;
     poly_ptr->pen = penPat;
-    poly_ptr->fattr = poly_ptr->lattr = NULL;
-    poly_ptr->id = objId++;
     poly_ptr->curved = curSpline;
     poly_ptr->fill = objFill;
--- 115,118 ----
***************
*** 133,137 ****
--- 131,138 ----
     obj_ptr->bbox.rbx += w;
     obj_ptr->bbox.rby += w;
+    obj_ptr->id = objId++;
+    obj_ptr->dirty = FALSE;
     obj_ptr->detail.p = poly_ptr;
+    obj_ptr->fattr = obj_ptr->lattr = NULL;
     AddObj (NULL, topObj, obj_ptr);
  }
***************
*** 697,702 ****
     fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
     fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
!          poly_ptr->pen, poly_ptr->id, poly_ptr->curved, poly_ptr->fill);
!    SaveAttrs (FP, ObjPtr->detail.p->lattr);
     fprintf (FP, ")");
  }
--- 698,703 ----
     fprintf (FP, "%1d,%1d", poly_ptr->vlist[n-1].x, poly_ptr->vlist[n-1].y);
     fprintf (FP, "],%1d,%1d,%1d,%1d,%1d,%1d,", poly_ptr->style, poly_ptr->width,
!          poly_ptr->pen, ObjPtr->id, poly_ptr->curved, poly_ptr->fill);
!    SaveAttrs (FP, ObjPtr->lattr);
     fprintf (FP, ")");
  }
***************
*** 739,743 ****
        sscanf (s, "%d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
              &(poly_ptr->pen));
!       poly_ptr->id = objId++;
        poly_ptr->fill = NONEPAT;
        if (poly_ptr->width == LINE_CURVED)
--- 740,744 ----
        sscanf (s, "%d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
              &(poly_ptr->pen));
!       (*ObjPtr)->id = objId++;
        poly_ptr->fill = NONEPAT;
        if (poly_ptr->width == LINE_CURVED)
***************
*** 757,762 ****
     {
        sscanf (s, "%d , %d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
!             &(poly_ptr->pen), &(poly_ptr->id));
!       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
        poly_ptr->fill = NONEPAT;
        if (poly_ptr->width == LINE_CURVED)
--- 758,763 ----
     {
        sscanf (s, "%d , %d , %d , %d", &(poly_ptr->style), &(poly_ptr->width),
!             &(poly_ptr->pen), &((*ObjPtr)->id));
!       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
        poly_ptr->fill = NONEPAT;
        if (poly_ptr->width == LINE_CURVED)
***************
*** 776,782 ****
     {
        sscanf (s, "%d , %d , %d , %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
              &(poly_ptr->curved));
!       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
        poly_ptr->fill = NONEPAT;
        switch (poly_ptr->width)
--- 777,783 ----
     {
        sscanf (s, "%d , %d , %d , %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
              &(poly_ptr->curved));
!       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
        poly_ptr->fill = NONEPAT;
        switch (poly_ptr->width)
***************
*** 789,795 ****
     {
        sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
              &(poly_ptr->curved), &(poly_ptr->fill));
!       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
        switch (poly_ptr->width)
        {
--- 790,796 ----
     {
        sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
              &(poly_ptr->curved), &(poly_ptr->fill));
!       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
        switch (poly_ptr->width)
        {
***************
*** 801,807 ****
     {
        sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &(poly_ptr->id),
              &(poly_ptr->curved), &(poly_ptr->fill));
!       if (poly_ptr->id >= objId) objId = poly_ptr->id + 1;
     }
  
--- 802,808 ----
     {
        sscanf (s, "%d , %d , %d , %d, %d, %d", &(poly_ptr->style),
!             &(poly_ptr->width), &(poly_ptr->pen), &((*ObjPtr)->id),
              &(poly_ptr->curved), &(poly_ptr->fill));
!       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
     }
  
*** polygon.c.orig	Fri Aug 17 13:48:42 1990
--- polygon.c	Fri Aug 17 13:48:44 1990
***************
*** 6,10 ****
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.3 90/06/26 00:11:22 william Exp $";
  #endif
  
--- 6,10 ----
  #ifndef lint
  static char RCSid[] =
!       "@(#)$Header: /n/kona/u/tangram/u/william/X11/TGIF/RCS/polygon.c,v 1.5 90/08/13 09:23:36 william Exp $";
  #endif
  
***************
*** 288,292 ****
--- 288,295 ----
     obj_ptr->bbox.rbx += w;
     obj_ptr->bbox.rby += w;
+    obj_ptr->id = objId++;
+    obj_ptr->dirty = FALSE;
     obj_ptr->detail.g = polygon_ptr;
+    obj_ptr->fattr = obj_ptr->lattr = NULL;
     AddObj (NULL, topObj, obj_ptr);
  }
***************
*** 499,505 ****
        fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  
!    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d)", polygon_ptr->vlist[n-1].x,
           polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
!          polygon_ptr->pen, polygon_ptr->curved);
  }
  
--- 502,510 ----
        fprintf (FP, "%1d,%1d,", polygon_ptr->vlist[i].x, polygon_ptr->vlist[i].y);
  
!    fprintf (FP, "%1d,%1d],%1d,%1d,%1d,%1d,%1d,", polygon_ptr->vlist[n-1].x,
           polygon_ptr->vlist[n-1].y, polygon_ptr->fill, polygon_ptr->width,
!          polygon_ptr->pen, polygon_ptr->curved, ObjPtr->id);
!    SaveAttrs (FP, ObjPtr->lattr);
!    fprintf (FP, ")");
  }
  
***************
*** 553,556 ****
--- 558,562 ----
           case 2: width = 6; break;
        }
+       (*ObjPtr)->id = objId++;
     }
     else if (fileVersion <= 5)
***************
*** 562,568 ****
           case 2: width = 6; break;
        }
     }
!    else
        sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
  
     polygon_ptr->vlist = v;
--- 568,584 ----
           case 2: width = 6; break;
        }
+       (*ObjPtr)->id = objId++;
     }
!    else if (fileVersion <= 7)
!    {
        sscanf (s, "%d , %d , %d , %d", &fill, &width, &pen, &curved);
+       (*ObjPtr)->id = objId++;
+    }
+    else
+    {
+       sscanf (s, "%d , %d , %d , %d , %d", &fill, &width, &pen, &curved,
+             &((*ObjPtr)->id));
+       if ((*ObjPtr)->id >= objId) objId = (*ObjPtr)->id + 1;
+    }
  
     polygon_ptr->vlist = v;
***************
*** 577,580 ****
--- 593,597 ----
     (*ObjPtr)->y = lty;
     (*ObjPtr)->color = FindColorIndex (color_str);
+    (*ObjPtr)->dirty = FALSE;
     (*ObjPtr)->type = OBJ_POLYGON;
     (*ObjPtr)->obbox.ltx = ltx;
---------------------------------> cut here <---------------------------------
--
Bill Cheng // UCLA Computer Science Department // (213) 206-7135
3277 Boelter Hall // Los Angeles, California 90024 // USA
william@CS.UCLA.EDU      ...!{uunet|ucbvax}!cs.ucla.edu!william

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