Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

99 lines
2.7 KiB

/*==============================================================================
This include file defines C++ objects for each type of instance.
==============================================================================*/
#include <ifaxos.h>
#include <faxcodec.h>
#ifdef DEBUG
extern DBGPARAM dpCurSettings;
#endif
//==============================================================================
typedef struct T4STATE // keep in sync with t4core.asm!
{
LPBYTE lpbIn; // read-only input buffer
LPBYTE lpbOut; // output buffer
WORD wOffset; // segment offset of change vector buffer (for consumers)
WORD cbIn; // input data size
WORD cbOut; // output buffer size
WORD cbLine; // width of line in bytes
WORD wColumn; // current position in bits
WORD wColor; // current color
WORD wWord; // current word
WORD wBit; // bit modulus
WORD cbSlack;
LPBYTE lpbRef; // read-only reference change vector
LPBYTE lpbBegRef; // for client
WORD wRet; // return status
WORD wToggle;
WORD iKFactor; // K counter
WORD wMode; // for MR
short a0; // for MMR
DWORD nType; // type of data being produced/consumed
}
FAR* LPT4STATE;
// Values for wRet
#define RET_INPUT_EMPTY1 1
#define RET_INPUT_EMPTY2 2
#define RET_OUTPUT_FULL 3
#define RET_END_OF_LINE 4
#define RET_SPURIOUS_EOL 5
#define RET_BEG_OF_PAGE 6
#define RET_END_OF_PAGE 10
#define RET_DECODE_ERR 253
#ifdef __cplusplus
extern "C" {
#endif
// ASM methods
void ChangeToRaw (LPT4STATE);
void RawToChange (LPT4STATE);
void ChangeToMH (LPT4STATE);
void MHToChange (LPT4STATE);
void ChangeToMR (LPT4STATE);
void MRToChange (LPT4STATE);
void ChangeToMMR (LPT4STATE);
void MMRToChange (LPT4STATE);
#ifdef __cplusplus
} // extern "C"
#endif
//==============================================================================
#ifdef __cplusplus
typedef class FAR CODEC : FC_PARAM
{
LPBYTE lpbLine;
UINT xExt;
UINT cSpurious;
LPBYTE lpbChange;
LPBYTE lpbRef;
BOOL f2D;
T4STATE t4C, t4P;
void (*Consumer)(LPT4STATE);
void (*Producer)(LPT4STATE);
WORD wBad;
public:
FC_COUNT fcCount;
void Init (LPFC_PARAM, BOOL f2DInit);
FC_STATUS Convert (LPBUFFER, LPBUFFER);
private:
void SwapChange (void);
void ResetBad (void);
void EndLine (void);
void StartPage (void);
void EndPage (LPBUFFER lpbufOut);
FC_STATUS ConvertToT4 (LPBUFFER lpbufIn, LPBUFFER lpbufOut);
FC_STATUS ConvertToRaw (LPBUFFER lpbufIn, LPBUFFER lpbufOut);
}
FAR *LPCODEC;
#endif // C++