ReactOS 0.4.15-dev-5669-g09dde2c
drawing.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void Line (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, int thickness)
 
void Rect (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
 
void Ellp (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
 
void RRect (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, int thickness, int style)
 
void Poly (HDC hdc, POINT *lpPoints, int nCount, COLORREF fg, COLORREF bg, int thickness, int style, BOOL closed, BOOL inverted)
 
void Bezier (HDC hdc, POINT p1, POINT p2, POINT p3, POINT p4, COLORREF color, int thickness)
 
void Fill (HDC hdc, LONG x, LONG y, COLORREF color)
 
void Erase (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
 
void Replace (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
 
void Airbrush (HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
 
void Brush (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style)
 
void RectSel (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2)
 
void SelectionFrame (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF system_selection_color)
 
void Text (HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LPCTSTR lpchText, HFONT font, LONG style)
 
BOOL ColorKeyedMaskBlt (HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, HBITMAP hbmMask, int xMask, int yMask, DWORD dwRop, COLORREF keyColor)
 

Function Documentation

◆ Airbrush()

void Airbrush ( HDC  hdc,
LONG  x,
LONG  y,
COLORREF  color,
LONG  r 
)

Definition at line 149 of file drawing.cpp.

150{
151 LONG a, b;
152
153 for(b = -r; b <= r; b++)
154 for(a = -r; a <= r; a++)
155 if ((a * a + b * b <= r * r) && (rand() % 4 == 0))
156 SetPixel(hdc, x + a, y + b, color);
157}
FORCEINLINE VOID SetPixel(_In_ ULONG Left, _In_ ULONG Top, _In_ UCHAR Color)
Definition: arm.h:50
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
long LONG
Definition: pedump.c:60

Referenced by AirBrushTool::draw(), and CToolSettingsWindow::OnPaint().

◆ Bezier()

void Bezier ( HDC  hdc,
POINT  p1,
POINT  p2,
POINT  p3,
POINT  p4,
COLORREF  color,
int  thickness 
)

Definition at line 95 of file drawing.cpp.

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}
pKey DeleteObject()
BOOL WINAPI PolyBezier(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ DWORD cpt)
Definition: painting.c:263
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
HPEN WINAPI CreatePen(_In_ int, _In_ int, _In_ COLORREF)
#define PS_SOLID
Definition: wingdi.h:586

Referenced by BezierTool::draw(), and GDI_Bezier().

◆ Brush()

void Brush ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  color,
LONG  style 
)

Definition at line 160 of file drawing.cpp.

161{
162 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
163 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
164 LONG a, b;
165 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
166 switch (style)
167 {
168 case 0:
169 for(a = 0; a <= b; a++)
170 Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
171 (x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4);
172 break;
173 case 1:
174 for(a = 0; a <= b; a++)
175 Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
176 (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
177 break;
178 case 2:
179 MoveToEx(hdc, x1, y1, NULL);
180 LineTo(hdc, x2, y2);
181 SetPixel(hdc, x2, y2, color);
182 break;
183 case 3:
184 for(a = 0; a <= b; a++)
185 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
186 (x1 * (b - a) + x2 * a) / b + 5, (y1 * (b - a) + y2 * a) / b + 5);
187 break;
188 case 4:
189 for(a = 0; a <= b; a++)
190 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2,
191 (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
192 break;
193 case 5:
194 for(a = 0; a <= b; a++)
195 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
196 (x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1);
197 break;
198 case 6:
199 case 7:
200 case 8:
201 case 9:
202 case 10:
203 case 11:
204 {
205 POINT offsTop[] = {{4, -3}, {2, -2}, {0, 0},
206 {-3, -3}, {-2, -2}, {-1, 0}};
207 POINT offsBtm[] = {{-3, 4}, {-2, 2}, {-1, 1},
208 {4, 4}, {2, 2}, {0, 1}};
209 LONG idx = style - 6;
210 POINT pts[4];
211 pts[0].x = x1 + offsTop[idx].x;
212 pts[0].y = y1 + offsTop[idx].y;
213 pts[1].x = x1 + offsBtm[idx].x;
214 pts[1].y = y1 + offsBtm[idx].y;
215 pts[2].x = x2 + offsBtm[idx].x;
216 pts[2].y = y2 + offsBtm[idx].y;
217 pts[3].x = x2 + offsTop[idx].x;
218 pts[3].y = y2 + offsTop[idx].y;
219 Polygon(hdc, pts, 4);
220 break;
221 }
222 }
223 DeleteObject(SelectObject(hdc, oldBrush));
224 DeleteObject(SelectObject(hdc, oldPen));
225}
Arabic default style
Definition: afstyles.h:94
#define NULL
Definition: types.h:112
unsigned int idx
Definition: utils.c:41
#define abs(i)
Definition: fconv.c:206
BOOL Polygon(CONST PPOINT UnsafePoints, int Count, int polyFillMode)
Definition: polytest.cpp:730
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define max(a, b)
Definition: svc.c:63
_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
BOOL WINAPI Ellipse(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
BOOL WINAPI MoveToEx(_In_ HDC, _In_ int, _In_ int, _Out_opt_ LPPOINT)
BOOL WINAPI Rectangle(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI LineTo(_In_ HDC, _In_ int, _In_ int)

◆ ColorKeyedMaskBlt()

BOOL ColorKeyedMaskBlt ( HDC  hdcDest,
int  nXDest,
int  nYDest,
int  nWidth,
int  nHeight,
HDC  hdcSrc,
int  nXSrc,
int  nYSrc,
HBITMAP  hbmMask,
int  xMask,
int  yMask,
DWORD  dwRop,
COLORREF  keyColor 
)

Definition at line 312 of file drawing.cpp.

315{
316 HDC hTempDC;
317 HDC hTempDC2;
318 HBITMAP hTempBm;
319 HBRUSH hTempBrush;
320 HBITMAP hTempMask;
321
322 hTempDC = CreateCompatibleDC(hdcSrc);
323 hTempDC2 = CreateCompatibleDC(hdcSrc);
324 hTempBm = CreateCompatibleBitmap(hTempDC, nWidth, nHeight);
325 SelectObject(hTempDC, hTempBm);
326 hTempBrush = CreateSolidBrush(keyColor);
327 SelectObject(hTempDC, hTempBrush);
328 BitBlt(hTempDC, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY);
329 PatBlt(hTempDC, 0, 0, nWidth, nHeight, PATINVERT);
330 hTempMask = CreateBitmap(nWidth, nHeight, 1, 1, NULL);
331 SelectObject(hTempDC2, hTempMask);
332 BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, 0, 0, SRCCOPY);
333 SelectObject(hTempDC, hbmMask);
334 BitBlt(hTempDC2, 0, 0, nWidth, nHeight, hTempDC, xMask, yMask, SRCAND);
335 MaskBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, hTempMask, xMask, yMask, dwRop);
336 DeleteDC(hTempDC);
337 DeleteDC(hTempDC2);
338 DeleteObject(hTempBm);
339 DeleteObject(hTempBrush);
340 DeleteObject(hTempMask);
341 return TRUE;
342}
#define TRUE
Definition: types.h:120
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
static HBITMAP
Definition: button.c:44
static HDC
Definition: imagelist.c:92
HBITMAP WINAPI CreateBitmap(_In_ INT cx, _In_ INT cy, _In_ UINT cPlanes, _In_ UINT cBitsPerPel, _In_opt_ const VOID *pvBits)
#define PATINVERT
Definition: wingdi.h:328
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)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define SRCCOPY
Definition: wingdi.h:333
BOOL WINAPI PatBlt(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ DWORD)
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
BOOL WINAPI DeleteDC(_In_ HDC)
#define SRCAND
Definition: wingdi.h:330
static HDC hdcSrc
Definition: xlate.c:32

Referenced by SelectionModel::DrawSelection().

◆ Ellp()

void Ellp ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  fg,
COLORREF  bg,
int  thickness,
int  style 
)

Definition at line 40 of file drawing.cpp.

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}
UINT lbStyle
Definition: wingdi.h:1747
ULONG_PTR lbHatch
Definition: wingdi.h:1749
COLORREF lbColor
Definition: wingdi.h:1748
HBRUSH WINAPI CreateBrushIndirect(_In_ const LOGBRUSH *plb)
#define BS_HOLLOW
Definition: wingdi.h:1088
#define BS_SOLID
Definition: wingdi.h:1086

Referenced by EllipseTool::draw().

◆ Erase()

void Erase ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  color,
LONG  radius 
)

Definition at line 117 of file drawing.cpp.

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++)
126 Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - radius + 1,
127 (y1 * (b - a) + y2 * a) / b - radius + 1, (x1 * (b - a) + x2 * a) / b + radius + 1,
128 (y1 * (b - a) + y2 * a) / b + radius + 1);
129 DeleteObject(SelectObject(hdc, oldBrush));
130 DeleteObject(SelectObject(hdc, oldPen));
131}

Referenced by RubberTool::draw(), GetUpdateRect(), and IntBeginPaint().

◆ Fill()

void Fill ( HDC  hdc,
LONG  x,
LONG  y,
COLORREF  color 
)

Definition at line 109 of file drawing.cpp.

110{
111 HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
113 DeleteObject(SelectObject(hdc, oldBrush));
114}
DWORD GetPixel(LPDIRECTDRAWSURFACE7 Surface, UINT x, UINT y)
Definition: blt.cpp:2
#define FLOODFILLSURFACE
Definition: wingdi.h:645
BOOL WINAPI ExtFloodFill(_In_ HDC, _In_ int, _In_ int, _In_ COLORREF, _In_ UINT)

Referenced by CheckStringBuffer(), CheckStringBufferA(), CheckStringBufferW(), DIB_24BPP_HLine(), FillTool::OnButtonDown(), RtlFillMemory(), RtlFillMemoryUlong(), TuiDrawBox(), and UiDrawBox().

◆ Line()

void Line ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  color,
int  thickness 
)

Definition at line 16 of file drawing.cpp.

17{
18 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, thickness, color));
19 MoveToEx(hdc, x1, y1, NULL);
20 LineTo(hdc, x2, y2);
22}

◆ Poly()

void Poly ( HDC  hdc,
POINT lpPoints,
int  nCount,
COLORREF  fg,
COLORREF  bg,
int  thickness,
int  style,
BOOL  closed,
BOOL  inverted 
)

Definition at line 70 of file drawing.cpp.

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}
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI Polyline(_In_ HDC hdc, _In_reads_(cpt) const POINT *apt, _In_ int cpt)
#define R2_NOTXORPEN
Definition: wingdi.h:351
int WINAPI GetROP2(_In_ HDC)
Definition: dc.c:1086
int WINAPI SetROP2(_In_ HDC, _In_ int)
Definition: dc.c:1107

Referenced by SelectionModel::CalculateBoundingBoxAndContents(), ShapeTool::draw(), SelectionModel::DrawBackgroundPoly(), and SelectionModel::DrawFramePoly().

◆ Rect()

void Rect ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  fg,
COLORREF  bg,
int  thickness,
int  style 
)

Definition at line 25 of file drawing.cpp.

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}

◆ RectSel()

void RectSel ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2 
)

Definition at line 228 of file drawing.cpp.

229{
230 HBRUSH oldBrush;
231 LOGBRUSH logbrush;
232 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, GetSysColor(COLOR_HIGHLIGHT)));
233 UINT oldRop = GetROP2(hdc);
234
236
237 logbrush.lbStyle = BS_HOLLOW;
238 logbrush.lbColor = 0;
239 logbrush.lbHatch = 0;
240 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
241 Rectangle(hdc, x1, y1, x2, y2);
242 DeleteObject(SelectObject(hdc, oldBrush));
243 DeleteObject(SelectObject(hdc, oldPen));
244
245 SetROP2(hdc, oldRop);
246}
#define PS_DOT
Definition: wingdi.h:588
DWORD WINAPI GetSysColor(_In_ int)
#define COLOR_HIGHLIGHT
Definition: winuser.h:920

Referenced by RectSelTool::OnMouseMove(), and TextTool::UpdatePoint().

◆ Replace()

void Replace ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  fg,
COLORREF  bg,
LONG  radius 
)

Definition at line 134 of file drawing.cpp.

135{
136 LONG a, b, x, y;
137 b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
138
139 for(a = 0; a <= b; a++)
140 for(y = (y1 * (b - a) + y2 * a) / b - radius + 1;
141 y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++)
142 for(x = (x1 * (b - a) + x2 * a) / b - radius + 1;
143 x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++)
144 if (GetPixel(hdc, x, y) == fg)
145 SetPixel(hdc, x, y, bg);
146}

Referenced by COMDLG32_FR_CheckPartial(), COMDLG32_FR_HandleWMCommand(), RubberTool::draw(), UDFHardLink(), UDFHardLinkFile__(), UDFRename(), and UDFRenameMoveFile__().

◆ RRect()

void RRect ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  fg,
COLORREF  bg,
int  thickness,
int  style 
)

Definition at line 55 of file drawing.cpp.

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}
BOOL WINAPI RoundRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int)

Referenced by RRectTool::draw().

◆ SelectionFrame()

void SelectionFrame ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  system_selection_color 
)

Definition at line 249 of file drawing.cpp.

250{
251 HBRUSH oldBrush;
252 LOGBRUSH logbrush;
253 HPEN oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_DOT, 1, system_selection_color));
254
255 logbrush.lbStyle = BS_HOLLOW;
256 logbrush.lbColor = 0;
257 logbrush.lbHatch = 0;
258 oldBrush = (HBRUSH) SelectObject(hdc, CreateBrushIndirect(&logbrush));
259 Rectangle(hdc, x1, y1, x2, y2); /* SEL BOX FRAME */
260 DeleteObject(SelectObject(hdc, oldBrush));
261 DeleteObject(SelectObject(hdc, oldPen));
262 oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, system_selection_color));
263 oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(system_selection_color));
264 Rectangle(hdc, x1 - 1, y1 - 1, x1 + 2, y1 + 2);
265 Rectangle(hdc, x2 - 2, y1 - 1, x2 + 2, y1 + 2);
266 Rectangle(hdc, x1 - 1, y2 - 2, x1 + 2, y2 + 1);
267 Rectangle(hdc, x2 - 2, y2 - 2, x2 + 2, y2 + 1);
268 Rectangle(hdc, (x1 + x2) / 2 - 1, y1 - 1, (x1 + x2) / 2 + 2, y1 + 2);
269 Rectangle(hdc, (x1 + x2) / 2 - 1, y2 - 2, (x1 + x2) / 2 + 2, y2 + 1);
270 Rectangle(hdc, x1 - 1, (y1 + y2) / 2 - 1, x1 + 2, (y1 + y2) / 2 + 2);
271 Rectangle(hdc, x2 - 2, (y1 + y2) / 2 - 1, x2 + 1, (y1 + y2) / 2 + 2);
272 DeleteObject(SelectObject(hdc, oldBrush));
273 DeleteObject(SelectObject(hdc, oldPen));
274}

Referenced by CSelectionWindow::OnPaint().

◆ Text()

void Text ( HDC  hdc,
LONG  x1,
LONG  y1,
LONG  x2,
LONG  y2,
COLORREF  fg,
COLORREF  bg,
LPCTSTR  lpchText,
HFONT  font,
LONG  style 
)

Definition at line 277 of file drawing.cpp.

278{
279 INT iSaveDC = SaveDC(hdc); // We will modify the clipping region. Save now.
280
281 RECT rc;
282 SetRect(&rc, x1, y1, x2, y2);
283
284 if (style == 0) // Transparent
285 {
288 }
289 else // Opaque
290 {
292 SetBkColor(hdc, bg);
293
294 HBRUSH hbr = CreateSolidBrush(bg);
295 FillRect(hdc, &rc, hbr); // Fill the background
296 DeleteObject(hbr);
297 }
298
299 IntersectClipRect(hdc, rc.left, rc.top, rc.right, rc.bottom);
300
301 HGDIOBJ hFontOld = SelectObject(hdc, font);
302 SetTextColor(hdc, fg);
303 const UINT uFormat = DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_NOCLIP |
305 DrawText(hdc, lpchText, -1, &rc, uFormat);
306 SelectObject(hdc, hFontOld);
307
308 RestoreDC(hdc, iSaveDC); // Restore
309}
Definition: mk_font.cpp:20
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
int32_t INT
Definition: typedefs.h:58
COLORREF WINAPI SetBkColor(_In_ HDC, _In_ COLORREF)
Definition: dc.c:999
int WINAPI IntersectClipRect(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int)
#define TRANSPARENT
Definition: wingdi.h:950
BOOL WINAPI RestoreDC(_In_ HDC, _In_ int)
COLORREF WINAPI GetBkColor(_In_ HDC)
Definition: dc.c:978
#define OPAQUE
Definition: wingdi.h:949
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
int WINAPI SetBkMode(_In_ HDC, _In_ int)
Definition: dc.c:1056
COLORREF WINAPI SetTextColor(_In_ HDC, _In_ COLORREF)
Definition: text.c:918
int WINAPI SaveDC(_In_ HDC)
#define DT_NOPREFIX
Definition: winuser.h:537
#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)