30 ULONG DestX, EndX, DestY, EndY;
40 DestX = StartX < 0 ? 0 : StartX;
41 DestY = StartY < 0 ? 0 : StartY;
42 EndX = StartX + SizeX;
43 EndY = StartY + SizeY;
56 Mask = (1 << (8 - (DestX % 8))) - 1;
57 if ((EndX - DestX) < (8 - (DestX % 8)))
59 Mask &= ~((1 << (8 - (EndX % 8))) - 1);
66 Src = MaskBits + (SizeY - (DestY - StartY)) * MaskPitch;
67 for (
i = DestY;
i < EndY;
i++, Video += 80)
70 SrcValue = (*Src) >> (DestX % 8);
81 if ((EndX - DestX) < (8 - (DestX % 8)))
85 Left = (DestX + 7) & ~0x7;
86 Length = (EndX >> 3) - (Left >> 3);
91 for (
i = DestY;
i < EndY;
i++)
94 Src = MaskBits + (EndY -
i - 1) * MaskPitch + ((DestX - StartX) >> 3);
95 for (
j = 0;
j <
Length;
j++, Video++, Src++)
99 SrcValue = (Src[0] << (8 - Bits));
100 SrcValue |= (Src[1] >> Bits);
115 Mask = ~((1 << (8 - (EndX % 8))) - 1);
120 Src = MaskBits + (SizeY - (DestY - StartY)) * MaskPitch + (SizeX >> 3) - 1;
121 for (
i = DestY;
i < EndY;
i++, Video += 80)
124 SrcValue = (Src[0] << (8 - Bits));
145 ULONG CursorWidth = 32, CursorHeight = 32;
146 ULONG PointerAttributesSize;
154 ((CursorWidth * CursorHeight * 2) >> 3);
168 SavedMemSize = ((((CursorWidth + 7) & ~0x7) + 16) * CursorHeight) >> 3;
209 ULONG NewWidth, NewHeight;
226 ULONG PointerAttributesSize;
232 ((NewWidth * NewHeight * 2) >> 3);
237 NewPointerAttributes->
Width = NewWidth;
238 NewPointerAttributes->
Height = NewHeight;
245 SavedMemSize = ((((NewWidth + 7) & ~0x7) + 16) * NewHeight) >> 3;
251 for (
i = 0;
i < (NewHeight * 2);
i++)
255 Dest += (((NewHeight * 3) -
i - 1) * (NewWidth >> 3));
257 Dest += ((NewHeight -
i - 1) * (NewWidth >> 3));
258 memcpy(Dest, Src, NewWidth >> 3);
287 SizeX =
min(((
X + (
LONG)ppdev->pPointerAttributes->Width) + 7) & ~0x7, ppdev->sizeSurf.cx);
289 SizeY =
min((
LONG)ppdev->pPointerAttributes->Height, ppdev->sizeSurf.cy -
Y);
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
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
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
#define memcpy(s1, s2, n)
_In_ ULONG _In_ ULONG _In_ ULONG Length
struct _VIDEO_POINTER_ATTRIBUTES VIDEO_POINTER_ATTRIBUTES
VOID VGADDI_BltFromSavedScreenBits(IN ULONG DestX, IN ULONG DestY, IN PSAVED_SCREEN_BITS Src, IN ULONG SizeX, IN ULONG SizeY)
PSAVED_SCREEN_BITS VGADDI_AllocSavedScreenBits(ULONG Size)
VOID VGADDI_FreeSavedScreenBits(PSAVED_SCREEN_BITS SavedBits)
VOID VGADDI_BltToSavedScreenBits(IN PSAVED_SCREEN_BITS Dest, IN ULONG SourceX, IN ULONG SourceY, IN ULONG SizeX, IN ULONG SizeY)
#define WRITE_PORT_UCHAR(p, d)
void * EngAllocMem(int zero, unsigned long size, int tag=0)
_Out_opt_ int _Out_opt_ int * cy
PVIDEO_POINTER_ATTRIBUTES pPointerAttributes
PSAVED_SCREEN_BITS ImageBehindCursor
BOOL InitPointer(PPDEV ppdev)
static VOID FASTCALL VGADDI_ComputePointerRect(IN PPDEV ppdev, IN LONG X, IN LONG Y, IN PRECTL Rect)
static VOID VGADDI_HideCursor(PPDEV ppdev)
static VOID VGADDI_ShowCursor(PPDEV ppdev, PRECTL prcl)
VOID VGADDI_BltPointerToVGA(IN LONG StartX, IN LONG StartY, IN ULONG SizeX, IN ULONG SizeY, IN PUCHAR MaskBits, IN ULONG MaskPitch, IN ULONG MaskOp)
_In_ HANDLE _In_ SURFOBJ * pso
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ XLATEOBJ _In_ LONG xHot
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ XLATEOBJ _In_ LONG _In_ LONG yHot
FN_DrvSetPointerShape DrvSetPointerShape
#define SPS_ACCEPT_NOEXCLUDE
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
_In_opt_ SURFOBJ _In_opt_ SURFOBJ * psoMask
FN_DrvMovePointer DrvMovePointer
_In_opt_ SURFOBJ _In_opt_ SURFOBJ * psoColor
_In_ ULONG _In_ CLIPOBJ _In_ RECTL * prcl
NTKERNELAPI VOID NTAPI WRITE_REGISTER_UCHAR(IN PUCHAR Register, IN UCHAR Value)
NTKERNELAPI UCHAR NTAPI READ_REGISTER_UCHAR(IN PUCHAR Register)