/**************************************************************************
***************************************************************************
*
*     Copyright (c) 1996, Cirrus Logic, Inc.
*                 All Rights Reserved
*
* FILE:         bltP.h
*
* DESCRIPTION:  Private declarations for DDraw blt code
*
* REVISION HISTORY:
*
* $Log:   X:\log\laguna\ddraw\inc\bltp.h  $
* 
*    Rev 1.11   06 Jan 1998 14:19:44   xcong
* Access pDriverData locally for multi-monitor support.
* 
*    Rev 1.10   03 Oct 1997 14:25:34   RUSSL
* Removed some defines
*
*    Rev 1.9   03 Oct 1997 14:15:58   RUSSL
* Initial changes for use of hw clipped blts
* All changes wrapped in #if ENABLE_CLIPPEDBLTS/#endif blocks and
* ENABLE_CLIPPEDBLTS defaults to 0 (so the code is disabled)
*
*    Rev 1.8   24 Jul 1997 10:02:00   RUSSL
* Added some defines
*
*    Rev 1.7   14 Jul 1997 14:47:28   RUSSL
* Added function prototypes for DIR_DrvStrBlt65 and DL_DrvStrBlt65
*
*    Rev 1.6   03 Apr 1997 15:03:08   RUSSL
* Added PFN_DRVDSTMBLT typedef, global var decl, DIR_DrvDstMBlt and
* DL_DrvDstMBlt function prototypes
*
*    Rev 1.5   26 Mar 1997 13:52:06   RUSSL
* Added PFN_DRVSRCMBLT typedef, global var decl, DIR_DrvSrcMBlt and
* DL_DrvSrcMBlt function prototypes
*
*    Rev 1.4   20 Jan 1997 14:46:40   bennyn
* Moved inline code to ddinline.h
*
*    Rev 1.3   15 Jan 1997 11:06:54   RUSSL
* Added global function ptr vars for Win95
* Moved inline functions from ddblt.c: DupColor, EnoughFifoForBlt & DupZFill
* Added function prototypes for TransparentStretch & StretchColor
*
*    Rev 1.2   05 Dec 1996 08:48:24   SueS
* Added real DD_LOG define for NT.
*
*    Rev 1.1   25 Nov 1996 16:12:42   bennyn
* Added #define DD_LOG for NT
*
*    Rev 1.0   25 Nov 1996 15:04:34   RUSSL
* Initial revision.
*
*    Rev 1.1   01 Nov 1996 13:01:42   RUSSL
* Merge WIN95 & WINNT code for Blt32
*
*    Rev 1.0   01 Nov 1996 09:28:16   BENNYN
* Initial revision.
*
*    Rev 1.0   25 Oct 1996 10:47:50   RUSSL
* Initial revision.
*
***************************************************************************
***************************************************************************/
// If WinNT 3.5 skip all the source code
#if defined WINNT_VER35      // WINNT_VER35

#else


#ifndef _BLTP_H_
#define _BLTP_H_

/***************************************************************************
* D E F I N E S
****************************************************************************/

#ifndef ENABLE_CLIPPEDBLTS
#ifdef WINNT_VER40
#define ENABLE_CLIPPEDBLTS    0
#else // Win95
#define ENABLE_CLIPPEDBLTS    0
#endif
#endif

#define ROP_OP0_copy    0xAA
#define ROP_OP1_copy    0xCC
#define ROP_OP2_copy    0xF0

#ifdef DEBUG
#define INLINE
#else
#define INLINE  __inline
#endif

/***************************************************************************
* T Y P E D E F S
****************************************************************************/

#ifdef WINNT_VER40
   // Note: there's no if LOG_CALLS here because it's not defined yet
   #define DD_LOG(x)      \
   {                      \
      DDFormatLogFile x ; \
      WriteLogFile(ppdev->pmfile, lg_buf, lg_i, ppdev->TxtBuff, &ppdev->TxtBuffIndex);	\
   }

typedef void (*PFN_DELAY9BLT)(struct _PDEV*,struct _DRIVERDATA*,BOOL);
typedef void (*PFN_EDGEFILLBLT)(struct _PDEV*,struct _DRIVERDATA*,int,int,int,int,DWORD,BOOL);
typedef void (*PFN_MEDGEFILLBLT)(struct _PDEV*,struct _DRIVERDATA*,int,int,int,int,DWORD,BOOL);
typedef void (*PFN_DRVDSTBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVDSTMBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSRCBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSRCMBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSTRBLT)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);
typedef void (*PFN_DRVSTRMBLT)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);
typedef void (*PFN_DRVSTRMBLTY)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);
typedef void (*PFN_DRVSTRMBLTX)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);
typedef void (*PFN_DRVSTRBLTY)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);
typedef void (*PFN_DRVSTRBLTX)(struct _PDEV*,struct _DRIVERDATA*,struct _autoblt_regs*);

#if ENABLE_CLIPPEDBLTS
typedef void (*PFN_CLIPPEDDRVDSTBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
typedef void (*PFN_CLIPPEDDRVDSTMBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
typedef void (*PFN_CLIPPEDDRVSRCBLT)(struct _PDEV*,struct _DRIVERDATA*,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
#endif

#else
typedef void (*PFN_DELAY9BLT)(LPGLOBALDATA,BOOL);
typedef void (*PFN_EDGEFILLBLT)(LPGLOBALDATA,ULONG,ULONG,ULONG,ULONG,DWORD,BOOL);
typedef void (*PFN_MEDGEFILLBLT)(LPGLOBALDATA,ULONG,ULONG,ULONG,ULONG,DWORD,BOOL);
typedef void (*PFN_DRVDSTBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVDSTMBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSRCBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSRCMBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD);
typedef void (*PFN_DRVSTRBLT)(LPGLOBALDATA,autoblt_ptr);
typedef void (*PFN_DRVSTRMBLT)(LPGLOBALDATA,autoblt_ptr);
typedef void (*PFN_DRVSTRMBLTY)(LPGLOBALDATA,autoblt_ptr);
typedef void (*PFN_DRVSTRMBLTX)(LPGLOBALDATA,autoblt_ptr);
typedef void (*PFN_DRVSTRBLTY)(LPGLOBALDATA,autoblt_ptr);
typedef void (*PFN_DRVSTRBLTX)(LPGLOBALDATA,autoblt_ptr);

#if ENABLE_CLIPPEDBLTS
typedef void (*PFN_CLIPPEDDRVDSTBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
typedef void (*PFN_CLIPPEDDRVDSTMBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
typedef void (*PFN_CLIPPEDDRVSRCBLT)(LPGLOBALDATA,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPRECT);
#endif

#endif  // !WINNT_VER40

#if ENABLE_CLIPPEDBLTS
typedef struct _DDRECTL
{
  REG32   loc;
  REG32   ext;
} DDRECTL;
#endif

/***************************************************************************
* G L O B A L   V A R I A B L E S
****************************************************************************/

#ifndef WINNT_VER40

extern PFN_DELAY9BLT    pfnDelay9BitBlt;
extern PFN_EDGEFILLBLT  pfnEdgeFillBlt;
extern PFN_MEDGEFILLBLT pfnMEdgeFillBlt;
extern PFN_DRVDSTBLT    pfnDrvDstBlt;
extern PFN_DRVDSTMBLT   pfnDrvDstMBlt;
extern PFN_DRVSRCBLT    pfnDrvSrcBlt;
extern PFN_DRVSRCMBLT   pfnDrvSrcMBlt;
extern PFN_DRVSTRBLT    pfnDrvStrBlt;
extern PFN_DRVSTRMBLT   pfnDrvStrMBlt;
extern PFN_DRVSTRMBLTY  pfnDrvStrMBltY;
extern PFN_DRVSTRMBLTX  pfnDrvStrMBltX;
extern PFN_DRVSTRBLTY   pfnDrvStrBltY;
extern PFN_DRVSTRBLTX   pfnDrvStrBltX;

#if ENABLE_CLIPPEDBLTS
extern PFN_CLIPPEDDRVDSTBLT   pfnClippedDrvDstBlt;
extern PFN_CLIPPEDDRVDSTMBLT  pfnClippedDrvDstMBlt;
extern PFN_CLIPPEDDRVSRCBLT   pfnClippedDrvSrcBlt;
#endif

#endif

/***************************************************************************
* F U N C T I O N   P R O T O T Y P E S
****************************************************************************/

// functions in ddblt.c
extern void TransparentStretch
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA lpDDHALData,
#endif
  int   xDst,
  int   yDst,
  int   cxDst,
  int   cyDst,
  int   xSrc,
  int   ySrc,
  int   cxSrc,
  int   cySrc,
  DWORD ColorKey
);

extern void StretchColor
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA lpDDHALData,
#endif
  int   xDst,
  int   yDst,
  int   cxDst,
  int   cyDst,
  int   xSrc,
  int   ySrc,
  int   cxSrc,
  int   cySrc,
  DWORD ColorKey
);

// Direct Programming blts in blt_dir.c
extern void DIR_Delay9BitBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  BOOL        ninebit_on
);

extern void DIR_EdgeFillBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  int         xFill,
  int         yFill,
  int         cxFill,
  int         cyFill,
  DWORD       FillValue,
  BOOL        ninebit_on
);

extern void DIR_MEdgeFillBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  int         xFill,
  int         yFill,
  int         cxFill,
  int         cyFill,
  DWORD       FillValue,
  BOOL        ninebit_on
);

extern void DIR_DrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents
);

extern void DIR_DrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents
);

extern void DIR_DrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents
);

extern void DIR_DrvSrcMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents
);

extern void DIR_DrvStrBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrBlt65
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrMBltY
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrMBltX
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrBltY
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DIR_DrvStrBltX
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

#if ENABLE_CLIPPEDBLTS
extern void DIR_HWClippedDrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DIR_HWClippedDrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DIR_HWClippedDrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwSrcBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);
extern void DIR_SWClippedDrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DIR_SWClippedDrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DIR_SWClippedDrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwSrcBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);
#endif

// Display List Programming blts in blt_dl.c
extern void DL_Delay9BitBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  BOOL        ninebit_on
);

extern void DL_EdgeFillBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  int         xFill,
  int         yFill,
  int         cxFill,
  int         cyFill,
  DWORD       FillValue,
  BOOL        ninebit_on
);

extern void DL_MEdgeFillBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  int         xFill,
  int         yFill,
  int         cxFill,
  int         cyFill,
  DWORD       FillValue,
  BOOL        ninebit_on
);

extern void DL_DrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents
);

extern void DL_DrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents
);

extern void DL_DrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents
);

extern void DL_DrvSrcMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents
);

extern void DL_DrvStrBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrBlt65
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrMBltY
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrMBltX
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrBltY
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

extern void DL_DrvStrBltX
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
  struct _autoblt_regs *pblt
#else
  LPGLOBALDATA  lpDDHALData,
  autoblt_ptr pblt
#endif
);

#if ENABLE_CLIPPEDBLTS
extern void DL_HWClippedDrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DL_HWClippedDrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DL_HWClippedDrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwSrcBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);
extern void DL_SWClippedDrvDstBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DL_SWClippedDrvDstMBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwBgColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);

extern void DL_SWClippedDrvSrcBlt
(
#ifdef WINNT_VER40
  struct _PDEV        *ppdev,
  struct _DRIVERDATA  *lpDDHALData,
#else
  LPGLOBALDATA  lpDDHALData,
#endif
  DWORD       dwDrawBlt,
  DWORD       dwDstCoord,
  DWORD       dwSrcCoord,
  DWORD       dwKeyCoord,
  DWORD       dwKeyColor,
  DWORD       dwExtents,
  DWORD       dwDstBaseXY,
  DWORD       dwSrcBaseXY,
  DWORD       dwRectCnt,
  LPRECT      pDestRects
);
#endif

#endif /* _BLTP_H_ */
#endif // WINNT_VER35
/* Don't write below this endif */