ReactOS 0.4.15-dev-6049-ge54b32b
drawing.cpp
Go to the documentation of this file.
1/*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL
4 * FILE: base/applications/mspaint/drawing.cpp
5 * PURPOSE: The drawing functions used by the tools
6 * PROGRAMMERS: Benedikt Freisen
7 */
8
9/* INCLUDES *********************************************************/
10
11#include "precomp.h"
12
13/* FUNCTIONS ********************************************************/
14
15void
17{
18 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
19 MoveToEx(hdc, x1, y1, NULL);
20 LineTo(hdc, x2, y2);
22}
23
24void
25Rect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
26{
27 HBRUSH oldBrush;
28 LOGBRUSH logbrush;
29 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
30 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
31 logbrush.lbColor = (style == 2) ? fg : bg;
32 logbrush.lbHatch = 0;
33 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
34 Rectangle(hdc, x1, y1, x2, y2);
35 DeleteObject(SelectObject(hdc, oldBrush));
37}
38
39void
40Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
41{
42 HBRUSH oldBrush;
43 LOGBRUSH logbrush;
44 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
45 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
46 logbrush.lbColor = (style == 2) ? fg : bg;
47 logbrush.lbHatch = 0;
48 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
49 Ellipse(hdc, x1, y1, x2, y2);
50 DeleteObject(SelectObject(hdc, oldBrush));
52}
53
54void
55RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
56{
57 LOGBRUSH logbrush;
58 HBRUSH oldBrush;
59 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
60 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
61 logbrush.lbColor = (style == 2) ? fg : bg;
62 logbrush.lbHatch = 0;
63 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
64 RoundRect(hdc, x1, y1, x2, y2, 16, 16);
65 DeleteObject(SelectObject(hdc, oldBrush));
67}
68
69void
70Poly(HDC hdc, POINT * lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted)
71{
72 LOGBRUSH logbrush;
73 HBRUSH oldBrush;
74 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, fg));
75 UINT oldRop = GetROP2(hdc);
76
77 if (inverted)
79
80 logbrush.lbStyle = (style == 0) ? BS_HOLLOW : BS_SOLID;
81 logbrush.lbColor = (style == 2) ? fg : bg;
82 logbrush.lbHatch = 0;
83 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
84 if (closed)
85 Polygon(hdc, lpPoints, nCount);
86 else
87 Polyline(hdc, lpPoints, nCount);
88 DeleteObject(SelectObject(hdc, oldBrush));
90
91 SetROP2(hdc, oldRop);
92}
93
94void
95Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness)
96{
97 HPEN oldPen;
98 POINT fourPoints[4];
99 fourPoints[0] = p1;
100 fourPoints[1] = p2;
101 fourPoints[2] = p3;
102 fourPoints[3] = p4;
103 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
104 PolyBezier(hdc, fourPoints, 4);
105 DeleteObject(SelectObject(hdc, oldPen));
106}
107
108void
110{
111 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
113 DeleteObject(SelectObject(hdc, oldBrush));
114}
115
116void
118{
119 LONG a, b;
120 HPEN oldPen;
121 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
122
123 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
124 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
125 for(a = 0; a <= b; a++)
127 (x1 * (b - a) + x2 * a) / b - radius,
128 (y1 * (b - a) + y2 * a) / b - radius,
129 (x1 * (b - a) + x2 * a) / b + radius,
130 (y1 * (b - a) + y2 * a) / b + radius);
131 DeleteObject(SelectObject(hdc, oldBrush));
132 DeleteObject(SelectObject(hdc, oldPen));
133}
134
135void
137{
138 LONG a, b, x, y;
139 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
140
141 for(a = 0; a <= b; a++)
142 for(y = (y1 * (b - a) + y2 * a) / b - radius + 1;
143 y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++)
144 for(x = (x1 * (b - a) + x2 * a) / b - radius + 1;
145 x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++)
146 if (GetPixel(hdc, x, y) == fg)
147 SetPixel(hdc, x, y, bg);
148}
149
150void
152{
153 LONG a, b;
154
155 for(b = -r; b <= r; b++)
156 for(a = -r; a <= r; a++)
157 if ((a * a + b * b <= r * r) && (rand() % 4 == 0))
158 SetPixel(hdc, x + a, y + b, color);
159}
160
161void
163{
164 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
165 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
166 LONG a, b;
167 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
168 switch (style)
169 {
170 case 0:
171 for(a = 0; a <= b; a++)
172 Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
173 (x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4);
174 break;
175 case 1:
176 for(a = 0; a <= b; a++)
177 Ellipse(hdc,
178 (x1 * (b - a) + x2 * a) / b - 2,
179 (y1 * (b - a) + y2 * a) / b - 2,
180 (x1 * (b - a) + x2 * a) / b + 2,
181 (y1 * (b - a) + y2 * a) / b + 2);
182 break;
183 case 2:
184 MoveToEx(hdc, x1, y1, NULL);
185 LineTo(hdc, x2, y2);
186 SetPixel(hdc, x2, y2, color);
187 break;
188 case 3:
189 for(a = 0; a <= b; a++)
191 (x1 * (b - a) + x2 * a) / b - 4,
192 (y1 * (b - a) + y2 * a) / b - 4,
193 (x1 * (b - a) + x2 * a) / b + 4,
194 (y1 * (b - a) + y2 * a) / b + 4);
195 break;
196 case 4:
197 for(a = 0; a <= b; a++)
198 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2,
199 (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
200 break;
201 case 5:
202 for(a = 0; a <= b; a++)
203 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
204 (x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1);
205 break;
206 case 6:
207 case 7:
208 case 8:
209 case 9:
210 case 10:
211 case 11:
212 {
213 POINT offsTop[] = {{3, -3}, {2, -2}, {0, 0},
214 {-4, -4}, {-2, -2}, {-1, 0}};
215 POINT offsBtm[] = {{-3, 3}, {-2, 2}, {-1, 1},
216 {3, 3}, {2, 2}, {0, 1}};
217 LONG idx = style - 6;
218 POINT pts[4];
219 pts[0].x = x1 + offsTop[idx].x;
220 pts[0].y = y1 + offsTop[idx].y;
221 pts[1].x = x1 + offsBtm[idx].x;
222 pts[1].y = y1 + offsBtm[idx].y;
223 pts[2].x = x2 + offsBtm[idx].x;
224 pts[2].y = y2 + offsBtm[idx].y;
225 pts[3].x = x2 + offsTop[idx].x;
226 pts[3].y = y2 + offsTop[idx].y;
227 Polygon(hdc, pts, 4);
228 break;
229 }
230 }
231 DeleteObject(SelectObject(hdc, oldBrush));
232 DeleteObject(SelectObject(hdc, oldPen));
233}
234
235void
237{
238 HBRUSH oldBrush;
239 LOGBRUSH logbrush;
240 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT)));
241 UINT oldRop = GetROP2(hdc);
242
244
245 logbrush.lbStyle = BS_HOLLOW;
246 logbrush.lbColor = 0;
247 logbrush.lbHatch = 0;
248 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
249 Rectangle(hdc, x1, y1, x2, y2);
250 DeleteObject(SelectObject(hdc, oldBrush));
251 DeleteObject(SelectObject(hdc, oldPen));
252
253 SetROP2(hdc, oldRop);
254}
255
256void
258{
259 INT iSaveDC = SaveDC(hdc); // We will modify the clipping region. Save now.
260
261 RECT rc;
262 SetRect(&rc, x1, y1, x2, y2);
263
264 if (style == 0) // Transparent
265 {
268 }
269 else // Opaque
270 {
272 SetBkColor(hdc, bg);
273
274 HBRUSH hbr = CreateSolidBrush(bg);
275 FillRect(hdc, &rc, hbr); // Fill the background
276 DeleteObject(hbr);
277 }
278
279 IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
280
281 HGDIOBJ hFontOld = SelectObject(hdc, font);
282 SetTextColor(hdc, fg);
283 const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP |
285 DrawText(hdc, lpchText, -1, &rc, uFormat);
286 SelectObject(hdc, hFontOld);
287
288 RestoreDC(hdc, iSaveDC); // Restore
289}
290
291BOOL
292ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
293 HDC hdcSrc, int nXSrc, int nYSrc, int nSrcWidth, int nSrcHeight,
294 HBITMAP hbmMask, COLORREF keyColor)
295{
296 HDC hTempDC1, hTempDC2;
297 HBITMAP hbmTempColor, hbmTempMask;
298 HGDIOBJ hbmOld1, hbmOld2;
299
300 if (hbmMask == NULL)
301 {
302 if (keyColor == CLR_INVALID)
303 {
304 ::StretchBlt(hdcDest, nXDest, nYDest, nWidth, nHeight,
305 hdcSrc, nXSrc, nYSrc, nSrcWidth, nSrcHeight, SRCCOPY);
306 }
307 else
308 {
309 ::GdiTransparentBlt(hdcDest, nXDest, nYDest, nWidth, nHeight,
310 hdcSrc, nXSrc, nYSrc, nSrcWidth, nSrcHeight, keyColor);
311 }
312 return TRUE;
313 }
314 else if (nWidth == nSrcWidth && nHeight == nSrcHeight && keyColor == CLR_INVALID)
315 {
316 ::MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight,
317 hdcSrc, nXSrc, nYSrc, hbmMask, 0, 0, MAKEROP4(SRCCOPY, 0xAA0029));
318 return TRUE;
319 }
320
321 hTempDC1 = ::CreateCompatibleDC(hdcDest);
322 hTempDC2 = ::CreateCompatibleDC(hdcDest);
323 hbmTempMask = ::CreateBitmap(nWidth, nHeight, 1, 1, NULL);
324 hbmTempColor = CreateColorDIB(nWidth, nHeight, RGB(255, 255, 255));
325
326 // hbmTempMask <-- hbmMask (stretched)
327 hbmOld1 = ::SelectObject(hTempDC1, hbmMask);
328 hbmOld2 = ::SelectObject(hTempDC2, hbmTempMask);
329 ::StretchBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC1, 0, 0, nSrcWidth, nSrcHeight, SRCCOPY);
330 ::SelectObject(hTempDC2, hbmOld2);
331 ::SelectObject(hTempDC1, hbmOld1);
332
333 hbmOld1 = ::SelectObject(hTempDC1, hbmTempColor);
334 if (keyColor == CLR_INVALID)
335 {
336 // hbmTempColor <-- hdcSrc (stretched)
337 ::StretchBlt(hTempDC1, 0, 0, nWidth, nHeight,
338 hdcSrc, nXSrc, nYSrc, nSrcWidth, nSrcHeight, SRCCOPY);
339
340 // hdcDest <-- hbmTempColor (masked)
341 ::MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hTempDC1, 0, 0,
342 hbmTempMask, 0, 0, MAKEROP4(SRCCOPY, 0xAA0029));
343 }
344 else
345 {
346 // hbmTempColor <-- hdcDest
347 ::BitBlt(hTempDC1, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, SRCCOPY);
348
349 // hbmTempColor <-- hdcSrc (color key)
350 ::GdiTransparentBlt(hTempDC1, 0, 0, nWidth, nHeight,
351 hdcSrc, nXSrc, nYSrc, nSrcWidth, nSrcHeight, keyColor);
352
353 // hdcDest <-- hbmTempColor (masked)
354 ::MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hTempDC1, 0, 0,
355 hbmTempMask, 0, 0, MAKEROP4(SRCCOPY, 0xAA0029));
356 }
357 ::SelectObject(hTempDC1, hbmOld1);
358
359 ::DeleteObject(hbmTempColor);
360 ::DeleteObject(hbmTempMask);
361 ::DeleteDC(hTempDC2);
362 ::DeleteDC(hTempDC1);
363
364 return TRUE;
365}
366
368{
369 HGDIOBJ oldPen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, RGB(255, 255, 255)));
371 INT oldRop2 = SetROP2(hdc, R2_XORPEN);
373 ::SetROP2(hdc, oldRop2);
374 ::SelectObject(hdc, oldBrush);
376}
Arabic default style
Definition: afstyles.h:94
FORCEINLINE VOID SetPixel(_In_ ULONG Left, _In_ ULONG Top, _In_ UCHAR Color)
Definition: arm.h:50
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
char * Text
Definition: combotst.c:136
HBITMAP CreateColorDIB(int width, int height, COLORREF rgb)
Definition: dib.cpp:40
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
unsigned int idx
Definition: utils.c:41
void RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2)
Definition: drawing.cpp:236
void Bezier(HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness)
Definition: drawing.cpp:95
void Ellp(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
Definition: drawing.cpp:40
void Poly(HDC hdc, POINT *lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted)
Definition: drawing.cpp:70
BOOL ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, int nSrcWidth, int nSrcHeight, HBITMAP hbmMask, COLORREF keyColor)
Definition: drawing.cpp:292
void DrawXorRect(HDC hdc, const RECT *prc)
Definition: drawing.cpp:367
void RRect(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
Definition: drawing.cpp:55
void Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
Definition: drawing.cpp:136
void Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
Definition: drawing.cpp:117
void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
Definition: drawing.cpp:151
void Fill(HDC hdc, LONG x, LONG y, COLORREF color)
Definition: drawing.cpp:109
static VOID NTAPI BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:49
#define RGB(r, g, b)
Definition: precomp.h:62
#define abs(i)
Definition: fconv.c:206
unsigned int BOOL
Definition: ntddk_ex.h:94
pKey DeleteObject()
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLuint color
Definition: glext.h:6243
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
_Check_return_ int __cdecl rand(void)
Definition: rand.c:10
#define a
Definition: ke_i.h:78
#define b
Definition: ke_i.h:79
HDC hdc
Definition: main.c:9
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
Definition: mk_font.cpp:20
unsigned int UINT
Definition: ndis.h:50
_Out_ LPRECT prc
Definition: ntgdi.h:1658
long LONG
Definition: pedump.c:60
BOOL Polygon(CONST PPOINT UnsafePoints, int Count, int polyFillMode)
Definition: polytest.cpp:730
Definition: ncftp.h:79
UINT lbStyle
Definition: wingdi.h:1747
ULONG_PTR lbHatch
Definition: wingdi.h:1749
COLORREF lbColor
Definition: wingdi.h:1748
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define max(a, b)
Definition: svc.c:63
int32_t INT
Definition: typedefs.h:58
BOOL WINAPI GdiTransparentBlt(HDC hdcDst, int xDst, int yDst, int wDst, int hDst, HDC hdcSrc, int xSrc, int ySrc, int wSrc, int hSrc, UINT crTransparent)
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG x2
Definition: winddi.h:3710
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
Definition: winddi.h:3709
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3708
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG _In_ LONG _In_ LONG y2
Definition: winddi.h:3711
DWORD COLORREF
Definition: windef.h:300
HBRUSH WINAPI CreateBrushIndirect(_In_ const LOGBRUSH *plb)
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
HGDIOBJ WINAPI GetStockObject(_In_ int)
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ int cpt)
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
BOOL WINAPI Ellipse(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
#define PS_DOT
Definition: wingdi.h:588
int WINAPI IntersectClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
#define FLOODFILLSURFACE
Definition: wingdi.h:645
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
BOOL WINAPI MaskBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ HDC, _In_ int, _In_ int, _In_ HBITMAP, _In_ int, _In_ int, _In_ DWORD)
#define R2_NOTXORPEN
Definition: wingdi.h:351
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define R2_XORPEN
Definition: wingdi.h:353
#define TRANSPARENT
Definition: wingdi.h:950
BOOL WINAPI StretchBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
#define CLR_INVALID
Definition: wingdi.h:883
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
#define SRCCOPY
Definition: wingdi.h:333
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:978
#define BS_HOLLOW
Definition: wingdi.h:1088
int WINAPI GetROP2(_In_ HDC)
Definition: dc.c:1086
#define NULL_BRUSH
Definition: wingdi.h:901
#define OPAQUE
Definition: wingdi.h:949
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
int WINAPI SetROP2(_In_ HDC, _In_ int)
Definition: dc.c:1107
BOOL WINAPI RoundRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
BOOL WINAPI ExtFloodFill(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF, _In_ UINT)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)
#define BS_SOLID
Definition: wingdi.h:1086
#define PS_SOLID
Definition: wingdi.h:586
int WINAPI SaveDC(_In_ HDC)
#define MAKEROP4(f, b)
Definition: wingdi.h:2946
DWORD WINAPI GetSysColor(_In_ int)
#define DT_NOPREFIX
Definition: winuser.h:537
#define COLOR_HIGHLIGHT
Definition: winuser.h:920
#define DT_NOCLIP
Definition: winuser.h:536
#define DrawText
Definition: winuser.h:5761
#define DT_LEFT
Definition: winuser.h:534
#define DT_TOP
Definition: winuser.h:542
#define DT_WORDBREAK
Definition: winuser.h:544
#define DT_EXPANDTABS
Definition: winuser.h:532
#define DT_EDITCONTROL
Definition: winuser.h:528
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
static HDC hdcSrc
Definition: xlate.c:32
const CHAR * LPCTSTR
Definition: xmlstorage.h:193