7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/***********************************************************
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync All Rights Reserved
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncPermission to use, copy, modify, and distribute this software and its
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncdocumentation for any purpose and without fee is hereby granted,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncprovided that the above copyright notice appear in all copies and that
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncboth that copyright notice and this permission notice appear in
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncsupporting documentation, and that the name of Digital not be
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncused in advertising or publicity pertaining to distribution of the
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncsoftware without specific, written prior permission.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync******************************************************************/
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * This version of the server font data strucutre is only for describing
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the in memory data structure. The file structure is not necessarily a
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * copy of this. That is up to the compiler and the OS layer font loading
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * machinery.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync long value; /* assumes ATOM is not larger than INT32 */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync xCharInfo metrics; /* info preformatted for Queries */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Font is created at font load time. It is specific to a single encoding.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * e.g. not all of the glyphs in a font may be part of a single encoding.
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned long /* count */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned char * /* chars */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned long * /* count */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned long /* count */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned char * /* chars */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned long * /* count */,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FontGetPrivate(pFont,n) ((n) > (pFont)->maxPrivate ? (pointer) 0 : \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FontSetPrivate(pFont,n,ptr) ((n) > (pFont)->maxPrivate ? \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ((((pFont)->devPrivates[n] = (ptr)) != 0) || TRUE))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync/* External view of font paths */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef int (*InitFpeFunc) (FontPathElementPtr fpe);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef int (*FreeFpeFunc) (FontPathElementPtr fpe);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef int (*ResetFpeFunc) (FontPathElementPtr fpe);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef void (*CloseFontFunc) (FontPathElementPtr fpe, FontPtr pFont);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsynctypedef int (*WakeupFpeFunc) (FontPathElementPtr fpe,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned long* LastSelectMask);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned int nchars,
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync unsigned char* data);
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync /* for load_glyphs, range_flag = 0 ->
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync nchars = # of characters in data
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync data = list of characters
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync range_flag = 1 ->
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync nchars = # of fsChar2b's in data
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync item_size is ignored
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync data = list of fsChar2b's */
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Various macros for computing values based on contents of
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the above structures
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ((pci)->metrics.rightSideBearing - (pci)->metrics.leftSideBearing)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define GLYPHWIDTHBYTES(pci) (((GLYPHWIDTHPIXELS(pci))+7) >> 3)
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define BYTES_FOR_GLYPH(ci,pad) (GLYPHHEIGHTPIXELS(ci) * \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * Macros for computing different bounding boxes for fonts; from
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync * the font protocol
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MAX_ASCENT(pi) ((pi)->fontAscent > (pi)->ink_maxbounds.ascent ? \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MAX_DESCENT(pi) ((pi)->fontDescent > (pi)->ink_maxbounds.descent ? \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MAX_HEIGHT(pi) (FONT_MAX_ASCENT(pi) + FONT_MAX_DESCENT(pi))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MIN_LEFT(pi) ((pi)->ink_minbounds.leftSideBearing < 0 ? \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MAX_RIGHT(pi) ((pi)->ink_maxbounds.rightSideBearing > \
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#define FONT_MAX_WIDTH(pi) (FONT_MAX_RIGHT(pi) - FONT_MIN_LEFT(pi))
7a0d67332f33bc21290d63bc7c8150b0cf0a4b21vboxsync#endif /* FONTSTR_H */