#ifndef HC_H #include "hc.h" #endif #ifndef _CINPUT_INCLUDED #include "..\common\cinput.h" #endif #ifndef _COUTPUT_INCLUDED #include "..\common\coutput.h" #endif #define wThisVerMajor 0 #define wThisVerMinor 999 #define bWordFormat 0x80 // Followed by 16 bit text format number #define bNewLine 0x81 // Newline #define bNewPara 0x82 // New paragraph #define bTab 0x83 // Left-aligned tab #define bBlankLine 0x85 // Followed by 16 bit skip count #define bInlineObject 0x86 // Followed by inline layout object #define bWrapObjLeft 0x87 // Left- aligned wrapping object #define bWrapObjRight 0x88 // Right-aligned wrapping object #define bEndHotspot 0x89 // End of a hotspot #define bColdspot 0x8A // Coldspot for searchable bitmaps #define bEnd 0xFF // End of text #define cbDecompressNil ((UINT) -1) // w_scan stuff const int MAX_ZONE_LEN = 128 + _MAX_PATH; // Max Zone Name length const int MAX_TITLE = 128; //Max Zone title length #define ByteOff(va) ((va) .bf.byteoff) typedef DWORD COBJRG; typedef HANDLE HBGH; typedef OBJRG* QOBJRG; #define objrgNil (OBJRG) -1 typedef struct { DWORD lcbFc; // Size in bytes of Full Context VA vaPrev; // Offset in TP of prev FC VA vaCurr; // Offset to current FCP VA vaNext; // Offset in TP of next FC DWORD ichText; // Offset with FCP to text DWORD lcbText; // Size of the text portion of FCP DWORD lcbDisk; // Size of the text portion of FCP COBJRG cobjrgP; HHF hhf; // Topic Identifier GH hphr; // Handle to phrase table } FCINFO; typedef struct { WORD cWsmag; // number of window smags to follow WSMAG rgwsmag[MAX_WSMAG]; // array of window smags } RGWSMAG, *QRGWSMAG; extern QRGWSMAG qrgwsmag; typedef FCINFO * QFCINFO; typedef FCINFO * PFCINFO; typedef FCINFO * NPFCINFO; typedef struct tag_ols { int lichText; DWORD dwBlockCurr; DWORD dwcRegion; } OLS, *QOLS; extern PA paGlobal; extern COutput* pcout; #define XPixelsFromPoints(p1, p2) MulDiv(p2, p1->wXAspectMul, p1->wXAspectDiv) #define YPixelsFromPoints(p1, p2) MulDiv(p2, p1->wYAspectMul, p1->wYAspectDiv) #define FResolvedQLA(qla) \ ((qla)->mla.va.dword != vaNil && (qla)->mla.objrg != objrgNil) #define SetInvalidPA(pa) {(pa).blknum = (DWORD)(-1); (pa).objoff = (DWORD)(-1);} #define FIsInvalidPA(pa) ((pa).blknum == (DWORD)(-1) && (pa).objoff == (DWORD)(-1)) void STDCALL Break(int c, DWORD ulAddr, DWORD ulRUnit, BYTE ucField); int STDCALL CbDecompressQch(LPSTR, int, LPSTR, HPHR, UINT); int STDCALL CbUnpackMOBJ(QMOBJ qmobj, void* qv); int STDCALL DecompressJPhrase(PSTR pbText, INT cbComp, PSTR pbDecomp, VOID *lpCCompressTable); void STDCALL DestroyJPhrase(UINT lpCCompressTable); BYTE * STDCALL FileCore(const char* pucFile); void STDCALL FixUpBlock(LPVOID qmbhd, LPVOID qbBuf, WORD wVersion); BOOL STDCALL GetNextAnsFile(FILE *pFf, PSTR lpszAnsFile, PSTR lpszAnsTitle); GH STDCALL GhFillBuf(QDE, DWORD, int*, int*); VOID* STDCALL LoadJohnTables(HFS hfs); void STDCALL OutForageText(DWORD, LPSTR, int, UINT); void STDCALL TranslateMBHD(LPVOID qvDst, LPVOID qvSrc, WORD wVersion); VOID STDCALL TranslateMFCP(LPVOID qvDst, LPVOID qvSrc, VA va, WORD wVersion); VA STDCALL VAFromQLA(QLA, QDE); WORD STDCALL WCopyContext(QDE qde, VA vaPos, LPSTR qchDest, int cb); #ifdef _DEBUG void STDCALL FVerifyQLA(QLA qla); void STDCALL FVerifyQMOPG(QMOPG qmopg); #else #define FVerifyQLA(qla) #define FVerifyQMOPG(qmopg) #endif