469 lines
15 KiB
C
469 lines
15 KiB
C
/*
|
|
* $Header: S:\oiwh\display\iaext.h_v 1.1 12 Jun 1995 14:17:46 RC $
|
|
* $Log: S:\oiwh\display\iaext.h_v $
|
|
*
|
|
* Rev 1.1 12 Jun 1995 14:17:46 RC
|
|
* Win95 version
|
|
*- |
|
|
*- | Rev 2.4 13 Dec 1994 19:03:20 YUNSEN
|
|
*- | add nFunctions: HWEXACTSCALING and DRIVERSKIPWHITE
|
|
*- |
|
|
*- | Rev 2.3 09 Aug 1994 14:00:52 Jack
|
|
*- | Add escape order # for 24-8bits and a structure for the ESP
|
|
*- |
|
|
*- | Rev 2.2 07 Jun 1994 15:58:00 ANDY
|
|
*- | Changed IADATE_LEN to 12 for new date string format.
|
|
*- |
|
|
*- | Rev 2.1 13 May 1994 18:01:14 YUNSEN
|
|
*- | Accurate Scaling: New nFunction
|
|
*- |
|
|
*- | Rev 2.0 01 Feb 1994 16:58:54 JOEY
|
|
*- | Initial revision.
|
|
*
|
|
* Copyright (C) 1994 by Cornerstone Imaging, Inc.
|
|
*
|
|
* Revision 1.8 1993/10/21 16:02:15 erik
|
|
* added ESCAPEOUT, moved prototypes to winiaext.h
|
|
*
|
|
* Revision 1.7 1993/10/20 21:53:15 erik
|
|
* renamed ROMINFO to EXTROMINFO
|
|
*
|
|
* Revision 1.6 1993/10/20 21:47:18 erik
|
|
* added IAPRESENTMAGIC & GETIAINFOSTRUCT
|
|
*
|
|
* Revision 1.5 1993/10/12 17:16:42 erik
|
|
* added IA_BITS_BYTALIGN
|
|
*
|
|
* Revision 1.4 1993/10/12 16:26:54 erik
|
|
* synched up with NT driver version of iaext.h
|
|
*
|
|
* Revision 1.3 1993/10/12 00:43:02 erik
|
|
* added SIAImageTD() and RealizeIAPalette() and got rid of tabs
|
|
*
|
|
* Revision 1.2 1993/04/29 21:42:01 kevin
|
|
* added lots of stuff for Windows NT and extended control panel functions
|
|
*
|
|
* Revision 1.1 1992/10/22 20:41:39 van
|
|
* Initial revision
|
|
*
|
|
*/
|
|
//=========================================================================
|
|
// W A R N I N G
|
|
//
|
|
// This IAEXT.h header lives as GUINAN:\rcs\ia\winsdk\ext\include\iaext.h.
|
|
// It is shared by:
|
|
// NT toolkit
|
|
// Windows toolkit
|
|
// NT Driver
|
|
// Windows Driver
|
|
// To check out a read-only copy for compiling:
|
|
// co g:\rcs\ia\winsdk\ext\include\iaext.h@
|
|
//
|
|
//=========================================================================
|
|
|
|
/*
|
|
* define escape number for ImageAccel imaging extensions.
|
|
*
|
|
* NOTE: this number is pending assignment from Microsoft.
|
|
* 8192 = 0x2000
|
|
*/
|
|
|
|
#define IAEXTENSION 8192
|
|
#define IAPRESENTMAGIC 0x8349b2da
|
|
|
|
/*
|
|
* define escape macros for ImageAccel imaging extensions.
|
|
*/
|
|
|
|
#ifndef WIN32
|
|
|
|
// NOTE.EG for not WIN32, the driver in \devnt\include\iaext.h
|
|
// has these two defined to IA16Escape(), but I think Escape() is correct
|
|
#define ESCAPE(hDC, nEsc, nSize, lpVoid) \
|
|
Escape(hDC, nEsc, nSize, lpVoid, NULL)
|
|
|
|
#define ESCAPEOUT(hDC, nEsc, nSize, lpVoid, nSizeOut, lpOut) \
|
|
Escape(hDC, nEsc, nSize, lpVoid, lpOut)
|
|
|
|
#define DRAWESCAPE(hDC, nEsc, nSize, lpVoid) \
|
|
Escape(hDC, nEsc, nSize, lpVoid, NULL)
|
|
|
|
#else
|
|
|
|
#define ESCAPE(hDC, nEsc, nSize, lpVoid) \
|
|
ExtEscape(hDC, nEsc, nSize, lpVoid, 0, NULL)
|
|
|
|
#define ESCAPEOUT(hDC, nEsc, nSize, lpVoid, nSizeOut, lpOut) \
|
|
ExtEscape(hDC, nEsc, nSize, lpVoid, nSizeOut, lpOut)
|
|
|
|
#define DRAWESCAPE(hDC, nEsc, nSize, lpVoid) \
|
|
DrawEscape(hDC, nEsc, nSize, lpVoid)
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
* define ImageAccel images extension numbers
|
|
*/
|
|
|
|
#define QUERYIASUPPORT 0 // QueryIASupport()
|
|
#define SCALEIADATATODEVICE 1 // ScaleIaDataToDevice()
|
|
#define VIEWPORT_ZOOMIN 2 // Supports ViewPort Zoom
|
|
#define VIEWPORT_ZOOMOUT 3 // Supports ViewPort Zoom
|
|
#define VIEWPORT_RESTORE 4 // Supports ViewPort Zoom
|
|
#define VIEWPORT_LOCK_UNLOCK 5 // Supports ViewPort Zoom
|
|
#define OVERSCANENABLE 6 // Toggles Overscan
|
|
#define SCALEIAIMAGETODEVICE32 7 // ScaleIaDataToDevice()
|
|
#define CURSOR_COLOR 8 // cursor color
|
|
#define GRAY_MAP 9 // gray color map
|
|
#define DUALMONITOR_ENABLE 10 // enable dual monitor
|
|
#define IADRV_INFOSTRING 11 // IA driver information string
|
|
#define SYSPAL_OPTION 12 // system palette option
|
|
#define QUERYVIEWPORT 13 // returns the VIEWPORTINFO of the viewport
|
|
#define SCALEIAIMAGETODEVICE 14 // ScaleIAImageToDevice()
|
|
#define GETIAINFO 15 // request driver to return ROM header
|
|
#define QUERYACCURATESCALING 16 // whether exact scaling is supported
|
|
#define HWEXACTSCALING 17 // exact scaling is supported in HW
|
|
#define DRIVERSKIPWHITE 18 // s-t-g driver can clear dest. windows
|
|
#define SUPPORT_24BITS 19 // whether 24-to-8 dithering is supported
|
|
#define SET_DITHER_PARM 19 // set dithering parameters
|
|
#define TKT_DRV_FUNC 20 // driver extension for toolkit
|
|
#define IAEXTLASTFUNCTION 21 // Highest number function
|
|
|
|
/*
|
|
* define ImageAccel extension parameter definitions
|
|
*/
|
|
|
|
#define IA_ROTATE_0 0 // rotate image 0 degrees
|
|
#define IA_ROTATE_90 1 // rotate image 90 degrees
|
|
#define IA_ROTATE_180 2 // rotate image 180 degrees
|
|
#define IA_ROTATE_270 3 // rotate image 270 degrees
|
|
|
|
#define IA_COMPRESSION 0x0003 // compression type:
|
|
#define IA_BITS 0x0000 // one bit per pixel bitmap
|
|
#define IA_RUNLENGTHS 0x0001 // 8 bit run lengths
|
|
#define IA_RUNENDS 0x0002 // 16 bit run ends
|
|
#define IA_BITS_BYTALIGN 0x0004 // 1bpp bitmap - byte align
|
|
|
|
#define IA_DECIMATE 0x8000 // decimate vertical output
|
|
#define IA_CLEARWIN 0x4000 // clear window in DLL
|
|
#define IA_DRV_SKIPWHITE 0x2000 // clear window in driver
|
|
#define IA_NIBBLE 0x4000 // accelerate 8 bit displays
|
|
#define IA_RASTEROP 0x0F00 // ROP (0 is mapped to ROPEQS)
|
|
|
|
#define IA_ONLY_BAND 0x0003 /* only band (first and last) */
|
|
#define IA_FIRST_BAND 0x0001 /* first band of image */
|
|
#define IA_NEXT_BAND 0x0000 /* next band of image */
|
|
#define IA_LAST_BAND 0x0002 /* last band of image */
|
|
|
|
/*
|
|
* define ImageAccel extension error codes definitions
|
|
*/
|
|
|
|
#define IAEXT_NOT_IMAGEACCEL FALSE // not an ImageAccel display
|
|
#define IAEXT_OK TRUE // operation successful
|
|
#define IAEXT_BAD_PARAM -128 // invalid parameter (general)
|
|
#define IAEXT_BAD_COORDINATES -129 // invalid coordinates
|
|
#define IAEXT_BAD_SCALE_RATIO -130 // invalid scale ratio
|
|
#define IAEXT_BAD_RUN_DATA -131 // bad run length/end data
|
|
#define IAEXT_BAD_HDC -132 // invalid hDC
|
|
#define IAEXT_BAD_GLOBAL_ALLOC -133 // global memory allocation err
|
|
#define IAEXT_BAD_COMPRESSION -134 // invalid compression type
|
|
|
|
|
|
/*
|
|
* define ImageAccel extension parameter for OverScan
|
|
*/
|
|
|
|
#define OVERSCAN_ON 0x0002 // OverScan bit set in DISP_CTRL
|
|
#define OVERSCAN_OFF 0x0000 // OverScan bit reset in DISP_CTRL
|
|
|
|
/*
|
|
* define ImageAccel extension descriptors
|
|
*
|
|
* NOTE: The first entry in all of the structures must be:
|
|
*
|
|
* WORD nExtension;
|
|
*
|
|
* This describes the contents of the rest of the structure.
|
|
*/
|
|
|
|
typedef struct
|
|
{
|
|
WORD nExtension;
|
|
} IAEXTENSIONSTRUCT, FAR *LPIAEXTENSIONSTRUCT;
|
|
|
|
typedef struct
|
|
{
|
|
WORD nExtension;
|
|
WORD nFunction;
|
|
} QUERYIASUPPORTSTRUCT, FAR *LPQUERYIASUPPORTSTRUCT;
|
|
|
|
// SCALEIADATATODEVICESTRUCT, SCALEIADATATODEVICESTRUCT16, and
|
|
// SCALEIADATATODEVICESTRUCT32 must have identical members, except
|
|
// for ..16 and ..32 forcing the handles to be 16-bit and
|
|
// 32-bit respectively.
|
|
|
|
typedef struct
|
|
{
|
|
WORD nExtension;
|
|
HWND hWnd;
|
|
HDC hDC;
|
|
WORD DestX;
|
|
WORD DestY;
|
|
WORD nWidth;
|
|
WORD nHeight;
|
|
WORD SrcX;
|
|
WORD nStartScan;
|
|
WORD nNumScans;
|
|
LPWORD lpIAData;
|
|
WORD nImageWidth;
|
|
WORD nNVScale;
|
|
WORD nMVScale;
|
|
WORD nNHScale;
|
|
WORD nMHScale;
|
|
WORD nRotate;
|
|
LPBYTE lpTransforms;
|
|
WORD nCompression;
|
|
WORD wSkipDestX ;
|
|
WORD wSkipDestY ;
|
|
} SCALEIADATATODEVICESTRUCT, FAR *LPSCALEIADATATODEVICESTRUCT;
|
|
|
|
typedef struct
|
|
{
|
|
WORD nExtension;
|
|
WORD hWnd;
|
|
WORD hDC;
|
|
WORD DestX;
|
|
WORD DestY;
|
|
WORD nWidth;
|
|
WORD nHeight;
|
|
WORD SrcX;
|
|
WORD nStartScan;
|
|
WORD nNumScans;
|
|
LPWORD lpIAData;
|
|
WORD nImageWidth;
|
|
WORD nNVScale;
|
|
WORD nMVScale;
|
|
WORD nNHScale;
|
|
WORD nMHScale;
|
|
WORD nRotate;
|
|
LPBYTE lpTransforms;
|
|
WORD nCompression;
|
|
WORD wSkipDestX ;
|
|
WORD wSkipDestY ;
|
|
} SCALEIADATATODEVICESTRUCT16, FAR *LPSCALEIADATATODEVICESTRUCT16;
|
|
|
|
typedef struct
|
|
{
|
|
WORD nExtension;
|
|
DWORD hWnd;
|
|
DWORD hDC;
|
|
WORD DestX;
|
|
WORD DestY;
|
|
WORD nWidth;
|
|
WORD nHeight;
|
|
WORD SrcX;
|
|
WORD nStartScan;
|
|
WORD nNumScans;
|
|
LPWORD lpIAData;
|
|
WORD nImageWidth;
|
|
WORD nNVScale;
|
|
WORD nMVScale;
|
|
WORD nNHScale;
|
|
WORD nMHScale;
|
|
WORD nRotate;
|
|
LPBYTE lpTransforms;
|
|
WORD nCompression;
|
|
WORD wSkipDestX ;
|
|
WORD wSkipDestY ;
|
|
} SCALEIADATATODEVICESTRUCT32, FAR *LPSCALEIADATATODEVICESTRUCT32;
|
|
|
|
|
|
/*
|
|
* This typedef is used in the hotkey application
|
|
*/
|
|
|
|
typedef struct tagESCTODRVR
|
|
{
|
|
WORD Extension;
|
|
WORD Param1;
|
|
} ESCTODRVR, FAR *LPESCTODRVR;
|
|
|
|
typedef struct tagRETNFROMDRVR
|
|
{
|
|
BOOL UpdateIAINI;
|
|
BYTE RestoreViewPort;
|
|
} RETNFROMDRVR, FAR *LPRETNFROMDRVR;
|
|
|
|
|
|
/*
|
|
* ImageAccel driver string length equate
|
|
*/
|
|
|
|
#define IAVER_LEN 5
|
|
#define IABLD_LEN 3
|
|
#define IADATE_LEN 12
|
|
#define IAMONTYPE_LEN 3
|
|
#define IABOARDNAME_LEN 64
|
|
|
|
typedef struct tagIADRVINFO
|
|
{
|
|
char IAVersion[IAVER_LEN];
|
|
char IABuild[IABLD_LEN];
|
|
char IADate[IADATE_LEN];
|
|
char IAMonType[IAMONTYPE_LEN];
|
|
LPSTR lpBoardName;
|
|
} IADRVINFO, FAR *LPIADRVINFO;
|
|
|
|
|
|
#ifdef WIN32
|
|
typedef struct tagVIEWPORTINFO {
|
|
RECTL rclViewport; // Current Viewport
|
|
UINT minGraphMode; // Lowest number viewport mode for this desktop
|
|
UINT maxGraphMode; // Highest number viewports supported
|
|
UINT currentGraphMode; // Current Viewport code
|
|
// minGraphMode <= currentGraphMode <= maxGraphMode
|
|
UINT restoreGraphMode; // Resolution code when zoom-restore is pushed
|
|
BOOL bPanLock; // Lock mouse cursor into viewport?
|
|
} VIEWPORTINFO, FAR *LPVIEWPORTINFO;
|
|
|
|
#endif
|
|
|
|
// =========================================================================
|
|
// the GetIAInfo() API entry point fills .RomInfo with an
|
|
// image of the ImageAccel BIOS ROM header
|
|
//
|
|
// oemCode:
|
|
// bit 15 -- OEM_DISABLE_PIXTRAN
|
|
// bit 14 -- resv'd
|
|
// bit 13 -- resv'd
|
|
// bit 12 -- resv'd
|
|
// bit 11 -- resv'd
|
|
// bit 10 -- resv'd
|
|
// bit 9 -- resv'd
|
|
// bit 8 -- resv'd
|
|
// bit 7 -- resv'd
|
|
// bit 6 -- resv'd
|
|
// bit 5 -- resv'd
|
|
// bit 4 -- resv'd
|
|
// bit 3 -- resv'd
|
|
// bit 2 -- resv'd
|
|
// bit 1 -- resv'd
|
|
// bit 0 -- resv'd
|
|
// =========================================================================
|
|
#define OEM_DISABLE_PIXTRAN 0x
|
|
// NOTE: EXTROMINFO must match ROMINFO
|
|
typedef struct {
|
|
DWORD boardID;
|
|
WORD boardRev;
|
|
BYTE monitorCodeMask;
|
|
BYTE reserved1;
|
|
WORD tableVersion;
|
|
BYTE signature[10]; // 'ImageAccel'
|
|
WORD busType;
|
|
WORD paletteType;
|
|
WORD maxPlanes;
|
|
WORD horzSize; // Horizontal size in pixels (default)
|
|
WORD vertSize; // Vertical size in pixels (default)
|
|
BYTE name[64]; // name of controller board
|
|
WORD oemCode;
|
|
BYTE reserved2[32];
|
|
} EXTROMINFO, FAR * LPEXTROMINFO;
|
|
|
|
typedef struct tagGETIAINFO {
|
|
int nExtension ;
|
|
EXTROMINFO RomInfo ;
|
|
} GETIAINFOSTRUCT, FAR *LPGETIAINFOSTRUCT ;
|
|
// =========================================================================
|
|
|
|
typedef struct tagDITHERING
|
|
{
|
|
WORD nExtension;
|
|
BOOL b24BitsOn;
|
|
BOOL bPartialImage;
|
|
int xDstStart;
|
|
int yDstStart;
|
|
} DITHERING, FAR * LPDITHERING;
|
|
|
|
// *************************************************************
|
|
// congregrational driver function for toolkit
|
|
// *************************************************************
|
|
|
|
typedef struct {
|
|
WORD nExtension; // = TKT_DRV_FUNC
|
|
WORD nFunction;
|
|
} TKTDRVPARM, FAR * LPTKTDRVPARM;
|
|
|
|
#define EXT_GET_INFO 0x40 // if TKT_DRV_FUNC is supported
|
|
#define EXT_GET_GRAYMAP 0x41 // if TKT_DRV_FUNC is supported
|
|
#define EXT_SET_GRAYMAP 0x42 // if bGrayMap is programmable
|
|
#define EXT_SET_BEHAVIOR 0x43 // if bScaleToGray != 0
|
|
|
|
typedef struct {
|
|
WORD nExtension; // = TKT_DRV_FUNC
|
|
WORD nFunction; // = EXT_GET_INFO
|
|
char bDriverType; // 16bits/others, IA1/IA2
|
|
char bDriverEnv; // WIN31/WINNT/WIN95/OS2
|
|
char bBusType; // ISA, MCA, PCI
|
|
char bPixType; // 8 or 24
|
|
char bPixPlanes; // 4, 5? or 8
|
|
char cExactScaling; // ends/lens/bits
|
|
char bGrayMap; // programmable/fixed, # of grays
|
|
char bDithering; // # of dithering colors
|
|
WORD nScaleToGray; // stg driver behavior
|
|
WORD nReserved; // padding
|
|
} EXTINFO, FAR * LPEXTINFO;
|
|
|
|
// defs for bDriverType:
|
|
#define EXT_DRV_IA1 0
|
|
#define EXT_DRV_IA2 1
|
|
|
|
// defs for bDriverEnv:
|
|
#define EXT_DRV_32BITS 0x80 // 32-bits driver
|
|
#define EXT_DRV_31 0x00
|
|
#define EXT_DRV_NT 0x10
|
|
#define EXT_DRV_95 0x20
|
|
#define EXT_DRV_OS2 0x30
|
|
#define EXT_DRV_WARP 0x40
|
|
|
|
// defs for bPixType:
|
|
#define EXT_PIX_FIXPAL 0x80
|
|
#define EXT_PIX_BPP_MASK 0x7F
|
|
|
|
// defs for bBusType:
|
|
#define EXT_BUS_UNKNOWN 0x80 // unknown bus
|
|
#define EXT_BUS_ISA 0
|
|
#define EXT_BUS_MCA 1
|
|
#define EXT_BUS_PCI 2
|
|
|
|
// defs for bExactScaling:
|
|
#define EXT_EXACT_SCALING 0x80 // exact scaling is supported
|
|
#define EXT_EXACT_LENS 1 // run-length
|
|
#define EXT_EXACT_ENDS 2 // run-ends
|
|
#define EXT_EXACT_BITS 4 // 1-bpp bitmap
|
|
#define EXT_EXACT_BITS2 8 // byte-aligned 1-bpp bitmap
|
|
#define EXT_EXACT_ALL 15 // all format
|
|
|
|
// defs for bGrayMap:
|
|
#define EXT_GRAY_EDIT 0x80 // gray indice map is programmable
|
|
#define EXT_GRAY_MASK 0x7F
|
|
|
|
// defs for nScaleToGray:
|
|
#define EXT_STG_SKIPWHITE 1 // stg driver skip white behavior
|
|
#define EXT_STG_BANDING 2 // stg driver banding behavior
|
|
#define EXT_STG_GETCLIP 4 // stg driver clipping behavior
|
|
|
|
typedef struct {
|
|
WORD nExtension; // = TKT_DRV_FUNC
|
|
WORD nFunction; // = EXT_GET_GRAYMAP or EXT_SET_GRAYMAP
|
|
BYTE bGrayMap[16];
|
|
} EXTGRAYMAP, FAR * LPEXTGRAYMAP;
|
|
|
|
typedef struct {
|
|
WORD nExtension; // = TKT_DRV_FUNC
|
|
WORD nFunction; // = EXT_SET_BEHAVIOR
|
|
WORD nScaleToGray;
|
|
} EXTBEHAVIOR, FAR * LPEXTBEHAVIOR;
|
|
|