|
|
/****************************************************************************\
* * WIFE.H : East Asia Windows Intelligent Font Environment definitions * ****************************************************************************** * * History: * 21-Oct-1991 bent * initial merge of East Asia 3.0 versions * Should be updated to resolve local inconsistencies. * * Copyright (c) 1990 Microsoft Corporation * * Brief instruction * ----------------- * * This header file is a common single header for WIFE drivers. * * If you are a developer of FontDriver, please write coding as follow * * * #define WIFE_CREATE_FONTDRIVER * * #include <wife.h> * * * If you are a developer of DeviceDriver which are display or printer * drivers, please write coding as follow. * * * #define WIFE_CREATE_DEVICEDRIVER * * #include <wife.h> * * * If you don't define both of symbols, only common defenitions are * available. * * Aug.17,1990 Akira Kawamata [AkiraK] * * \****************************************************************************/
/****** OS/2-like common data type definitions ******************************/
#ifndef WIFEH_NODATATYPES
typedef unsigned short int USHORT; typedef short int SHORT; typedef unsigned long ULONG; typedef LONG FAR * LPLONG; typedef LONG NEAR * NPLONG; typedef ULONG FAR * LPULONG; typedef ULONG NEAR * NPULONG; typedef SHORT FAR * LPSHORT; typedef SHORT NEAR * NPSHORT; typedef USHORT FAR * LPUSHORT; typedef USHORT NEAR * NPUSHORT; typedef char CHAR; typedef unsigned char UCHAR;
typedef VOID NEAR * NPVOID;
#endif //WIFEH_NODATATYPES
/****** Graphics handling support definitions *******************************/
#ifndef WIFEH_NOGRAPHSUPPORT
/* rotation angle by 90degree */ typedef enum { ANGLE000 = 0, ANGLE090 = 1, ANGLE180 = 2, ANGLE270 = 3 } QUOTER_ANGLE; #define FixedToQuoterAngle(f) ((f.Integer/90)%4)
#define RotationToQuoterAngle(r) ((r/900)%4)
typedef DWORD PACKEDPOINT; typedef DWORD PACKEDLOGICALPOINT; typedef DWORD PACKEDPHYSICALPOINT; typedef struct { short x,y; } XYPOINT; typedef union { PACKEDPOINT packed; XYPOINT point; } UNIONPOINT, NEAR * NPUNIONPOINT, FAR * LPUNIONPOINT;
#define PartOfX(xy) ((SHORT)(xy))
#define PartOfY(xy) ((SHORT)(((DWORD)(xy) >> 16) & 0xFFFF))
#define MAKELONG_LO_HI MAKELONG
#define PackXY(x,y) ((DWORD)MAKELONG_LO_HI((WORD)x,(WORD)y))
#endif //WIFEH_NOGRAPHSUPPORT
/****** UBCS : Unified Byte Character Set, data types defenition **********/
#ifndef WIFEH_NOUBCS
typedef USHORT UBCHAR; typedef UBCHAR NEAR * NPUBCHAR; typedef UBCHAR FAR * LPUBCHAR;
#define UBEOS (0) /* End Of String */
#define UBNEWLINE (0x0a0d) /* New Line (CR/LF) */
#define IsSbcsUBChar(uc) ((uc & 0xff00) == 0x2000)
#define IsDbcsUBChar(uc) ((uc & 0xff00) != 0x2000)
#endif //WIFEH_NOUBCS
/****** Utility macros *****************************************************/
#ifndef WIFEH_NOUTILITYMACROS
/* return type of GlobalLock is LPSTR, but it's to be LPVOID */ #define AnyGlobalLock(h) ((LPVOID)GlobalLock(h))
#define AnyLocalLock(h) ((NPVOID)LocalLock(h))
#define TypedLocalLock(h,t) ((t NEAR *)LocalLock(h))
#define TypedGlobalLock(h,t) ((t FAR *)GlobalLock(h))
/* utility macro which is not included windows.h */ #define MAKEWORD(l,h) ((WORD)((BYTE)l+(((BYTE)h) << 8)))
#endif //WIFEH_NOUTILITYMACROS
/****** GDIDEFS.H support definitions **************************************/
#ifdef WIFE_ENABLE_GDIDEFS_SUPPORT
typedef FONTINFO FAR * LPFONTINFO; typedef DRAWMODE FAR * LPDRAWMODE; typedef TEXTXFORM FAR * LPTEXTXFORM; #endif //WIFE_ENABLE_GDIDEFS_SUPPORT
/****** Character set definitions ******************************************/
#ifndef WIFEH_NOCHARSET
typedef enum { CHARSET_ANSI = 0, CHARSET_SYMBOL = 2, CHARSET_SHIFTJIS = 128, CHARSET_KOREA = 129, CHARSET_CHINESEBIG5 = 136, CHARSET_GB2312 = 134, CHARSET_OEM = 255 } CHAR_SET; #endif //WIFEH_NOCHARSET
/***************************************************************************/ /****** Control function support definitions ******************************/
#ifndef WIFEH_NOCONTROL
/******************************************/ /* FONT DRIVER MEDIA DESCRIPTER */ /******************************************/ #ifndef WIFEWH_NOMEDIA
/* FDMEDIA enumration type */ typedef enum { FDMEDIA_ON_FILE = 1, FDMEDIA_ON_DRIVER = 2, FDMEDIA_ON_REMOVEABLE_HARDWARE = 4, FDMEDIA_ON_FIXED_HARDWARE = 8, FDMEDIA_UNDEFINED = 0x4000, FDMEDIA_ANY_MEDIA = 0x7fff } FDMEDIA; #endif
/******************************************/ /* MINOR CHARACTER SETS DEFENITION */ /******************************************/ #ifndef WIFEH_NOMINORCHARSET_IN_JAPAN
/* general default minor character set */ #define FD_MINOR_CHARSET_DEFAULT 1
/* Minor Character Set in Japan */ #define FD_MINOR_CHARSET_NEW_JIS 1 /* new JIS */
#define FD_MINOR_CHARSET_OLD_JIS 2 /* old JIS */
#define FD_MINOR_CHARSET_IBM_JIS 4 /* IBM JIS */
#define FD_MINOR_CHARSET_NEC_JIS 8 /* NEC JIS */
#endif
/******************************************/ /* CODE AREA STRUCTURE */ /******************************************/ #ifndef WIFEH_NOCODEAREA
typedef struct { UBCHAR CodeFrom; UBCHAR CodeTo; } CODEAREA, NEAR * NPCODEAREA, FAR * LPCODEAREA;
#endif
/******************************************/ /* SPECIAL ESCAPE FUNCTION ORDERS */ /******************************************/
/* subfunction orders in WIFE */ #define FD_CONTROL_RESERVED (0xa20)
#define FD_CONTROL_RESERVED_LIMIT (FD_CONTROL_RESERVED+0x3f)
/* standard subfunctions */ #define FD_CONTROL_QUERY_ESC_SUPPORT (FD_CONTROL_RESERVED+0)
#define FD_CONTROL_SUPPORT_CODES (FD_CONTROL_RESERVED+1)
#define FD_CONTROL_NUMBER_OF_ATTRIBUTE (FD_CONTROL_RESERVED+2)
#define FD_CONTROL_NAME_OF_ATTRIBUTE (FD_CONTROL_RESERVED+3)
#define FD_CONTROL_SET_ATTRIBUTE (FD_CONTROL_RESERVED+4)
#define FD_CONTROL_GET_ATTRIBUTE (FD_CONTROL_RESERVED+5)
#define FD_CONTROL_SET_MINOR_CHARSET (FD_CONTROL_RESERVED+6)
#define FD_CONTROL_GET_MINOR_CHARSET (FD_CONTROL_RESERVED+7)
#define FD_CONTROL_GET_FONT_DRIVER_NAME (FD_CONTROL_RESERVED+8)
#define FD_CONTROL_GET_FONT_PACK_NAME (FD_CONTROL_RESERVED+9)
#define FD_CONTROL_GET_MEDIA (FD_CONTROL_RESERVED+10)
#define FD_CONTROL_GET_DBCS_STRING_KERN (FD_CONTROL_RESERVED+11)
#if defined(TAIWAN) || defined(PRC)
/* Chinese related functions */ #define FD_CONTROL_GET_USERFONT_TECH (FD_CONTROL_RESERVED+0X0C)
#define FD_CONTROL_SET_USERFONT (FD_CONTROL_RESERVED+0X0D)
#define FD_CONTROL_SETUP_DIALOG (FD_CONTROL_RESERVED+0X0E)
#define FD_CONTROL_SET_DEFAULT_CHAR (FD_CONTROL_RESERVED+0X0F)
/* private interface subfunctions */ #define FD_CONTROL_USER (FD_CONTROL_RESERVED+0x10)
#define FD_CONTROL_USER_LIMIT (FD_CONTROL_RESERVED_LIMIT)
/* EUDC related subfunctions */ #define FD_CONTROL_LEVEL2_EUDC_INFO (FD_CONTROL_RESERVED+0X12)
#else
/* EUDC related subfunctions */ #define FD_CONTROL_LEVEL2_EUDC_INFO (FD_CONTROL_RESERVED+12)
/* private interface subfunctions */ #define FD_CONTROL_USER (FD_CONTROL_RESERVED+0x10)
#define FD_CONTROL_USER_LIMIT (FD_CONTROL_RESERVED+0x1f)
/* Chinese related functions */ #define FD_CONTROL_GET_USERFONT_TECH (FD_CONTROL_RESERVED+0x20)
#define FD_CONTROL_SET_USERFONT (FD_CONTROL_RESERVED+0x21)
#define FD_CONTROL_SETUP_DIALOG (FD_CONTROL_RESERVED+0x22)
#define FD_CONTROL_SET_DEFAULT_CHAR (FD_CONTROL_RESERVED+0x23)
#endif
#if defined(TAIWAN) || defined(PRC)
// we add this line for the FDCONTROL constant has get the limit
#define FD_CONTROL_CHINESE_RESERVED FD_CONTROL_RESERVED+0x30
#endif // TAIWAN
#ifdef WIFE_ENABLE_EUDC_SUPPORT
typedef struct { ULONG cb; /* length of this structure */ BOOL bForceFixedPitch; /* force fixed pitch */ BOOL bVerticalFont; /* vertical font flag */ FIXED fxCharRot; /* character rotation */ FIXED fxInlineDir; /* inline rotation */ USHORT usLimitWidth; /* maximum width of cachable */ SHORT sFixedASpace; /* font width when bForceFixedPitch is TRUE */ USHORT usFixedBSpace; /* font width when bForceFixedPitch is TRUE */ SHORT sFixedCSpace; /* font width when bForceFixedPitch is TRUE */ } EUDC_CONTEXT, NEAR * NPEUDC_CONTEXT, FAR * LPEUDC_CONTEXT;
#endif
#endif
#if defined(TAIWAN) || defined(PRC)
typedef struct { HWND hWnd; HANDLE hInst; } CALLINGINFO, FAR *LPCALLINGINFO; #endif // TAIWAN
#ifndef WIFEH_NOFDCOMMONDEFENITION
typedef LONG HFF; typedef LONG HFC; typedef HANDLE HFD; typedef HANDLE HFB;
#define FACESIZE 32
#define GLYPHNAMESIZE 16
#define WIFEERR_FACENAME_NOT_FOUND 23004L
#define WIFEERR_FD_ALREADY_INSTALLED 23005L
#define WIFEERR_INVALID_CONTEXTINFO 23006L
#define WIFEERR_NOT_A_FONT_FILE 23007L
#define WIFEERR_INVALID_FONT_SELECTION 23008L
#define WIFEERR_INVALID_FORMAT 23009L
#define WIFEERR_BUSY_HFC 230010L
#define WIFEERR_INVALID_HFC 230011L
#define WIFEERR_INVALID_INDEX 230012L
#define WIFEERR_INVALID_QUERY_TYPE 230013L
#define WIFEERR_CONTEXT_NOT_SET 230014L
#define FD_QUERY_ABC_WIDTHS 2L
#define FD_QUERY_KERNINGPAIRS 3L
#define FD_QUERY_CHARIMAGE 1L
#define FD_QUERY_OUTLINE 2L
#define FD_QUERY_BITMAPMETRICS 4L
typedef UBCHAR GLYPH; /* gi */ typedef LPUBCHAR LPGLYPH; /* lpgi */
typedef struct _ABC_TRIPLETS { /* abc, npabc, lpabc */ SHORT sA; USHORT usB; SHORT sC; } ABC_TRIPLETS, NEAR * NPABC_TRIPLETS, FAR * LPABC_TRIPLETS;
typedef struct _SIZEL { /* sizl */ ULONG cx; // Width.
ULONG cy; // Height.
} SIZEL;
typedef struct _BITMAPMETRICS { /* bmm, npbmm, lpbmm */ SIZEL sizlExtent; POINTFX pfxOrigin; /* Return character origin. */ POINTFX pfxCharInc; /* Return the device advance width */ } BITMAPMETRICS, NEAR * NPBITMAPMETRICS, FAR * LPBITMAPMETRICS;
typedef struct _FD_KERNINGPAIRS { /* krnpr, npkrnpr, lpkrnpr */ GLYPH giFirst; GLYPH giSecond; LONG eKerningAmount; } FD_KERNINGPAIRS, NEAR * NPFD_KERNINGPAIRS, FAR * LPFD_KERNINGPAIRS;
typedef struct _CONTEXTINFO { /* ci */ ULONG cb; /* Length in bytes of this structure. */ ULONG fl; /* Flags. */ SIZEL sizlPPM; /* Device resolution in pels/meter. */ POINTFX pfxSpot; /* Spot size in pels. */ MAT2 matXform; /* Notional to Device transform. */ } CONTEXTINFO, NEAR * NPCONTEXTINFO, FAR * LPCONTEXTINFO;
typedef struct _CHARATTR { /* chattr */ ULONG cb; ULONG iQuery; /* Query type. */ GLYPH gi; /* Glyph index in font. */ LPBYTE lpBuffer; /* Bitmap buffer. */ ULONG cbLen; /* Size of buffer in bytes. */ } CHARATTR, NEAR * NPCHARATTR, FAR * LPCHARATTR;
/* bit-constants for fsType in IFIMETRICS */
#define IFIMETRICS_FIXED 0x0001 /* Fixed pitch */
#define IFIMETRICS_LICENSED 0x0002 /* dummy defenition */
#define IFIMETRICS_SPARSE 0x0004 /* Incomplete font */
#define IFIMETRICS_SCALEABLE 0x8000 /* scalable font */
/* bit-constant for fsDefn in IFIMETRICS */
#define IFIMETRICS_OUTLINE 0x0001 /* dummy definition */
/* 1 - Outline. 0 - Raster */
/* bit-constant for fsSelection in IFIMETRICS */
#define IFIMETRICS_ITALIC 0x8000 /*Italic */
#define IFIMETRICS_UNDERSCORE 0x4000 /*Underscored */
#define IFIMETRICS_OVERSTRUCK 0x2000 /*Overstruck */
/* bit-constant for fsSelection in IFIMETRICS valid for bitmap fonts */
#define IFIMETRICS_NEGATIVE 0x1000 /*Negative image */
#define IFIMETRICS_HOLLOW 0x0800 /*Outline (hollow) */
typedef struct _IFIMETRICS { /* ifim */ /* UNITS */ UCHAR szFamilyname[FACESIZE]; /*Font Family Name, e.g. Roman */ UCHAR szFacename[FACESIZE]; /*Face name, e.g. Tms Rmn Bold Italic */ UCHAR szGlyphlistName[GLYPHNAMESIZE]; /*e.g. PM316, Latin-2, Greek */ USHORT idRegistry; /*Dummy I */ SHORT sCapEmHeight; /*Height of uppercase M N */ SHORT sXHeight; /*Nominal height of lowercase N */ SHORT sMaxAscender; /*Maximum height above baseline of any char N */ SHORT sMaxDescender; /*Maximum depth below baseline of any char N */ SHORT sLowerCaseAscent; /*Maximum height above baseline of any a-z N */ SHORT sLowerCaseDescent; /*Maximum depth below basiline of any a-z N */ SHORT sInternalLeading; /*White space within character N */ SHORT sExternalLeading; /*White space between lines N */ SHORT sAveCharWidth; /*Weighted average character width N */ SHORT sMaxCharInc; /*Maximum character increment N */ SHORT sEmInc; /*Increment for Capitals (typically 'M') N */ SHORT sMaxBaselineExt; /*Height of character cell N */ FIXED fxCharSlope; /*Slope angle, degrees, clockwise D */ FIXED fxInlineDir; /*Drawing direction, degrees clockwise D */ FIXED fxCharRot; /*Glyph rotation in cell, degrees clockwise D */ USHORT usWeightClass; /*Character weight, 1-9 (1=ultra-light) I */ USHORT usWidthClass; /*Character width, 1-9 (1=ultra condensed) I */ SHORT sEmSquareSize; /*Em Square size, x-direction N */ GLYPH giFirstChar; /*Number of first glyph in font I */ GLYPH giLastChar; /*Number of last glyph in font I */ GLYPH giDefaultChar; /*Glyph used if requested glyph invalid I */ GLYPH giBreakChar; /*Space glyph I */ ULONG aulPanose [1]; /*Panose Number */ USHORT usNominalPointSize; /*Point size for which font was designed N */ USHORT usMinimumPointSize; /*Minimum point size scaling for font N */ USHORT usMaximumPointSize; /*Maximum point size scaling for font N */ USHORT fsType; /*Type indicators (see #defines) B */ USHORT fsDefn; /*Font definition data (see #defines) B */ USHORT fsSelection; /*Font selection flags (see #defines) B */ USHORT fsCapabilities; /*Font capabilities must be 0 B */ SHORT sSubscriptXSize; /*Size in x-direction of subscript N */ SHORT sSubscriptYSize; /*Size in y-direction of subscript N */ SHORT sSubscriptXOffset; /*Offset in x-direction of subscript N */ SHORT sSubscriptYOffset; /*Offset in y-direction of subscript N */ SHORT sSuperscriptXSize; /*Size in x-direction of superscript N */ SHORT sSuperscriptYSize; /*Size in y-direction of superscript N */ SHORT sSuperscriptXOffset; /*Offset in x-direction of superscript N */ SHORT sSuperscriptYOffset; /*Offset in y-direction of superscript N */ SHORT sUnderscoreSize; /*Underscore size N */ SHORT sUnderscorePosition; /*Underscore position N */ SHORT sStrikeoutSize; /*Strikeout size N */ SHORT sStrikeoutPosition; /*Strikeout position N */ SHORT cKerningPairs; /*Number of kerning pairs in pair table I */ ULONG ulFontClass; /*IBM font classification B */ } IFIMETRICS, NEAR * NPIFIMETRICS, FAR * LPIFIMETRICS;
#ifdef ENABLE_CONTROL_TAG
/* Tag structure for Fd(i)Control */ typedef struct { USHORT SubFunction; LPDEVICE lpDevice; LPFONTINFO lpFontStructure; LPTEXTXFORM lpXform; LPVOID lpInData; } CONTROLTAG, FAR * LPCONTROLTAG; #else
typedef struct { USHORT SubFunction; LPVOID lpDevice; LPVOID lpFontStructure; LPVOID lpXform; LPVOID lpInData; } CONTROLTAG, FAR * LPCONTROLTAG; #endif
#endif
/****************************************/ /* Attribute bits for FdOpenFontContext */ /****************************************/ #ifndef WIFEH_NOWIFEMAN_EUDCFONTCONTEXT
#define OFC_EUDC_CONTEXT (0x80000000L)
#endif
#ifdef WIFE_CREATE_FONTDRIVER
/***********************************************/ /* PROTO-TYPE FOR EACH FUNCTION in FONT DRIVER */ /***********************************************/
LONG FAR PASCAL FdClaimFontFile( LPSTR lpszFileName );
LONG FAR PASCAL FdConvertFontFile( LPSTR lpszSrcFileName, LPSTR lpszDestDirName, LPSTR lpszResultPackName ); HFF FAR PASCAL FdLoadFontFile( LPSTR lpszPackName );
LONG FAR PASCAL FdUnloadFontFile( HFF hFF );
LONG FAR PASCAL FdQueryFaces( HFF hFF, LPIFIMETRICS lpIfiMetrics, ULONG cMetricLen, ULONG cFontCount, ULONG cStart );
HFC FAR PASCAL FdOpenFontContext( HFF hFF, ULONG ulFont );
LONG FAR PASCAL FdSetFontContext( HFC hFC, LPCONTEXTINFO lpContextInfo );
LONG FAR PASCAL FdCloseFontContext( HFC hFC );
LONG FAR PASCAL FdQueryFaceAttr( HFC hFC, ULONG iQuery, LPVOID lpBuffer, ULONG cb, LPVOID lpIndex, SHORT Start );
LONG FAR PASCAL FdQueryCharAttr( HFC hFC, LPCHARATTR lpCharAttr, LPBITMAPMETRICS lpbmm );
SHORT FAR PASCAL FdControl( HFC hFC, LPCONTROLTAG lpControlTag, LPVOID lpOutData );
/******************************************/ /* FAR PTR TO EACH FUNCTION */ /******************************************/ typedef LONG (FAR PASCAL * LPFDCLF)( LPSTR lpszFileName );
typedef LONG (FAR PASCAL * LPFDCFF)( LPSTR lpszSrcFileName, LPSTR lpszDestDirName, LPSTR lpszResultPackName );
typedef HFF (FAR PASCAL * LPFDLFF)( LPSTR lpszPackName );
typedef LONG (FAR PASCAL * LPFDQF)( HFF hFF, LPIFIMETRICS lpIfiMetrics, ULONG cMetricLen, ULONG cFontCount, ULONG cStart );
typedef LONG (FAR PASCAL * LPFDUFF)( HFF hFF );
typedef HFC (FAR PASCAL * LPFDOFC)( HFF hFF, ULONG ulFont );
typedef LONG (FAR PASCAL * LPFDSFC)( HFC hFC, LPCONTEXTINFO lpContextInfo );
typedef LONG (FAR PASCAL * LPFDCFC)( HFC hFC );
typedef LONG (FAR PASCAL * LPFDQFA)( HFC hFC, ULONG iQuery, LPVOID lpBuffer, ULONG cb, LPVOID lpIndex, SHORT Start );
typedef LONG (FAR PASCAL * LPFDQCA)( HFC hFC, LPCHARATTR lpCharAttr, LPBITMAPMETRICS lpbmm );
typedef SHORT (FAR PASCAL * LPFDCTL)( HFC hFC, LPCONTROLTAG lpControlTag, LPVOID lpOutData );
typedef struct _FDHEADER { /* fdhdr */ ULONG cbLength; /* Length of FDHEADER */ UCHAR strId[16]; /* String 'WIFE FONT DRIVER' */ UCHAR szTechnology[40]; /* Identifier of Font Driver technology */ ULONG ulVersion; /* IFI version number (0x0100) */ ULONG ufDeviceCaps; /* Capabilities of device */ NPVOID npfddisp; SHORT dummy1; } FDHEADER, NEAR * NPFDHEADER, FAR * LPFDHEADER;
#endif
#define WIFE_CREATE_DEVICEDRIVER
#ifdef WIFE_CREATE_DEVICEDRIVER
/***********************************************/ /* PROTO-TYPE FOR EACH FUNCTION in WIFEMAN.DLL */ /***********************************************/
/***********************************************/ /* Module Install Manager */ /***********************************************/ #ifndef WIFEH_NOWIFEMAN_MIM
typedef BOOL (FAR PASCAL * LPCBMEAD) ( LPSTR lpszFoundFileName, LPSTR lpszDescriptionName ); BOOL FAR PASCAL MimEnumAvailableDrivers ( LPSTR lpszSeachFilePath, LPCBMEAD lpfCallBack );
typedef BOOL (FAR PASCAL * LPCBMEAP) ( HFD hFD, LPSTR lpszPackName ); BOOL FAR PASCAL MimEnumAvailablePacks ( HFD hFD, LPSTR lpszPackName, LPCBMEAP lpfCallBack );
HFD FAR PASCAL MimAddFontDriver( LPSTR lpszFileName );
HFF FAR PASCAL MimAddFontPack( HFD hFD, LPSTR lpszPackName );
BOOL FAR PASCAL MimRemoveFontDriver( HFD hFD );
BOOL FAR PASCAL MimRemoveFontPack( HFD hFD, HFF hFontPack );
HFD FAR PASCAL MimEnumFontDrivers( HFD hLastDriver );
HFF FAR PASCAL MimEnumFontPacks( HFD hFD, HFF hLastPack );
HFC FAR PASCAL MimOpenFontContext( HFD hFD, HFF hFF, ULONG ulFont );
LONG FAR PASCAL MimCloseFontContext( HFD hFD, HFF hFF, HFC hFC );
typedef enum { MIMGETINFO_FD_DESCRIPTION = 0, MIMGETINFO_FF_DESCRIPTION = 1, MIMGETINFO_FD_FILENAME = 2, MIMGETINFO_FF_FILENAME = 3, MIMGETINFO_FD_USAGE = 4, MIMGETINFO_FF_USAGE = 5, MIMGETINFO_FD_INSTALL_COUNT = 6, MIMGETINFO_FF_INSTALL_COUNT = 7 } MIMGETINFO_ORDER;
SHORT FAR PASCAL MimGetInformations( MIMGETINFO_ORDER order, HFD hFD, HFF hFF, LPVOID AnswerBuffer, USHORT SizeOfBuffer );
#endif
/***********************************************/ /* Font Driver Interface */ /***********************************************/ #ifndef WIFEH_NOWIFEMAN_FDI
LONG FAR PASCAL FdiClaimFontFile( HFD hFD, LPSTR lpszFileName );
LONG FAR PASCAL FdiConvertFontFile( HFD hFD, LPSTR lpszSrcFileName, LPSTR lpszDestDirName, LPSTR lpszResultPackName );
HFF FAR PASCAL FdiLoadFontFile( HFD hFD, LPSTR lpszPackName );
LONG FAR PASCAL FdiUnloadFontFile( HFD hFD, HFF hFF );
LONG FAR PASCAL FdiQueryFaces( HFD hFD, HFF hFF, // Font File handle
LPIFIMETRICS lpIfiMetrics, // Buffer for the metrics
ULONG cMetricLen, // Length of the metrics structure
ULONG cFontCount, // # of fonts wanted.
ULONG cStart // index of the font to start with
);
HFC FAR PASCAL FdiOpenFontContext( HFD hFD, HFF hFF, ULONG ulFont );
LONG FAR PASCAL FdiSetFontContext( HFD hFD, HFC hFC, LPCONTEXTINFO lpContextInfo );
LONG FAR PASCAL FdiCloseFontContext( HFD hFD, HFC hFC );
LONG FAR PASCAL FdiQueryFaceAttr( HFD hFD, HFC hFC, ULONG iQuery, LPVOID lpBuffer, ULONG cb, LPVOID lpIndex, SHORT Start );
LONG FAR PASCAL FdiQueryCharAttr( HFD hFD, HFC hFC, LPCHARATTR lpCharAttr, LPBITMAPMETRICS lpbmm );
SHORT FAR PASCAL FdiControl( HFD hFD, HFC hFC, LPCONTROLTAG lpControlTag, LPVOID lpOutData );
#endif
/***********************************************/ /* Font Cacheing Manager */ /***********************************************/ #ifdef WIFE_ENABLE_FCM
#define FCM_WIFE_CHARACTER 1
#define FCM_CLIP_OUT 2
#define FCM_LEFT_CLIP 0x0100
#define FCM_RIGHT_CLIP 0x0200
#define FCM_TOP_CLIP 0x0400
#define FCM_BOTTOM_CLIP 0x0800
typedef struct { USHORT SizeOfStruct; /* size of structire */ WORD WifeFlag; /* FCM processing flags */ UBCHAR ubCode; /* character code */ LPSTR lpCacheBuffer; /* long ptr to cache bitmap */ SHORT nBitWidth; /* x size of character image */ SHORT nBitHeight; /* y size of character image */ SHORT nByteWidth; /* byte width size in alloctaed buffer */ USHORT InternalIndex; /* RESERVED FOR SYSTEM USE */ } FCM_CHARACTERISTIC, NEAR *NP_FCM_CHARACTERISTIC, FAR *LP_FCM_CHARACTERISTIC;
typedef struct { USHORT SizeOfStruct; /* size of structire */ WORD WifeFlag; /* FCM processing flags */ UBCHAR ubCode; /* character code */ LPSTR lpCacheBuffer; /* long ptr to cache bitmap */ SHORT nBitWidth; /* x size of character image */ SHORT nBitHeight; /* y size of character image */ SHORT nByteWidth; /* byte width size in alloctaed buffer */ USHORT InternalIndex; /* RESERVED FOR SYSTEM USE */
SHORT xPosOnDst; /* x position on dst device */ SHORT yPosOnDst; /* y position on dst device */
} FCM_EXTCHARACTERISTIC, NEAR * NP_FCM_EXTCHARACTERISTIC, FAR * LP_FCM_EXTCHARACTERISTIC;
HFB FAR PASCAL FcmCreateCacheBuffer( HFD hFD, HFF hFF, ULONG ulFont, LPTEXTXFORM lpXform, USHORT usMinorCharSet, USHORT usAttribute );
BOOL FAR PASCAL FcmDeleteCacheBuffer( HFB hFontBuffer );
SHORT FAR PASCAL FcmRequestImages( HFB hFontBuffer, LP_FCM_CHARACTERISTIC AnswerBuffer, short length );
BOOL FAR PASCAL FcmReleaseImages( HFB hFontBuffer, LP_FCM_CHARACTERISTIC AnswerBuffer, short length );
HFB FAR PASCAL FcmRequestDefaultFB( LPFONTINFO lpFont, LPTEXTXFORM lpTextXform );
BOOL FAR PASCAL FcmReleaseDefaultFB( HFB hFB );
#define FCMCALC_BIGFONT 1
#define FCMCALC_ROUGHCLIPINFO 2
#define FCMCALC_DETAILCLIPINFO 4
DWORD FAR PASCAL FcmCalculateTextExtent( HFB hFB, LPSTR lpString, short count, LPFONTINFO lpFont, LPDRAWMODE lpDrawMode, LPTEXTXFORM lpXform, LPSHORT lpCharWidths, USHORT usMode );
SHORT FAR PASCAL FcmCalculateOutputPositions( HFB hFB, LP_FCM_EXTCHARACTERISTIC lpFcmCharacteristics, SHORT nArrayLength, LPSHORT lpx, LPSHORT lpy, LPRECT lpClipRect, LPSTR FAR * lplpString, LPSHORT lpcount, LPFONTINFO lpFont, LPDRAWMODE lpDrawMode, LPTEXTXFORM lpXform, LPSHORT FAR * lplpCharWidths, USHORT usMode );
SHORT FAR PASCAL FcmCleanUp( VOID );
HFB FAR PASCAL FcmEnumFontBuffers( HFB hLastBuffer );
HFC FAR PASCAL FcmGetFontContext( HFB hFB );
SHORT FAR PASCAL FcmCalcByteWidth( SHORT nBitWidth );
SHORT FAR PASCAL FcmForceCacheIn( HFB hFB, LPUBCHAR lpubStr );
BOOL FAR PASCAL FcmValidateFC( HFB hFB );
BOOL FAR PASCAL FcmUnvalidateFC( HFB hFB );
LONG FAR PASCAL FcmQueryFaceAttr( HFB hFB, ULONG iQuery, LPABC_TRIPLETS lpBuffer, ULONG cb, LPUBCHAR lpIndex, UBCHAR Start );
#ifdef WIFE_ENABLE_FCM_CONTROL
SHORT FAR PASCAL FcmIsProcessableDeviceControl( HFB hFB, SHORT nFunction, GAIJIINFO FAR * lpGI );
SHORT FAR PASCAL FcmProcessDeviceControl( HFB hFB, SHORT nFunction, GAIJIINFO FAR * lpGI, LPVOID lpOutData );
#endif
USHORT FAR PASCAL FcmGetEUDCLeadByteRange( HFB hFB );
HFB FAR PASCAL FcmGetEUDCFB( HFB hFB );
USHORT FAR PASCAL FcmGetCharWidth( HFB hFB, LPUSHORT lpBuffer, USHORT wFirstChar, USHORT wLastChar, LPFONTINFO lpFont, LPDRAWMODE lpDrawMode, LPTEXTXFORM lpFontTrans, USHORT usExpandPixels, USHORT usMode );
#endif
#endif
/***********************************************/ /* WIFEMAN's Miscellaneous Service Functions */ /***********************************************/ #ifndef WIFEH_NOWIFEMAN_MISC
BOOL FAR PASCAL MiscIsDBCSLeadByte( CHAR_SET CharSet, USHORT ch );
#define MiscIsMBCSCharSet(c) (MiscIsDBCSLeadByte(c,0xffff))
VOID FAR PASCAL MiscSetErroInfo( ULONG ErrorCode );
ULONG FAR PASCAL MiscGetErroInfo( VOID );
SHORT FAR PASCAL MiscWarningMessage( HANDLE hInst, USHORT idsMsg, USHORT idsTitle, USHORT mode );
SHORT FAR PASCAL MiscWarningMessageWithArgument( HANDLE hInst, USHORT idsMsg, USHORT idsTitle, LPSTR lpszArgument, USHORT mode );
#ifdef ENABLE_MESSAGEBOX
/* MessageBox() Flags */ #define MB_OK 0x0000
#define MB_OKCANCEL 0x0001
#define MB_ABORTRETRYIGNORE 0x0002
#define MB_YESNOCANCEL 0x0003
#define MB_YESNO 0x0004
#define MB_RETRYCANCEL 0x0005
#define MB_ICONHAND 0x0010
#define MB_ICONQUESTION 0x0020
#define MB_ICONEXCLAMATION 0x0030
#define MB_ICONASTERISK 0x0040
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_DEFBUTTON1 0x0000
#define MB_DEFBUTTON2 0x0100
#define MB_DEFBUTTON3 0x0200
#define MB_APPLMODAL 0x0000
#define MB_SYSTEMMODAL 0x1000
#define MB_TASKMODAL 0x2000
#define MB_NOFOCUS 0x8000
#define MB_TYPEMASK 0x000F
#define MB_ICONMASK 0x00F0
#define MB_DEFMASK 0x0F00
#define MB_MODEMASK 0x3000
#define MB_MISCMASK 0xC000
#endif /* ENABLE_MESSAGEBOX */
USHORT FAR PASCAL ubstrlen( LPUBCHAR cp );
LPUBCHAR FAR PASCAL ubstrcpy( LPUBCHAR dst, LPUBCHAR src );
LPUBCHAR FAR PASCAL ubstrncpy( LPUBCHAR dst, LPUBCHAR src, USHORT limit );
LPUBCHAR FAR PASCAL ubstrcat( LPUBCHAR dst, LPUBCHAR src );
LPUBCHAR FAR PASCAL ubstrncat( LPUBCHAR dst, LPUBCHAR src, USHORT limit );
SHORT FAR PASCAL ubstrcmp( LPUBCHAR str1, LPUBCHAR str2 );
USHORT FAR PASCAL AscizToUz( LPUBCHAR dst, LPSTR src, USHORT limit, CHAR_SET CharSet );
USHORT FAR PASCAL UzToAsciz( LPSTR dst, LPUBCHAR src, USHORT limit );
VOID FAR PASCAL MiscTrancateString( LPSTR lpszStr, SHORT length, SHORT CharSet );
#define MiscTrancateByDefaultCharSet(s,l) MiscTrancateString(s,l,-1)
ULONG FAR PASCAL MiscGetVersion( VOID );
USHORT FAR PASCAL MiscGetEUDCLeadByteRange( CHAR_SET csCharSet );
BYTE FAR PASCAL MiscConvertFontFamily( LPSTR szFamilyName );
BYTE FAR PASCAL MiscConvertCharSet( LPSTR CharSetString );
#ifdef WIFE_ENABLE_FONT_STRUCT_CONVERT
/* follow two values are only for usLogicalMapFlag parameter */ /* in MiscIfiMetricsToLogFont function. */ #define LOGMAP_IGNORE_DESCENT 1
#define LOGMAP_IGNORE_INTERNAL_LEADING 2
#define LOGMAP_NEGATIVE (0x8000)
VOID FAR PASCAL MiscIfiMetricsToLogFont( LPLOGFONT lpLogFont, LPIFIMETRICS lpIFIMetrics, USHORT usLogicalMapFlag );
VOID FAR PASCAL MiscIfiMetricsToTextMetrics( LPTEXTMETRIC lpTextMetrics, LPIFIMETRICS lpIFIMetrics );
#endif
#ifdef WIFE_ENABLE_FONT_STRUCT_MAKE
VOID FAR PASCAL MiscMakeTextXform( LPTEXTXFORM lpTXF, LPIFIMETRICS lpIM, LPLOGFONT lpLF );
#endif
#ifndef WIFEH_NO_HUGE_SUPPORT
LPVOID FAR PASCAL MiscAddHugePtr( LPVOID src, ULONG offset ); USHORT FAR PASCAL MiscGetSegmentIncrement( VOID ); #endif
#ifndef WIFEH_NO_CONTROL_RANGES
BOOL FAR PASCAL MiscIsWifeControl( SHORT function ); BOOL FAR PASCAL MiscIsGaijiControl( SHORT function ); #endif
#ifndef WIFEH_NO_STRETCHER
BOOL FAR PASCAL MiscStretchMonoFontImage( LPVOID lpDestImage, USHORT usSizeOfDestX, USHORT usSizeOfDestY, LPVOID lpSrcImage, USHORT usSizeOfSrcX, USHORT usSizeOfSrcY ); #endif
#define WIFE_ENABLE_QUICK_SEARCH_TABLE
#ifdef WIFE_ENABLE_QUICK_SEARCH_TABLE
typedef struct { HFD hFD; HFF hFF; ULONG ulFont; BOOL bScalable; LOGFONT LogFont; }QUICK_SEARCH_TABLE, NEAR * NP_QUICK_SEARCH_TABLE, FAR * LP_QUICK_SEARCH_TABLE;
LP_QUICK_SEARCH_TABLE FAR PASCAL MiscValidateQuickSearchTable( USHORT usLogicalMapFlag );
BOOL FAR PASCAL MiscUnvalidateQuickSearchTable( USHORT usLogicalMapFlag );
typedef LP_QUICK_SEARCH_TABLE (FAR PASCAL * LPMISCVALIDATEQST)( USHORT usLogicalMapFlag );
typedef BOOL (FAR PASCAL * LPMISCUNVALIDATEQST)( USHORT usLogicalMapFlag );
#define NMISCVALIDATEQST (67)
#define NMISCUNVALIDATEQST (68)
#endif
#ifdef WIFE_ENABLE_NOTIFY_FUNCTIONS
typedef enum { WN_ADD_FONTDRIVER = 0, WN_ADD_FONTPACKAGE = 1, WN_REMOVE_FONTDRIVER = 2, WN_REMOVE_FONTPACKAGE = 3, WN_REGISTER_SYSTEM_EUDC_CHAR = 4, WN_CHANGE_SYSTEM_EUDC_FILE = 5 } WIFENOTIFY_ORDER;
typedef struct { HFD hTargetFontDriver; } WNS_FONTDRIVER;
typedef struct { HFD hTargetFontDriver; HFF hTargetFontPackage; } WNS_FONTPACKAGE;
typedef struct { HFD hTargetFontDriver; HFF hTargetFontPackage; UBCHAR ubRegistedCharCode; } WNS_REGISTER_SYSTEM_EUDC_CHAR;
typedef struct { HFD hTargetFontDriver; HFF hTargetFontPackage; LPSTR lpszNewFileName; } WNS_WN_CHANGE_SYSTEM_EUDC_FILE;
typedef BOOL (FAR PASCAL * LPNOTIFYCALLBACKFUNC)( WIFENOTIFY_ORDER NotifyOrder, LPVOID lpParamBlock );
BOOL FAR PASCAL MiscRegisterNotifyFunction( LPNOTIFYCALLBACKFUNC lpfnCallBack );
BOOL FAR PASCAL MiscUnregisterNotifyFunction( LPNOTIFYCALLBACKFUNC lpfnCallBack );
#endif
#ifdef WIFE_ENABLE_REALIZE_FUNCTIONS
WORD FAR PASCAL MiscRealizeWifeFont( LPLOGFONT lpLogFont, LPFONTINFO lpExtFont, LPTEXTXFORM lpTextXform );
BOOL FAR PASCAL MiscDeleteWifeFont( LPFONTINFO lpExtFont );
#endif
#endif
/***********************************************/ /* DIAGNOSTIC TEST&CHECKING FUNCTIONS */ /***********************************************/ #ifdef ENABLE_DIAGNOSTIC_FUNCTION
/* test and return error code */ SHORT FAR PASCAL DiagSelfCheck( VOID );
/* invoke self test and make error record file, display warning dialog */ SHORT FAR PASCAL DiagSelfCheckAndWarning( VOID );
#endif
/************************************************/ /* THESE ARE PRIVATE INTERFACE FOR TEST PROGRAM */ /************************************************/ #ifdef ENABLE_TEST_PROGRAM_INTERFACE
LPVOID FAR PASCAL DiagLocalLockAnything( LOCALHANDLE hAny ); LPVOID FAR PASCAL DiagLocalUnlockAnything( LOCALHANDLE hAny ); SHORT FAR PASCAL DiagGetConfirmString( LPSTR buffer, SHORT length );
#endif
////// for WOW ///////////
#define IDS_NOTSUPORTFUNCTION 200
#define IDS_WIFETITLE 201
/* end of wife.h */
|