william@CS.UCLA.EDU (William Cheng) (03/11/91)
Submitted-by: william@CS.UCLA.EDU (William Cheng) Posting-number: Volume 12, Issue 21 Archive-name: tgif/part05 ---------------------------------> cut here <--------------------------------- #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 5 (of 23)." # Contents: font.c frontend.c # Wrapped by william@oahu on Wed Mar 6 09:57:12 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'font.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'font.c'\" else echo shar: Extracting \"'font.c'\" \(40471 characters\) sed "s/^X//" >'font.c' <<'END_OF_FILE' X/* X * Author: William Chia-Wei Cheng (william@cs.ucla.edu) X * X * Copyright (C) 1990, 1991, William Cheng. X */ X#ifndef lint Xstatic char RCSid[] = X "@(#)$Header: /tmp_mnt/n/kona/tangram/u/william/X11/TGIF2/RCS/font.c,v 2.0 91/03/05 12:47:17 william Exp $"; X#endif X X#include <X11/Xlib.h> X#include "const.h" X#include "types.h" X X#include "choice.e" X#include "color.e" X#include "drawing.e" X#include "mark.e" X#include "menu.e" X#include "obj.e" X#include "pattern.e" X#include "raster.e" X#include "select.e" X#include "setup.e" X#include "text.e" X X#define FONTS_PER_DPI (((MAXFONTS-1)*MAXFONTSTYLES+1)*MAXFONTSIZES) X#define FONTTABLESIZE (MAXFONTDPIS*FONTS_PER_DPI) X X#define COUR8R_75 FontIndex(FONT_DPI_75,FONT_COU,0,STYLE_NR) X#define COUR10R_75 FontIndex(FONT_DPI_75,FONT_COU,1,STYLE_NR) X#define COUR12R_75 FontIndex(FONT_DPI_75,FONT_COU,2,STYLE_NR) X#define COUR14R_75 FontIndex(FONT_DPI_75,FONT_COU,3,STYLE_NR) X#define COUR18R_75 FontIndex(FONT_DPI_75,FONT_COU,4,STYLE_NR) X#define COUR24R_75 FontIndex(FONT_DPI_75,FONT_COU,5,STYLE_NR) X X#define COUR11R_100 FontIndex(FONT_DPI_100,FONT_COU,0,STYLE_NR) X#define COUR14R_100 FontIndex(FONT_DPI_100,FONT_COU,1,STYLE_NR) X#define COUR17R_100 FontIndex(FONT_DPI_100,FONT_COU,2,STYLE_NR) X#define COUR20R_100 FontIndex(FONT_DPI_100,FONT_COU,3,STYLE_NR) X#define COUR25R_100 FontIndex(FONT_DPI_100,FONT_COU,4,STYLE_NR) X#define COUR34R_100 FontIndex(FONT_DPI_100,FONT_COU,5,STYLE_NR) X Xstruct MyFontRec { X XFontStruct * xfs; X int valid; X}; X XXFontStruct * canvasFontPtr; Xint canvasFontHeight; Xint canvasFontAsc; Xint canvasFontDes; X Xint canvasFontIndex; X XXFontStruct * rulerFontPtr; Xint rulerFontWidth; Xint rulerFontHeight; Xint rulerFontAsc; Xint rulerFontDes; X XXFontStruct * defaultFontPtr; Xint defaultFontWidth; Xint defaultFontHeight; Xint defaultFontAsc; Xint defaultFontDes; X Xint * pointSize; Xint curFont = FONT_COU; Xint curSize = 4; Xint curStyle = STYLE_NR; Xint curFontDPI = FONT_DPI_75; Xint curRotate = ROTATE0; X Xint pointSize75[] = { 8, 10, 12, 14, 18, 24 }; Xint pointSize100[] = { 11, 14, 17, 20, 25, 34 }; X Xstatic struct MyFontRec myFontInfo[FONTTABLESIZE]; X Xstatic char * fontMenuStr[] = X{ X "Times", "Courier", "Helvetica", "NewCentury", "Symbol" X}; Xstatic char * fontDPIMenuStr[] = { "75dpi", "100dpi" }; Xstatic char * * sizeMenuStr; Xstatic char * sizeMenuStr75[] = X{ X "8 #0", X "10 #1", X "12 #2", X "14 #3", X "18 #4", X "24 #5" X}; Xstatic char * sizeMenuStr100[] = X{ X "11 #0", X "14 #1", X "17 #2", X "20 #3", X "25 #4", X "34 #5" X}; Xstatic char * styleMenuStr[] = X{ X "Roman ^#O", X "Bold ^#B", X "Italic ^#T", X "BoldItalic ^#P", X "--------------", X "Left ^#L", X "Center ^#C", X "Right ^#R" X}; X Xstatic char * fontNameStr[] = X{ X/* 75 dpi fonts */ X "-adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1", X "-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1", X "-adobe-times-medium-r-normal--12-120-75-75-p-64-iso8859-1", X "-adobe-times-medium-r-normal--14-140-75-75-p-74-iso8859-1", X "-adobe-times-medium-r-normal--18-180-75-75-p-94-iso8859-1", X "-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1", X "-adobe-times-bold-r-normal--8-80-75-75-p-47-iso8859-1", X "-adobe-times-bold-r-normal--10-100-75-75-p-57-iso8859-1", X "-adobe-times-bold-r-normal--12-120-75-75-p-67-iso8859-1", X "-adobe-times-bold-r-normal--14-140-75-75-p-77-iso8859-1", X "-adobe-times-bold-r-normal--18-180-75-75-p-99-iso8859-1", X "-adobe-times-bold-r-normal--24-240-75-75-p-132-iso8859-1", X "-adobe-times-medium-i-normal--8-80-75-75-p-42-iso8859-1", X "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-1", X "-adobe-times-medium-i-normal--12-120-75-75-p-63-iso8859-1", X "-adobe-times-medium-i-normal--14-140-75-75-p-73-iso8859-1", X "-adobe-times-medium-i-normal--18-180-75-75-p-94-iso8859-1", X "-adobe-times-medium-i-normal--24-240-75-75-p-125-iso8859-1", X "-adobe-times-bold-i-normal--8-80-75-75-p-47-iso8859-1", X "-adobe-times-bold-i-normal--10-100-75-75-p-57-iso8859-1", X "-adobe-times-bold-i-normal--12-120-75-75-p-68-iso8859-1", X "-adobe-times-bold-i-normal--14-140-75-75-p-77-iso8859-1", X "-adobe-times-bold-i-normal--18-180-75-75-p-98-iso8859-1", X "-adobe-times-bold-i-normal--24-240-75-75-p-128-iso8859-1", X X "-adobe-courier-medium-r-normal--8-80-75-75-m-50-iso8859-1", X "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1", X "-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1", X "-adobe-courier-medium-r-normal--14-140-75-75-m-90-iso8859-1", X "-adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1", X "-adobe-courier-medium-r-normal--24-240-75-75-m-150-iso8859-1", X "-adobe-courier-bold-r-normal--8-80-75-75-m-50-iso8859-1", X "-adobe-courier-bold-r-normal--10-100-75-75-m-60-iso8859-1", X "-adobe-courier-bold-r-normal--12-120-75-75-m-70-iso8859-1", X "-adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1", X "-adobe-courier-bold-r-normal--18-180-75-75-m-110-iso8859-1", X "-adobe-courier-bold-r-normal--24-240-75-75-m-150-iso8859-1", X "-adobe-courier-medium-o-normal--8-80-75-75-m-50-iso8859-1", X "-adobe-courier-medium-o-normal--10-100-75-75-m-60-iso8859-1", X "-adobe-courier-medium-o-normal--12-120-75-75-m-70-iso8859-1", X "-adobe-courier-medium-o-normal--14-140-75-75-m-90-iso8859-1", X "-adobe-courier-medium-o-normal--18-180-75-75-m-110-iso8859-1", X "-adobe-courier-medium-o-normal--24-240-75-75-m-150-iso8859-1", X "-adobe-courier-bold-o-normal--8-80-75-75-m-50-iso8859-1", X "-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1", X "-adobe-courier-bold-o-normal--12-120-75-75-m-70-iso8859-1", X "-adobe-courier-bold-o-normal--14-140-75-75-m-90-iso8859-1", X "-adobe-courier-bold-o-normal--18-180-75-75-m-110-iso8859-1", X "-adobe-courier-bold-o-normal--24-240-75-75-m-150-iso8859-1", X X "-adobe-helvetica-medium-r-normal--8-80-75-75-p-46-iso8859-1", X "-adobe-helvetica-medium-r-normal--10-100-75-75-p-56-iso8859-1", X "-adobe-helvetica-medium-r-normal--12-120-75-75-p-67-iso8859-1", X "-adobe-helvetica-medium-r-normal--14-140-75-75-p-77-iso8859-1", X "-adobe-helvetica-medium-r-normal--18-180-75-75-p-98-iso8859-1", X "-adobe-helvetica-medium-r-normal--24-240-75-75-p-130-iso8859-1", X "-adobe-helvetica-bold-r-normal--8-80-75-75-p-50-iso8859-1", X "-adobe-helvetica-bold-r-normal--10-100-75-75-p-60-iso8859-1", X "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1", X "-adobe-helvetica-bold-r-normal--14-140-75-75-p-82-iso8859-1", X "-adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1", X "-adobe-helvetica-bold-r-normal--24-240-75-75-p-138-iso8859-1", X "-adobe-helvetica-medium-o-normal--8-80-75-75-p-47-iso8859-1", X "-adobe-helvetica-medium-o-normal--10-100-75-75-p-57-iso8859-1", X "-adobe-helvetica-medium-o-normal--12-120-75-75-p-67-iso8859-1", X "-adobe-helvetica-medium-o-normal--14-140-75-75-p-78-iso8859-1", X "-adobe-helvetica-medium-o-normal--18-180-75-75-p-98-iso8859-1", X "-adobe-helvetica-medium-o-normal--24-240-75-75-p-130-iso8859-1", X "-adobe-helvetica-bold-o-normal--8-80-75-75-p-50-iso8859-1", X "-adobe-helvetica-bold-o-normal--10-100-75-75-p-60-iso8859-1", X "-adobe-helvetica-bold-o-normal--12-120-75-75-p-69-iso8859-1", X "-adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1", X "-adobe-helvetica-bold-o-normal--18-180-75-75-p-104-iso8859-1", X "-adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1", X X "-adobe-new century schoolbook-medium-r-normal--8-80-75-75-p-50-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--10-100-75-75-p-60-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--12-120-75-75-p-70-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--14-140-75-75-p-82-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--18-180-75-75-p-103-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--24-240-75-75-p-137-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--8-80-75-75-p-56-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--10-100-75-75-p-66-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--12-120-75-75-p-77-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--14-140-75-75-p-87-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--18-180-75-75-p-113-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--24-240-75-75-p-149-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--8-80-75-75-p-50-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--10-100-75-75-p-60-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--12-120-75-75-p-70-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--14-140-75-75-p-81-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--18-180-75-75-p-104-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--24-240-75-75-p-136-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--8-80-75-75-p-56-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--10-100-75-75-p-66-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--12-120-75-75-p-76-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--14-140-75-75-p-88-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--18-180-75-75-p-111-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--24-240-75-75-p-148-iso8859-1", X X "-adobe-symbol-medium-r-normal--8-80-75-75-p-51-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--10-100-75-75-p-61-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--12-120-75-75-p-74-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--14-140-75-75-p-85-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--18-180-75-75-p-107-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--24-240-75-75-p-142-adobe-fontspecific", X X/* 100 dpi fonts */ X "-adobe-times-medium-r-normal--11-80-100-100-p-54-iso8859-1", X "-adobe-times-medium-r-normal--14-100-100-100-p-74-iso8859-1", X "-adobe-times-medium-r-normal--17-120-100-100-p-84-iso8859-1", X "-adobe-times-medium-r-normal--20-140-100-100-p-96-iso8859-1", X "-adobe-times-medium-r-normal--25-180-100-100-p-125-iso8859-1", X "-adobe-times-medium-r-normal--34-240-100-100-p-170-iso8859-1", X "-adobe-times-bold-r-normal--11-80-100-100-p-57-iso8859-1", X "-adobe-times-bold-r-normal--14-100-100-100-p-76-iso8859-1", X "-adobe-times-bold-r-normal--17-120-100-100-p-88-iso8859-1", X "-adobe-times-bold-r-normal--20-140-100-100-p-100-iso8859-1", X "-adobe-times-bold-r-normal--25-180-100-100-p-132-iso8859-1", X "-adobe-times-bold-r-normal--34-240-100-100-p-177-iso8859-1", X "-adobe-times-medium-i-normal--11-80-100-100-p-52-iso8859-1", X "-adobe-times-medium-i-normal--14-100-100-100-p-73-iso8859-1", X "-adobe-times-medium-i-normal--17-120-100-100-p-84-iso8859-1", X "-adobe-times-medium-i-normal--20-140-100-100-p-94-iso8859-1", X "-adobe-times-medium-i-normal--25-180-100-100-p-125-iso8859-1", X "-adobe-times-medium-i-normal--34-240-100-100-p-168-iso8859-1", X "-adobe-times-bold-i-normal--11-80-100-100-p-57-iso8859-1", X "-adobe-times-bold-i-normal--14-100-100-100-p-77-iso8859-1", X "-adobe-times-bold-i-normal--17-120-100-100-p-86-iso8859-1", X "-adobe-times-bold-i-normal--20-140-100-100-p-98-iso8859-1", X "-adobe-times-bold-i-normal--25-180-100-100-p-128-iso8859-1", X "-adobe-times-bold-i-normal--34-240-100-100-p-170-iso8859-1", X X "-adobe-courier-medium-r-normal--11-80-100-100-m-60-iso8859-1", X "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso8859-1", X "-adobe-courier-medium-r-normal--17-120-100-100-m-100-iso8859-1", X "-adobe-courier-medium-r-normal--20-140-100-100-m-110-iso8859-1", X "-adobe-courier-medium-r-normal--25-180-100-100-m-150-iso8859-1", X "-adobe-courier-medium-r-normal--34-240-100-100-m-200-iso8859-1", X "-adobe-courier-bold-r-normal--11-80-100-100-m-60-iso8859-1", X "-adobe-courier-bold-r-normal--14-100-100-100-m-90-iso8859-1", X "-adobe-courier-bold-r-normal--17-120-100-100-m-100-iso8859-1", X "-adobe-courier-bold-r-normal--20-140-100-100-m-110-iso8859-1", X "-adobe-courier-bold-r-normal--25-180-100-100-m-150-iso8859-1", X "-adobe-courier-bold-r-normal--34-240-100-100-m-200-iso8859-1", X "-adobe-courier-medium-o-normal--11-80-100-100-m-60-iso8859-1", X "-adobe-courier-medium-o-normal--14-100-100-100-m-90-iso8859-1", X "-adobe-courier-medium-o-normal--17-120-100-100-m-100-iso8859-1", X "-adobe-courier-medium-o-normal--20-140-100-100-m-110-iso8859-1", X "-adobe-courier-medium-o-normal--25-180-100-100-m-150-iso8859-1", X "-adobe-courier-medium-o-normal--34-240-100-100-m-200-iso8859-1", X "-adobe-courier-bold-o-normal--11-80-100-100-m-60-iso8859-1", X "-adobe-courier-bold-o-normal--14-100-100-100-m-90-iso8859-1", X "-adobe-courier-bold-o-normal--17-120-100-100-m-100-iso8859-1", X "-adobe-courier-bold-o-normal--20-140-100-100-m-110-iso8859-1", X "-adobe-courier-bold-o-normal--25-180-100-100-m-150-iso8859-1", X "-adobe-courier-bold-o-normal--34-240-100-100-m-200-iso8859-1", X X "-adobe-helvetica-medium-r-normal--11-80-100-100-p-56-iso8859-1", X "-adobe-helvetica-medium-r-normal--14-100-100-100-p-76-iso8859-1", X "-adobe-helvetica-medium-r-normal--17-120-100-100-p-88-iso8859-1", X "-adobe-helvetica-medium-r-normal--20-140-100-100-p-100-iso8859-1", X "-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8859-1", X "-adobe-helvetica-medium-r-normal--34-240-100-100-p-176-iso8859-1", X "-adobe-helvetica-bold-r-normal--11-80-100-100-p-60-iso8859-1", X "-adobe-helvetica-bold-r-normal--14-100-100-100-p-82-iso8859-1", X "-adobe-helvetica-bold-r-normal--17-120-100-100-p-92-iso8859-1", X "-adobe-helvetica-bold-r-normal--20-140-100-100-p-105-iso8859-1", X "-adobe-helvetica-bold-r-normal--25-180-100-100-p-138-iso8859-1", X "-adobe-helvetica-bold-r-normal--34-240-100-100-p-182-iso8859-1", X "-adobe-helvetica-medium-o-normal--11-80-100-100-p-57-iso8859-1", X "-adobe-helvetica-medium-o-normal--14-100-100-100-p-78-iso8859-1", X "-adobe-helvetica-medium-o-normal--17-120-100-100-p-88-iso8859-1", X "-adobe-helvetica-medium-o-normal--20-140-100-100-p-98-iso8859-1", X "-adobe-helvetica-medium-o-normal--25-180-100-100-p-130-iso8859-1", X "-adobe-helvetica-medium-o-normal--34-240-100-100-p-176-iso8859-1", X "-adobe-helvetica-bold-o-normal--11-80-100-100-p-60-iso8859-1", X "-adobe-helvetica-bold-o-normal--14-100-100-100-p-82-iso8859-1", X "-adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1", X "-adobe-helvetica-bold-o-normal--20-140-100-100-p-103-iso8859-1", X "-adobe-helvetica-bold-o-normal--25-180-100-100-p-138-iso8859-1", X "-adobe-helvetica-bold-o-normal--34-240-100-100-p-182-iso8859-1", X X "-adobe-new century schoolbook-medium-r-normal--11-80-100-100-p-60-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--14-100-100-100-p-82-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--17-120-100-100-p-91-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--20-140-100-100-p-103-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--25-180-100-100-p-136-iso8859-1", X "-adobe-new century schoolbook-medium-r-normal--34-240-100-100-p-181-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--11-80-100-100-p-66-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--14-100-100-100-p-87-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--17-120-100-100-p-99-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--20-140-100-100-p-113-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--25-180-100-100-p-149-iso8859-1", X "-adobe-new century schoolbook-bold-r-normal--34-240-100-100-p-193-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--11-80-100-100-p-60-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--14-100-100-100-p-81-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--17-120-100-100-p-92-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--20-140-100-100-p-104-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--25-180-100-100-p-136-iso8859-1", X "-adobe-new century schoolbook-medium-i-normal--34-240-100-100-p-182-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--11-80-100-100-p-66-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--14-100-100-100-p-88-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--17-120-100-100-p-99-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--20-140-100-100-p-111-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--25-180-100-100-p-148-iso8859-1", X "-adobe-new century schoolbook-bold-i-normal--34-240-100-100-p-193-iso8859-1", X X "-adobe-symbol-medium-r-normal--11-80-100-100-p-61-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--14-100-100-100-p-85-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--17-120-100-100-p-95-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--20-140-100-100-p-107-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--25-180-100-100-p-142-adobe-fontspecific", X "-adobe-symbol-medium-r-normal--34-240-100-100-p-191-adobe-fontspecific" X}; X XXFontStruct * GetFontStruct (font_index) X register int font_index; X{ X return (myFontInfo[font_index].xfs); X} X Xint FontIndex (dpi_index, font_index, size_index, style_index) X register int dpi_index, font_index, size_index, style_index; X{ X if (font_index == FONT_SYM) X return (size_index+MAXFONTSIZES*(MAXFONTSTYLES*font_index) + X dpi_index*FONTS_PER_DPI); X else X return (size_index+MAXFONTSIZES*(style_index+MAXFONTSTYLES*font_index) + X dpi_index*FONTS_PER_DPI); X} X Xvoid SetCanvasFont () X{ X register int index, old_index; X X index = FontIndex (curFontDPI, curFont, curSize, curStyle); X if (!myFontInfo[index].valid) X { X if ((myFontInfo[index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL) X { X old_index = index; X curFontDPI = (curFontDPI==FONT_DPI_75) ? FONT_DPI_100 : FONT_DPI_75; X index = FontIndex (curFontDPI, curFont, curSize, curStyle); X if ((myFontInfo[index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[index])) == NULL) X { X printf ("Can not open '%s' nor\n\t'%s'! Tgif aborted!\n\n", X fontNameStr[old_index], fontNameStr[index]); X exit (-1); X } X printf ("Warning: can not open '%s' font,\n\tuse '%s' instead.\n", X fontNameStr[old_index], fontNameStr[index]); X SetFileModified (TRUE); X } X myFontInfo[index].valid = TRUE; X } X X canvasFontIndex = index; X X canvasFontPtr = myFontInfo[index].xfs; X canvasFontAsc = canvasFontPtr->max_bounds.ascent; X canvasFontDes = canvasFontPtr->max_bounds.descent; X canvasFontHeight = canvasFontAsc + canvasFontDes; X X XSetFont (mainDisplay, drawGC, canvasFontPtr->fid); X X textCursorH = canvasFontHeight; X X pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100; X sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100; X} X Xvoid InitFonts () X{ X register int i; X int ruler_index, default_index; X int old_ruler_index, old_default_index, len, dpi; X char * s; X X for (i = 0; i < FONTTABLESIZE; i++) myFontInfo[i].valid = FALSE; X X curFont = FONT_COU; X curStyle = STYLE_NR; X curSize = 4; X curFontDPI = FONT_DPI_75; X X if ((s = XGetDefault (mainDisplay, TOOL_NAME, "InitialFontDPI")) != NULL) X { X dpi = atoi (s); X switch (dpi) X { X case 75: curFontDPI = FONT_DPI_75; curSize = 4; break; X case 100: curFontDPI = FONT_DPI_100; curSize = 2; break; X default: X printf ("Warning: can not set InitialFontDPI to '%s'\n", s); X break; X } X } X X default_index = FontIndex(curFontDPI, curFont, curSize, curStyle); X if ((myFontInfo[default_index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL) X { X old_default_index = default_index; X curSize = 2; X curFontDPI = FONT_DPI_100; X default_index = FontIndex(curFontDPI, curFont, curSize, curStyle); X if ((myFontInfo[default_index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[default_index])) == NULL) X { X printf ("Can not open '%s' nor\n\t'%s'! Tgif aborted!\n\n", X fontNameStr[old_default_index], fontNameStr[default_index]); X exit (-1); X } X } X myFontInfo[default_index].valid = TRUE; X X ruler_index = FontIndex(FONT_DPI_75, curFont, 1, curStyle); X if ((myFontInfo[ruler_index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL) X { X old_ruler_index = ruler_index; X ruler_index = FontIndex(FONT_DPI_100, curFont, 0, curStyle); X if ((myFontInfo[ruler_index].xfs = X XLoadQueryFont (mainDisplay, fontNameStr[ruler_index])) == NULL) X { X printf ("Can not open '%s' nor\n\t'%s'! Tgif aborted!\n\n", X fontNameStr[old_ruler_index], fontNameStr[ruler_index]); X exit (-1); X } X } X myFontInfo[ruler_index].valid = TRUE; X X defaultFontPtr = myFontInfo[default_index].xfs; X defaultFontWidth = defaultFontPtr->max_bounds.width; X defaultFontAsc = defaultFontPtr->max_bounds.ascent; X defaultFontDes = defaultFontPtr->max_bounds.descent; X defaultFontHeight = defaultFontAsc + defaultFontDes; X X rulerFontPtr = myFontInfo[ruler_index].xfs; X rulerFontWidth = rulerFontPtr->max_bounds.width; X rulerFontAsc = rulerFontPtr->max_bounds.ascent; X rulerFontDes = rulerFontPtr->max_bounds.descent; X rulerFontHeight = rulerFontAsc + rulerFontDes; X X pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100; X sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100; X X if ((s = XGetDefault (mainDisplay, TOOL_NAME, "InitialFont")) != NULL) X { X for (i = 0; i < MAXFONTS; i++) X if (strcmp (s, fontMenuStr[i]) == 0) X break; X if (i != MAXFONTS) X curFont = i; X else X printf ("Warning: can not set InitialFontDPI to '%s'\n", s); X } X if ((s = XGetDefault (mainDisplay, TOOL_NAME, "InitialFontStyle")) != NULL) X { X len = strlen (s); X if (len < strlen (styleMenuStr[0])) X { X for (i = 0; i < MAXFONTSTYLES; i++) X if (strncmp (s, styleMenuStr[i], len) == 0) X break; X if (i != MAXFONTSTYLES) X curStyle = i; X else X printf ("Warning: can not set InitialFontStyle to '%s'\n", s); X } X else X printf ("Warning: can not set InitialFontStyle to '%s'\n", s); X } X if ((s = XGetDefault (mainDisplay, TOOL_NAME, "InitialFontJust")) != NULL) X { X len = strlen (s); X if (len < strlen (styleMenuStr[0])) X { X for (i = MAXFONTSTYLES+1; i < MAXFONTSTYLES+1+MAXJUSTS; i++) X if (strncmp (s, styleMenuStr[i], len) == 0) X break; X if (i != MAXFONTSTYLES+1+MAXJUSTS) X textJust = i-MAXFONTSTYLES-1; X else X printf ("Warning: can not set InitialFontJust to '%s'\n", s); X } X else X printf ("Warning: can not set InitialFontJust to '%s'\n", s); X } X if ((s = XGetDefault (mainDisplay,TOOL_NAME,"InitialFontSizeIndex")) != NULL) X { X if (atoi (s) < MAXFONTSIZES) X curSize = atoi (s); X else X printf ("Warning: can not set InitialFontSizeIndex to '%s'\n", s); X } X} X Xstatic Xint ChangeObjTextStyle (ObjPtr, StyleIndex) X register struct ObjRec * ObjPtr; X register int StyleIndex; X{ X register struct ObjRec * obj_ptr; X register int changed = FALSE; X X for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev) X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->style != StyleIndex) X { X obj_ptr->detail.t->style = StyleIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextStyle (obj_ptr->detail.r->last, StyleIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X return (changed); X} X Xstatic Xint ChangeObjTextJust (ObjPtr, JustIndex) X register struct ObjRec * ObjPtr; X register int JustIndex; X{ X register struct ObjRec * obj_ptr; X register int changed = FALSE; X X for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev) X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->just != JustIndex) X { X obj_ptr->detail.t->just = JustIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextJust (obj_ptr->detail.r->last, JustIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X return (changed); X} X Xvoid ChangeFontJust (JustIndex) X int JustIndex; X{ X register struct SelRec * sel_ptr; X register struct ObjRec * obj_ptr; X int ltx, lty, rbx, rby; X int text_obj_created, text_cursor_shown; X int changed = FALSE; X X if (JustIndex == INVALID) return; X X if (topSel == NULL) X { X text_cursor_shown = textCursorShown; X text_obj_created = TieLooseEnds (); X textJust = JustIndex; X ShowJust (); X if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown) X { X NewCurText (); X RedrawCurText (); X } X else X textCursorShown = FALSE; X return; X } X X HighLightReverse (); X for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev) X { X obj_ptr = sel_ptr->obj; X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->just != JustIndex) X { X obj_ptr->detail.t->just = JustIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextJust (obj_ptr->detail.r->last, JustIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X } X X if (changed) X { X ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; X UpdSelBBox (); X RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale), X rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale), X selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), X selRbY+(1<<zoomScale)); X SetFileModified (TRUE); X } X HighLightForward (); X} X Xvoid ChangeFontStyle (StyleIndex) X int StyleIndex; X{ X register struct SelRec * sel_ptr; X register struct ObjRec * obj_ptr; X int ltx, lty, rbx, rby, text_obj_created; X int changed = FALSE, text_cursor_shown; X X if (StyleIndex == INVALID) return; X X if (topSel == NULL) X { X text_cursor_shown = textCursorShown; X text_obj_created = TieLooseEnds (); X curStyle = StyleIndex; X SetCanvasFont (); X if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown) X { X NewCurText (); X RedrawCurText (); X } X else X textCursorShown = FALSE; X ShowCurFont (); X return; X } X X HighLightReverse (); X for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev) X { X obj_ptr = sel_ptr->obj; X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->style != StyleIndex) X { X obj_ptr->detail.t->style = StyleIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextStyle (obj_ptr->detail.r->last, StyleIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X } X X if (changed) X { X ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; X UpdSelBBox (); X RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale), X rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale), X selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), X selRbY+(1<<zoomScale)); X SetFileModified (TRUE); X } X HighLightForward (); X} X Xvoid StyleMenu (X, Y) X int X, Y; X{ X register int index; X int * fore_colors, * valid; X X DefaultColorArrays (MAXFONTSTYLES+MAXJUSTS+1, &fore_colors, &valid); X index = TextMenuLoop (X, Y, styleMenuStr, MAXFONTSTYLES+MAXJUSTS+1, X fore_colors, valid, SINGLECOLOR); X X if (index == INVALID) return; X X if (index < MAXFONTSTYLES) X ChangeFontStyle (index); X else if (index > MAXFONTSTYLES) X ChangeFontJust (index - MAXFONTSTYLES - 1); X} X Xstatic Xint ChangeObjTextSize (ObjPtr, SizeIndex) X register struct ObjRec * ObjPtr; X register int SizeIndex; X{ X register struct ObjRec * obj_ptr; X register int changed = FALSE; X X for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev) X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->size != SizeIndex) X { X obj_ptr->detail.t->size = SizeIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextSize (obj_ptr->detail.r->last, SizeIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X return (changed); X} X Xvoid ChangeFontSize (SizeIndex) X int SizeIndex; X{ X register struct SelRec * sel_ptr; X register struct ObjRec * obj_ptr; X int ltx, lty, rbx, rby, text_obj_created; X int text_cursor_shown, changed = FALSE; X X if (SizeIndex == INVALID) return; X X if (topSel == NULL) X { X text_cursor_shown = textCursorShown; X text_obj_created = TieLooseEnds (); X curSize = SizeIndex; X SetCanvasFont (); X if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown) X { X NewCurText (); X RedrawCurText (); X } X else X textCursorShown = FALSE; X ShowCurFont (); X return; X } X X HighLightReverse (); X for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev) X { X obj_ptr = sel_ptr->obj; X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->size != SizeIndex) X { X obj_ptr->detail.t->size = SizeIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextSize (obj_ptr->detail.r->last, SizeIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X } X X if (changed) X { X ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; X UpdSelBBox (); X RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale), X rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale), X selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), X selRbY+(1<<zoomScale)); X SetFileModified (TRUE); X } X HighLightForward (); X} X Xvoid SizeMenu (X, Y) X int X, Y; X{ X register int index; X int * fore_colors, * valid; X X DefaultColorArrays (MAXFONTSIZES, &fore_colors, &valid); X X index = TextMenuLoop (X, Y, sizeMenuStr, MAXFONTSIZES, fore_colors, valid, X SINGLECOLOR); X ChangeFontSize (index); X} X Xstatic Xint ChangeObjTextFont (ObjPtr, FontIndex) X register struct ObjRec * ObjPtr; X register int FontIndex; X{ X register struct ObjRec * obj_ptr; X register int changed = FALSE; X X for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev) X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->font != FontIndex) X { X obj_ptr->detail.t->font = FontIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextFont (obj_ptr->detail.r->last, FontIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X return (changed); X} X Xvoid ChangeFont (FontIndex) X int FontIndex; X{ X register struct SelRec * sel_ptr; X register struct ObjRec * obj_ptr; X int changed = FALSE, text_cursor_shown; X int ltx, lty, rbx, rby, text_obj_created; X X if (FontIndex == INVALID) return; X X if (topSel == NULL) X { X text_cursor_shown = textCursorShown; X text_obj_created = TieLooseEnds (); X curFont = FontIndex; X SetCanvasFont (); X if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown) X { X NewCurText (); X RedrawCurText (); X } X else X textCursorShown = FALSE; X ShowCurFont (); X return; X } X X HighLightReverse (); X for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev) X { X obj_ptr = sel_ptr->obj; X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->font != FontIndex) X { X obj_ptr->detail.t->font = FontIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextFont (obj_ptr->detail.r->last, FontIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X } X X if (changed) X { X ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; X UpdSelBBox (); X RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale), X rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale), X selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), X selRbY+(1<<zoomScale)); X SetFileModified (TRUE); X } X HighLightForward (); X} X Xvoid FontMenu (X, Y) X int X, Y; X{ X register int index; X int * fore_colors, * valid; X X DefaultColorArrays (MAXFONTS, &fore_colors, &valid); X index = TextMenuLoop (X, Y, fontMenuStr, MAXFONTS, fore_colors, valid, X SINGLECOLOR); X ChangeFont (index); X} X Xstatic Xint ChangeObjTextFontDPI (ObjPtr, FontDPIIndex) X register struct ObjRec * ObjPtr; X register int FontDPIIndex; X{ X register struct ObjRec * obj_ptr; X register int changed = FALSE; X X for (obj_ptr = ObjPtr; obj_ptr != NULL; obj_ptr = obj_ptr->prev) X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->dpi != FontDPIIndex) X { X obj_ptr->detail.t->dpi = FontDPIIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextFontDPI (obj_ptr->detail.r->last, FontDPIIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X return (changed); X} X Xvoid ChangeFontDPI (FontDPIIndex) X int FontDPIIndex; X{ X register struct SelRec * sel_ptr; X register struct ObjRec * obj_ptr; X int changed = FALSE, text_cursor_shown; X int ltx, lty, rbx, rby, text_obj_created; X X if (FontDPIIndex == INVALID) return; X X if (topSel == NULL) X { X text_cursor_shown = textCursorShown; X text_obj_created = TieLooseEnds (); X curFontDPI = FontDPIIndex; X SetCanvasFont (); X if (!text_obj_created && curChoice == DRAWTEXT && text_cursor_shown) X { X NewCurText (); X RedrawCurText (); X } X else X textCursorShown = FALSE; X ShowCurFont (); X X pointSize = (curFontDPI==FONT_DPI_75) ? pointSize75 : pointSize100; X sizeMenuStr = (curFontDPI==FONT_DPI_75) ? sizeMenuStr75 : sizeMenuStr100; X return; X } X X HighLightReverse (); X for (sel_ptr = botSel; sel_ptr != NULL; sel_ptr = sel_ptr->prev) X { X obj_ptr = sel_ptr->obj; X switch (obj_ptr->type) X { X case OBJ_TEXT: X if (obj_ptr->detail.t->dpi != FontDPIIndex) X { X obj_ptr->detail.t->dpi = FontDPIIndex; X UpdTextBBox (obj_ptr); X changed = TRUE; X } X break; X X case OBJ_GROUP: X case OBJ_SYM: X if (ChangeObjTextFont (obj_ptr->detail.r->last, FontDPIIndex)) X { X changed = TRUE; X AdjObjBBox (obj_ptr); X } X break; X } X } X X if (changed) X { X ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; X UpdSelBBox (); X RedrawAreas (botObj, ltx-(1<<zoomScale), lty-(1<<zoomScale), X rbx+(1<<zoomScale), rby+(1<<zoomScale), selLtX-(1<<zoomScale), X selLtY-(1<<zoomScale), selRbX+(1<<zoomScale), X selRbY+(1<<zoomScale)); X SetFileModified (TRUE); X } X HighLightForward (); X} X Xvoid FontDPIMenu (X, Y) X int X, Y; X{ X register int index; X int * fore_colors, * valid; X X DefaultColorArrays (MAXFONTDPIS, &fore_colors, &valid); X index = TextMenuLoop (X, Y, fontDPIMenuStr, MAXFONTDPIS, fore_colors, valid, X SINGLECOLOR); X ChangeFontDPI (index); X} X Xstatic int savedFont, savedSize, savedStyle, savedDPI; Xstatic int savedJust, savedRotate, savedPen; X Xvoid SaveCurFont () X{ X savedFont = curFont; X savedSize = curSize; X savedStyle = curStyle; X savedDPI = curFontDPI; X savedJust = textJust; X savedRotate = curRotate; X savedPen = penPat; X} X Xvoid RestoreCurFont () X{ X curFont = savedFont; X curSize = savedSize; X curStyle = savedStyle; X curFontDPI = savedDPI; X textJust = savedJust; X curRotate = savedRotate; X penPat = savedPen; X X SetCanvasFont (); X} X Xstatic int pushedFont, pushedSize, pushedStyle, pushedDPI, pushedJust; Xstatic int pushedColorIndex, pushedRotate, pushedPen; X Xvoid PushCurFont () X{ X pushedFont = curFont; X pushedSize = curSize; X pushedStyle = curStyle; X pushedDPI = curFontDPI; X pushedJust = textJust; X pushedRotate = curRotate; X pushedPen = penPat; X pushedColorIndex = colorIndex; X} X Xvoid PopCurFont () X{ X curFont = pushedFont; X curSize = pushedSize; X curStyle = pushedStyle; X curFontDPI = pushedDPI; X textJust = pushedJust; X curRotate = pushedRotate; X penPat = pushedPen; X colorIndex = pushedColorIndex; X X SetCanvasFont (); X} X Xvoid CleanUpFonts () X{ X register int i; X X for (i = 0; i < FONTTABLESIZE; i++) X if (myFontInfo[i].valid) X { X XFreeFont (mainDisplay, myFontInfo[i].xfs); X myFontInfo[i].valid = FALSE; X } X} X X/* The following procedure is used to generate pdrawFontAsc[] and */ X/* pDrawFontDes[], to be used in ``prtgif.c''. It is supposed */ X/* to be called within dbx and not tgif. */ X X/* X * static X * void GenerateFontInfo () X * { X * register int i, j, num_rows; X * X * for (i = 0; i < FONTTABLESIZE; i++) X * if (!myFontInfo[i].valid) X * { X * if ((myFontInfo[i].xfs = X * XLoadQueryFont (mainDisplay, fontNameStr[i])) == NULL) X * { X * printf ("Can not open %s. Abort.\n\n", fontNameStr[i]); X * exit (-1); X * } X * myFontInfo[i].valid = TRUE; X * } X * X * num_rows = FONTTABLESIZE / MAXFONTSIZES; X * printf ("short\tpDrawFontAsc[] =\n{\n"); X * for (i = 0; i < num_rows; i++) X * { X * printf (" "); X * for (j = 0; j < MAXFONTSIZES; j++) X * if (i == num_rows-1 && j == MAXFONTSIZES-1) X * printf ("%2d ", X * (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent); X * else X * printf ("%2d, ", X * (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.ascent); X * printf ("\n"); X * } X * printf ("};\n\n"); X * X * printf ("short\tpDrawFontDes[] =\n{\n"); X * for (i = 0; i < num_rows; i++) X * { X * printf (" "); X * for (j = 0; j < MAXFONTSIZES; j++) X * if (i == num_rows-1 && j == MAXFONTSIZES-1) X * printf ("%2d ", X * (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent); X * else X * printf ("%2d, ", X * (myFontInfo[i*MAXFONTSIZES+j].xfs)->max_bounds.descent); X * printf ("\n"); X * } X * printf ("};\n"); X * } X */ END_OF_FILE if test 40471 -ne `wc -c <'font.c'`; then echo shar: \"'font.c'\" unpacked with wrong size! fi # end of 'font.c' fi if test -f 'frontend.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'frontend.c'\" else echo shar: Extracting \"'frontend.c'\" \(330 characters\) sed "s/^X//" >'frontend.c' <<'END_OF_FILE' X/* X * Author: William Chia-Wei Cheng (william@cs.ucla.edu) X * X * Copyright (C) 1990, 1991, William Cheng. X */ X#ifndef lint Xstatic char RCSid[] = X "@(#)$Header: /tmp_mnt/n/kona/tangram/u/william/X11/TGIF2/RCS/frontend.c,v 2.0 91/03/05 12:47:22 william Exp $"; X#endif X Xint lastFile; Xshort * pDrawFontAsc; Xshort * pDrawFontDes; END_OF_FILE if test 330 -ne `wc -c <'frontend.c'`; then echo shar: \"'frontend.c'\" unpacked with wrong size! fi # end of 'frontend.c' fi echo shar: End of archive 5 \(of 23\). cp /dev/null ark5isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 23 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 ---------------------------------> 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