home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / server / include / dixfontstr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-22  |  6.0 KB  |  168 lines

  1. /* $XConsortium: dixfontstr.h,v 1.10 91/02/22 21:53:12 keith Exp $ */
  2. /***********************************************************
  3. Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
  4. and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
  5.  
  6.                         All Rights Reserved
  7.  
  8. Permission to use, copy, modify, and distribute this software and its
  9. documentation for any purpose and without fee is hereby granted,
  10. provided that the above copyright notice appear in all copies and that
  11. both that copyright notice and this permission notice appear in
  12. supporting documentation, and that the names of Digital or MIT not be
  13. used in advertising or publicity pertaining to distribution of the
  14. software without specific, written prior permission.
  15.  
  16. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  17. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  18. DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  19. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  20. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  21. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  22. SOFTWARE.
  23.  
  24. ******************************************************************/
  25.  
  26. #ifndef DIXFONTSTRUCT_H
  27. #define DIXFONTSTRUCT_H
  28.  
  29. #include "servermd.h"
  30. #include "dixfont.h"
  31. #include "fontstruct.h"
  32. #include "misc.h"
  33.  
  34. #ifdef NOTDEF
  35. extern FontPtr FontFileLoad( /* name, length */ );    /* implemented in OS
  36.                              * layer */
  37. extern Bool FontFilePropLoad( /* name, length, *font, fi, *props */ );
  38. extern void FontUnload( /* font */ );
  39. #endif
  40.  
  41. #ifndef R4_FONT_STRUCTURES
  42. #define FONTCHARSET(font)      (font)
  43. #define FONTMAXBOUNDS(font,field) (font)->info.maxbounds.field
  44. #define FONTMINBOUNDS(font,field) (font)->info.minbounds.field
  45. #define TERMINALFONT(font)      (font)->info.terminalFont
  46. #define FONTASCENT(font)      (font)->info.fontAscent
  47. #define FONTDESCENT(font)      (font)->info.fontDescent
  48. #define FONTGLYPHS(font)      0
  49. #define FONTCONSTMETRICS(font)      (font)->info.constantMetrics
  50. #define FONTCONSTWIDTH(font)      (font)->info.constantWidth
  51. #define FONTALLEXIST(font)      (font)->info.allExist
  52. #define FONTFIRSTCOL(font)      (font)->info.firstCol
  53. #define FONTLASTCOL(font)      (font)->info.lastCol
  54. #define FONTFIRSTROW(font)      (font)->info.firstRow
  55. #define FONTLASTROW(font)      (font)->info.lastRow
  56. #define FONTDEFAULTCH(font)      (font)->info.defaultCh
  57. #define FONTINKMIN(font)      (&((font)->info.ink_minbounds))
  58. #define FONTINKMAX(font)      (&((font)->info.ink_maxbounds))
  59. #define FONTPROPS(font)          (font)->info.props
  60. #define FONTGLYPHBITS(base,pci)      ((unsigned char *) (pci)->bits)
  61. #define FONTINFONPROPS(font)      (font)->info.nprops
  62. #else
  63.  
  64. typedef struct _DIXFontProp {
  65.     ATOM        name;
  66.     INT32       value;        /* assumes ATOM is not larger than INT32 */
  67. }           DIXFontProp;
  68.  
  69. /*
  70.  * FONT is created at font load time; it is not part of the
  71.  * font file format.
  72.  */
  73. typedef struct _Font {
  74.     FontInfoPtr pFI;
  75.     DIXFontProp *pFP;
  76.     CharInfoPtr pCI;        /* bitmap metrics and offset */
  77.     char       *pGlyphs;
  78.     pointer     osPrivate;
  79.     int         fileType;    /* tag for OS layer */
  80.     int         refcnt;        /* free storage when this goes to 0 */
  81.     pointer     devPriv[MAXSCREENS];    /* information private to screen */
  82.     CharInfoPtr pInkCI;        /* ink metrics */
  83.     CharInfoPtr pInkMin;    /* ink metrics */
  84.     CharInfoPtr pInkMax;    /* ink metrics */
  85. }           FontRec;
  86.  
  87. #define FONTCHARSET(font)      (font)->pFI
  88. #define FONTMAXBOUNDS(font,field) (font)->pFI->maxbounds.metrics.field
  89. #define FONTMINBOUNDS(font,field) (font)->pFI->minbounds.metrics.field
  90. #define TERMINALFONT(font)      (font)->pFI->terminalFont
  91. #define FONTASCENT(font)      (font)->pFI->fontAscent
  92. #define FONTDESCENT(font)      (font)->pFI->fontDescent
  93. #define FONTGLYPHS(font)      (font)->pGlyphs
  94. #define FONTCONSTMETRICS(font)      (font)->pFI->constantMetrics
  95. #define FONTCONSTWIDTH(font)      (font)->pFI->constantWidth
  96. #define FONTALLEXIST(font)      (font)->pFI->allExist
  97. #define FONTFIRSTCOL(font)      (font)->pFI->firstCol
  98. #define FONTLASTCOL(font)      (font)->pFI->lastCol
  99. #define FONTFIRSTROW(font)      (font)->pFI->firstRow
  100. #define FONTLASTROW(font)      (font)->pFI->lastRow
  101. #define FONTDEFAULTCH(font)      (font)->pCI->chDefault
  102. #define FONTHASINK(font)      (font)->pFI->inkMetrics
  103. #define FONTINKMIN(font)      (&(font)->pInkMin.metrics)
  104. #define FONTINKMAX(font)      (&(font)->pInkMax.metrics)
  105. #define FONTPROPS(font)          (font)->pFP
  106. #define FONTGLYPHBITS(base,pci)      (((unsigned char *) base) + (pci)->byteOffset)
  107. #define FONTINFONPROPS(pfi)      (pfi)->nProps
  108.  
  109. typedef struct _FontInfoRec FontInfoRec,
  110.            *FontInfoPtr;
  111. typedef struct _DIXFontProp DIXFontPropRec,
  112.            *DIXFontPropPtr;
  113.  
  114. #endif
  115.  
  116. /* some things haven't changed names, but we'll be careful anyway */
  117.  
  118. #define FONTREFCNT(font)      (font)->refcnt
  119.  
  120. /*
  121.  * for linear char sets
  122.  */
  123. #define N1dChars(pfont)    (FONTLASTCOL(pfont) - FONTFIRSTCOL(pfont) + 1)
  124.  
  125. /*
  126.  * for 2D char sets
  127.  */
  128. #define N2dChars(pfont)    (N1dChars(pfont) * \
  129.              (FONTLASTROW(pfont) - FONTFIRSTROW(pfont) + 1))
  130.  
  131.  
  132. /* in dixfont.c */
  133. extern Bool SetDefaultFont();
  134. extern int  CloseFont();
  135. extern Bool DescribeFont();
  136. extern void ServerBitmapFromGlyph();
  137. extern Bool CursorMetricsFromGlyph();
  138. extern void GetGlyphs();
  139. extern int  LoadGlyphs();
  140. extern Bool QueryTextExtents();
  141. extern int  ListFonts();
  142.  
  143. #ifndef GLYPHPADBYTES
  144. #define GLYPHPADBYTES -1
  145. #endif
  146.  
  147. #if GLYPHPADBYTES == 0 || GLYPHPADBYTES == 1
  148. #define    GLYPHWIDTHBYTESPADDED(pci)    (GLYPHWIDTHBYTES(pci))
  149. #define    PADGLYPHWIDTHBYTES(w)        (((w)+7)>>3)
  150. #endif
  151.  
  152. #if GLYPHPADBYTES == 2
  153. #define    GLYPHWIDTHBYTESPADDED(pci)    ((GLYPHWIDTHBYTES(pci)+1) & ~0x1)
  154. #define    PADGLYPHWIDTHBYTES(w)        (((((w)+7)>>3)+1) & ~0x1)
  155. #endif
  156.  
  157. #if GLYPHPADBYTES == 4
  158. #define    GLYPHWIDTHBYTESPADDED(pci)    ((GLYPHWIDTHBYTES(pci)+3) & ~0x3)
  159. #define    PADGLYPHWIDTHBYTES(w)        (((((w)+7)>>3)+3) & ~0x3)
  160. #endif
  161.  
  162. #if GLYPHPADBYTES == 8 /* for a cray? */
  163. #define    GLYPHWIDTHBYTESPADDED(pci)    ((GLYPHWIDTHBYTES(pci)+7) & ~0x7)
  164. #define    PADGLYPHWIDTHBYTES(w)        (((((w)+7)>>3)+7) & ~0x7)
  165. #endif
  166.  
  167. #endif                /* DIXFONTSTRUCT_H */
  168.