2 * DIB Engine Primitives function pointers
4 * Copyright 2009 Massimo Del Fedele
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
22 #include "wine/port.h"
26 WINE_DEFAULT_DEBUG_CHANNEL(dibdrv
);
28 /* ------------------------------------------------------------*/
30 DWORD
_DIBDRV_ColorToPixel32_RGB (const DIBDRVBITMAP
*dib
, COLORREF color
);
31 DWORD
_DIBDRV_ColorToPixel32_BITFIELDS(const DIBDRVBITMAP
*dib
, COLORREF color
);
32 DWORD
_DIBDRV_ColorToPixel24 (const DIBDRVBITMAP
*dib
, COLORREF color
);
33 DWORD
_DIBDRV_ColorToPixel16_RGB (const DIBDRVBITMAP
*dib
, COLORREF color
);
34 DWORD
_DIBDRV_ColorToPixel16_BITFIELDS(const DIBDRVBITMAP
*dib
, COLORREF color
);
35 DWORD
_DIBDRV_ColorToPixelColortable (const DIBDRVBITMAP
*dib
, COLORREF color
);
37 /* ------------------------------------------------------------*/
38 /* PIXEL POINTER READING */
39 void *_DIBDRV_GetPixelPointer32(const DIBDRVBITMAP
*dib
, int x
, int y
);
40 void *_DIBDRV_GetPixelPointer24(const DIBDRVBITMAP
*dib
, int x
, int y
);
41 void *_DIBDRV_GetPixelPointer16(const DIBDRVBITMAP
*dib
, int x
, int y
);
42 void *_DIBDRV_GetPixelPointer8 (const DIBDRVBITMAP
*dib
, int x
, int y
);
43 void *_DIBDRV_GetPixelPointer4 (const DIBDRVBITMAP
*dib
, int x
, int y
);
44 void *_DIBDRV_GetPixelPointer1 (const DIBDRVBITMAP
*dib
, int x
, int y
);
46 /* ------------------------------------------------------------*/
48 void _DIBDRV_SetPixel32(DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
49 void _DIBDRV_SetPixel24(DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
50 void _DIBDRV_SetPixel16(DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
51 void _DIBDRV_SetPixel8 (DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
52 void _DIBDRV_SetPixel4 (DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
53 void _DIBDRV_SetPixel1 (DIBDRVBITMAP
*dib
, int x
, int y
, DWORD
and, DWORD
xor);
55 /* ------------------------------------------------------------*/
57 DWORD
_DIBDRV_GetPixel32_RGB (const DIBDRVBITMAP
*dib
, int x
, int y
);
58 DWORD
_DIBDRV_GetPixel32_BITFIELDS(const DIBDRVBITMAP
*dib
, int x
, int y
);
59 DWORD
_DIBDRV_GetPixel24 (const DIBDRVBITMAP
*dib
, int x
, int y
);
60 DWORD
_DIBDRV_GetPixel16_RGB (const DIBDRVBITMAP
*dib
, int x
, int y
);
61 DWORD
_DIBDRV_GetPixel16_BITFIELDS(const DIBDRVBITMAP
*dib
, int x
, int y
);
62 DWORD
_DIBDRV_GetPixel8 (const DIBDRVBITMAP
*dib
, int x
, int y
);
63 DWORD
_DIBDRV_GetPixel4 (const DIBDRVBITMAP
*dib
, int x
, int y
);
64 DWORD
_DIBDRV_GetPixel1 (const DIBDRVBITMAP
*dib
, int x
, int y
);
66 /* ------------------------------------------------------------*/
67 /* HORIZONTAL SOLID LINES */
68 void _DIBDRV_SolidHLine32(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
69 void _DIBDRV_SolidHLine24(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
70 void _DIBDRV_SolidHLine16(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
71 void _DIBDRV_SolidHLine8 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
72 void _DIBDRV_SolidHLine4 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
73 void _DIBDRV_SolidHLine1 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, DWORD
and, DWORD
xor);
75 /* ------------------------------------------------------------*/
76 /* HORIZONTAL PATTERN LINES */
77 void _DIBDRV_PatternHLine32(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
78 void _DIBDRV_PatternHLine24(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
79 void _DIBDRV_PatternHLine16(DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
80 void _DIBDRV_PatternHLine8 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
81 void _DIBDRV_PatternHLine4 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
82 void _DIBDRV_PatternHLine1 (DIBDRVBITMAP
*dib
, int start
, int end
, int row
, const void *and, const void *xor, DWORD count
, DWORD offset
);
84 /* ------------------------------------------------------------*/
86 void _DIBDRV_SolidVLine32(DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
87 void _DIBDRV_SolidVLine24(DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
88 void _DIBDRV_SolidVLine16(DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
89 void _DIBDRV_SolidVLine8 (DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
90 void _DIBDRV_SolidVLine4 (DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
91 void _DIBDRV_SolidVLine1 (DIBDRVBITMAP
*dib
, int col
, int start
, int end
, DWORD
and, DWORD
xor);
93 /* ----------------------------------------------------------------*/
94 /* CONVERT PRIMITIVES */
95 /* converts (part of) line of any DIB format from/to DIB32_RGB one */
96 BOOL
_DIBDRV_GetLine32_RGB (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
97 BOOL
_DIBDRV_GetLine32_BITFIELDS(const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
98 BOOL
_DIBDRV_GetLine24 (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
99 BOOL
_DIBDRV_GetLine16_RGB (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
100 BOOL
_DIBDRV_GetLine16_BITFIELDS(const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
101 BOOL
_DIBDRV_GetLine8 (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
102 BOOL
_DIBDRV_GetLine4 (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
103 BOOL
_DIBDRV_GetLine1 (const DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
105 BOOL
_DIBDRV_PutLine32_RGB (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
106 BOOL
_DIBDRV_PutLine32_BITFIELDS(DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
107 BOOL
_DIBDRV_PutLine24 (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
108 BOOL
_DIBDRV_PutLine16_RGB (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
109 BOOL
_DIBDRV_PutLine16_BITFIELDS(DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
110 BOOL
_DIBDRV_PutLine8 (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
111 BOOL
_DIBDRV_PutLine4 (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
112 BOOL
_DIBDRV_PutLine1 (DIBDRVBITMAP
*bmp
, INT line
, INT startx
, int width
, void *buf
);
114 /* ------------------------------------------------------------*/
115 /* BLITTING PRIMITIVES */
116 BOOL
_DIBDRV_BitBlt_generic(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
117 INT width
, INT height
, const DIBDRVPHYSDEV
*physDevSrc
,
118 INT xSrc
, INT ySrc
, DWORD rop
);
119 BOOL
_DIBDRV_BitBlt_32(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
120 INT width
, INT height
, const DIBDRVPHYSDEV
*physDevSrc
,
121 INT xSrc
, INT ySrc
, DWORD rop
);
122 BOOL
_DIBDRV_BitBlt_24(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
123 INT width
, INT height
, const DIBDRVPHYSDEV
*physDevSrc
,
124 INT xSrc
, INT ySrc
, DWORD rop
);
125 BOOL
_DIBDRV_BitBlt_16(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
126 INT width
, INT height
, const DIBDRVPHYSDEV
*physDevSrc
,
127 INT xSrc
, INT ySrc
, DWORD rop
);
128 BOOL
_DIBDRV_BitBlt_8(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
129 INT width
, INT height
, const DIBDRVPHYSDEV
*physDevSrc
,
130 INT xSrc
, INT ySrc
, DWORD rop
);
132 BOOL
_DIBDRV_StretchBlt_generic(DIBDRVPHYSDEV
*physDevDst
, INT xDst
, INT yDst
,
133 INT widthDst
, INT heightDst
, const DIBDRVPHYSDEV
*physDevSrc
,
134 INT xSrc
, INT ySrc
, int widthSrc
, int heightSrc
, DWORD rop
);
136 /* ------------------------------------------------------------*/
137 /* FREETYPE FONT BITMAP BLITTING */
138 void _DIBDRV_freetype_blit_8888 (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
139 void _DIBDRV_freetype_blit_32_RGB (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
140 void _DIBDRV_freetype_blit_32_BITFIELDS(DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
141 void _DIBDRV_freetype_blit_24 (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
142 void _DIBDRV_freetype_blit_16_RGB (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
143 void _DIBDRV_freetype_blit_16_BITFIELDS(DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
144 void _DIBDRV_freetype_blit_8 (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
145 void _DIBDRV_freetype_blit_4 (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
146 void _DIBDRV_freetype_blit_1 (DIBDRVPHYSDEV
*dib
, int x
, int y
, FT_Bitmap
*bmp
);
148 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB32_RGB
=
150 _DIBDRV_ColorToPixel32_RGB
,
151 _DIBDRV_GetPixelPointer32
,
153 _DIBDRV_GetPixel32_RGB
,
154 _DIBDRV_SolidHLine32
,
155 _DIBDRV_PatternHLine32
,
156 _DIBDRV_SolidVLine32
,
157 _DIBDRV_GetLine32_RGB
,
158 _DIBDRV_PutLine32_RGB
,
159 _DIBDRV_BitBlt_generic
,
160 _DIBDRV_StretchBlt_generic
,
161 _DIBDRV_freetype_blit_32_RGB
164 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB32_BITFIELDS
=
166 _DIBDRV_ColorToPixel32_BITFIELDS
,
167 _DIBDRV_GetPixelPointer32
,
169 _DIBDRV_GetPixel32_BITFIELDS
,
170 _DIBDRV_SolidHLine32
,
171 _DIBDRV_PatternHLine32
,
172 _DIBDRV_SolidVLine32
,
173 _DIBDRV_GetLine32_BITFIELDS
,
174 _DIBDRV_PutLine32_BITFIELDS
,
175 _DIBDRV_BitBlt_generic
,
176 _DIBDRV_StretchBlt_generic
,
177 _DIBDRV_freetype_blit_32_BITFIELDS
180 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB24
=
182 _DIBDRV_ColorToPixel24
,
183 _DIBDRV_GetPixelPointer24
,
186 _DIBDRV_SolidHLine24
,
187 _DIBDRV_PatternHLine24
,
188 _DIBDRV_SolidVLine24
,
191 _DIBDRV_BitBlt_generic
,
192 _DIBDRV_StretchBlt_generic
,
193 _DIBDRV_freetype_blit_24
196 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB16_RGB
=
198 _DIBDRV_ColorToPixel16_RGB
,
199 _DIBDRV_GetPixelPointer16
,
201 _DIBDRV_GetPixel16_RGB
,
202 _DIBDRV_SolidHLine16
,
203 _DIBDRV_PatternHLine16
,
204 _DIBDRV_SolidVLine16
,
205 _DIBDRV_GetLine16_RGB
,
206 _DIBDRV_PutLine16_RGB
,
207 _DIBDRV_BitBlt_generic
,
208 _DIBDRV_StretchBlt_generic
,
209 _DIBDRV_freetype_blit_16_RGB
212 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB16_BITFIELDS
=
214 _DIBDRV_ColorToPixel16_BITFIELDS
,
215 _DIBDRV_GetPixelPointer16
,
217 _DIBDRV_GetPixel16_BITFIELDS
,
218 _DIBDRV_SolidHLine16
,
219 _DIBDRV_PatternHLine16
,
220 _DIBDRV_SolidVLine16
,
221 _DIBDRV_GetLine16_BITFIELDS
,
222 _DIBDRV_PutLine16_BITFIELDS
,
223 _DIBDRV_BitBlt_generic
,
224 _DIBDRV_StretchBlt_generic
,
225 _DIBDRV_freetype_blit_16_BITFIELDS
228 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB8
=
230 _DIBDRV_ColorToPixelColortable
,
231 _DIBDRV_GetPixelPointer8
,
235 _DIBDRV_PatternHLine8
,
239 _DIBDRV_BitBlt_generic
,
240 _DIBDRV_StretchBlt_generic
,
241 _DIBDRV_freetype_blit_8
244 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB4
=
246 _DIBDRV_ColorToPixelColortable
,
247 _DIBDRV_GetPixelPointer4
,
251 _DIBDRV_PatternHLine4
,
255 _DIBDRV_BitBlt_generic
,
256 _DIBDRV_StretchBlt_generic
,
257 _DIBDRV_freetype_blit_4
260 DIBDRV_PRIMITIVE_FUNCS DIBDRV_funcs_DIB1
=
262 _DIBDRV_ColorToPixelColortable
,
263 _DIBDRV_GetPixelPointer1
,
267 _DIBDRV_PatternHLine1
,
271 _DIBDRV_BitBlt_generic
,
272 _DIBDRV_StretchBlt_generic
,
273 _DIBDRV_freetype_blit_1