/******************************Module*Header*******************************\ * Module Name: cvt.h * * function declarations that are private to cvt.c * * Created: 26-Nov-1990 17:39:35 * Author: Bodin Dresevic [BodinD] * * Copyright (c) 1990 Microsoft Corporation * \**************************************************************************/ FSHORT fsSelectionFlags( PBYTE ); VOID vAlignHdrData( PCVTFILEHDR, PRES_ELEM ); BOOL bVerifyResource( PCVTFILEHDR, PRES_ELEM ); BOOL bVerifyFNTQuick( PRES_ELEM ); BOOL bVerifyFNT( PCVTFILEHDR, PRES_ELEM ); BOOL bGrep( PSZ, PSZ ); VOID vFigureVendorId( CHAR*, PSZ ); BYTE jFamilyType( FSHORT ); ULONG cjGLYPHDATA( ULONG ); USHORT usConvertWeightClass( USHORT ); VOID vComputeSpecialChars( PCVTFILEHDR, PWCHAR, PWCHAR ); PBYTE pjRawBitmap( HGLYPH, PCVTFILEHDR, PRES_ELEM, PULONG ); BOOL bDescStr( PVOID, SIZE_T, PSZ ); VOID vCvtToBmp( GLYPHBITS *, GLYPHDATA *, PBYTE, ULONG, ULONG, ULONG ); VOID vCvtToBoldBmp( GLYPHBITS *, GLYPHDATA *, PBYTE, ULONG, ULONG, ULONG ); VOID vCvtToItalicBmp( GLYPHBITS *, GLYPHDATA *, PBYTE, ULONG, ULONG, ULONG ); VOID vCvtToBoldItalicBmp( GLYPHBITS *, GLYPHDATA *, PBYTE, ULONG, ULONG, ULONG ); VOID vComputeSimulatedGLYPHDATA( GLYPHDATA*, PBYTE, ULONG, ULONG, ULONG, ULONG, ULONG, FONTOBJ* ); VOID vFindTAndB( PBYTE, ULONG, ULONG, ULONG*, ULONG* ); BOOL bConvertFontRes ( PVOID pvView, SIZE_T cjView, PRES_ELEM, FACEINFO* ); VOID vCheckOffsetTable( PCVTFILEHDR, PRES_ELEM ); BOOL bBMFDIFIMETRICS( PVOID pvView, SIZE_T cjView, PCVTFILEHDR pcvtfh OPTIONAL, PRES_ELEM pre, OUT PULONG pcjIFIOut OPTIONAL ); VOID vDefFace( FACEINFO *pfai, RES_ELEM *pre ); VOID vBmfdFill_IFIMETRICS( FACEINFO *pfai, PRES_ELEM pre ); typedef VOID (* PFN_IFI)(PIFIMETRICS); // // This is a useful macro. It returns the offset from the address y // to the next higher address aligned to an object of type x // #define OFFSET_OF_NEXT(x,y) sizeof(x)*((y+sizeof(x)-1)/sizeof(x)) // // ISIMULATE -- converts from FO_SIM_FOO to FC_SIM_FOO // #define ISIMULATE(x) \ \ (x) == 0 ? \ FC_SIM_NONE : \ ( \ (x) == FO_SIM_BOLD ? \ FC_SIM_BOLD : \ ( \ (x) == FO_SIM_ITALIC ? \ FC_SIMULATE_ITALIC : \ FC_SIMULATE_BOLDITALIC \ ) \ ) // The missing range in SYMBOL character set (inclusive-inclusive) #define CHARSET_SYMBOL_GAP_MIN 127 #define CHARSET_SYMBOL_GAP_MAX 160 // save some typing here, rename what used to be functions into // these macros #define ulMakeULONG(pj) ((ULONG)READ_DWORD(pj)) #define lMakeLONG(pj) ((LONG)READ_DWORD(pj)) #define usMakeUSHORT(pj) ((USHORT)READ_WORD(pj)) #define sMakeSHORT(pj) ((SHORT)READ_WORD(pj)) //!!! the next one is specific to win31 us char set (1252 cp) and this //!!! has to be generalized to an arbitrary code page #define C_RUNS 15 // these are the indicies into the array of strings below #define I_DONTCARE 0 // don't care or don't know #define I_ROMAN 1 #define I_SWISS 2 #define I_MODERN 3 #define I_SCRIPT 4 #define I_DECORATIVE 5 // #define DUMPCALL #if defined(_X86_) typedef struct _FLOATINTERN { LONG lMant; LONG lExp; } FLOATINTERN; typedef FLOATINTERN EFLOAT; typedef EFLOAT *PEFLOAT; VOID ftoef_c(FLOATL, PEFLOAT); BOOL eftol_c(EFLOAT *, PLONG, LONG); #define vEToEF(e, pef) ftoef_c((e), (pef)) #define bEFtoL(pe, pl ) eftol_c((pe), (pl), 1 ) #define bIsZero(ef) ( ((ef).lMant == 0) && ((ef).lExp == 0) ) #define bPositive(ef) ( (ef).lMant >= 0 ) FIX fxLTimesEf(EFLOAT *pef, LONG l); #else // not X86 typedef FLOAT EFLOAT; typedef EFLOAT *PEFLOAT; // // these could come from the real header files in math // #if defined(_AMD64_) || defined(_IA64_) #define bFToLRound(e, pl) (bFToL(e, pl, 4+2)) extern BOOL bFToL(FLOAT e, PLONG pl, LONG lType); #else extern BOOL bFToLRound(FLOAT e, PLONG pl); #endif #define vEToEF(e, pef) ( *(pef) = (e) ) #define bEFtoL( pe, pl ) ( bFToLRound(*(pe), (pl) )) #define bIsZero(ef) ( (ef) == 0 ) #define bPositive(ef) ( (ef) >= 0 ) #endif BOOL bLoadNtFon( HFF iFile, PVOID pvView, HFF *phff ); VOID vBmfdMarkFontGone(FONTFILE *pff, DWORD iExceptionCode);