
#include "RopFunctions.h"

typedef struct
{
    ULONG iFormat;
    PBYTE pvScan0;
    PBYTE pjBase;
    LONG lDelta;
    LONG cjAdvanceY;
    POINTL ptOrig;
    BYTE jBpp;
} SURFINFO;

typedef struct
{
    SURFINFO siSrc;
    SURFINFO siDst;
    SURFINFO siPat;
    SURFINFO siMsk;

    ULONG ulWidth;
    ULONG ulHeight;
    ULONG ulPatWidth;
    ULONG ulPatHeight;
    XLATEOBJ *pxlo;
    PFN_XLATE pfnXlate;
    ULONG rop4;
    PFN_DOROP apfnDoRop[2];
    ULONG ulSolidColor;
    LONG dy;
} BLTDATA, *PBLTDATA;

typedef
VOID
(FASTCALL
*PFN_DIBFUNCTION)(PBLTDATA pBltData);

VOID FASTCALL Dib_BitBlt_NOOP(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SOLIDFILL(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_BLACKNESS(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_WHITENESS(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_PATCOPY(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_NOTPATCOPY(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_DSTINVERT(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SRCCOPY(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_NOTSRCCOPY(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SRCERASE(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_NOTSRCERASE(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_PATINVERT(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SRCINVERT(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SRCAND(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_MERGEPAINT(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_MERGECOPY(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_SRCPAINT(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt_PATPAINT(PBLTDATA pBltData);
VOID FASTCALL Dib_SrcPatBlt(PBLTDATA pBltData);
VOID FASTCALL Dib_PatPaint(PBLTDATA pBltData);
VOID FASTCALL Dib_SrcPaint(PBLTDATA pBltData);
VOID FASTCALL Dib_BitBlt(PBLTDATA pBltData);

VOID FASTCALL Dib_MaskCopy(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskPatBlt(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskSrcBlt(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskSrcPatBlt(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskPaint(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskPatPaint(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskSrcPaint(PBLTDATA pBltData);
VOID FASTCALL Dib_MaskBlt(PBLTDATA pBltData);

extern const UCHAR gajIndexPerRop[256];
extern const PFN_DIBFUNCTION gapfnDibFunction[];
extern const PFN_DIBFUNCTION gapfnMaskFunction[8];


