]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/dc.tex
Added EVT_MOVE_START, EVT_MOVE_END (wxMSW only for now)
[wxWidgets.git] / docs / latex / wx / dc.tex
CommitLineData
a660d684
KB
1\section{\class{wxDC}}\label{wxdc}
2
3A wxDC is a {\it device context} onto which graphics and text can be drawn.
4It is intended to represent a number of output devices in a generic way,
fe604ccd 5so a window can have a device context associated with it, and a printer also has a device context.
a660d684
KB
6In this way, the same piece of code may write to a number of different devices,
7if the device context is used as a parameter.
8
6bcf450c
VZ
9Notice that wxDC is an abstract base class and can't be created directly,
10please use \helpref{wxPaintDC}{wxpaintdc}, \helpref{wxClientDC}{wxclientdc},
11\helpref{wxWindowDC}{wxwindowdc}, \helpref{wxScreenDC}{wxscreendc},
12\helpref{wxMemoryDC}{wxmemorydc} or \helpref{wxPrinterDC}{wxprinterdc}.
a660d684 13
eb750029
VZ
14% VZ: we should really document them instead of this lame excuse, but I don't
15% have time for it now, when it is done please remove this
16Please note that in addition to the versions of the methods documented here,
17there are also versions which accept single {\tt wxPoint} parameter instead of
18two {\tt wxCoord} ones or {\tt wxPoint} and {\tt wxSize} instead of four of
19them.
20
a0afe18f
SC
21\wxheading{Support for Transparency / Alpha Channel}
22
23On Mac OS X when using Core Graphics (wx\_MAC\_USE\_CORE\_GRAPHICS set to 1)
24colors with alpha are supported, so instances {\tt wxPen} or {\tt wxBrush} that are built from {\tt wxColour} use
25the color's alpha values when stroking or filling.
26
a660d684
KB
27\wxheading{Derived from}
28
29\helpref{wxObject}{wxobject}
30
954b8ae6
JS
31\wxheading{Include files}
32
33<wx/dc.h>
34
a7af285d
VZ
35\wxheading{Library}
36
37\helpref{wxCore}{librarieslist}
38
a660d684
KB
39\wxheading{See also}
40
41\helpref{Overview}{dcoverview}
42
43\latexignore{\rtfignore{\wxheading{Members}}}
44
6e76b35d 45
a660d684
KB
46\membersection{wxDC::Blit}\label{wxdcblit}
47
1f897d25
VZ
48\func{bool}{Blit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
49 \param{wxDC* }{source}, \param{wxCoord}{ xsrc}, \param{wxCoord}{ ysrc}, \param{int}{ logicalFunc = wxCOPY},
cc81d32f 50 \param{bool }{useMask = false}, \param{wxCoord}{ xsrcMask = -1}, \param{wxCoord}{ ysrcMask = -1}}
a660d684
KB
51
52Copy from a source DC to this DC, specifying the destination
0cbff120
JS
53coordinates, size of area to copy, source DC, source coordinates,
54logical function, whether to use a bitmap mask, and mask source position.
a660d684
KB
55
56\wxheading{Parameters}
57
58\docparam{xdest}{Destination device context x position.}
59
60\docparam{ydest}{Destination device context y position.}
61
62\docparam{width}{Width of source area to be copied.}
63
64\docparam{height}{Height of source area to be copied.}
65
66\docparam{source}{Source device context.}
67
68\docparam{xsrc}{Source device context x position.}
69
70\docparam{ysrc}{Source device context y position.}
71
72\docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.}
73
cc81d32f 74\docparam{useMask}{If true, Blit does a transparent blit using the mask that is associated with the bitmap
0cbff120 75selected into the source device context. The Windows implementation does the following if MaskBlt cannot be used:
a660d684
KB
76
77\begin{enumerate}
78\item Creates a temporary bitmap and copies the destination area into it.
79\item Copies the source area into the temporary bitmap using the specified logical function.
80\item Sets the masked area in the temporary bitmap to BLACK by ANDing the
81mask bitmap with the temp bitmap with the foreground colour set to WHITE
82and the bg colour set to BLACK.
83\item Sets the unmasked area in the destination area to BLACK by ANDing the
84mask bitmap with the destination area with the foreground colour set to BLACK
85and the background colour set to WHITE.
86\item ORs the temporary bitmap with the destination area.
87\item Deletes the temporary bitmap.
88\end{enumerate}
89
90This sequence of operations ensures that the source's transparent area need not be black,
91and logical functions are supported.
0cbff120 92
aef94d68 93{\bf Note:} on Windows, blitting with masks can be speeded up considerably by compiling
fc2171bd 94wxWidgets with the wxUSE\_DC\_CACHE option enabled. You can also influence whether MaskBlt
0cbff120
JS
95or the explicit mask blitting code above is used, by using \helpref{wxSystemOptions}{wxsystemoptions} and
96setting the {\bf no-maskblt} option to 1.
97
a660d684
KB
98}
99
0cbff120
JS
100\docparam{xsrcMask}{Source x position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
101will be assumed for the mask source position. Currently only implemented on Windows.}
102
103\docparam{ysrcMask}{Source y position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
104will be assumed for the mask source position. Currently only implemented on Windows.}
105
106
a660d684
KB
107\wxheading{Remarks}
108
109There is partial support for Blit in wxPostScriptDC, under X.
110
111See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
112
ac1edf35 113\wxheading{See also}
a660d684 114
e3b81044 115\helpref{wxDC::StretchBlit}{wxdcstretchblit}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
a660d684 116
aef94d68 117\begin{comment}
6e76b35d 118
0cbff120
JS
119\membersection{wxDC::CacheEnabled}\label{wxdccacheenabled}
120
121\func{static bool}{CacheEnabled}{\void}
122
cc81d32f 123On supported platforms (currently only Windows), returns true
0cbff120
JS
124if the DC cache is enabled. The DC cache
125can speed up the \helpref{Blit}{wxdcblit} operation when
126drawing a large number of masked bitmaps.
127
128If using the cache functions in your code, please test for the
129wxUSE\_DC\_CACHEING preprocessor symbol for portability.
130
131\wxheading{See also}
132
133\helpref{wxDC::EnableCache}{wxdcenablecache}, \helpref{wxDC::ClearCache}
aef94d68 134\end{comment}
0cbff120 135
6e76b35d 136
f6bcfd97
BP
137\membersection{wxDC::CalcBoundingBox}\label{wxdccalcboundingbox}
138
139\func{void}{CalcBoundingBox}{\param{wxCoord }{x}, \param{wxCoord }{y}}
140
141Adds the specified point to the bounding box which can be retrieved with
142\helpref{MinX}{wxdcminx}, \helpref{MaxX}{wxdcmaxx} and
143\helpref{MinY}{wxdcminy}, \helpref{MaxY}{wxdcmaxy} functions.
144
145\wxheading{See also}
146
147\helpref{ResetBoundingBox}{wxdcresetboundingbox}
148
6e76b35d 149
a660d684
KB
150\membersection{wxDC::Clear}\label{wxdcclear}
151
152\func{void}{Clear}{\void}
153
154Clears the device context using the current background brush.
155
aef94d68 156\begin{comment}
6e76b35d 157
0cbff120
JS
158\membersection{wxDC::ClearCache}\label{wxdcclearcache}
159
160\func{static void}{ClearCache}{\void}
161
162On supported platforms (currently only Windows), clears
163the contents of the DC cache (one bitmap and two Windows device contexts). The DC cache
164can speed up the \helpref{Blit}{wxdcblit} operation when
165drawing a large number of masked bitmaps. You should
166call ClearCache at the end of length DC operations if you wish to only use
167the cache transiently; you should also call it as your application exits.
168
169If using the cache functions in your code, please test for the
170wxUSE\_DC\_CACHEING preprocessor symbol for portability.
171
172\wxheading{See also}
173
174\helpref{wxDC::EnableCache}{wxdcenablecache}, \helpref{wxDC::CacheEnabled}
aef94d68 175\end{comment}
0cbff120 176
6e76b35d 177
b1263dcf
WS
178\membersection{wxDC::ComputeScaleAndOrigin}\label{wxdccomputescaleandorigin}
179
180\func{virtual void}{ComputeScaleAndOrigin}{\void}
181
182Performs all necessary computations for given platform and context type
183after each change of scale and origin parameters. Usually called automatically
184internally after such changes.
185
186
a660d684
KB
187\membersection{wxDC::CrossHair}\label{wxdccrosshair}
188
1f897d25 189\func{void}{CrossHair}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684
KB
190
191Displays a cross hair using the current pen. This is a vertical
fe604ccd 192and horizontal line the height and width of the window, centred
a660d684
KB
193on the given point.
194
6e76b35d 195
a660d684
KB
196\membersection{wxDC::DestroyClippingRegion}\label{wxdcdestroyclippingregion}
197
198\func{void}{DestroyClippingRegion}{\void}
199
200Destroys the current clipping region so that none of the DC is clipped.
201See also \helpref{wxDC::SetClippingRegion}{wxdcsetclippingregion}.
202
6e76b35d 203
a660d684
KB
204\membersection{wxDC::DeviceToLogicalX}\label{wxdcdevicetologicalx}
205
621b83d9 206\func{virtual wxCoord}{DeviceToLogicalX}{\param{wxCoord}{ x}}
a660d684
KB
207
208Convert device X coordinate to logical coordinate, using the current
209mapping mode.
210
6e76b35d 211
a660d684
KB
212\membersection{wxDC::DeviceToLogicalXRel}\label{wxdcdevicetologicalxrel}
213
621b83d9 214\func{virtual wxCoord}{DeviceToLogicalXRel}{\param{wxCoord}{ x}}
a660d684
KB
215
216Convert device X coordinate to relative logical coordinate, using the current
1387b68a
GD
217mapping mode but ignoring the x axis orientation.
218Use this function for converting a width, for example.
a660d684 219
6e76b35d 220
a660d684
KB
221\membersection{wxDC::DeviceToLogicalY}\label{wxdcdevicetologicaly}
222
621b83d9 223\func{virtual wxCoord}{DeviceToLogicalY}{\param{wxCoord}{ y}}
a660d684
KB
224
225Converts device Y coordinate to logical coordinate, using the current
226mapping mode.
227
6e76b35d 228
a660d684
KB
229\membersection{wxDC::DeviceToLogicalYRel}\label{wxdcdevicetologicalyrel}
230
621b83d9 231\func{virtual wxCoord}{DeviceToLogicalYRel}{\param{wxCoord}{ y}}
a660d684
KB
232
233Convert device Y coordinate to relative logical coordinate, using the current
1387b68a
GD
234mapping mode but ignoring the y axis orientation.
235Use this function for converting a height, for example.
a660d684 236
6e76b35d 237
a660d684
KB
238\membersection{wxDC::DrawArc}\label{wxdcdrawarc}
239
8bdd5efa 240\func{void}{DrawArc}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ xc}, \param{wxCoord}{ yc}}
a660d684 241
b8de493f 242Draws an arc of a circle, centred on ({\it xc, yc}), with starting point ({\it x1, y1})
a660d684
KB
243and ending at ({\it x2, y2}). The current pen is used for the outline
244and the current brush for filling the shape.
245
b8de493f
JS
246The arc is drawn in an anticlockwise direction from the start point to the end point.
247
6e76b35d 248
72fd19a1
JS
249\membersection{wxDC::DrawBitmap}\label{wxdcdrawbitmap}
250
1f897d25 251\func{void}{DrawBitmap}{\param{const wxBitmap\&}{ bitmap}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{bool}{ transparent}}
72fd19a1 252
cc81d32f 253Draw a bitmap on the device context at the specified point. If {\it transparent} is true and the bitmap has
72fd19a1
JS
254a transparency mask, the bitmap will be drawn transparently.
255
41fbc841 256When drawing a mono-bitmap, the current text foreground colour will be used to draw the foreground
9000c624 257of the bitmap (all bits set to 1), and the current text background colour to draw the background
fa482912 258(all bits set to 0). See also \helpref{SetTextForeground}{wxdcsettextforeground},
9000c624 259\helpref{SetTextBackground}{wxdcsettextbackground} and \helpref{wxMemoryDC}{wxmemorydc}.
41fbc841 260
6e76b35d 261
cd9da200
VZ
262\membersection{wxDC::DrawCheckMark}\label{wxdcdrawcheckmark}
263
264\func{void}{DrawCheckMark}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
265
266\func{void}{DrawCheckMark}{\param{const wxRect \&}{rect}}
267
268Draws a check mark inside the given rectangle.
269
6e76b35d 270
0371e9a8
VZ
271\membersection{wxDC::DrawCircle}\label{wxdcdrawcircle}
272
273\func{void}{DrawCircle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ radius}}
274
275\func{void}{DrawCircle}{\param{const wxPoint\&}{ pt}, \param{wxCoord}{ radius}}
276
277Draws a circle with the given centre and radius.
278
279\wxheading{See also}
280
281\helpref{DrawEllipse}{wxdcdrawellipse}
282
6e76b35d 283
a660d684
KB
284\membersection{wxDC::DrawEllipse}\label{wxdcdrawellipse}
285
1f897d25 286\func{void}{DrawEllipse}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
a660d684 287
0371e9a8
VZ
288\func{void}{DrawEllipse}{\param{const wxPoint\&}{ pt}, \param{const wxSize\&}{ size}}
289
290\func{void}{DrawEllipse}{\param{const wxRect\&}{ rect}}
291
292Draws an ellipse contained in the rectangle specified either with the given top
293left corner and the given size or directly. The current pen is used for the
294outline and the current brush for filling the shape.
295
296\wxheading{See also}
297
298\helpref{DrawCircle}{wxdcdrawcircle}
a660d684 299
6e76b35d 300
a660d684
KB
301\membersection{wxDC::DrawEllipticArc}\label{wxdcdrawellipticarc}
302
1f897d25 303\func{void}{DrawEllipticArc}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
a660d684
KB
304 \param{double}{ start}, \param{double}{ end}}
305
06d20283 306Draws an arc of an ellipse. The current pen is used for drawing the arc and
267a7108 307the current brush is used for drawing the pie.
a660d684
KB
308
309{\it x} and {\it y} specify the x and y coordinates of the upper-left corner of the rectangle that contains
310the ellipse.
311
06d20283 312{\it width} and {\it height} specify the width and height of the rectangle that contains
a660d684
KB
313the ellipse.
314
315{\it start} and {\it end} specify the start and end of the arc relative to the three-o'clock
316position from the center of the rectangle. Angles are specified
317in degrees (360 is a complete circle). Positive values mean
318counter-clockwise motion. If {\it start} is equal to {\it end}, a
319complete ellipse will be drawn.
320
6e76b35d 321
a660d684
KB
322\membersection{wxDC::DrawIcon}\label{wxdcdrawicon}
323
1f897d25 324\func{void}{DrawIcon}{\param{const wxIcon\&}{ icon}, \param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684
KB
325
326Draw an icon on the display (does nothing if the device context is PostScript).
fe604ccd 327This can be the simplest way of drawing bitmaps on a window.
a660d684 328
6e76b35d 329
547e2b0c
WS
330\membersection{wxDC::DrawLabel}\label{wxdcdrawlabel}
331
332\func{virtual void}{DrawLabel}{\param{const wxString\&}{ text},
333 \param{const wxBitmap\&}{ image},
334 \param{const wxRect\&}{ rect},
717ba489 335 \param{int}{ alignment = wxALIGN\_LEFT | wxALIGN\_TOP},
547e2b0c
WS
336 \param{int}{ indexAccel = -1},
337 \param{wxRect *}{rectBounding = NULL}}
338
339\func{void}{DrawLabel}{\param{const wxString\&}{ text}, \param{const wxRect\&}{ rect},
717ba489 340 \param{int}{ alignment = wxALIGN\_LEFT | wxALIGN\_TOP},
547e2b0c
WS
341 \param{int}{ indexAccel = -1}}
342
343Draw optional bitmap and the text into the given rectangle and aligns it as specified
344by alignment parameter; it also will emphasize the character with the given index if
345it is != -1 and return the bounding rectangle if required.
346
347
a660d684
KB
348\membersection{wxDC::DrawLine}\label{wxdcdrawline}
349
1f897d25 350\func{void}{DrawLine}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}}
a660d684
KB
351
352Draws a line from the first point to the second. The current pen is used
90049178
VZ
353for drawing the line. Note that the point $(x2, y2)$ is {\emph not} part of the
354line and is not drawn by this function (this is consistent with the behaviour
355of many other toolkits).
a660d684 356
6e76b35d 357
a660d684
KB
358\membersection{wxDC::DrawLines}\label{wxdcdrawlines}
359
1f897d25 360\func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
a660d684 361
1f897d25 362\func{void}{DrawLines}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
a660d684
KB
363
364Draws lines using an array of {\it points} of size {\it n}, or list of
365pointers to points, adding the optional offset coordinate. The current
366pen is used for drawing the lines. The programmer is responsible for
367deleting the list of points.
368
06d20283
RD
369\pythonnote{The wxPython version of this method accepts a Python list
370of wxPoint objects.}
371
f3539882
VZ
372\perlnote{The wxPerl version of this method accepts
373 as its first parameter a reference to an array
374 of wxPoint objects.}
375
6e76b35d 376
a660d684
KB
377\membersection{wxDC::DrawPolygon}\label{wxdcdrawpolygon}
378
1f897d25 379\func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
a660d684
KB
380 \param{int }{fill\_style = wxODDEVEN\_RULE}}
381
1f897d25 382\func{void}{DrawPolygon}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
a660d684
KB
383 \param{int }{fill\_style = wxODDEVEN\_RULE}}
384
385Draws a filled polygon using an array of {\it points} of size {\it n},
386or list of pointers to points, adding the optional offset coordinate.
387
388The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the
389default) or {\bf wxWINDING\_RULE}.
390
391The current pen is used for drawing the outline, and the current brush
392for filling the shape. Using a transparent brush suppresses filling.
393The programmer is responsible for deleting the list of points.
394
fc2171bd 395Note that wxWidgets automatically closes the first and last points.
a660d684 396
06d20283
RD
397\pythonnote{The wxPython version of this method accepts a Python list
398of wxPoint objects.}
399
f3539882
VZ
400\perlnote{The wxPerl version of this method accepts
401 as its first parameter a reference to an array
402 of wxPoint objects.}
403
6e76b35d
VZ
404
405\membersection{wxDC::DrawPolyPolygon}\label{wxdcdrawpolypolygon}
406
163dc80e
VZ
407\func{void}{DrawPolyPolygon}{\param{int}{ n}, \param{int}{ count[]}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
408 \param{int }{fill\_style = wxODDEVEN\_RULE}}
409
410Draws two or more filled polygons using an array of {\it points}, adding the
411optional offset coordinates.
412
413Notice that for the platforms providing a native implementation
414of this function (Windows and PostScript-based wxDC currently), this is more
415efficient than using \helpref{DrawPolygon}{wxdcdrawpolygon} in a loop.
416
417{\it n} specifies the number of polygons to draw, the array {\it count} of size
418{\it n} specifies the number of points in each of the polygons in the
419{\it points} array.
420
421The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the default)
422or {\bf wxWINDING\_RULE}.
423
424The current pen is used for drawing the outline, and the current brush for
425filling the shape. Using a transparent brush suppresses filling.
426
427The polygons maybe disjoint or overlapping. Each polygon specified in a call to
428{\bf DrawPolyPolygon} must be closed. Unlike polygons created by the
429\helpref{DrawPolygon}{wxdcdrawpolygon} member function, the polygons created by
430{\bf DrawPolyPolygon} are not closed automatically.
431
432\pythonnote{Not implemented yet}
6e76b35d 433
163dc80e 434\perlnote{Not implemented yet}
6e76b35d
VZ
435
436
a660d684
KB
437\membersection{wxDC::DrawPoint}\label{wxdcdrawpoint}
438
1f897d25 439\func{void}{DrawPoint}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684 440
4c275284 441Draws a point using the color of the current pen. Note that the other properties of the pen are not used, such as width etc..
a660d684 442
6e76b35d 443
a660d684
KB
444\membersection{wxDC::DrawRectangle}\label{wxdcdrawrectangle}
445
1f897d25 446\func{void}{DrawRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
a660d684
KB
447
448Draws a rectangle with the given top left corner, and with the given
449size. The current pen is used for the outline and the current brush
450for filling the shape.
451
6e76b35d 452
1f897d25
VZ
453\membersection{wxDC::DrawRotatedText}\label{wxdcdrawrotatedtext}
454
455\func{void}{DrawRotatedText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{double}{ angle}}
456
457Draws the text rotated by {\it angle} degrees.
458
4770df95
VZ
459{\bf NB:} Under Win9x only TrueType fonts can be drawn by this function. In
460particular, a font different from {\tt wxNORMAL\_FONT} should be used as the
461latter is not a TrueType font. {\tt wxSWISS\_FONT} is an example of a font
462which is.
463
1f897d25
VZ
464\wxheading{See also}
465
466\helpref{DrawText}{wxdcdrawtext}
467
6e76b35d 468
a660d684
KB
469\membersection{wxDC::DrawRoundedRectangle}\label{wxdcdrawroundedrectangle}
470
f5d7ba75 471\func{void}{DrawRoundedRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}, \param{double}{ radius}}
a660d684
KB
472
473Draws a rectangle with the given top left corner, and with the given
474size. The corners are quarter-circles using the given radius. The
475current pen is used for the outline and the current brush for filling
476the shape.
477
478If {\it radius} is positive, the value is assumed to be the
479radius of the rounded corner. If {\it radius} is negative,
480the absolute value is assumed to be the {\it proportion} of the smallest
481dimension of the rectangle. This means that the corner can be
482a sensible size relative to the size of the rectangle, and also avoids
483the strange effects X produces when the corners are too big for
484the rectangle.
485
6e76b35d 486
a660d684
KB
487\membersection{wxDC::DrawSpline}\label{wxdcdrawspline}
488
f3542025 489\func{void}{DrawSpline}{\param{int }{n}, \param{wxPoint }{points[]}}
2a138829
JS
490
491Draws a spline between all given control points, using the current
492pen.
493
a660d684
KB
494\func{void}{DrawSpline}{\param{wxList *}{points}}
495
496Draws a spline between all given control points, using the current
2a138829 497pen. Doesn't delete the wxList and contents.
a660d684 498
1f897d25 499\func{void}{DrawSpline}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ x3}, \param{wxCoord}{ y3}}
a660d684
KB
500
501Draws a three-point spline using the current pen.
502
06d20283
RD
503\pythonnote{The wxPython version of this method accepts a Python list
504of wxPoint objects.}
505
f3539882
VZ
506\perlnote{The wxPerl version of this method accepts a reference to an array
507 of wxPoint objects.}
508
6e76b35d 509
a660d684
KB
510\membersection{wxDC::DrawText}\label{wxdcdrawtext}
511
1f897d25 512\func{void}{DrawText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684
KB
513
514Draws a text string at the specified point, using the current text font,
515and the current text foreground and background colours.
516
517The coordinates refer to the top-left corner of the rectangle bounding
518the string. See \helpref{wxDC::GetTextExtent}{wxdcgettextextent} for how
519to get the dimensions of a text string, which can be used to position the
520text more precisely.
521
f6bcfd97
BP
522{\bf NB:} under wxGTK the current
523\helpref{logical function}{wxdcgetlogicalfunction} is used by this function
524but it is ignored by wxMSW. Thus, you should avoid using logical functions
525with this function in portable programs.
526
aef94d68 527\begin{comment}
6e76b35d 528
0cbff120
JS
529\membersection{wxDC::EnableCache}\label{wxdcenablecache}
530
531\func{static void}{EnableCache}{\param{bool}{ enableCache}}
532
533On supported platforms (currently only Windows), enables the DC cache
534which can speed up the \helpref{Blit}{wxdcblit} operation when
535drawing a large number of masked bitmaps.
536
537If using the cache functions in your code, please test for the
538wxUSE\_DC\_CACHEING preprocessor symbol for portability.
539
540\wxheading{See also}
541
542\helpref{wxDC::CacheEnabled}{wxdccacheenabled}, \helpref{wxDC::ClearCache}
aef94d68 543\end{comment}
0cbff120 544
6e76b35d 545
a660d684
KB
546\membersection{wxDC::EndDoc}\label{wxdcenddoc}
547
548\func{void}{EndDoc}{\void}
549
550Ends a document (only relevant when outputting to a printer).
551
6e76b35d 552
a660d684
KB
553\membersection{wxDC::EndPage}\label{wxdcendpage}
554
555\func{void}{EndPage}{\void}
556
557Ends a document page (only relevant when outputting to a printer).
558
6e76b35d 559
a660d684
KB
560\membersection{wxDC::FloodFill}\label{wxdcfloodfill}
561
387ebd3e 562\func{bool}{FloodFill}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{const wxColour\&}{ colour}, \param{int}{ style=wxFLOOD\_SURFACE}}
a660d684 563
15770d1a
JS
564Flood fills the device context starting from the given point, using
565the {\it current brush colour}, and using a style:
a660d684
KB
566
567\begin{itemize}\itemsep=0pt
568\item wxFLOOD\_SURFACE: the flooding occurs until a colour other than the given colour is encountered.
569\item wxFLOOD\_BORDER: the area to be flooded is bounded by the given colour.
570\end{itemize}
571
cc81d32f 572Returns false if the operation failed.
387ebd3e 573
b1699cd3 574{\it Note:} The present implementation for non-Windows platforms may fail to find
387ebd3e 575colour borders if the pixels do not match the colour exactly. However the
cc81d32f 576function will still return true.
a660d684 577
6e76b35d 578
a660d684
KB
579\membersection{wxDC::GetBackground}\label{wxdcgetbackground}
580
f6bcfd97
BP
581\constfunc{const wxBrush\&}{GetBackground}{\void}
582
a660d684
KB
583Gets the brush used for painting the background (see \helpref{wxDC::SetBackground}{wxdcsetbackground}).
584
6e76b35d 585
f6bcfd97
BP
586\membersection{wxDC::GetBackgroundMode}\label{wxdcgetbackgroundmode}
587
588\constfunc{int}{GetBackgroundMode}{\void}
589
590Returns the current background mode: {\tt wxSOLID} or {\tt wxTRANSPARENT}.
591
592\wxheading{See also}
593
594\helpref{SetBackgroundMode}{wxdcsetbackgroundmode}
595
6e76b35d 596
a660d684
KB
597\membersection{wxDC::GetBrush}\label{wxdcgetbrush}
598
f6bcfd97
BP
599\constfunc{const wxBrush\&}{GetBrush}{\void}
600
a660d684
KB
601Gets the current brush (see \helpref{wxDC::SetBrush}{wxdcsetbrush}).
602
6e76b35d 603
a660d684
KB
604\membersection{wxDC::GetCharHeight}\label{wxdcgetcharheight}
605
1f897d25 606\func{wxCoord}{GetCharHeight}{\void}
a660d684
KB
607
608Gets the character height of the currently set font.
609
6e76b35d 610
a660d684
KB
611\membersection{wxDC::GetCharWidth}\label{wxdcgetcharwidth}
612
1f897d25 613\func{wxCoord}{GetCharWidth}{\void}
a660d684
KB
614
615Gets the average character width of the currently set font.
616
6e76b35d 617
fe604ccd 618\membersection{wxDC::GetClippingBox}\label{wxdcgetclippingbox}
a660d684 619
1f897d25 620\func{void}{GetClippingBox}{\param{wxCoord}{ *x}, \param{wxCoord}{ *y}, \param{wxCoord}{ *width}, \param{wxCoord}{ *height}}
a660d684
KB
621
622Gets the rectangle surrounding the current clipping region.
623
06d20283
RD
624\pythonnote{No arguments are required and the four values defining the
625rectangle are returned as a tuple.}
626
5873607e 627\perlnote{This method takes no arguments and returns a four element list
0a67eeac 628{\tt ( x, y, width, height )}}
5873607e 629
6e76b35d 630
a660d684
KB
631\membersection{wxDC::GetFont}\label{wxdcgetfont}
632
f6bcfd97
BP
633\constfunc{const wxFont\&}{GetFont}{\void}
634
04905cca
VZ
635Gets the current font. Notice that even although each device context object has
636some default font after creation, this method would return a \texttt{wxNullFont}
637initially and only after calling \helpref{wxDC::SetFont}{wxdcsetfont} a valid
638font is returned.
a660d684 639
6e76b35d 640
6ae7410f
VZ
641\membersection{wxDC::GetLayoutDirection}\label{wxdcgetlayoutdirection}
642
643\constfunc{wxLayoutDirection}{GetLayoutDirection}{\void}
644
645Gets the current layout direction of the device context. On platforms where RTL layout
b18a7b11
VZ
646is supported, the return value will either be \texttt{wxLayout\_LeftToRight} or
647\texttt{wxLayout\_RightToLeft}. If RTL layout is not supported, the return value will
648be \texttt{wxLayout\_Default}.
6ae7410f
VZ
649
650\wxheading{See also}
651
652\helpref{SetLayoutDirection}{wxdcsetlayoutdirection}
653
654
a660d684
KB
655\membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction}
656
657\func{int}{GetLogicalFunction}{\void}
658
659Gets the current logical function (see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}).
660
6e76b35d 661
a660d684
KB
662\membersection{wxDC::GetMapMode}\label{wxdcgetmapmode}
663
664\func{int}{GetMapMode}{\void}
665
666Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}).
667
6e76b35d 668
cc4f194e
VZ
669\membersection{wxDC::GetMultiLineTextExtent}\label{wxdcgetmultilinetextextent}
670
671\constfunc{void}{GetMultiLineTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w},\\
672 \param{wxCoord *}{h}, \param{wxCoord *}{heightLine = NULL}, \param{wxFont *}{font = NULL}}
673
674\constfunc{wxSize}{GetMultiLineTextExtent}{\param{const wxString\& }{string}}
675
676Gets the dimensions of the string using the currently selected font.
677\rtfsp{\it string} is the text string to measure, {\it heightLine}, if non NULL,
678is where to store the height of a single line.
679
680The text extent is returned in {\it w} and {\it h} pointers (first form) or as
681a \helpref{wxSize}{wxsize} object (second form).
682
683If the optional parameter {\it font} is specified and valid, then it is used
684for the text extent calculation. Otherwise the currently selected font is.
685
686Note that this function works both with single-line and multi-line strings.
687
688\wxheading{See also}
689
690\helpref{wxFont}{wxfont},\rtfsp
691\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
692\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
693\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
694
695
42bf070c
RD
696\membersection{wxDC::GetPartialTextExtents}\label{wxdcgetpartialtextextents}
697
698\constfunc{bool}{GetPartialTextExtents}{\param{const wxString\& }{text},
699\param{wxArrayInt\& }{widths}}
700
43e8916f
MW
701Fills the {\it widths} array with the widths from the beginning of
702{\it text} to the corresponding character of {\it text}. The generic
42bf070c
RD
703version simply builds a running total of the widths of each character
704using \helpref{GetTextExtent}{wxdcgettextextent}, however if the
705various platforms have a native API function that is faster or more
43e8916f 706accurate than the generic implementation then it should be used
42bf070c
RD
707instead.
708
cc4f194e
VZ
709\wxheading{See also}
710
711\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent},\rtfsp
712\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
713
42bf070c
RD
714\pythonnote{This method only takes the {\it text} parameter and
715 returns a Python list of integers.}
716
a660d684 717
bc525d00 718\membersection{wxDC::GetPen}\label{wxdcgetpen}
a660d684 719
f6bcfd97
BP
720\constfunc{const wxPen\&}{GetPen}{\void}
721
a660d684
KB
722Gets the current pen (see \helpref{wxDC::SetPen}{wxdcsetpen}).
723
bc525d00 724
a660d684
KB
725\membersection{wxDC::GetPixel}\label{wxdcgetpixel}
726
1f897d25 727\func{bool}{GetPixel}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxColour *}{colour}}
a660d684 728
87b72f94 729Gets in {\it colour} the colour at the specified location.
03ca23b6 730Not available for wxPostScriptDC or wxMetafileDC.
a660d684 731
43e8916f
MW
732Note that setting a pixel can be done using \helpref{DrawPoint}{wxdcdrawpoint}.
733
86e78222
RD
734\pythonnote{For wxPython the wxColour value is returned and is not
735required as a parameter.}
736
5873607e
VZ
737\perlnote{This method only takes the parameters {\tt x} and {\tt y} and returns
738a Wx::Colour value}
739
03ca23b6
JS
740\membersection{wxDC::GetPPI}\label{wxdcgetppi}
741
742\constfunc{wxSize}{GetPPI}{\void}
743
744Returns the resolution of the device in pixels per inch.
6e76b35d 745
a660d684
KB
746\membersection{wxDC::GetSize}\label{wxdcgetsize}
747
03ca23b6 748\constfunc{void}{GetSize}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
a660d684 749
03ca23b6 750\constfunc{wxSize}{GetSize}{\void}
a660d684 751
03ca23b6
JS
752This gets the horizontal and vertical resolution in device units. It can be used to scale graphics to fit the page.
753For example, if {\it maxX} and {\it maxY}\rtfsp
a660d684
KB
754represent the maximum horizontal and vertical `pixel' values used in your
755application, the following code will scale the graphic to fit on the
756printer page:
757
758\begin{verbatim}
1f897d25 759 wxCoord w, h;
a660d684
KB
760 dc.GetSize(&w, &h);
761 double scaleX=(double)(maxX/w);
762 double scaleY=(double)(maxY/h);
763 dc.SetUserScale(min(scaleX,scaleY),min(scaleX,scaleY));
764\end{verbatim}
765
2233e5b8
RD
766\pythonnote{In place of a single overloaded method name, wxPython
767implements the following methods:\par
768\indented{2cm}{\begin{twocollist}
c9110876
VS
769\twocolitem{{\bf GetSize()}}{Returns a wxSize}
770\twocolitem{{\bf GetSizeTuple()}}{Returns a 2-tuple (width, height)}
2233e5b8
RD
771\end{twocollist}}
772}
06d20283 773
5873607e
VZ
774\perlnote{In place of a single overloaded method, wxPerl uses:\par
775\indented{2cm}{\begin{twocollist}
776\twocolitem{{\bf GetSize()}}{Returns a Wx::Size}
777\twocolitem{{\bf GetSizeWH()}}{Returns a 2-element list
0a67eeac 778 {\tt ( width, height )}}
5873607e
VZ
779\end{twocollist}
780}}
781
03ca23b6
JS
782\membersection{wxDC::GetSizeMM}\label{wxdcgetsizemm}
783
784\constfunc{void}{GetSizeMM}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
785
786\constfunc{wxSize}{GetSizeMM}{\void}
787
788Returns the horizontal and vertical resolution in millimetres.
6e76b35d 789
a660d684
KB
790\membersection{wxDC::GetTextBackground}\label{wxdcgettextbackground}
791
f6bcfd97
BP
792\constfunc{const wxColour\&}{GetTextBackground}{\void}
793
a660d684
KB
794Gets the current text background colour (see \helpref{wxDC::SetTextBackground}{wxdcsettextbackground}).
795
6e76b35d 796
a660d684
KB
797\membersection{wxDC::GetTextExtent}\label{wxdcgettextextent}
798
cc4f194e 799\constfunc{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w}, \param{wxCoord *}{h},\\
c94f845b 800 \param{wxCoord *}{descent = NULL}, \param{wxCoord *}{externalLeading = NULL}, \param{const wxFont *}{font = NULL}}
a660d684 801
cc4f194e
VZ
802\constfunc{wxSize}{GetTextExtent}{\param{const wxString\& }{string}}
803
a660d684 804Gets the dimensions of the string using the currently selected font.
cc4f194e 805\rtfsp{\it string} is the text string to measure, {\it descent} is the
a660d684
KB
806dimension from the baseline of the font to the bottom of the
807descender, and {\it externalLeading} is any extra vertical space added
808to the font by the font designer (usually is zero).
809
cc4f194e
VZ
810The text extent is returned in {\it w} and {\it h} pointers (first form) or as
811a \helpref{wxSize}{wxsize} object (second form).
812
268b0725
VZ
813If the optional parameter {\it font} is specified and valid, then it is used
814for the text extent calculation. Otherwise the currently selected font is.
a660d684 815
cc4f194e
VZ
816Note that this function only works with single-line strings.
817
818\wxheading{See also}
819
820\helpref{wxFont}{wxfont},\rtfsp
821\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
822\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
823\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent}
a660d684 824
06d20283
RD
825\pythonnote{The following methods are implemented in wxPython:\par
826\indented{2cm}{\begin{twocollist}
c9110876
VS
827\twocolitem{{\bf GetTextExtent(string)}}{Returns a 2-tuple, (width, height)}
828\twocolitem{{\bf GetFullTextExtent(string, font=NULL)}}{Returns a
06d20283
RD
8294-tuple, (width, height, descent, externalLeading) }
830\end{twocollist}}
831}
832
5873607e
VZ
833\perlnote{In wxPerl this method is implemented as
834 {\bf GetTextExtent( string, font = undef )} returning a four element
0a67eeac 835 array {\tt ( width, height, descent, externalLeading )}
5873607e
VZ
836}
837
6e76b35d 838
a660d684
KB
839\membersection{wxDC::GetTextForeground}\label{wxdcgettextforeground}
840
f6bcfd97
BP
841\constfunc{const wxColour\&}{GetTextForeground}{\void}
842
a660d684
KB
843Gets the current text foreground colour (see \helpref{wxDC::SetTextForeground}{wxdcsettextforeground}).
844
16964b5e
VS
845
846\membersection{wxDC::GetUserScale}\label{wxdcgetuserscale}
847
848\func{void}{GetUserScale}{\param{double}{ *x}, \param{double}{ *y}}
849
850Gets the current user scale factor (set by \helpref{SetUserScale}{wxdcsetuserscale}).
851
2edb0bde 852\perlnote{In wxPerl this method takes no arguments and return a two element
0a67eeac 853 array {\tt ( x, y )}}
16964b5e 854
6e76b35d 855
213ad8e7
VZ
856\membersection{wxDC::GradientFillConcentric}\label{wxdcgradientfillconcentric}
857
858\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}}
859
860\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{const wxPoint\& }{circleCenter}}
861
862Fill the area specified by rect with a radial gradient, starting from
863\arg{initialColour} at the centre of the circle and fading to \arg{destColour}
864on the circle outside.
865
866\arg{circleCenter} are the relative coordinates of centre of the circle in
867the specified \arg{rect}. If not specified, the cercle is placed at the
868centre of rect.
869
870\textbf{Note: } Currently this function is very slow, don't use it for
871real-time drawing.
872
873
874\membersection{wxDC::GradientFillLinear}\label{wxdcgradientfilllinear}
875
876\func{void}{GradientFillLinear}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{wxDirection}{ nDirection = wxEAST}}
877
878Fill the area specified by \arg{rect} with a linear gradient, starting from
879\arg{initialColour} and eventually fading to \arg{destColour}. The
880\arg{nDirection} specifies the direction of the colour change, default is to
881use \arg{initialColour} on the left part of the rectangle and
882\arg{destColour} on the right one.
883
884
a660d684
KB
885\membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex}
886
621b83d9 887\func{virtual wxCoord}{LogicalToDeviceX}{\param{wxCoord}{ x}}
a660d684
KB
888
889Converts logical X coordinate to device coordinate, using the current
890mapping mode.
891
6e76b35d 892
a660d684
KB
893\membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel}
894
621b83d9 895\func{virtual wxCoord}{LogicalToDeviceXRel}{\param{wxCoord}{ x}}
a660d684
KB
896
897Converts logical X coordinate to relative device coordinate, using the current
1387b68a
GD
898mapping mode but ignoring the x axis orientation.
899Use this for converting a width, for example.
a660d684 900
6e76b35d 901
a660d684
KB
902\membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey}
903
621b83d9 904\func{virtual wxCoord}{LogicalToDeviceY}{\param{wxCoord}{ y}}
a660d684
KB
905
906Converts logical Y coordinate to device coordinate, using the current
907mapping mode.
908
6e76b35d 909
a660d684
KB
910\membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel}
911
621b83d9 912\func{virtual wxCoord}{LogicalToDeviceYRel}{\param{wxCoord}{ y}}
a660d684
KB
913
914Converts logical Y coordinate to relative device coordinate, using the current
1387b68a
GD
915mapping mode but ignoring the y axis orientation.
916Use this for converting a height, for example.
a660d684 917
6e76b35d 918
a660d684
KB
919\membersection{wxDC::MaxX}\label{wxdcmaxx}
920
1f897d25 921\func{wxCoord}{MaxX}{\void}
a660d684
KB
922
923Gets the maximum horizontal extent used in drawing commands so far.
924
6e76b35d 925
a660d684
KB
926\membersection{wxDC::MaxY}\label{wxdcmaxy}
927
1f897d25 928\func{wxCoord}{MaxY}{\void}
a660d684
KB
929
930Gets the maximum vertical extent used in drawing commands so far.
931
6e76b35d 932
a660d684
KB
933\membersection{wxDC::MinX}\label{wxdcminx}
934
1f897d25 935\func{wxCoord}{MinX}{\void}
a660d684
KB
936
937Gets the minimum horizontal extent used in drawing commands so far.
938
6e76b35d 939
a660d684
KB
940\membersection{wxDC::MinY}\label{wxdcminy}
941
1f897d25 942\func{wxCoord}{MinY}{\void}
a660d684
KB
943
944Gets the minimum vertical extent used in drawing commands so far.
945
6e76b35d 946
b7cacb43 947\membersection{wxDC::IsOk}\label{wxdcisok}
a660d684
KB
948
949\func{bool}{Ok}{\void}
950
cc81d32f 951Returns true if the DC is ok to use.
a660d684 952
6e76b35d 953
f6bcfd97
BP
954\membersection{wxDC::ResetBoundingBox}\label{wxdcresetboundingbox}
955
956\func{void}{ResetBoundingBox}{\void}
957
958Resets the bounding box: after a call to this function, the bounding box
959doesn't contain anything.
960
961\wxheading{See also}
962
963\helpref{CalcBoundingBox}{wxdccalcboundingbox}
964
6e76b35d 965
1387b68a
GD
966\membersection{wxDC::SetAxisOrientation}\label{wxdcsetaxisorientation}
967
968\func{void}{SetAxisOrientation}{\param{bool}{ xLeftRight},
969 \param{bool}{ yBottomUp}}
970
971Sets the x and y axis orientation (i.e., the direction from lowest to
1d3f4b50
JS
972highest values on the axis). The default orientation is
973x axis from left to right and y axis from top down.
1387b68a
GD
974
975\wxheading{Parameters}
976
977\docparam{xLeftRight}{True to set the x axis orientation to the natural
978left to right orientation, false to invert it.}
979
980\docparam{yBottomUp}{True to set the y axis orientation to the natural
981bottom up orientation, false to invert it.}
982
6e76b35d 983
a660d684
KB
984\membersection{wxDC::SetBackground}\label{wxdcsetbackground}
985
986\func{void}{SetBackground}{\param{const wxBrush\& }{brush}}
987
988Sets the current background brush for the DC.
989
6e76b35d 990
a660d684
KB
991\membersection{wxDC::SetBackgroundMode}\label{wxdcsetbackgroundmode}
992
993\func{void}{SetBackgroundMode}{\param{int}{ mode}}
994
995{\it mode} may be one of wxSOLID and wxTRANSPARENT. This setting determines
996whether text will be drawn with a background colour or not.
997
6e76b35d 998
f70c0443
WS
999\membersection{wxDC::SetBrush}\label{wxdcsetbrush}
1000
1001\func{void}{SetBrush}{\param{const wxBrush\& }{brush}}
1002
1003Sets the current brush for the DC.
1004
1005If the argument is wxNullBrush, the current brush is selected out of the device
fab86f26 1006context (leaving wxDC without any valid brush), allowing the current brush to
f70c0443
WS
1007be destroyed safely.
1008
1009See also \helpref{wxBrush}{wxbrush}.
1010
1011See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1012when drawing into a monochrome bitmap.
1013
1014
a660d684
KB
1015\membersection{wxDC::SetClippingRegion}\label{wxdcsetclippingregion}
1016
1f897d25 1017\func{void}{SetClippingRegion}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
a660d684 1018
5230934a
VZ
1019\func{void}{SetClippingRegion}{\param{const wxPoint\& }{pt}, \param{const wxSize\& }{sz}}
1020
1021\func{void}{SetClippingRegion}{\param{const wxRect\&}{ rect}}
1022
a724d789
JS
1023\func{void}{SetClippingRegion}{\param{const wxRegion\&}{ region}}
1024
5230934a
VZ
1025Sets the clipping region for this device context to the intersection of the
1026given region described by the parameters of this method and the previously set
1027clipping region. You should call
1028\helpref{DestroyClippingRegion}{wxdcdestroyclippingregion} if you want to set
1029the clipping region exactly to the region specified.
1030
1031The clipping region is an area to which drawing is restricted. Possible uses
1032for the clipping region are for clipping text or for speeding up window redraws
1033when only a known area of the screen is damaged.
a660d684 1034
a724d789
JS
1035\wxheading{See also}
1036
1037\helpref{wxDC::DestroyClippingRegion}{wxdcdestroyclippingregion}, \helpref{wxRegion}{wxregion}
a660d684 1038
6e76b35d 1039
f70c0443 1040\membersection{wxDC::SetDeviceOrigin}\label{wxdcsetdeviceorigin}
a660d684 1041
f70c0443 1042\func{void}{SetDeviceOrigin}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684 1043
f70c0443
WS
1044Sets the device origin (i.e., the origin in pixels after scaling has been
1045applied).
a660d684 1046
f70c0443
WS
1047This function may be useful in Windows printing
1048operations for placing a graphic on a page.
9000c624 1049
6e76b35d 1050
a660d684
KB
1051\membersection{wxDC::SetFont}\label{wxdcsetfont}
1052
1053\func{void}{SetFont}{\param{const wxFont\& }{font}}
1054
3e482a64
VZ
1055Sets the current font for the DC. It must be a valid font, in particular you
1056should not pass {\tt wxNullFont} to this method.
a660d684
KB
1057
1058See also \helpref{wxFont}{wxfont}.
1059
6e76b35d 1060
6ae7410f
VZ
1061\membersection{wxDC::SetLayoutDirection}\label{wxdcsetlayoutdirection}
1062
1063\func{void}{SetLayoutDirection}{\param{wxLayoutDirection}{ dir}}
1064
1065Sets the current layout direction for the device context. \arg{dir} may be either
b18a7b11 1066\texttt{wxLayout\_Default}, \texttt{wxLayout\_LeftToRight} or \texttt{wxLayout\_RightToLeft}.
6ae7410f
VZ
1067
1068\wxheading{See also}
1069
1070\helpref{GetLayoutDirection}{wxdcgetlayoutdirection}
1071
1072
a660d684
KB
1073\membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction}
1074
1075\func{void}{SetLogicalFunction}{\param{int}{ function}}
1076
fe604ccd 1077Sets the current logical function for the device context. This determines how
a660d684
KB
1078a source pixel (from a pen or brush colour, or source device context if
1079using \helpref{wxDC::Blit}{wxdcblit}) combines with a destination pixel in the
1080current device context.
1081
1082The possible values
1083and their meaning in terms of source and destination pixel values are
1084as follows:
1085
1086\begin{verbatim}
1087wxAND src AND dst
1088wxAND_INVERT (NOT src) AND dst
1089wxAND_REVERSE src AND (NOT dst)
1090wxCLEAR 0
1091wxCOPY src
1092wxEQUIV (NOT src) XOR dst
1093wxINVERT NOT dst
1094wxNAND (NOT src) OR (NOT dst)
1095wxNOR (NOT src) AND (NOT dst)
1096wxNO_OP dst
1097wxOR src OR dst
1098wxOR_INVERT (NOT src) OR dst
1099wxOR_REVERSE src OR (NOT dst)
1100wxSET 1
1101wxSRC_INVERT NOT src
1102wxXOR src XOR dst
1103\end{verbatim}
1104
1105The default is wxCOPY, which simply draws with the current colour.
1106The others combine the current colour and the background using a
6453876e 1107logical operation. wxINVERT is commonly used for drawing rubber bands or
a660d684
KB
1108moving outlines, since drawing twice reverts to the original colour.
1109
6e76b35d 1110
a660d684
KB
1111\membersection{wxDC::SetMapMode}\label{wxdcsetmapmode}
1112
1113\func{void}{SetMapMode}{\param{int}{ int}}
1114
1115The {\it mapping mode} of the device context defines the unit of
1116measurement used to convert logical units to device units. Note that
1117in X, text drawing isn't handled consistently with the mapping mode; a
1118font is always specified in point size. However, setting the {\it
1119user scale} (see \helpref{wxDC::SetUserScale}{wxdcsetuserscale}) scales the text appropriately. In
2edb0bde 1120Windows, scalable TrueType fonts are always used; in X, results depend
a660d684
KB
1121on availability of fonts, but usually a reasonable match is found.
1122
03ca23b6 1123The coordinate origin is always at the top left of the screen/printer.
a660d684 1124
03ca23b6
JS
1125Drawing to a Windows printer device context uses the current mapping mode,
1126but mapping mode is currently ignored for PostScript output.
a660d684
KB
1127
1128The mapping mode can be one of the following:
1129
1130\begin{twocollist}\itemsep=0pt
e3065973 1131\twocolitem{wxMM\_TWIPS}{Each logical unit is 1/20 of a point, or 1/1440 of
a660d684 1132 an inch.}
e3065973
JS
1133\twocolitem{wxMM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.}
1134\twocolitem{wxMM\_METRIC}{Each logical unit is 1 mm.}
1135\twocolitem{wxMM\_LOMETRIC}{Each logical unit is 1/10 of a mm.}
1136\twocolitem{wxMM\_TEXT}{Each logical unit is 1 pixel.}
a660d684
KB
1137\end{twocollist}
1138
6e76b35d 1139
f70c0443
WS
1140\membersection{wxDC::SetPalette}\label{wxdcsetpalette}
1141
1142\func{void}{SetPalette}{\param{const wxPalette\& }{palette}}
1143
1144If this is a window DC or memory DC, assigns the given palette to the window
1145or bitmap associated with the DC. If the argument is wxNullPalette, the current
1146palette is selected out of the device context, and the original palette
1147restored.
1148
1149See \helpref{wxPalette}{wxpalette} for further details.
1150
1151
a660d684
KB
1152\membersection{wxDC::SetPen}\label{wxdcsetpen}
1153
1154\func{void}{SetPen}{\param{const wxPen\& }{pen}}
1155
1156Sets the current pen for the DC.
1157
1158If the argument is wxNullPen, the current pen is selected out of the device
fab86f26
VZ
1159context (leaving wxDC without any valid pen), allowing the current brush to
1160be destroyed safely.
a660d684 1161
9000c624
RR
1162See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1163when drawing into a monochrome bitmap.
1164
6e76b35d 1165
a660d684
KB
1166\membersection{wxDC::SetTextBackground}\label{wxdcsettextbackground}
1167
1168\func{void}{SetTextBackground}{\param{const wxColour\& }{colour}}
1169
1170Sets the current text background colour for the DC.
1171
6e76b35d 1172
a660d684
KB
1173\membersection{wxDC::SetTextForeground}\label{wxdcsettextforeground}
1174
1175\func{void}{SetTextForeground}{\param{const wxColour\& }{colour}}
1176
1177Sets the current text foreground colour for the DC.
1178
9000c624
RR
1179See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1180when drawing into a monochrome bitmap.
1181
6e76b35d 1182
a660d684
KB
1183\membersection{wxDC::SetUserScale}\label{wxdcsetuserscale}
1184
1185\func{void}{SetUserScale}{\param{double}{ xScale}, \param{double}{ yScale}}
1186
1187Sets the user scaling factor, useful for applications which require
1188`zooming'.
1189
6e76b35d 1190
a660d684
KB
1191\membersection{wxDC::StartDoc}\label{wxdcstartdoc}
1192
1193\func{bool}{StartDoc}{\param{const wxString\& }{message}}
1194
1195Starts a document (only relevant when outputting to a printer).
5b5035ce 1196Message is a message to show while printing.
a660d684 1197
6e76b35d 1198
a660d684
KB
1199\membersection{wxDC::StartPage}\label{wxdcstartpage}
1200
1201\func{bool}{StartPage}{\void}
1202
1203Starts a document page (only relevant when outputting to a printer).
b67a86d5 1204
e3b81044
VZ
1205
1206\membersection{wxDC::StretchBlit}\label{wxdcstretchblit}
1207
1208\func{bool}{StretchBlit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ dstWidth}, \param{wxCoord}{ dstHeight},
1209 \param{wxDC* }{source}, \param{wxCoord}{ xsrc}, \param{wxCoord}{ ysrc}, \param{wxCoord}{ srcWidth}, \param{wxCoord}{ srcHeight},
1210 \param{int}{ logicalFunc = wxCOPY}, \param{bool }{useMask = false}, \param{wxCoord}{ xsrcMask = -1}, \param{wxCoord}{ ysrcMask = -1}}
1211
1212Copy from a source DC to this DC, specifying the destination
1213coordinates, destination size, source DC, source coordinates,
1214size of source area to copy, logical function, whether to use a bitmap mask,
1215and mask source position.
1216
1217\wxheading{Parameters}
1218
1219\docparam{xdest}{Destination device context x position.}
1220
1221\docparam{ydest}{Destination device context y position.}
1222
1223\docparam{dstWidth}{Width of destination area.}
1224
1225\docparam{dstHeight}{Height of destination area.}
1226
1227\docparam{source}{Source device context.}
1228
1229\docparam{xsrc}{Source device context x position.}
1230
1231\docparam{ysrc}{Source device context y position.}
1232
1233\docparam{srcWidth}{Width of source area to be copied.}
1234
1235\docparam{srcHeight}{Height of source area to be copied.}
1236
1237\docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.}
1238
1239\docparam{useMask}{If true, Blit does a transparent blit using the mask that is associated with the bitmap
1240selected into the source device context. The Windows implementation does the following if \texttt{MaskBlt} cannot be used:
1241
1242\begin{enumerate}
1243\item Creates a temporary bitmap and copies the destination area into it.
1244\item Copies the source area into the temporary bitmap using the specified logical function.
1245\item Sets the masked area in the temporary bitmap to BLACK by ANDing the
1246mask bitmap with the temp bitmap with the foreground colour set to WHITE
1247and the background colour set to BLACK.
1248\item Sets the unmasked area in the destination area to BLACK by ANDing the
1249mask bitmap with the destination area with the foreground colour set to BLACK
1250and the background colour set to WHITE.
1251\item ORs the temporary bitmap with the destination area.
1252\item Deletes the temporary bitmap.
1253\end{enumerate}
1254
1255This sequence of operations ensures that the source's transparent area need not be black,
1256and logical functions are supported.
1257
1258{\bf Note:} on Windows, blitting with masks can be speeded up considerably by compiling
1259wxWidgets with the \texttt{wxUSE\_DC\_CACHE} option enabled. You can also influence whether \texttt{MaskBlt}
1260or the explicit mask blitting code above is used, by using \helpref{wxSystemOptions}{wxsystemoptions} and
1261setting the {\bf no-maskblt} option to 1.
1262
1263}
1264
1265\docparam{xsrcMask}{Source x position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
1266will be assumed for the mask source position. Currently only implemented on Windows.}
1267
1268\docparam{ysrcMask}{Source y position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
1269will be assumed for the mask source position. Currently only implemented on Windows.}
1270
1271
1272\wxheading{Remarks}
1273
1274There is partial support for Blit in wxPostScriptDC, under X.
1275
1276wxDC::StretchBlit is only implemented under wxMAC and wxMSW.
1277
1278See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
1279
1280\newsince{2.9.0}
1281
1282\wxheading{See also}
1283
1284\helpref{wxDC::Blit}{wxdcblit}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
1285