mirror of https://github.com/lianthony/NT4.0
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.
332 lines
15 KiB
332 lines
15 KiB
/*
|
|
Header file for WattScr.dll
|
|
|
|
|
|
Revision History:
|
|
|
|
[ 0] 20-Feb-1990 AngelaCh: Created program
|
|
[ 1] 04-May-1990 AngelaCh: increase number of diff 64
|
|
allocations (bug #62)
|
|
[ 2] 03-Jul-1990 AngelaCh: added support for Video 7
|
|
and 8515/a (bug #64)
|
|
[ 3] 07-Aug-1991 DavidSc: Added generic screensize and
|
|
bumped version #.
|
|
******************************************************************************/
|
|
|
|
/* Generic Types */
|
|
|
|
#define PRIVATE PASCAL
|
|
#define PUBLIC PASCAL
|
|
// Babakj: the following is unnecessary:
|
|
// #define FAR far
|
|
#define VOID void
|
|
|
|
#define FARPRIVATE APIENTRY
|
|
#define FARPUBLIC APIENTRY
|
|
|
|
typedef VOID ( APIENTRY *TrapCallBack)(INT);
|
|
|
|
// Babakj: commented out the following 3 typedefs
|
|
// typedef INT BOOL;
|
|
// typedef +++D/WORD+++ CHAR BYTE;
|
|
// typedef +++D/WORD+++ INT WORD;
|
|
|
|
// BabakJ: FD was unsigned, I made it UINT
|
|
typedef UINT FD; /* file handle */
|
|
typedef LONG LFO; /* file offset */
|
|
typedef BYTE VMD ; /* Virtual screen mode. */
|
|
|
|
#define cbOldHeader 16 /* Size of old header */
|
|
#define OldVer 2 /* Version number of WattScr [1] */
|
|
/* pre-"mode 255" - don't change. [3] */
|
|
#define VerCur 10 /* Version number of WattScr [3] */
|
|
//#define EnvCur 1 /* Program env: 1 = Windows, 2 = PM */
|
|
#define EnvCur 3 /* Program env: 1 = Windows, 2 = PM */
|
|
|
|
#define cscrMax 100 /* limit of screen dumps per file [1] */
|
|
#define MaxSize 64000 /* max size for each segment of screen */
|
|
#define MaxCb 100 /* max number of segment per screen [1] */
|
|
#define MaxCbComp 7 /* max size of array for compression info [1]*/
|
|
|
|
|
|
// BabakJ: Brought from dump.h in Winplay proj
|
|
#ifdef WIN16
|
|
typedef WORD WORD2INT;
|
|
typedef LONG LONG2DWORD;
|
|
#else
|
|
typedef INT WORD2INT;
|
|
typedef DWORD LONG2DWORD;
|
|
#endif
|
|
|
|
|
|
typedef struct
|
|
{
|
|
INT col ; /* start column of screen region */
|
|
INT row ; /* start row of screen region */
|
|
INT width ; /* width of screen region */
|
|
INT height ; /* height of screen region */
|
|
}
|
|
REN; /* REgioN. Defines area on screen. */
|
|
|
|
typedef struct
|
|
{
|
|
WORD cb[MaxCb] ; /* number of bytes in the diff 64K allocation */
|
|
WORD cbComp[MaxCbComp] ; /* which 64k allocation has been compressed */
|
|
REN ren ; /* screen region */
|
|
LFO lfo ; /* offset to the screen */
|
|
}
|
|
SCR; /* Screen Table */
|
|
|
|
typedef struct
|
|
{
|
|
CHAR FileId[3] ; /* Indentify file as screen file. */
|
|
BYTE Ver ; /* Version number of screen file */
|
|
BYTE Env ; /* programming environment */
|
|
}
|
|
FST ; /* file stamp */
|
|
|
|
typedef struct
|
|
{
|
|
WORD XresMAX; /* maximum x-res capable on hardware [3] */
|
|
WORD YresMAX; /* maximum y-res capable on hardware [3] */
|
|
DWORD PaletteSizeMAX; /* Max # of colours simultaneously displayable [3] */
|
|
|
|
// The following may be important, but is un-implemented
|
|
// BYTE PaletteSelectionMethod; /* 00 ==> fixed palette, */
|
|
// /* R contains # of choices, */
|
|
// /* G contains WHICH is current choice */
|
|
// /* 01 ==> R,G,B contain # of bits */
|
|
// BYTE RedSelection;
|
|
// BYTE GreenSelection;
|
|
// BYTE BlueSelection;
|
|
|
|
}
|
|
VM; /* Generic video mode structure */
|
|
/* in FSS below, pad out with filler to 16 bytes */
|
|
|
|
typedef struct
|
|
{
|
|
FST fst ; /* Indentify file as screen file. */
|
|
VMD vmd ; /* Screen Mode. */
|
|
WORD BitCount ; /* number of bits per pixel */
|
|
INT ClrUse ; /* number of colour used */
|
|
INT cscr ; /* total number of screens in file */
|
|
LFO lfo ; /* File offset to Screen tables */
|
|
VM vmG ; /* Generic video mode */
|
|
DWORD reserved1; /* pad out to 16 byte boundary [3] */
|
|
DWORD reserved2;
|
|
}
|
|
FSS; /* Header for Screen file. */
|
|
|
|
|
|
|
|
|
|
#define TRUE 1 /* boolean definitions */
|
|
#define FALSE 0
|
|
|
|
// BabakJ: replaced the hard coded constants with OF_ ones
|
|
#define omRead OF_READ /* DOS file open modes */
|
|
#define omReadWrite OF_READWRITE
|
|
//#define omRead 0x80 /* DOS file open modes */
|
|
//#define omReadWrite 0x82
|
|
|
|
#define smFromBegin 0 /* file seraching methods */
|
|
#define smFromCurrent 1
|
|
#define smFromEnd 2
|
|
|
|
#ifdef WIN32
|
|
#define fdNull 0xffffffff /* invalid file handle */
|
|
#else
|
|
#define fdNull -1 /* invalid file handle */
|
|
#endif
|
|
|
|
#define vmdNull 0xfe /* invalid video mode */
|
|
#define vmdGeneric 0xff /* all video modes match this one */
|
|
#define vmdMax 20 /* max number of video mode supported [2] */
|
|
|
|
#define FullSize 100 /* size of picture is the size of the bitmap */
|
|
#define DisplaySrn 0 /* action code for File to Screen comparison */
|
|
#define DisplayDif 1 /* action code for File to File comparison */
|
|
#define CompFS 100 /* action code for File to Screen comparison */
|
|
#define CompFF 200 /* action code for File to File comparison */
|
|
|
|
#define Append 0 /* action code for appending a screen */
|
|
#define Replace 1 /* action code for replacing a screen */
|
|
#define Insert 2 /* action code for inserting a screen */
|
|
|
|
#define DIBid 0x4d42 /* specify the type of file is a bitmap */
|
|
#define DIBFirst 1 /* the 1st time writing to a DIBitmap file */
|
|
|
|
/* Error Codes */
|
|
#define NoError 0 /* function call is succeed */
|
|
#define FileAccess 301 /* File Access Error */
|
|
#define InValidFil 302 /* Not a Valid Screen File */
|
|
#define InValSrnId 303 /* Screen Id Invalid */
|
|
#define InValSrnMd 304 /* Screen Mode Invalid */
|
|
#define OutOMemory 305 /* Out Of Memory */
|
|
#define ReadSrnFil 306 /* Error in Reading Screen File */
|
|
#define RelMemory 307 /* Error in Releasing Memory */
|
|
#define CreateDDB 308 /* Error in Creating Device-Dependent Bitmap */
|
|
#define RWSrnTable 309 /* Error in Reading/Writing Screen Table */
|
|
#define RWColTable 310 /* Error in Reading/Writing Colour Table */
|
|
#define WSrnImage 311 /* Error in Writing Screen Image */
|
|
#define WFileHead 312 /* Error in Writing File Header */
|
|
#define CreateDIB 313 /* Error in Creating Device-Indep Bitmap */
|
|
#define ScreenSize 314 /* Screen Size not supported */
|
|
#define DispScreen 315 /* Error in Displaying Screen Image */
|
|
#define InValidAct 316 /* Unrecognizable Action */
|
|
#define ImageDiff 317 /* Screen Images are Different */
|
|
#define SrnSizeDif 318 /* Mesurement of Screen Images are Different */
|
|
#define FileExist 319 /* File Already Exist */
|
|
#define CTempFile 320 /* Error in Creating Temp File */
|
|
#define HideWin 321 /* Unsuccessfully Hiding the Window */
|
|
#define InValWHand 322 /* Invalid Window's Handle */
|
|
#define OFileForm 323 /* Old File Format */
|
|
#define SrnFileFul 324 /* Screen File is Full */
|
|
#define InValScale 325 /* Invalid Scaling Factor */
|
|
#define OpenCB 326 /* Can't Open the ClipBoard */
|
|
#define EmptyCB 327 /* Can't Empty the ClipBoard */
|
|
#define CopyToCB 328 /* Unsuccessfully copy image to clipboard */
|
|
#define CloseCB 329 /* Can't Close the Clipboard */
|
|
#define CreatePal 330 /* Unsuccessfully create logical palette */
|
|
#define LibLoadErr 331 /* Couldn't load testevnt.dll for dokeys func */
|
|
#define EnvNotSame 332 /* The operating system is different than file*/
|
|
|
|
/* default info of the header of a Device-Independent bitmap */
|
|
#define PalVer 0x300 /* Window version for the logical palette [2]*/
|
|
#define MaxPal 256 /* max size of the array of colours */
|
|
#define MaxComp 0 /* max compression style */
|
|
#define dbiPlanes 1 /* number of planes - must be 1 */
|
|
|
|
/* global variables */
|
|
|
|
FSS fssScreen ; /* header for a valid screen file */
|
|
SCR rgscr[cscrMax] ; /* Screen tables. */
|
|
BYTE ClrTab[MaxPal*sizeof(RGBQUAD)] ; /* colour table for the bitmap [2] */
|
|
INT IsPalDev ; /* is the display device a Palette device? [2] */
|
|
HPALETTE hPal ; /* handle to a logical color palette [2] */
|
|
INT IsFst ; /* is this the 1st time creating a DIB ? */
|
|
|
|
extern INT ( APIENTRY *DoKeys)(LPSTR);
|
|
|
|
/* Local Procedures */
|
|
|
|
WORD PRIVATE PaletteSize (LPBITMAPINFOHEADER) ;
|
|
HPALETTE PRIVATE CreatePalFromDIB (VOID) ;
|
|
HPALETTE PRIVATE MakePal (VOID) ;
|
|
VOID PRIVATE SwapXY (INT FAR *, INT FAR *) ;
|
|
VOID PRIVATE GetDimensions (INT FAR *, INT FAR *, INT) ;
|
|
INT PRIVATE fGetScreenParams (REN FAR *) ;
|
|
INT PRIVATE ValidateFile (FD, BOOL) ;
|
|
FD PRIVATE fReadHeader (LPSTR, BYTE, BOOL, INT FAR *) ;
|
|
INT PRIVATE fReadTables (FD) ;
|
|
INT PRIVATE ProcessSrnFile (LPSTR, FD FAR *, INT, BYTE) ;
|
|
HWND PRIVATE HideApp (VOID) ;
|
|
VOID PRIVATE RestoreApp (HWND) ;
|
|
INT PRIVATE fGetWndDim (HWND, HWND FAR *, INT FAR *, REN FAR *) ;
|
|
HBITMAP PRIVATE GetBMap (INT, INT, INT, INT) ;
|
|
WORD PRIVATE ReadDibBytes (LPSTR, FD, INT, INT, WORD, INT) ;
|
|
HBITMAP PRIVATE DiBToBM (FD, INT, INT, WORD, INT) ;
|
|
INT PRIVATE GetDiBMap (FD, HBITMAP, LPBITMAP, WORD FAR *, INT FAR *, INT FAR *) ;
|
|
INT PRIVATE fWriteScreen (FD, SCR *, INT FAR *) ;
|
|
INT PRIVATE fAddScreen (FD, SCR *, INT, INT FAR *) ;
|
|
INT PRIVATE CopyBytes (FD, LFO, FD, LFO, WORD) ;
|
|
INT PRIVATE CpBlock (FD, LFO, FD, LFO, LFO) ;
|
|
INT PRIVATE fReWriteTables (FD) ;
|
|
|
|
VOID PRIVATE fIToS (INT, LPSTR) ;
|
|
VOID PRIVATE CreateHeader (VOID) ;
|
|
INT PRIVATE WriteCompBytes (FD, LPSTR, WORD, WORD FAR *, INT FAR *) ;
|
|
INT PRIVATE fAppendSrn (FD, REN FAR *, INT) ;
|
|
INT PRIVATE ReplaceSrnTable (FD, FD, SCR FAR *, INT) ;
|
|
INT PRIVATE AddSrnTable (FD, FD, SCR FAR *, INT) ;
|
|
INT PRIVATE fUpdateSrnFile (LPSTR, REN FAR *, INT, INT, INT) ;
|
|
|
|
INT PRIVATE DisplayBMP (HWND, INT, INT, HBITMAP, INT, REN FAR *) ;
|
|
INT PRIVATE fCompBMPs (HBITMAP, HBITMAP) ;
|
|
INT PRIVATE fReadScreen (FD, FD, SCR *, SCR FAR *, HWND, INT, REN FAR *) ;
|
|
|
|
INT PRIVATE fCopyToCB (HWND, HBITMAP) ;
|
|
HBITMAP PRIVATE SetDiBToBM (FD, SCR *) ;
|
|
INT PRIVATE fWriteToDIB (FD, FD, SCR *) ;
|
|
INT PRIVATE fCloseDIB (FD, SCR *) ;
|
|
VMD PRIVATE OLDDetermineMode (INT FAR *, INT FAR *) ;
|
|
|
|
INT PRIVATE FBadWindow(HWND hwnd);
|
|
BOOL PRIVATE FWinTrapCheckAndTrap(HWND hWnd);
|
|
INT PRIVATE ErrorTrap(INT result);
|
|
INT PRIVATE NoTrap( INT n );
|
|
|
|
INT FARPUBLIC LoadTESTEVT (VOID);
|
|
VOID FARPUBLIC FreeTESTEVT (VOID);
|
|
|
|
|
|
/* Exported entry points */
|
|
|
|
VMD FARPUBLIC DetermineMode (INT FAR *, INT FAR *);
|
|
LPSTR FARPUBLIC fIntsToStr (LPSTR, INT, INT, INT, INT) ;
|
|
INT FARPUBLIC fCompFiles (LPSTR, INT, LPSTR, INT, INT) ;
|
|
INT FARPUBLIC fCompScreenActivate (LPSTR, LPSTR, LPSTR, REN FAR *, INT, INT, INT) ;
|
|
INT FARPUBLIC fCompScreen (LPSTR, REN FAR *, INT, INT, INT) ;
|
|
INT FARPUBLIC fCompWindowActivate (LPSTR, LPSTR, LPSTR, INT, INT, INT) ;
|
|
INT FARPUBLIC fCompWindow (LPSTR, HWND, INT, INT, INT) ;
|
|
INT FARPUBLIC fDelScreen (LPSTR, INT) ;
|
|
INT FARPUBLIC fDumpScreenActivate (LPSTR, LPSTR, LPSTR, REN FAR *, INT, INT, INT) ;
|
|
INT FARPUBLIC fDumpScreen (LPSTR, REN FAR *, INT, INT, INT) ;
|
|
INT FARPUBLIC fDumpWindowActivate (LPSTR, LPSTR, LPSTR, INT, INT, INT) ;
|
|
INT FARPUBLIC fDumpWindow (LPSTR, HWND, INT, INT, INT) ;
|
|
INT FARPUBLIC fViewScreen (LPSTR, HWND, REN FAR *, INT, INT, INT) ;
|
|
INT FARPUBLIC fFileInfo (LPSTR, REN FAR *, INT FAR *, INT FAR *) ;
|
|
INT FARPUBLIC fGetDLLVersion (LPSTR) ;
|
|
INT FARPUBLIC fGetMaxScreen (LPSTR) ;
|
|
INT FARPUBLIC fGetOS (LPSTR) ;
|
|
INT FARPUBLIC fDumpSrnToClipActivate (LPSTR, LPSTR, REN FAR *, INT) ;
|
|
INT FARPUBLIC fDumpSrnToClip (REN FAR *, INT) ;
|
|
INT FARPUBLIC fDumpWndToClipActivate (LPSTR, LPSTR, INT) ;
|
|
INT FARPUBLIC fDumpWndToClip (HWND, INT) ;
|
|
INT FARPUBLIC fDumpFileToClip (LPSTR, INT) ;
|
|
INT FARPUBLIC fSaveSrnToDIBActivate (LPSTR, LPSTR, LPSTR, REN FAR *, INT) ;
|
|
INT FARPUBLIC fSaveSrnToDIB (LPSTR, REN FAR *, INT) ;
|
|
INT FARPUBLIC fSaveWndToDIBActivate (LPSTR, LPSTR, LPSTR, INT) ;
|
|
INT FARPUBLIC fSaveWndToDIB (LPSTR, HWND, INT) ;
|
|
INT FARPUBLIC fSaveFileToDIB (LPSTR, INT, LPSTR) ;
|
|
INT FARPUBLIC fGetScreenAttr (LPSTR, INT FAR *, INT FAR *, LONG FAR * );
|
|
|
|
VMD FARPUBLIC GetCurrentVideoMode( VM FAR * );
|
|
LONG FARPUBLIC DetermineColours ( VOID );
|
|
BOOL FARPUBLIC VideoModesEqual ( VM, VM );
|
|
|
|
|
|
VOID FARPUBLIC WSCR_WindowMissing(INT TrapID, INT Action, TrapCallBack CallBack);
|
|
VOID FARPUBLIC WSCR_EventError(INT TrapID, INT Action, TrapCallBack CallBack);
|
|
|
|
|
|
|
|
|
|
// Routines from filelow.asm, replaced with port layer's M_l* family
|
|
|
|
// FD FARPUBLIC FdCreate (LPSTR) ;
|
|
// FD FARPUBLIC FdOpen (LPSTR, BYTE) ;
|
|
// WORD FARPUBLIC CbWriteFdLpb (FD, LPSTR, WORD);
|
|
// WORD FARPUBLIC CbReadFdLpb (FD, LPSTR, WORD);
|
|
// LFO FARPUBLIC LSeekFd (FD, LFO, BYTE);
|
|
// INT FARPUBLIC EnCloseFd (FD);
|
|
// INT FARPUBLIC EnUnLinkSz (LPSTR);
|
|
// INT FARPUBLIC EnRenameSzSz (LPSTR, LPSTR);
|
|
|
|
/* Routines from scrlow.asm */
|
|
// BabakJ: Modified param types to match the rewritten procs in C
|
|
INT FARPUBLIC CompStrings (LPWORD, LPWORD, INT, INT, WORD);
|
|
|
|
|
|
UINT FARPUBLIC CompressBytes (LPBYTE, LPBYTE, UINT);
|
|
|
|
UINT FARPUBLIC DeCompressBytes (LPBYTE, LPBYTE, UINT);
|
|
|
|
|
|
/* windows.h doesn't declare it */
|
|
// BabakJ:
|
|
// Yield is #define'd as NULL in NT. What they expect Yeild to do for
|
|
// them on 16 bit is a problem under NT. Investigate.
|
|
// VOID FARPUBLIC yield(VOID);
|
|
#define yield Yield
|