v12i021: tgif, Part05/23
William Cheng
william at CS.UCLA.EDU
Mon Mar 11 08:38:44 AEST 1991
Submitted-by: william at 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 at 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 at 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 at 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 at CS.UCLA.EDU ...!{uunet|ucbvax}!cs.ucla.edu!william
More information about the Comp.sources.x
mailing list