OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [tk/] [generic/] [tkFont.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/*
2
 * tkFont.h --
3
 *
4
 *      Declarations for interfaces between the generic and platform-
5
 *      specific parts of the font package.  This information is not
6
 *      visible outside of the font package.
7
 *
8
 * Copyright (c) 1996 Sun Microsystems, Inc.
9
 *
10
 * See the file "license.terms" for information on usage and redistribution
11
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
12
 *
13
 * RCS: @(#) $Id: tkFont.h,v 1.1.1.1 2002-01-16 10:25:51 markom Exp $
14
 */
15
 
16
#ifndef _TKFONT
17
#define _TKFONT
18
 
19
#ifdef BUILD_tk
20
# undef TCL_STORAGE_CLASS
21
# define TCL_STORAGE_CLASS DLLEXPORT
22
#endif
23
 
24
/*
25
 * The following structure keeps track of the attributes of a font.  It can
26
 * be used to keep track of either the desired attributes or the actual
27
 * attributes gotten when the font was instantiated.
28
 */
29
 
30
typedef struct TkFontAttributes {
31
    Tk_Uid family;              /* Font family. The most important field. */
32
    int pointsize;              /* Pointsize of font, 0 for default size, or
33
                                 * negative number meaning pixel size. */
34
    int weight;                 /* Weight flag; see below for def'n. */
35
    int slant;                  /* Slant flag; see below for def'n. */
36
    int underline;              /* Non-zero for underline font. */
37
    int overstrike;             /* Non-zero for overstrike font. */
38
} TkFontAttributes;
39
 
40
/*
41
 * Possible values for the "weight" field in a TkFontAttributes structure.
42
 * Weight is a subjective term and depends on what the company that created
43
 * the font considers bold.
44
 */
45
 
46
#define TK_FW_NORMAL    0
47
#define TK_FW_BOLD      1
48
 
49
#define TK_FW_UNKNOWN   -1      /* Unknown weight.  This value is used for
50
                                 * error checking and is never actually stored
51
                                 * in the weight field. */
52
 
53
/*
54
 * Possible values for the "slant" field in a TkFontAttributes structure.
55
 */
56
 
57
#define TK_FS_ROMAN     0        
58
#define TK_FS_ITALIC    1
59
#define TK_FS_OBLIQUE   2       /* This value is only used when parsing X
60
                                 * font names to determine the closest
61
                                 * match.  It is only stored in the
62
                                 * XLFDAttributes structure, never in the
63
                                 * slant field of the TkFontAttributes. */
64
 
65
#define TK_FS_UNKNOWN   -1      /* Unknown slant.  This value is used for
66
                                 * error checking and is never actually stored
67
                                 * in the slant field. */
68
 
69
/*
70
 * The following structure keeps track of the metrics for an instantiated
71
 * font.  The metrics are the physical properties of the font itself.
72
 */
73
 
74
typedef struct TkFontMetrics {
75
    int ascent;                 /* From baseline to top of font. */
76
    int descent;                /* From baseline to bottom of font. */
77
    int maxWidth;               /* Width of widest character in font. */
78
    int fixed;                  /* Non-zero if this is a fixed-width font,
79
                                 * 0 otherwise. */
80
} TkFontMetrics;
81
 
82
/*
83
 * The following structure is used to keep track of the generic information
84
 * about a font.  Each platform-specific font is represented by a structure
85
 * with the following structure at its beginning, plus any platform-
86
 * specific stuff after that.
87
 */
88
 
89
typedef struct TkFont {
90
    /*
91
     * Fields used and maintained exclusively by generic code.
92
     */
93
 
94
    int refCount;               /* Number of users of the TkFont. */
95
    Tcl_HashEntry *cacheHashPtr;/* Entry in font cache for this structure,
96
                                 * used when deleting it. */
97
    Tcl_HashEntry *namedHashPtr;/* Pointer to hash table entry that
98
                                 * corresponds to the named font that the
99
                                 * tkfont was based on, or NULL if the tkfont
100
                                 * was not based on a named font. */
101
    int tabWidth;               /* Width of tabs in this font (pixels). */
102
    int underlinePos;           /* Offset from baseline to origin of
103
                                 * underline bar (used for drawing underlines
104
                                 * on a non-underlined font). */
105
    int underlineHeight;        /* Height of underline bar (used for drawing
106
                                 * underlines on a non-underlined font). */
107
 
108
    /*
109
     * Fields in the generic font structure that are filled in by
110
     * platform-specific code.
111
     */
112
 
113
    Font fid;                   /* For backwards compatibility with XGCValues
114
                                 * structures.  Remove when TkGCValues is
115
                                 * implemented.  */
116
    TkFontAttributes fa;        /* Actual font attributes obtained when the
117
                                 * the font was created, as opposed to the
118
                                 * desired attributes passed in to
119
                                 * TkpGetFontFromAttributes().  The desired
120
                                 * metrics can be determined from the string
121
                                 * that was used to create this font. */
122
    TkFontMetrics fm;           /* Font metrics determined when font was
123
                                 * created. */
124
} TkFont;
125
 
126
/*
127
 * The following structure is used to return attributes when parsing an
128
 * XLFD.  The extra information is of interest to the Unix-specific code
129
 * when attempting to find the closest matching font.
130
 */
131
 
132
typedef struct TkXLFDAttributes {
133
    TkFontAttributes fa;        /* Standard set of font attributes. */
134
    Tk_Uid foundry;             /* The foundry of the font. */
135
    int slant;                  /* The tristate value for the slant, which
136
                                 * is significant under X. */
137
    int setwidth;               /* The proportionate width, see below for
138
                                 * definition. */
139
    int charset;                /* The character set encoding (the glyph
140
                                 * family), see below for definition. */
141
    int encoding;               /* Variations within a charset for the
142
                                 * glyphs above character 127. */
143
} TkXLFDAttributes;
144
 
145
/*
146
 * Possible values for the "setwidth" field in a TkXLFDAttributes structure.
147
 * The setwidth is whether characters are considered wider or narrower than
148
 * normal.
149
 */
150
 
151
#define TK_SW_NORMAL    0
152
#define TK_SW_CONDENSE  1
153
#define TK_SW_EXPAND    2
154
#define TK_SW_UNKNOWN   3       /* Unknown setwidth.  This value may be
155
                                 * stored in the setwidth field. */
156
 
157
/*
158
 * Possible values for the "charset" field in a TkXLFDAttributes structure.
159
 * The charset is the set of glyphs that are used in the font.
160
 */
161
 
162
#define TK_CS_NORMAL    0
163
#define TK_CS_SYMBOL    1
164
#define TK_CS_OTHER     2
165
 
166
/*
167
 * The following defines specify the meaning of the fields in a fully
168
 * qualified XLFD.
169
 */
170
 
171
#define XLFD_FOUNDRY        0
172
#define XLFD_FAMILY         1
173
#define XLFD_WEIGHT         2
174
#define XLFD_SLANT          3
175
#define XLFD_SETWIDTH       4
176
#define XLFD_ADD_STYLE      5
177
#define XLFD_PIXEL_SIZE     6
178
#define XLFD_POINT_SIZE     7
179
#define XLFD_RESOLUTION_X   8
180
#define XLFD_RESOLUTION_Y   9
181
#define XLFD_SPACING        10
182
#define XLFD_AVERAGE_WIDTH  11
183
#define XLFD_REGISTRY       12
184
#define XLFD_ENCODING       13
185
#define XLFD_NUMFIELDS      14  /* Number of fields in XLFD. */
186
 
187
/*
188
 * Exported from generic code to platform-specific code.
189
 */
190
 
191
EXTERN int              TkCreateNamedFont _ANSI_ARGS_((Tcl_Interp *interp,
192
                            Tk_Window tkwin, CONST char *name,
193
                            TkFontAttributes *faPtr));
194
EXTERN void             TkInitFontAttributes _ANSI_ARGS_((
195
                            TkFontAttributes *faPtr));
196
EXTERN int              TkParseXLFD _ANSI_ARGS_((CONST char *string,
197
                            TkXLFDAttributes *xaPtr));
198
 
199
/*
200
 * Common APIs exported to tkFont.c from all platform-specific
201
 * implementations.
202
 */
203
 
204
EXTERN void             TkpDeleteFont _ANSI_ARGS_((TkFont *tkFontPtr));
205
EXTERN TkFont *         TkpGetFontFromAttributes _ANSI_ARGS_((
206
                            TkFont *tkFontPtr, Tk_Window tkwin,
207
                            CONST TkFontAttributes *faPtr));
208
EXTERN void             TkpGetFontFamilies _ANSI_ARGS_((Tcl_Interp *interp,
209
                            Tk_Window tkwin));
210
EXTERN TkFont *         TkpGetNativeFont _ANSI_ARGS_((Tk_Window tkwin,
211
                            CONST char *name));
212
 
213
/* CYGNUS LOCAL */
214
EXTERN void             TkUpdateFonts _ANSI_ARGS_((Tk_Window tkwin,
215
                            int (*changed) (TkFontAttributes *faPtr)));
216
 
217
# undef TCL_STORAGE_CLASS
218
# define TCL_STORAGE_CLASS DLLIMPORT
219
 
220
#endif  /* _TKFONT */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.