1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/font.e,v 1.20 2011/05/16 16:21:57 william Exp $
19 */
20
21#ifndef _FONT_E_
22#define _FONT_E_
23
24#define CONVERT_TO_UTF8		(TRUE)
25#define CONVERT_FROM_UTF8	(FALSE)
26
27extern XFontStruct	* canvasFontPtr;
28extern int	canvasFontHeight;
29extern int	canvasFontAsc;
30extern int	canvasFontDes;
31extern int	canvasFontDirection;
32extern int	canvasFontDontReencode;
33extern int	canvasFontDoubleByte;
34extern int	canvasFontDoubleByteModBytes;
35extern int	canvasFontDoubleByteVertical;
36extern int	canvasFontSize;
37extern int	canvasFontIsFaked;
38extern int	canvasLineAsc;
39extern int	canvasLineDes;
40
41extern XFontStruct	* rulerFontPtr;
42extern int	rulerFontWidth;
43extern int	rulerFontHeight;
44extern int	rulerFontAsc;
45extern int	rulerFontDes;
46
47extern XFontStruct	* defaultFontPtr;
48extern int	defaultFontWidth;
49extern int	defaultFontHeight;
50extern int	defaultFontAsc;
51extern int	defaultFontDes;
52
53extern XFontStruct	* menuFontPtr;
54extern int	menuFontWidth;
55extern int	menuFontHeight;
56extern int	menuFontAsc;
57extern int	menuFontDes;
58
59#ifdef ENABLE_NLS
60extern XFontSet	menuFontSet;
61extern XFontSet	msgFontSet;
62extern XFontSet	boldMsgFontSet;
63extern XFontSet	italicMsgFontSet;
64extern XFontSet	boldItalicMsgFontSet;
65#else /* ~ENABLE_NLS */
66extern char	*menuFontSet;
67extern char	*msgFontSet;
68extern char	*boldMsgFontSet;
69extern char	*italicMsgFontSet;
70extern char	*boldItalicMsgFontSet;
71#endif /* ENABLE_NLS */
72extern int	boldMsgFontDoubleByte;
73
74extern XFontStruct	* boldMsgFontPtr;
75extern int	boldMsgFontWidth;
76extern int	boldMsgFontHeight;
77extern int	boldMsgFontAsc;
78extern int	boldMsgFontDes;
79
80extern XFontStruct	* italicMsgFontPtr;
81extern int	italicMsgFontWidth;
82extern int	italicMsgFontHeight;
83extern int	italicMsgFontAsc;
84extern int	italicMsgFontDes;
85
86extern XFontStruct	* boldItalicMsgFontPtr;
87extern int	boldItalicMsgFontWidth;
88extern int	boldItalicMsgFontHeight;
89extern int	boldItalicMsgFontAsc;
90extern int	boldItalicMsgFontDes;
91
92extern XFontStruct	* msgFontPtr;
93extern int	msgFontWidth;
94extern int	msgFontHeight;
95extern int	msgFontAsc;
96extern int	msgFontDes;
97
98extern int	curFont;
99extern int	curSzUnit, curRealSzUnit;
100extern int	curStyle;
101extern int	textRotation;
102extern int	curUnderlineOn;
103extern int	curOverlineOn;
104
105extern int	actualCurFont;
106extern int	actualCurSzUnit;
107extern int	actualCurStyle;
108
109extern int	curUnderlineYOffset;
110extern int	curOverlineYOffset;
111
112extern int	changePropertiesOfAttrs;
113
114extern char	* * fontMenuStr;
115extern char	* defFontMenuStr[];
116extern char	* * sizeMenuStr;
117extern int	* fontSzUnits;
118extern int	numFonts;
119extern int	numFontSizes;
120
121extern int	changingFontSizeFromRead;
122extern int	allowFontFaceSubstitution;
123
124extern char	cmdLineDontReencode[];
125
126extern int	defaultFontSize;
127
128extern int	showFontSizeInPoints;
129
130extern int	substitutedFont;
131extern int	substitutedFontSzUnit;
132
133extern int	defaultSingleByteFont;
134
135extern int		gnNumPSFontAliases;
136extern KeyValInfo	*gaPSFontAliases;
137
138#ifdef _INCLUDE_FROM_FONT_C_
139#undef extern
140#define extern
141#endif /*_INCLUDE_FROM_FONT_C_*/
142
143extern int	IsFontDoubleByte ARGS_DECL((int font_index));
144extern int	IsDoubleByteFontVertical ARGS_DECL((int font_index, int style));
145extern int	CanConvertUTF8ToFont ARGS_DECL((int font_index));
146extern int	CanConvertFontToUTF8 ARGS_DECL((int font_index));
147extern int	ConvertToOrFromUTF8 ARGS_DECL((int which, int font_index,
148                                         char **ppsz_cut_buffer));
149extern int	GetInitialFont ARGS_DECL((void));
150extern int	SzUnitToFontSize ARGS_DECL((int sz_unit));
151extern int	SzUnitToPointSize ARGS_DECL((int sz_unit));
152
153extern int	BadDoubleByteString ARGS_DECL((char *pszStr, char *pszZero));
154extern char	* GetPrevChar ARGS_DECL((int nDoubleByte, char *pszStr,
155		                         char *pszCur));
156extern char	* GetShowFontChar ARGS_DECL((int FontIndex));
157extern void	GetCurFontInfoStr ARGS_DECL((char *buf, int buf_sz));
158extern XFontStruct	*LoadAFontByName ARGS_DECL((char *font_name,
159		                                    int double_byte,
160		                                    int can_debug));
161extern void	GetPSFontStr ARGS_DECL((int FontIndex, int Style, char *));
162extern XFontStruct	*LoadASymbolFont ARGS_DECL((int font_size));
163extern void	MapAliasedPSFontName ARGS_DECL((char *buf, int buf_sz));
164extern void	SetTextExtentsInfo ARGS_DECL((TextExtentsInfo*));
165extern struct StrRec	*SegmentDoubleByteString ARGS_DECL((char*));
166extern void	MyTextExtents ARGS_DECL((XFontStruct *xfs, char *pszStr,
167		                         int nLen, XCharStruct *pxcs));
168extern int	MyTextWidth ARGS_DECL((XFontStruct *xfs, char *pszStr,
169		                       int nLen));
170extern void	MyDrawString ARGS_DECL((Display*, Drawable, GC gc, int nDepth,
171		                        int x, int y, char *pszStr, int nLen));
172extern Pixmap	PaintVertChar ARGS_DECL((TextExtentsInfo*, int nRotate));
173extern int	ValidCharCode ARGS_DECL((char *));
174extern char	* CharCodeTranslate ARGS_DECL((char *));
175extern void	SaveDontReencode ARGS_DECL((FILE*));
176extern int	ReadDontReencode ARGS_DECL((char*));
177extern void	SavePSFontAliases ARGS_DECL((FILE*));
178extern void	SaveDoubleByteModBytes ARGS_DECL((FILE*));
179extern void	SavePSFontNeedCharSubs ARGS_DECL((FILE*));
180extern void	SavePSCharSubs ARGS_DECL((FILE*));
181extern int	ReadPSFontAliases ARGS_DECL((FILE*, char*));
182extern int	ReadPSFontNeedCharSubs ARGS_DECL((FILE*, char*));
183extern int	ReadPSCharSubs ARGS_DECL((FILE*, char*));
184extern void	PrepareMiniLines ARGS_DECL((MiniLinesInfo*));
185extern void	PrepareEightBitFontInfo ARGS_DECL((void));
186extern int	NeedEncode ARGS_DECL((char *FontName, int FontIndex,
187		                      int Style));
188extern int	GetFontIndex ARGS_DECL((char *FontStr, int Style,
189		                        int MustFind));
190extern int	GetFontAndStyle ARGS_DECL((char *FontStr, int *pnFont,
191		                           int *pnStyle, int MustFind));
192extern int	GetFontIndexFromPSFontAndStyle ARGS_DECL((char *FontStr,
193                                                          int Style,
194                                                          int *pnDoubleByte,
195                                                          int *pnModified));
196extern void	CleanUpDontReencode ARGS_DECL((void));
197extern void	InitDontReencode ARGS_DECL((char*));
198extern void	InitPSFontCharSubs ARGS_DECL((void));
199extern void	PrTgifInitBaseFonts ARGS_DECL((void));
200extern int	GetCurSzUnit ARGS_DECL((void));
201extern void	PutCurSzUnit ARGS_DECL((int sz_unit));
202extern void	GetCurFontMsg ARGS_DECL((char*, StrSegInfo*));
203extern void	CurFontMsg ARGS_DECL((int nShowInMsgWindow,
204		                      int nShowInStatusWindow, StrSegInfo*));
205extern void	DumpReEncodeVector ARGS_DECL((FILE*, char *vec_prefix,
206		                              char *vec_suffix,
207		                              short *flag_ptr));
208extern void	DumpEightBitFontInfo ARGS_DECL((FILE*));
209
210extern int	GetCompatibleSize ARGS_DECL((int FontDPI, int FontSize));
211extern int	SetCanvasFont ARGS_DECL((void));
212extern int	CurFontCheck ARGS_DECL((void));
213extern int	TrySetCanvasFont ARGS_DECL((int font, int style, int size,
214		                            int must_find_requested,
215		                            int *pnGotRequested));
216extern void	ObjFontInfoToCurFontInfo ARGS_DECL((struct TextRec *));
217extern void	StrSegInfoToCurFontInfo ARGS_DECL((StrSegInfo*));
218extern void	InitFonts ARGS_DECL((void));
219extern void	SaveCurFont ARGS_DECL((void));
220extern void	RestoreCurFont ARGS_DECL((void));
221extern struct PushedFontRec	*GetTopFontStk ARGS_DECL((void));
222extern struct PushedFontRec	*PushCurFont ARGS_DECL((void));
223extern void	PopCurFont ARGS_DECL((void));
224extern void	SetPushedFontValue ARGS_DECL((int Which, int Value));
225extern int	ChangeMiniLinesFontProp ARGS_DECL((MiniLinesInfo*, int which,
226		                                   int value));
227extern int	ChangeObjTextStyle ARGS_DECL((struct ObjRec *, int Style));
228extern void	ChangeFontStyle ARGS_DECL((int Style));
229extern int	ChangeObjTextJust ARGS_DECL((struct ObjRec *, int Just));
230extern void	ChangeFontJust ARGS_DECL((int Just));
231extern int	ChangeObjTextUnderline ARGS_DECL((struct ObjRec *,
232		                                  int Underline));
233extern void	ChangeFontUnderline ARGS_DECL((int Underline));
234extern int	ChangeObjTextOverline ARGS_DECL((struct ObjRec *,
235		                                  int Overline));
236extern void	ChangeFontOverline ARGS_DECL((int Overline));
237extern int	RefreshFontStyleMenu ARGS_DECL((TgMenu*));
238extern TgMenu	*CreateFontStyleMenu ARGS_DECL((TgMenu*, int X, int Y,
239		                                TgMenuInfo*,
240		                                int status_str_xlated));
241extern int	StyleMenu ARGS_DECL((int X, int Y, int TrackMenubar));
242extern int	GetSizeMenuIndex ARGS_DECL((void));
243extern int	ChangeObjTextSzUnit ARGS_DECL((struct ObjRec *, int sz_unit));
244extern void	ChangeFontSize ARGS_DECL((int SizeIndex));
245extern int	RefreshFontSizeMenu ARGS_DECL((TgMenu*));
246extern TgMenu	*CreateFontSizeMenu ARGS_DECL((TgMenu*, int X, int Y,
247		                               TgMenuInfo*,
248		                               int status_str_xlated));
249extern int	SizeMenu ARGS_DECL((int X, int Y, int TrackMenubar));
250extern int	ChangeObjTextFont ARGS_DECL((struct ObjRec *, int FontIndex));
251extern int	ChangeFont ARGS_DECL((int FontIndex, int ForceNewChoice));
252extern int	RefreshFontMenu ARGS_DECL((TgMenu*));
253extern TgMenu	*CreateFontMenu ARGS_DECL((TgMenu*, int X, int Y, TgMenuInfo*,
254		                           int status_str_xlated));
255extern int	FontMenu ARGS_DECL((int X, int Y, int TrackMenubar));
256extern int	ChangeObjVSpace ARGS_DECL((struct ObjRec *, int VSpace));
257extern void	ChangeVSpace ARGS_DECL((int VSpace));
258extern void	ChangeAllSelRealSzUnit ARGS_DECL((int sz_unit, int HighLight));
259extern void	SetSelFontSize ARGS_DECL((char*));
260extern void	CleanUpFonts ARGS_DECL((void));
261
262extern void	VerifyCompatibleFontIndex ARGS_DECL((int*));
263extern void	GetCompatibleFontName ARGS_DECL((int old_font_index, int style,
264		                                 char *font_str));
265
266#ifdef _INCLUDE_FROM_FONT_C_
267#undef extern
268#ifndef _NO_RECURSIVE_EXTERN
269#define extern extern
270#endif /* ~_NO_RECURSIVE_EXTERN */
271#endif /*_INCLUDE_FROM_FONT_C_*/
272
273#endif /*_FONT_E_*/
274