1 #ifndef _W32K_DIB_DIB_H
2 #define _W32K_DIB_DIB_H
5 #define memset4(dest, value, count) asm volatile("rep stosl" : : "D"(dest), "a"(value), "c"(count) : "memory");
8 #define ROP4_BLACKNESS ((((0x00000042) >> 8) & 0xff00) | (((0x00000042) >> 16) & 0x00ff))
9 #define ROP4_NOTSRCERASE ((((0x001100A6) >> 8) & 0xff00) | (((0x001100A6) >> 16) & 0x00ff))
10 #define ROP4_NOTSRCCOPY ((((0x00330008) >> 8) & 0xff00) | (((0x00330008) >> 16) & 0x00ff))
11 #define ROP4_SRCERASE ((((0x00440328) >> 8) & 0xff00) | (((0x00440328) >> 16) & 0x00ff))
12 #define ROP4_DSTINVERT ((((0x00550009) >> 8) & 0xff00) | (((0x00550009) >> 16) & 0x00ff))
13 #define ROP4_PATINVERT ((((0x005A0049) >> 8) & 0xff00) | (((0x005A0049) >> 16) & 0x00ff))
14 #define ROP4_SRCINVERT ((((0x00660046) >> 8) & 0xff00) | (((0x00660046) >> 16) & 0x00ff))
15 #define ROP4_SRCAND ((((0x008800C6) >> 8) & 0xff00) | (((0x008800C6) >> 16) & 0x00ff))
16 #define ROP4_MERGEPAINT ((((0x00BB0226) >> 8) & 0xff00) | (((0x00BB0226) >> 16) & 0x00ff))
17 #define ROP4_MERGECOPY ((((0x00C000CA) >> 8) & 0xff00) | (((0x00C000CA) >> 16) & 0x00ff))
18 #define ROP4_SRCCOPY ((((0x00CC0020) >> 8) & 0xff00) | (((0x00CC0020) >> 16) & 0x00ff))
19 #define ROP4_SRCPAINT ((((0x00EE0086) >> 8) & 0xff00) | (((0x00EE0086) >> 16) & 0x00ff))
20 #define ROP4_PATCOPY ((((0x00F00021) >> 8) & 0xff00) | (((0x00F00021) >> 16) & 0x00ff))
21 #define ROP4_PATPAINT ((((0x00FB0A09) >> 8) & 0xff00) | (((0x00FB0A09) >> 16) & 0x00ff))
22 #define ROP4_WHITENESS ((((0x00FF0062) >> 8) & 0xff00) | (((0x00FF0062) >> 16) & 0x00ff))
25 typedef struct _BLTINFO
28 SURFOBJ
*SourceSurface
;
29 SURFOBJ
*PatternSurface
;
30 XLATEOBJ
*XlateSourceToDest
;
31 XLATEOBJ
*XlatePatternToDest
;
39 typedef VOID (*PFN_DIB_PutPixel
)(SURFOBJ
*,LONG
,LONG
,ULONG
);
40 typedef ULONG (*PFN_DIB_GetPixel
)(SURFOBJ
*,LONG
,LONG
);
41 typedef VOID (*PFN_DIB_HLine
)(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
42 typedef VOID (*PFN_DIB_VLine
)(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
43 typedef BOOLEAN (*PFN_DIB_BitBlt
)(PBLTINFO
);
44 typedef BOOLEAN (*PFN_DIB_StretchBlt
)(SURFOBJ
*,SURFOBJ
*,SURFOBJ
*,RECTL
*,RECTL
*,POINTL
*,BRUSHOBJ
*,POINTL
*,XLATEOBJ
*,XLATEOBJ
*,ROP4
);
45 typedef BOOLEAN (*PFN_DIB_TransparentBlt
)(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
46 typedef BOOLEAN (*PFN_DIB_ColorFill
)(SURFOBJ
*, RECTL
*, ULONG
);
47 typedef BOOLEAN (*PFN_DIB_AlphaBlend
)(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
51 PFN_DIB_PutPixel DIB_PutPixel
;
52 PFN_DIB_GetPixel DIB_GetPixel
;
53 PFN_DIB_HLine DIB_HLine
;
54 PFN_DIB_VLine DIB_VLine
;
55 PFN_DIB_BitBlt DIB_BitBlt
;
56 PFN_DIB_BitBlt DIB_BitBltSrcCopy
;
57 PFN_DIB_StretchBlt DIB_StretchBlt
;
58 PFN_DIB_TransparentBlt DIB_TransparentBlt
;
59 PFN_DIB_ColorFill DIB_ColorFill
;
60 PFN_DIB_AlphaBlend DIB_AlphaBlend
;
63 extern DIB_FUNCTIONS DibFunctionsForBitmapFormat
[];
65 VOID
Dummy_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
66 ULONG
Dummy_GetPixel(SURFOBJ
*,LONG
,LONG
);
67 VOID
Dummy_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
68 VOID
Dummy_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
69 BOOLEAN
Dummy_BitBlt(PBLTINFO
);
70 BOOLEAN
Dummy_StretchBlt(SURFOBJ
*,SURFOBJ
*,SURFOBJ
*,RECTL
*,RECTL
*,POINTL
*,BRUSHOBJ
*,POINTL
*,XLATEOBJ
*,XLATEOBJ
*,ROP4
);
71 BOOLEAN
Dummy_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
72 BOOLEAN
Dummy_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
73 BOOLEAN
Dummy_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
75 VOID
DIB_1BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
76 ULONG
DIB_1BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
77 VOID
DIB_1BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
78 VOID
DIB_1BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
79 BOOLEAN
DIB_1BPP_BitBlt(PBLTINFO
);
80 BOOLEAN
DIB_1BPP_BitBltSrcCopy(PBLTINFO
);
81 BOOLEAN
DIB_1BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
82 BOOLEAN
DIB_1BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
83 BOOLEAN
DIB_1BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
85 VOID
DIB_4BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
86 ULONG
DIB_4BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
87 VOID
DIB_4BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
88 VOID
DIB_4BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
89 BOOLEAN
DIB_4BPP_BitBlt(PBLTINFO
);
90 BOOLEAN
DIB_4BPP_BitBltSrcCopy(PBLTINFO
);
91 BOOLEAN
DIB_4BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
92 BOOLEAN
DIB_4BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
93 BOOLEAN
DIB_4BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
95 VOID
DIB_8BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
96 ULONG
DIB_8BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
97 VOID
DIB_8BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
98 VOID
DIB_8BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
99 BOOLEAN
DIB_8BPP_BitBlt(PBLTINFO
);
100 BOOLEAN
DIB_8BPP_BitBltSrcCopy(PBLTINFO
);
101 BOOLEAN
DIB_8BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
102 BOOLEAN
DIB_8BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
103 BOOLEAN
DIB_8BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
105 VOID
DIB_16BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
106 ULONG
DIB_16BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
107 VOID
DIB_16BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
108 VOID
DIB_16BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
109 BOOLEAN
DIB_16BPP_BitBlt(PBLTINFO
);
110 BOOLEAN
DIB_16BPP_BitBltSrcCopy(PBLTINFO
);
111 BOOLEAN
DIB_16BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
112 BOOLEAN
DIB_16BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
113 BOOLEAN
DIB_16BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
115 VOID
DIB_24BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
116 ULONG
DIB_24BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
117 VOID
DIB_24BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
118 VOID
DIB_24BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
119 BOOLEAN
DIB_24BPP_BitBlt(PBLTINFO
);
120 BOOLEAN
DIB_24BPP_BitBltSrcCopy(PBLTINFO
);
121 BOOLEAN
DIB_24BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
122 BOOLEAN
DIB_24BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
123 BOOLEAN
DIB_24BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
125 VOID
DIB_32BPP_PutPixel(SURFOBJ
*,LONG
,LONG
,ULONG
);
126 ULONG
DIB_32BPP_GetPixel(SURFOBJ
*,LONG
,LONG
);
127 VOID
DIB_32BPP_HLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
128 VOID
DIB_32BPP_VLine(SURFOBJ
*,LONG
,LONG
,LONG
,ULONG
);
129 BOOLEAN
DIB_32BPP_BitBlt(PBLTINFO
);
130 BOOLEAN
DIB_32BPP_BitBltSrcCopy(PBLTINFO
);
131 BOOLEAN
DIB_32BPP_TransparentBlt(SURFOBJ
*,SURFOBJ
*,RECTL
*,POINTL
*,XLATEOBJ
*,ULONG
);
132 BOOLEAN
DIB_32BPP_ColorFill(SURFOBJ
*, RECTL
*, ULONG
);
133 BOOLEAN
DIB_32BPP_AlphaBlend(SURFOBJ
*, SURFOBJ
*, RECTL
*, RECTL
*, CLIPOBJ
*, XLATEOBJ
*, BLENDOBJ
*);
135 BOOLEAN
DIB_XXBPP_StretchBlt(SURFOBJ
*,SURFOBJ
*,SURFOBJ
*,RECTL
*,RECTL
*,POINTL
*,BRUSHOBJ
*,POINTL
*,XLATEOBJ
*,XLATEOBJ
*,ROP4
);
137 extern unsigned char notmask
[2];
138 extern unsigned char altnotmask
[2];
139 #define MASK1BPP(x) (1<<(7-((x)&7)))
141 ULONG
DIB_DoRop(ULONG Rop
, ULONG Dest
, ULONG Source
, ULONG Pattern
);
143 #define DIB_GetSource(SourceSurf,sx,sy,ColorTranslation) \
144 XLATEOBJ_iXlate(ColorTranslation, \
145 DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat]. \
146 DIB_GetPixel(SourceSurf, sx, sy))
148 #define DIB_GetSourceIndex(SourceSurf,sx,sy) \
149 DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat]. \
150 DIB_GetPixel(SourceSurf, sx, sy)
152 #endif /* _W32K_DIB_DIB_H */