ReactOS  0.4.14-dev-583-g2a1ba2c
dib8bpp.c File Reference
#include <win32k.h>
#include <debug.h>
Include dependency graph for dib8bpp.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

VOID DIB_8BPP_PutPixel (SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
 
ULONG DIB_8BPP_GetPixel (SURFOBJ *SurfObj, LONG x, LONG y)
 
VOID DIB_8BPP_HLine (SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
 
VOID DIB_8BPP_VLine (SURFOBJ *SurfObj, LONG x, LONG y1, LONG y2, ULONG c)
 
BOOLEAN DIB_8BPP_BitBltSrcCopy (PBLTINFO BltInfo)
 
BOOLEAN DIB_8BPP_ColorFill (SURFOBJ *DestSurface, RECTL *DestRect, ULONG color)
 
BOOLEAN DIB_8BPP_TransparentBlt (SURFOBJ *DestSurf, SURFOBJ *SourceSurf, RECTL *DestRect, RECTL *SourceRect, XLATEOBJ *ColorTranslation, ULONG iTransColor)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 13 of file dib8bpp.c.

Function Documentation

◆ DIB_8BPP_BitBltSrcCopy()

BOOLEAN DIB_8BPP_BitBltSrcCopy ( PBLTINFO  BltInfo)

Definition at line 55 of file dib8bpp.c.

56 {
57  LONG i, j, sx, sy, xColor, f1;
58  PBYTE SourceBits, DestBits, SourceLine, DestLine;
59  PBYTE SourceBits_4BPP, SourceLine_4BPP;
60 
61  DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 + (BltInfo->DestRect.top * BltInfo->DestSurface->lDelta) + BltInfo->DestRect.left;
62 
63  switch(BltInfo->SourceSurface->iBitmapFormat)
64  {
65  case BMF_1BPP:
66  sx = BltInfo->SourcePoint.x;
67  sy = BltInfo->SourcePoint.y;
68 
69  for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
70  {
71  sx = BltInfo->SourcePoint.x;
72  for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
73  {
74  if(DIB_1BPP_GetPixel(BltInfo->SourceSurface, sx, sy) == 0)
75  {
77  }
78  else
79  {
81  }
82  sx++;
83  }
84  sy++;
85  }
86  break;
87 
88  case BMF_4BPP:
89  SourceBits_4BPP = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + (BltInfo->SourcePoint.x >> 1);
90 
91  for (j=BltInfo->DestRect.top; j<BltInfo->DestRect.bottom; j++)
92  {
93  SourceLine_4BPP = SourceBits_4BPP;
94  sx = BltInfo->SourcePoint.x;
95  f1 = sx & 1;
96 
97  for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
98  {
99  xColor = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest,
100  (*SourceLine_4BPP & altnotmask[f1]) >> (4 * (1 - f1)));
101  DIB_8BPP_PutPixel(BltInfo->DestSurface, i, j, xColor);
102  if(f1 == 1) { SourceLine_4BPP++; f1 = 0; } else { f1 = 1; }
103  sx++;
104  }
105 
106  SourceBits_4BPP += BltInfo->SourceSurface->lDelta;
107  }
108  break;
109 
110  case BMF_8BPP:
111  if (NULL == BltInfo->XlateSourceToDest || 0 != (BltInfo->XlateSourceToDest->flXlate & XO_TRIVIAL))
112  {
113  if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
114  {
115  SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + BltInfo->SourcePoint.x;
116  for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
117  {
118  RtlMoveMemory(DestBits, SourceBits, BltInfo->DestRect.right - BltInfo->DestRect.left);
119  SourceBits += BltInfo->SourceSurface->lDelta;
120  DestBits += BltInfo->DestSurface->lDelta;
121  }
122  }
123  else
124  {
125  SourceBits = (PBYTE)BltInfo->SourceSurface->pvScan0 + ((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1) * BltInfo->SourceSurface->lDelta) + BltInfo->SourcePoint.x;
126  DestBits = (PBYTE)BltInfo->DestSurface->pvScan0 + ((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + BltInfo->DestRect.left;
127  for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top <= j; j--)
128  {
129  RtlMoveMemory(DestBits, SourceBits, BltInfo->DestRect.right - BltInfo->DestRect.left);
130  SourceBits -= BltInfo->SourceSurface->lDelta;
131  DestBits -= BltInfo->DestSurface->lDelta;
132  }
133  }
134  }
135  else
136  {
137  if (BltInfo->DestRect.top < BltInfo->SourcePoint.y)
138  {
139  SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + BltInfo->SourcePoint.x;
140  DestLine = DestBits;
141  for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
142  {
143  SourceBits = SourceLine;
144  DestBits = DestLine;
145  for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
146  {
147  *DestBits++ = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *SourceBits++);
148  }
149  SourceLine += BltInfo->SourceSurface->lDelta;
150  DestLine += BltInfo->DestSurface->lDelta;
151  }
152  }
153  else
154  {
155  SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 + ((BltInfo->SourcePoint.y + BltInfo->DestRect.bottom - BltInfo->DestRect.top - 1) * BltInfo->SourceSurface->lDelta) + BltInfo->SourcePoint.x;
156  DestLine = (PBYTE)BltInfo->DestSurface->pvScan0 + ((BltInfo->DestRect.bottom - 1) * BltInfo->DestSurface->lDelta) + BltInfo->DestRect.left;
157  for (j = BltInfo->DestRect.bottom - 1; BltInfo->DestRect.top <= j; j--)
158  {
159  SourceBits = SourceLine;
160  DestBits = DestLine;
161  for (i=BltInfo->DestRect.left; i<BltInfo->DestRect.right; i++)
162  {
163  *DestBits++ = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *SourceBits++);
164  }
165  SourceLine -= BltInfo->SourceSurface->lDelta;
166  DestLine -= BltInfo->DestSurface->lDelta;
167  }
168  }
169  }
170  break;
171 
172  case BMF_16BPP:
173  SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 2 * BltInfo->SourcePoint.x;
174  DestLine = DestBits;
175 
176  for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
177  {
178  SourceBits = SourceLine;
179  DestBits = DestLine;
180 
181  for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
182  {
183  xColor = *((PWORD) SourceBits);
184  *DestBits = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
185  SourceBits += 2;
186  DestBits += 1;
187  }
188 
189  SourceLine += BltInfo->SourceSurface->lDelta;
190  DestLine += BltInfo->DestSurface->lDelta;
191  }
192  break;
193 
194  case BMF_24BPP:
195  SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 3 * BltInfo->SourcePoint.x;
196  DestLine = DestBits;
197 
198  for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
199  {
200  SourceBits = SourceLine;
201  DestBits = DestLine;
202 
203  for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
204  {
205  xColor = (*(SourceBits + 2) << 0x10) +
206  (*(SourceBits + 1) << 0x08) +
207  (*(SourceBits));
208  *DestBits = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
209  SourceBits += 3;
210  DestBits += 1;
211  }
212 
213  SourceLine += BltInfo->SourceSurface->lDelta;
214  DestLine += BltInfo->DestSurface->lDelta;
215  }
216  break;
217 
218  case BMF_32BPP:
219  SourceLine = (PBYTE)BltInfo->SourceSurface->pvScan0 + (BltInfo->SourcePoint.y * BltInfo->SourceSurface->lDelta) + 4 * BltInfo->SourcePoint.x;
220  DestLine = DestBits;
221 
222  for (j = BltInfo->DestRect.top; j < BltInfo->DestRect.bottom; j++)
223  {
224  SourceBits = SourceLine;
225  DestBits = DestLine;
226 
227  for (i = BltInfo->DestRect.left; i < BltInfo->DestRect.right; i++)
228  {
229  xColor = *((PDWORD) SourceBits);
230  *DestBits = (BYTE)XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, xColor);
231  SourceBits += 4;
232  DestBits += 1;
233  }
234 
235  SourceLine += BltInfo->SourceSurface->lDelta;
236  DestLine += BltInfo->DestSurface->lDelta;
237  }
238  break;
239 
240  default:
241  DPRINT1("DIB_8BPP_Bitblt: Unhandled Source BPP: %u\n", BitsPerFormat(BltInfo->SourceSurface->iBitmapFormat));
242  return FALSE;
243  }
244 
245  return TRUE;
246 }
#define BMF_24BPP
Definition: winddi.h:359
FLONG flXlate
Definition: winddi.h:1256
Definition: xlate.c:9
#define TRUE
Definition: types.h:120
LONG lDelta
Definition: winddi.h:1213
VOID DIB_8BPP_PutPixel(SURFOBJ *SurfObj, LONG x, LONG y, ULONG c)
Definition: dib8bpp.c:17
#define BMF_32BPP
Definition: winddi.h:360
XLATEOBJ * XlateSourceToDest
Definition: dib.h:25
unsigned char altnotmask[2]
Definition: dib.c:18
#define BitsPerFormat(Format)
Definition: surface.h:109
long bottom
Definition: polytest.cpp:53
ULONG iBitmapFormat
Definition: winddi.h:1215
#define RtlMoveMemory(Destination, Source, Length)
Definition: typedefs.h:263
LONG y
Definition: windef.h:330
long right
Definition: polytest.cpp:53
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
long LONG
Definition: pedump.c:60
long top
Definition: polytest.cpp:53
smooth NULL
Definition: ftsmooth.c:416
long left
Definition: polytest.cpp:53
#define BMF_16BPP
Definition: winddi.h:358
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
SURFOBJ * SourceSurface
Definition: dib.h:23
WORD * PWORD
Definition: pedump.c:67
RECTL DestRect
Definition: dib.h:26
SURFOBJ * DestSurface
Definition: dib.h:22
LONG x
Definition: windef.h:329
ULONG DIB_1BPP_GetPixel(SURFOBJ *, LONG, LONG)
Definition: dib1bpp.c:26
unsigned char BYTE
Definition: mem.h:68
Definition: xlate.c:8
#define XO_TRIVIAL
Definition: winddi.h:1247
#define f1(x, y, z)
Definition: sha1.c:30
DWORD * PDWORD
Definition: pedump.c:68
#define DPRINT1
Definition: precomp.h:8
POINTL SourcePoint
Definition: dib.h:27
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
Definition: xlateobj.c:664
Definition: xlate.c:10
BYTE * PBYTE
Definition: pedump.c:66
PVOID pvScan0
Definition: winddi.h:1212

◆ DIB_8BPP_ColorFill()

BOOLEAN DIB_8BPP_ColorFill ( SURFOBJ DestSurface,
RECTL DestRect,
ULONG  color 
)

Definition at line 250 of file dib8bpp.c.

251 {
252  LONG DestY;
253  for (DestY = DestRect->top; DestY< DestRect->bottom; DestY++)
254  {
255  DIB_8BPP_HLine(DestSurface, DestRect->left, DestRect->right, DestY, color);
256  }
257  return TRUE;
258 }
#define TRUE
Definition: types.h:120
VOID DIB_8BPP_HLine(SURFOBJ *SurfObj, LONG x1, LONG x2, LONG y, ULONG c)
Definition: dib8bpp.c:33
long right
Definition: polytest.cpp:53
long LONG
Definition: pedump.c:60
GLuint color
Definition: glext.h:6243
long top
Definition: polytest.cpp:53
GLint GLint bottom
Definition: glext.h:7726
long left
Definition: polytest.cpp:53

◆ DIB_8BPP_GetPixel()

ULONG DIB_8BPP_GetPixel ( SURFOBJ SurfObj,
LONG  x,
LONG  y 
)

Definition at line 25 of file dib8bpp.c.

26 {
27  PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + x;
28 
29  return (ULONG)(*byteaddr);
30 }
return
Definition: dirsup.c:529
LONG lDelta
Definition: winddi.h:1213
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
unsigned int ULONG
Definition: retypes.h:1
BYTE * PBYTE
Definition: pedump.c:66
PVOID pvScan0
Definition: winddi.h:1212

Referenced by DIB_1BPP_BitBltSrcCopy().

◆ DIB_8BPP_HLine()

VOID DIB_8BPP_HLine ( SURFOBJ SurfObj,
LONG  x1,
LONG  x2,
LONG  y,
ULONG  c 
)

Definition at line 33 of file dib8bpp.c.

34 {
35  memset((PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + x1, (BYTE) c, x2 - x1);
36 }
LONG lDelta
Definition: winddi.h:1213
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
const GLubyte * c
Definition: glext.h:8905
unsigned char BYTE
Definition: mem.h:68
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
Definition: winddi.h:3706
#define memset(x, y, z)
Definition: compat.h:39
BYTE * PBYTE
Definition: pedump.c:66
PVOID pvScan0
Definition: winddi.h:1212

Referenced by DIB_8BPP_ColorFill().

◆ DIB_8BPP_PutPixel()

VOID DIB_8BPP_PutPixel ( SURFOBJ SurfObj,
LONG  x,
LONG  y,
ULONG  c 
)

Definition at line 17 of file dib8bpp.c.

18 {
19  PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y * SurfObj->lDelta + x;
20 
21  *byteaddr = (BYTE)c;
22 }
LONG lDelta
Definition: winddi.h:1213
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
unsigned char BYTE
Definition: mem.h:68
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define c
Definition: ke_i.h:80
BYTE * PBYTE
Definition: pedump.c:66
PVOID pvScan0
Definition: winddi.h:1212

Referenced by DIB_8BPP_BitBltSrcCopy().

◆ DIB_8BPP_TransparentBlt()

BOOLEAN DIB_8BPP_TransparentBlt ( SURFOBJ DestSurf,
SURFOBJ SourceSurf,
RECTL DestRect,
RECTL SourceRect,
XLATEOBJ ColorTranslation,
ULONG  iTransColor 
)

Definition at line 262 of file dib8bpp.c.

265 {
266  LONG RoundedRight, X, Y, SourceX = 0, SourceY = 0;
267  ULONG *DestBits, Source, Dest;
268 
269  LONG DstHeight;
270  LONG DstWidth;
271  LONG SrcHeight;
272  LONG SrcWidth;
273 
274  DstHeight = DestRect->bottom - DestRect->top;
275  DstWidth = DestRect->right - DestRect->left;
276  SrcHeight = SourceRect->bottom - SourceRect->top;
277  SrcWidth = SourceRect->right - SourceRect->left;
278 
279  RoundedRight = DestRect->right - ((DestRect->right - DestRect->left) & 0x3);
280  DestBits = (ULONG*)((PBYTE)DestSurf->pvScan0 + DestRect->left +
281  (DestRect->top * DestSurf->lDelta));
282 
283  for(Y = DestRect->top; Y < DestRect->bottom; Y++)
284  {
285  DestBits = (ULONG*)((PBYTE)DestSurf->pvScan0 + DestRect->left +
286  (Y * DestSurf->lDelta));
287  SourceY = SourceRect->top+(Y - DestRect->top) * SrcHeight / DstHeight;
288  for (X = DestRect->left; X < RoundedRight; X += 4, DestBits++)
289  {
290  Dest = *DestBits;
291 
292  SourceX = SourceRect->left+(X - DestRect->left) * SrcWidth / DstWidth;
293  if (SourceX >= 0 && SourceY >= 0 &&
294  SourceSurf->sizlBitmap.cx > SourceX && SourceSurf->sizlBitmap.cy > SourceY)
295  {
296  Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
297  if(Source != iTransColor)
298  {
299  Dest &= 0xFFFFFF00;
300  Dest |= (XLATEOBJ_iXlate(ColorTranslation, Source) & 0xFF);
301  }
302  }
303 
304  SourceX = SourceRect->left+(X+1 - DestRect->left) * SrcWidth / DstWidth;
305  if (SourceX >= 0 && SourceY >= 0 &&
306  SourceSurf->sizlBitmap.cx > SourceX && SourceSurf->sizlBitmap.cy > SourceY)
307  {
308  Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
309  if(Source != iTransColor)
310  {
311  Dest &= 0xFFFF00FF;
312  Dest |= ((XLATEOBJ_iXlate(ColorTranslation, Source) << 8) & 0xFF00);
313  }
314  }
315 
316  SourceX = SourceRect->left+(X+2 - DestRect->left) * SrcWidth / DstWidth;
317  if (SourceX >= 0 && SourceY >= 0 &&
318  SourceSurf->sizlBitmap.cx > SourceX && SourceSurf->sizlBitmap.cy > SourceY)
319  {
320  Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
321  if(Source != iTransColor)
322  {
323  Dest &= 0xFF00FFFF;
324  Dest |= ((XLATEOBJ_iXlate(ColorTranslation, Source) << 16) & 0xFF0000);
325  }
326  }
327 
328  SourceX = SourceRect->left+(X+3 - DestRect->left) * SrcWidth / DstWidth;
329  if (SourceX >= 0 && SourceY >= 0 &&
330  SourceSurf->sizlBitmap.cx > SourceX && SourceSurf->sizlBitmap.cy > SourceY)
331  {
332  Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
333  if(Source != iTransColor)
334  {
335  Dest &= 0x00FFFFFF;
336  Dest |= ((XLATEOBJ_iXlate(ColorTranslation, Source) << 24) & 0xFF000000);
337  }
338  }
339 
340  *DestBits = Dest;
341  }
342 
344  {
345  for (; X < DestRect->right; X++)
346  {
347  SourceX = SourceRect->left+(X - DestRect->left) * SrcWidth / DstWidth;
348  if (SourceX >= 0 && SourceY >= 0 &&
349  SourceSurf->sizlBitmap.cx > SourceX && SourceSurf->sizlBitmap.cy > SourceY)
350  {
351  Source = DIB_GetSourceIndex(SourceSurf, SourceX, SourceY);
352  if(Source != iTransColor)
353  {
354  *((BYTE*)DestBits) = (BYTE)(XLATEOBJ_iXlate(ColorTranslation, Source) & 0xFF);
355  }
356  }
357  DestBits = (PULONG)((ULONG_PTR)DestBits + 1);
358  }
359  }
360  }
361 
362  return TRUE;
363 }
#define TRUE
Definition: types.h:120
SIZEL sizlBitmap
Definition: winddi.h:1209
LONG lDelta
Definition: winddi.h:1213
#define Y(I)
long bottom
Definition: polytest.cpp:53
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_ RECTL _In_ ULONG iTransColor
Definition: winddi.h:4190
uint32_t ULONG_PTR
Definition: typedefs.h:63
long right
Definition: polytest.cpp:53
long LONG
Definition: pedump.c:60
#define DIB_GetSourceIndex(SourceSurf, sx, sy)
Definition: dib.h:141
long top
Definition: polytest.cpp:53
LONG cx
Definition: windef.h:334
GLint GLint bottom
Definition: glext.h:7726
long left
Definition: polytest.cpp:53
GLdouble GLdouble right
Definition: glext.h:10859
unsigned char BYTE
Definition: mem.h:68
unsigned int * PULONG
Definition: retypes.h:1
unsigned int ULONG
Definition: retypes.h:1
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3167
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
Definition: xlateobj.c:664
LONG cy
Definition: windef.h:335
BYTE * PBYTE
Definition: pedump.c:66
#define X(b, s)
PVOID pvScan0
Definition: winddi.h:1212

◆ DIB_8BPP_VLine()

VOID DIB_8BPP_VLine ( SURFOBJ SurfObj,
LONG  x,
LONG  y1,
LONG  y2,
ULONG  c 
)

Definition at line 39 of file dib8bpp.c.

40 {
41  PBYTE byteaddr = (PBYTE)SurfObj->pvScan0 + y1 * SurfObj->lDelta;
42  PBYTE addr = byteaddr + x;
43  LONG lDelta = SurfObj->lDelta;
44 
45  byteaddr = addr;
46  while(y1++ < y2)
47  {
48  *addr = (BYTE)c;
49 
50  addr += lDelta;
51  }
52 }
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
Definition: winddi.h:3706
LONG lDelta
Definition: winddi.h:1213
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
long LONG
Definition: pedump.c:60
const GLubyte * c
Definition: glext.h:8905
GLenum const GLvoid * addr
Definition: glext.h:9621
unsigned char BYTE
Definition: mem.h:68
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
Definition: winddi.h:3706
BYTE * PBYTE
Definition: pedump.c:66
PVOID pvScan0
Definition: winddi.h:1212