tkFont.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:8k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  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-1997 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.5.20.1 2006/03/28 02:43:45 das Exp $
  14.  */
  15. #ifndef _TKFONT
  16. #define _TKFONT
  17. #ifdef BUILD_tk
  18. # undef TCL_STORAGE_CLASS
  19. # define TCL_STORAGE_CLASS DLLEXPORT
  20. #endif
  21. /*
  22.  * The following structure keeps track of the attributes of a font.  It can
  23.  * be used to keep track of either the desired attributes or the actual
  24.  * attributes gotten when the font was instantiated.
  25.  */
  26. typedef struct TkFontAttributes {
  27.     Tk_Uid family; /* Font family, or NULL to represent
  28.  * plaform-specific default system font. */
  29.     int size; /* Pointsize of font, 0 for default size, or
  30.  * negative number meaning pixel size. */
  31.     int weight; /* Weight flag; see below for def'n. */
  32.     int slant; /* Slant flag; see below for def'n. */
  33.     int underline; /* Non-zero for underline font. */
  34.     int overstrike; /* Non-zero for overstrike font. */
  35. } TkFontAttributes;
  36. /*
  37.  * Possible values for the "weight" field in a TkFontAttributes structure.
  38.  * Weight is a subjective term and depends on what the company that created
  39.  * the font considers bold.
  40.  */
  41. #define TK_FW_NORMAL 0
  42. #define TK_FW_BOLD 1
  43. #define TK_FW_UNKNOWN -1 /* Unknown weight.  This value is used for
  44.  * error checking and is never actually stored
  45.  * in the weight field. */
  46. /*
  47.  * Possible values for the "slant" field in a TkFontAttributes structure.
  48.  */
  49. #define TK_FS_ROMAN 0
  50. #define TK_FS_ITALIC 1
  51. #define TK_FS_OBLIQUE 2 /* This value is only used when parsing X
  52.  * font names to determine the closest
  53.  * match.  It is only stored in the
  54.  * XLFDAttributes structure, never in the
  55.  * slant field of the TkFontAttributes. */
  56. #define TK_FS_UNKNOWN -1 /* Unknown slant.  This value is used for
  57.  * error checking and is never actually stored
  58.  * in the slant field. */
  59. /*
  60.  * The following structure keeps track of the metrics for an instantiated
  61.  * font.  The metrics are the physical properties of the font itself.
  62.  */
  63. typedef struct TkFontMetrics {
  64.     int ascent; /* From baseline to top of font. */
  65.     int descent; /* From baseline to bottom of font. */
  66.     int maxWidth; /* Width of widest character in font. */
  67.     int fixed; /* Non-zero if this is a fixed-width font,
  68.  * 0 otherwise. */
  69. } TkFontMetrics;
  70. /*
  71.  * The following structure is used to keep track of the generic information
  72.  * about a font.  Each platform-specific font is represented by a structure
  73.  * with the following structure at its beginning, plus any platform-
  74.  * specific stuff after that.
  75.  */
  76. typedef struct TkFont {
  77.     /*
  78.      * Fields used and maintained exclusively by generic code.
  79.      */
  80.     int resourceRefCount; /* Number of active uses of this font (each
  81.  * active use corresponds to a call to
  82.  * Tk_AllocFontFromTable or Tk_GetFont).
  83.  * If this count is 0, then this TkFont
  84.  * structure is no longer valid and it isn't
  85.  * present in a hash table: it is being
  86.  * kept around only because there are objects
  87.  * referring to it.  The structure is freed
  88.  * when resourceRefCount and objRefCount
  89.  * are both 0. */
  90.     int objRefCount; /* The number of Tcl objects that reference
  91.  * this structure. */
  92.     Tcl_HashEntry *cacheHashPtr;/* Entry in font cache for this structure,
  93.  * used when deleting it. */
  94.     Tcl_HashEntry *namedHashPtr;/* Pointer to hash table entry that
  95.  * corresponds to the named font that the
  96.  * tkfont was based on, or NULL if the tkfont
  97.  * was not based on a named font. */
  98.     Screen *screen; /* The screen where this font is valid. */
  99.     int tabWidth; /* Width of tabs in this font (pixels). */
  100.     int underlinePos; /* Offset from baseline to origin of
  101.  * underline bar (used for drawing underlines
  102.  * on a non-underlined font). */
  103.     int underlineHeight; /* Height of underline bar (used for drawing
  104.  * underlines on a non-underlined font). */
  105.     /*
  106.      * Fields used in the generic code that are filled in by
  107.      * platform-specific code.
  108.      */
  109.     Font fid; /* For backwards compatibility with XGCValues
  110.  * structures.  Remove when TkGCValues is
  111.  * implemented.  */
  112.     TkFontAttributes fa; /* Actual font attributes obtained when the
  113.  * the font was created, as opposed to the
  114.  * desired attributes passed in to
  115.  * TkpGetFontFromAttributes().  The desired
  116.  * metrics can be determined from the string
  117.  * that was used to create this font. */
  118.     TkFontMetrics fm; /* Font metrics determined when font was
  119.  * created. */
  120.     struct TkFont *nextPtr; /* Points to the next TkFont structure with
  121.  * the same name.  All fonts with the
  122.  * same name (but different displays) are
  123.  * chained together off a single entry in
  124.  * a hash table. */
  125. } TkFont;
  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. typedef struct TkXLFDAttributes {
  132.     Tk_Uid foundry; /* The foundry of the font. */
  133.     int slant; /* The tristate value for the slant, which
  134.  * is significant under X. */
  135.     int setwidth; /* The proportionate width, see below for
  136.  * definition. */
  137.     Tk_Uid charset; /* The actual charset string. */
  138. } TkXLFDAttributes;
  139. /*
  140.  * Possible values for the "setwidth" field in a TkXLFDAttributes structure.
  141.  * The setwidth is whether characters are considered wider or narrower than
  142.  * normal.
  143.  */
  144. #define TK_SW_NORMAL 0
  145. #define TK_SW_CONDENSE 1
  146. #define TK_SW_EXPAND 2
  147. #define TK_SW_UNKNOWN 3 /* Unknown setwidth.  This value may be
  148.  * stored in the setwidth field. */
  149. /*
  150.  * The following defines specify the meaning of the fields in a fully
  151.  * qualified XLFD.
  152.  */
  153. #define XLFD_FOUNDRY     0
  154. #define XLFD_FAMILY     1
  155. #define XLFD_WEIGHT     2
  156. #define XLFD_SLANT     3
  157. #define XLFD_SETWIDTH     4
  158. #define XLFD_ADD_STYLE     5
  159. #define XLFD_PIXEL_SIZE     6
  160. #define XLFD_POINT_SIZE     7
  161. #define XLFD_RESOLUTION_X   8
  162. #define XLFD_RESOLUTION_Y   9
  163. #define XLFD_SPACING     10
  164. #define XLFD_AVERAGE_WIDTH  11
  165. #define XLFD_CHARSET     12
  166. #define XLFD_NUMFIELDS     13 /* Number of fields in XLFD. */
  167. /*
  168.  * Low-level API exported by generic code to platform-specific code.
  169.  */
  170. #define TkInitFontAttributes(fa)   memset((fa), 0, sizeof(TkFontAttributes));
  171. #define TkInitXLFDAttributes(xa)   memset((xa), 0, sizeof(TkXLFDAttributes));
  172. EXTERN int TkFontParseXLFD _ANSI_ARGS_((CONST char *string,
  173.     TkFontAttributes *faPtr, TkXLFDAttributes *xaPtr));
  174. EXTERN char ** TkFontGetAliasList _ANSI_ARGS_((CONST char *faceName));
  175. EXTERN char *** TkFontGetFallbacks _ANSI_ARGS_((void));
  176. EXTERN int TkFontGetPixels _ANSI_ARGS_((Tk_Window tkwin, 
  177.     int size));
  178. EXTERN int TkFontGetPoints _ANSI_ARGS_((Tk_Window tkwin, 
  179.     int size));
  180. EXTERN char ** TkFontGetGlobalClass _ANSI_ARGS_((void));
  181. EXTERN char ** TkFontGetSymbolClass _ANSI_ARGS_((void));
  182. EXTERN int TkFontGetFirstTextLayout _ANSI_ARGS_((
  183.     Tk_TextLayout layout, Tk_Font *font, char *dst));
  184. /*
  185.  * Low-level API exported by platform-specific code to generic code. 
  186.  */
  187. EXTERN void TkpDeleteFont _ANSI_ARGS_((TkFont *tkFontPtr));
  188. EXTERN void TkpFontPkgInit _ANSI_ARGS_((TkMainInfo *mainPtr));
  189. EXTERN TkFont * TkpGetFontFromAttributes _ANSI_ARGS_((
  190.     TkFont *tkFontPtr, Tk_Window tkwin,
  191.     CONST TkFontAttributes *faPtr));
  192. EXTERN void TkpGetFontFamilies _ANSI_ARGS_((Tcl_Interp *interp,
  193.     Tk_Window tkwin));
  194. EXTERN TkFont * TkpGetNativeFont _ANSI_ARGS_((Tk_Window tkwin,
  195.     CONST char *name));
  196. # undef TCL_STORAGE_CLASS
  197. # define TCL_STORAGE_CLASS DLLIMPORT
  198. #endif /* _TKFONT */