2 * GDI bit-blit operations
4 * Copyright 1993, 1994 Alexandre Julliard
11 /***********************************************************************
14 BOOL16 WINAPI
PatBlt16( HDC16 hdc
, INT16 left
, INT16 top
,
15 INT16 width
, INT16 height
, DWORD rop
)
17 DC
* dc
= DC_GetDCPtr( hdc
);
18 if (!dc
|| !dc
->funcs
->pPatBlt
) return FALSE
;
20 TRACE(bitblt
, "%04x %d,%d %dx%d %06lx\n",
21 hdc
, left
, top
, width
, height
, rop
);
22 return dc
->funcs
->pPatBlt( dc
, left
, top
, width
, height
, rop
);
26 /***********************************************************************
27 * PatBlt32 (GDI32.260)
29 BOOL WINAPI
PatBlt( HDC hdc
, INT left
, INT top
,
30 INT width
, INT height
, DWORD rop
)
32 DC
* dc
= DC_GetDCPtr( hdc
);
33 if (!dc
|| !dc
->funcs
->pPatBlt
) return FALSE
;
35 TRACE(bitblt
, "%04x %d,%d %dx%d %06lx\n",
36 hdc
, left
, top
, width
, height
, rop
);
37 return dc
->funcs
->pPatBlt( dc
, left
, top
, width
, height
, rop
);
41 /***********************************************************************
44 BOOL16 WINAPI
BitBlt16( HDC16 hdcDst
, INT16 xDst
, INT16 yDst
, INT16 width
,
45 INT16 height
, HDC16 hdcSrc
, INT16 xSrc
, INT16 ySrc
,
50 if (!(dcDst
= DC_GetDCPtr( hdcDst
))) return FALSE
;
51 if (!dcDst
->funcs
->pBitBlt
) return FALSE
;
52 dcSrc
= DC_GetDCPtr( hdcSrc
);
54 TRACE(bitblt
, "hdcSrc=%04x %d,%d %d bpp -> hdcDest=%04x %d,%d %dx%dx%d rop=%06lx\n",
55 hdcSrc
, xSrc
, ySrc
, dcSrc
? dcSrc
->w
.bitsPerPixel
: 0,
56 hdcDst
, xDst
, yDst
, width
, height
, dcDst
->w
.bitsPerPixel
, rop
);
57 return dcDst
->funcs
->pBitBlt( dcDst
, xDst
, yDst
, width
, height
,
58 dcSrc
, xSrc
, ySrc
, rop
);
62 /***********************************************************************
65 BOOL WINAPI
BitBlt( HDC hdcDst
, INT xDst
, INT yDst
, INT width
,
66 INT height
, HDC hdcSrc
, INT xSrc
, INT ySrc
,
71 if (!(dcDst
= DC_GetDCPtr( hdcDst
))) return FALSE
;
72 if (!dcDst
->funcs
->pBitBlt
) return FALSE
;
73 dcSrc
= DC_GetDCPtr( hdcSrc
);
75 TRACE(bitblt
, "hdcSrc=%04x %d,%d %d bpp -> hdcDest=%04x %d,%d %dx%dx%d rop=%06lx\n",
76 hdcSrc
, xSrc
, ySrc
, dcSrc
? dcSrc
->w
.bitsPerPixel
: 0,
77 hdcDst
, xDst
, yDst
, width
, height
, dcDst
->w
.bitsPerPixel
, rop
);
78 return dcDst
->funcs
->pBitBlt( dcDst
, xDst
, yDst
, width
, height
,
79 dcSrc
, xSrc
, ySrc
, rop
);
83 /***********************************************************************
84 * StretchBlt16 (GDI.35)
86 BOOL16 WINAPI
StretchBlt16( HDC16 hdcDst
, INT16 xDst
, INT16 yDst
,
87 INT16 widthDst
, INT16 heightDst
,
88 HDC16 hdcSrc
, INT16 xSrc
, INT16 ySrc
,
89 INT16 widthSrc
, INT16 heightSrc
, DWORD rop
)
93 if (!(dcDst
= DC_GetDCPtr( hdcDst
))) return FALSE
;
94 if (!dcDst
->funcs
->pStretchBlt
) return FALSE
;
95 dcSrc
= DC_GetDCPtr( hdcSrc
);
97 TRACE(bitblt
, "%04x %d,%d %dx%dx%d -> %04x %d,%d %dx%dx%d rop=%06lx\n",
98 hdcSrc
, xSrc
, ySrc
, widthSrc
, heightSrc
,
99 dcSrc
? dcSrc
->w
.bitsPerPixel
: 0, hdcDst
, xDst
, yDst
,
100 widthDst
, heightDst
, dcDst
->w
.bitsPerPixel
, rop
);
101 return dcDst
->funcs
->pStretchBlt( dcDst
, xDst
, yDst
, widthDst
, heightDst
,
102 dcSrc
, xSrc
, ySrc
, widthSrc
, heightSrc
,
107 /***********************************************************************
108 * StretchBlt32 (GDI32.350)
110 BOOL WINAPI
StretchBlt( HDC hdcDst
, INT xDst
, INT yDst
,
111 INT widthDst
, INT heightDst
,
112 HDC hdcSrc
, INT xSrc
, INT ySrc
,
113 INT widthSrc
, INT heightSrc
, DWORD rop
)
117 if (!(dcDst
= DC_GetDCPtr( hdcDst
))) return FALSE
;
118 if (!dcDst
->funcs
->pStretchBlt
) return FALSE
;
119 dcSrc
= DC_GetDCPtr( hdcSrc
);
121 TRACE(bitblt
, "%04x %d,%d %dx%dx%d -> %04x %d,%d %dx%dx%d rop=%06lx\n",
122 hdcSrc
, xSrc
, ySrc
, widthSrc
, heightSrc
,
123 dcSrc
? dcSrc
->w
.bitsPerPixel
: 0, hdcDst
, xDst
, yDst
,
124 widthDst
, heightDst
, dcDst
->w
.bitsPerPixel
, rop
);
125 return dcDst
->funcs
->pStretchBlt( dcDst
, xDst
, yDst
, widthDst
, heightDst
,
126 dcSrc
, xSrc
, ySrc
, widthSrc
, heightSrc
,
131 /***********************************************************************
132 * FastWindowFrame (GDI.400)
134 BOOL16 WINAPI
FastWindowFrame16( HDC16 hdc
, const RECT16
*rect
,
135 INT16 width
, INT16 height
, DWORD rop
)
137 HBRUSH hbrush
= SelectObject( hdc
, GetStockObject( GRAY_BRUSH
) );
138 PatBlt( hdc
, rect
->left
, rect
->top
,
139 rect
->right
- rect
->left
- width
, height
, rop
);
140 PatBlt( hdc
, rect
->left
, rect
->top
+ height
, width
,
141 rect
->bottom
- rect
->top
- height
, rop
);
142 PatBlt( hdc
, rect
->left
+ width
, rect
->bottom
,
143 rect
->right
- rect
->left
- width
, -height
, rop
);
144 PatBlt( hdc
, rect
->right
, rect
->top
, -width
,
145 rect
->bottom
- rect
->top
- height
, rop
);
146 SelectObject( hdc
, hbrush
);
149 /***********************************************************************
150 * MaskBlt32 [GDI32.252]
152 BOOL WINAPI
MaskBlt(HDC hdcDest
, INT nXDest
, INT nYDest
,
153 INT nWidth
, INT nHeight
, HDC hdcSource
,
154 INT nXSrc
, INT nYSrc
, HBITMAP hbmMask
,
155 INT xMask
, INT yMask
, DWORD dwRop
)
157 FIXME(bitmap
, "(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%ld): stub\n",
158 hdcDest
,nXDest
,nYDest
,nWidth
,nHeight
,hdcSource
,nXSrc
,nYSrc
,
159 hbmMask
,xMask
,yMask
,dwRop
);
163 /*********************************************************************
167 BOOL WINAPI
PlgBlt( HDC hdcDest
, const POINT
*lpPoint
,
168 HDC hdcSrc
, INT nXDest
, INT nYDest
, INT nWidth
,
169 INT nHeight
, HBITMAP hbmMask
, INT xMask
, INT yMask
)
171 FIXME(gdi
, "PlgBlt, stub\n");