]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/dc.tex
Doc corrections
[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
73862e49
RR
362Draws lines using an array of {\it points} of size {\it n}
363adding the optional offset coordinate. The current pen is
364used for drawing the lines.
a660d684 365
73862e49
RR
366\func{void}{DrawLines}{\param{const wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
367
368This method is deprecated and will be removed or replaced
369with a type-safe version. It uses a wxList of pointers to
370wxPoints, adding the optional offset coordinate. The programmer
371is responsible for deleting the list of points.
a660d684 372
06d20283
RD
373\pythonnote{The wxPython version of this method accepts a Python list
374of wxPoint objects.}
375
f3539882
VZ
376\perlnote{The wxPerl version of this method accepts
377 as its first parameter a reference to an array
378 of wxPoint objects.}
379
6e76b35d 380
a660d684
KB
381\membersection{wxDC::DrawPolygon}\label{wxdcdrawpolygon}
382
1f897d25 383\func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
a660d684
KB
384 \param{int }{fill\_style = wxODDEVEN\_RULE}}
385
73862e49
RR
386Draws a filled polygon using an array of {\it points} of size {\it n},
387adding the optional offset coordinate.
388
389\func{void}{DrawPolygon}{\param{const wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
a660d684
KB
390 \param{int }{fill\_style = wxODDEVEN\_RULE}}
391
73862e49
RR
392This method is deprecated and will be removed or replaced
393with a type-safe version. It draws a filled polygon using
394a list of pointers to wxPoints, adding the optional offset
395coordinate.
a660d684
KB
396
397The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the
398default) or {\bf wxWINDING\_RULE}.
399
400The current pen is used for drawing the outline, and the current brush
401for filling the shape. Using a transparent brush suppresses filling.
402The programmer is responsible for deleting the list of points.
403
fc2171bd 404Note that wxWidgets automatically closes the first and last points.
a660d684 405
06d20283
RD
406\pythonnote{The wxPython version of this method accepts a Python list
407of wxPoint objects.}
408
f3539882
VZ
409\perlnote{The wxPerl version of this method accepts
410 as its first parameter a reference to an array
411 of wxPoint objects.}
412
6e76b35d
VZ
413
414\membersection{wxDC::DrawPolyPolygon}\label{wxdcdrawpolypolygon}
415
163dc80e
VZ
416\func{void}{DrawPolyPolygon}{\param{int}{ n}, \param{int}{ count[]}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
417 \param{int }{fill\_style = wxODDEVEN\_RULE}}
418
419Draws two or more filled polygons using an array of {\it points}, adding the
420optional offset coordinates.
421
422Notice that for the platforms providing a native implementation
423of this function (Windows and PostScript-based wxDC currently), this is more
424efficient than using \helpref{DrawPolygon}{wxdcdrawpolygon} in a loop.
425
426{\it n} specifies the number of polygons to draw, the array {\it count} of size
427{\it n} specifies the number of points in each of the polygons in the
428{\it points} array.
429
430The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the default)
431or {\bf wxWINDING\_RULE}.
432
433The current pen is used for drawing the outline, and the current brush for
434filling the shape. Using a transparent brush suppresses filling.
435
436The polygons maybe disjoint or overlapping. Each polygon specified in a call to
437{\bf DrawPolyPolygon} must be closed. Unlike polygons created by the
438\helpref{DrawPolygon}{wxdcdrawpolygon} member function, the polygons created by
439{\bf DrawPolyPolygon} are not closed automatically.
440
441\pythonnote{Not implemented yet}
6e76b35d 442
163dc80e 443\perlnote{Not implemented yet}
6e76b35d
VZ
444
445
a660d684
KB
446\membersection{wxDC::DrawPoint}\label{wxdcdrawpoint}
447
1f897d25 448\func{void}{DrawPoint}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684 449
4c275284 450Draws 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 451
6e76b35d 452
a660d684
KB
453\membersection{wxDC::DrawRectangle}\label{wxdcdrawrectangle}
454
1f897d25 455\func{void}{DrawRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
a660d684
KB
456
457Draws a rectangle with the given top left corner, and with the given
458size. The current pen is used for the outline and the current brush
459for filling the shape.
460
6e76b35d 461
1f897d25
VZ
462\membersection{wxDC::DrawRotatedText}\label{wxdcdrawrotatedtext}
463
464\func{void}{DrawRotatedText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{double}{ angle}}
465
466Draws the text rotated by {\it angle} degrees.
467
4770df95
VZ
468{\bf NB:} Under Win9x only TrueType fonts can be drawn by this function. In
469particular, a font different from {\tt wxNORMAL\_FONT} should be used as the
470latter is not a TrueType font. {\tt wxSWISS\_FONT} is an example of a font
471which is.
472
1f897d25
VZ
473\wxheading{See also}
474
475\helpref{DrawText}{wxdcdrawtext}
476
6e76b35d 477
a660d684
KB
478\membersection{wxDC::DrawRoundedRectangle}\label{wxdcdrawroundedrectangle}
479
f5d7ba75 480\func{void}{DrawRoundedRectangle}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}, \param{double}{ radius}}
a660d684
KB
481
482Draws a rectangle with the given top left corner, and with the given
483size. The corners are quarter-circles using the given radius. The
484current pen is used for the outline and the current brush for filling
485the shape.
486
487If {\it radius} is positive, the value is assumed to be the
488radius of the rounded corner. If {\it radius} is negative,
489the absolute value is assumed to be the {\it proportion} of the smallest
490dimension of the rectangle. This means that the corner can be
491a sensible size relative to the size of the rectangle, and also avoids
492the strange effects X produces when the corners are too big for
493the rectangle.
494
6e76b35d 495
73862e49
RR
496docs/latex/wx/dc.tex
497
498\membersection{wxDC::DrawScaledBitmap}\label{wxdcdrawscaledbitmap}
499
500\func{void}{DrawScaledBitmap}{\param{const wxBitmap\&}{ bitmap}, \param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ w}, \param{wxCoord}{ h}, \param{bool}{ transparent}, \param{int}{ quality = wxIMAGE_QUALITY_NORMAL}}
501
502Draw a bitmap on the device context at the specified point and resize it to the specified size. If {\it transparent} is true and the bitmap has a transparency mask, the bitmap will be drawn transparently.
503
504Under wxGTK with Gtk Printing support, you should use this method with a wxPrinterDC if you want to print an image with a resolution higher than 72 dpi. On every other DC and platform, resizing is done using \helpref{wxImage::Rescale}{wximagerescale}.
505
506For a description of the {\it quality} parameter, see the \helpref{Scale}{wximagescale} function.
507
508When drawing a mono-bitmap, the current text foreground colour will be used to draw the foreground
509of the bitmap (all bits set to 1), and the current text background colour to draw the background
510(all bits set to 0). See also \helpref{SetTextForeground}{wxdcsettextforeground},
511\helpref{SetTextBackground}{wxdcsettextbackground} and \helpref{wxMemoryDC}{wxmemorydc}.
512
513
a660d684
KB
514\membersection{wxDC::DrawSpline}\label{wxdcdrawspline}
515
f3542025 516\func{void}{DrawSpline}{\param{int }{n}, \param{wxPoint }{points[]}}
2a138829
JS
517
518Draws a spline between all given control points, using the current
519pen.
520
a660d684
KB
521\func{void}{DrawSpline}{\param{wxList *}{points}}
522
523Draws a spline between all given control points, using the current
2a138829 524pen. Doesn't delete the wxList and contents.
a660d684 525
1f897d25 526\func{void}{DrawSpline}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ x3}, \param{wxCoord}{ y3}}
a660d684
KB
527
528Draws a three-point spline using the current pen.
529
06d20283
RD
530\pythonnote{The wxPython version of this method accepts a Python list
531of wxPoint objects.}
532
f3539882
VZ
533\perlnote{The wxPerl version of this method accepts a reference to an array
534 of wxPoint objects.}
535
6e76b35d 536
a660d684
KB
537\membersection{wxDC::DrawText}\label{wxdcdrawtext}
538
1f897d25 539\func{void}{DrawText}{\param{const wxString\& }{text}, \param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684
KB
540
541Draws a text string at the specified point, using the current text font,
542and the current text foreground and background colours.
543
544The coordinates refer to the top-left corner of the rectangle bounding
545the string. See \helpref{wxDC::GetTextExtent}{wxdcgettextextent} for how
546to get the dimensions of a text string, which can be used to position the
547text more precisely.
548
f6bcfd97
BP
549{\bf NB:} under wxGTK the current
550\helpref{logical function}{wxdcgetlogicalfunction} is used by this function
551but it is ignored by wxMSW. Thus, you should avoid using logical functions
552with this function in portable programs.
553
aef94d68 554\begin{comment}
6e76b35d 555
0cbff120
JS
556\membersection{wxDC::EnableCache}\label{wxdcenablecache}
557
558\func{static void}{EnableCache}{\param{bool}{ enableCache}}
559
560On supported platforms (currently only Windows), enables the DC cache
561which can speed up the \helpref{Blit}{wxdcblit} operation when
562drawing a large number of masked bitmaps.
563
564If using the cache functions in your code, please test for the
565wxUSE\_DC\_CACHEING preprocessor symbol for portability.
566
567\wxheading{See also}
568
569\helpref{wxDC::CacheEnabled}{wxdccacheenabled}, \helpref{wxDC::ClearCache}
aef94d68 570\end{comment}
0cbff120 571
6e76b35d 572
a660d684
KB
573\membersection{wxDC::EndDoc}\label{wxdcenddoc}
574
575\func{void}{EndDoc}{\void}
576
577Ends a document (only relevant when outputting to a printer).
578
6e76b35d 579
a660d684
KB
580\membersection{wxDC::EndPage}\label{wxdcendpage}
581
582\func{void}{EndPage}{\void}
583
584Ends a document page (only relevant when outputting to a printer).
585
6e76b35d 586
a660d684
KB
587\membersection{wxDC::FloodFill}\label{wxdcfloodfill}
588
387ebd3e 589\func{bool}{FloodFill}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{const wxColour\&}{ colour}, \param{int}{ style=wxFLOOD\_SURFACE}}
a660d684 590
15770d1a
JS
591Flood fills the device context starting from the given point, using
592the {\it current brush colour}, and using a style:
a660d684
KB
593
594\begin{itemize}\itemsep=0pt
595\item wxFLOOD\_SURFACE: the flooding occurs until a colour other than the given colour is encountered.
596\item wxFLOOD\_BORDER: the area to be flooded is bounded by the given colour.
597\end{itemize}
598
cc81d32f 599Returns false if the operation failed.
387ebd3e 600
b1699cd3 601{\it Note:} The present implementation for non-Windows platforms may fail to find
387ebd3e 602colour borders if the pixels do not match the colour exactly. However the
cc81d32f 603function will still return true.
a660d684 604
6e76b35d 605
a660d684
KB
606\membersection{wxDC::GetBackground}\label{wxdcgetbackground}
607
f6bcfd97
BP
608\constfunc{const wxBrush\&}{GetBackground}{\void}
609
a660d684
KB
610Gets the brush used for painting the background (see \helpref{wxDC::SetBackground}{wxdcsetbackground}).
611
6e76b35d 612
f6bcfd97
BP
613\membersection{wxDC::GetBackgroundMode}\label{wxdcgetbackgroundmode}
614
615\constfunc{int}{GetBackgroundMode}{\void}
616
617Returns the current background mode: {\tt wxSOLID} or {\tt wxTRANSPARENT}.
618
619\wxheading{See also}
620
621\helpref{SetBackgroundMode}{wxdcsetbackgroundmode}
622
6e76b35d 623
a660d684
KB
624\membersection{wxDC::GetBrush}\label{wxdcgetbrush}
625
f6bcfd97
BP
626\constfunc{const wxBrush\&}{GetBrush}{\void}
627
a660d684
KB
628Gets the current brush (see \helpref{wxDC::SetBrush}{wxdcsetbrush}).
629
6e76b35d 630
a660d684
KB
631\membersection{wxDC::GetCharHeight}\label{wxdcgetcharheight}
632
1f897d25 633\func{wxCoord}{GetCharHeight}{\void}
a660d684
KB
634
635Gets the character height of the currently set font.
636
6e76b35d 637
a660d684
KB
638\membersection{wxDC::GetCharWidth}\label{wxdcgetcharwidth}
639
1f897d25 640\func{wxCoord}{GetCharWidth}{\void}
a660d684
KB
641
642Gets the average character width of the currently set font.
643
6e76b35d 644
fe604ccd 645\membersection{wxDC::GetClippingBox}\label{wxdcgetclippingbox}
a660d684 646
1f897d25 647\func{void}{GetClippingBox}{\param{wxCoord}{ *x}, \param{wxCoord}{ *y}, \param{wxCoord}{ *width}, \param{wxCoord}{ *height}}
a660d684
KB
648
649Gets the rectangle surrounding the current clipping region.
650
06d20283
RD
651\pythonnote{No arguments are required and the four values defining the
652rectangle are returned as a tuple.}
653
5873607e 654\perlnote{This method takes no arguments and returns a four element list
0a67eeac 655{\tt ( x, y, width, height )}}
5873607e 656
6e76b35d 657
a660d684
KB
658\membersection{wxDC::GetFont}\label{wxdcgetfont}
659
f6bcfd97
BP
660\constfunc{const wxFont\&}{GetFont}{\void}
661
04905cca
VZ
662Gets the current font. Notice that even although each device context object has
663some default font after creation, this method would return a \texttt{wxNullFont}
664initially and only after calling \helpref{wxDC::SetFont}{wxdcsetfont} a valid
665font is returned.
a660d684 666
6e76b35d 667
6ae7410f
VZ
668\membersection{wxDC::GetLayoutDirection}\label{wxdcgetlayoutdirection}
669
670\constfunc{wxLayoutDirection}{GetLayoutDirection}{\void}
671
672Gets the current layout direction of the device context. On platforms where RTL layout
b18a7b11
VZ
673is supported, the return value will either be \texttt{wxLayout\_LeftToRight} or
674\texttt{wxLayout\_RightToLeft}. If RTL layout is not supported, the return value will
675be \texttt{wxLayout\_Default}.
6ae7410f
VZ
676
677\wxheading{See also}
678
679\helpref{SetLayoutDirection}{wxdcsetlayoutdirection}
680
681
a660d684
KB
682\membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction}
683
684\func{int}{GetLogicalFunction}{\void}
685
686Gets the current logical function (see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}).
687
6e76b35d 688
a660d684
KB
689\membersection{wxDC::GetMapMode}\label{wxdcgetmapmode}
690
691\func{int}{GetMapMode}{\void}
692
693Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}).
694
6e76b35d 695
cc4f194e
VZ
696\membersection{wxDC::GetMultiLineTextExtent}\label{wxdcgetmultilinetextextent}
697
698\constfunc{void}{GetMultiLineTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w},\\
699 \param{wxCoord *}{h}, \param{wxCoord *}{heightLine = NULL}, \param{wxFont *}{font = NULL}}
700
701\constfunc{wxSize}{GetMultiLineTextExtent}{\param{const wxString\& }{string}}
702
703Gets the dimensions of the string using the currently selected font.
704\rtfsp{\it string} is the text string to measure, {\it heightLine}, if non NULL,
705is where to store the height of a single line.
706
707The text extent is returned in {\it w} and {\it h} pointers (first form) or as
708a \helpref{wxSize}{wxsize} object (second form).
709
710If the optional parameter {\it font} is specified and valid, then it is used
711for the text extent calculation. Otherwise the currently selected font is.
712
713Note that this function works both with single-line and multi-line strings.
714
715\wxheading{See also}
716
717\helpref{wxFont}{wxfont},\rtfsp
718\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
719\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
720\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
721
722
42bf070c
RD
723\membersection{wxDC::GetPartialTextExtents}\label{wxdcgetpartialtextextents}
724
725\constfunc{bool}{GetPartialTextExtents}{\param{const wxString\& }{text},
726\param{wxArrayInt\& }{widths}}
727
43e8916f
MW
728Fills the {\it widths} array with the widths from the beginning of
729{\it text} to the corresponding character of {\it text}. The generic
42bf070c
RD
730version simply builds a running total of the widths of each character
731using \helpref{GetTextExtent}{wxdcgettextextent}, however if the
732various platforms have a native API function that is faster or more
43e8916f 733accurate than the generic implementation then it should be used
42bf070c
RD
734instead.
735
cc4f194e
VZ
736\wxheading{See also}
737
738\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent},\rtfsp
739\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
740
42bf070c
RD
741\pythonnote{This method only takes the {\it text} parameter and
742 returns a Python list of integers.}
743
a660d684 744
bc525d00 745\membersection{wxDC::GetPen}\label{wxdcgetpen}
a660d684 746
f6bcfd97
BP
747\constfunc{const wxPen\&}{GetPen}{\void}
748
a660d684
KB
749Gets the current pen (see \helpref{wxDC::SetPen}{wxdcsetpen}).
750
bc525d00 751
a660d684
KB
752\membersection{wxDC::GetPixel}\label{wxdcgetpixel}
753
1f897d25 754\func{bool}{GetPixel}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxColour *}{colour}}
a660d684 755
87b72f94 756Gets in {\it colour} the colour at the specified location.
03ca23b6 757Not available for wxPostScriptDC or wxMetafileDC.
a660d684 758
43e8916f
MW
759Note that setting a pixel can be done using \helpref{DrawPoint}{wxdcdrawpoint}.
760
86e78222
RD
761\pythonnote{For wxPython the wxColour value is returned and is not
762required as a parameter.}
763
5873607e
VZ
764\perlnote{This method only takes the parameters {\tt x} and {\tt y} and returns
765a Wx::Colour value}
766
03ca23b6
JS
767\membersection{wxDC::GetPPI}\label{wxdcgetppi}
768
769\constfunc{wxSize}{GetPPI}{\void}
770
771Returns the resolution of the device in pixels per inch.
6e76b35d 772
a660d684
KB
773\membersection{wxDC::GetSize}\label{wxdcgetsize}
774
03ca23b6 775\constfunc{void}{GetSize}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
a660d684 776
03ca23b6 777\constfunc{wxSize}{GetSize}{\void}
a660d684 778
03ca23b6
JS
779This gets the horizontal and vertical resolution in device units. It can be used to scale graphics to fit the page.
780For example, if {\it maxX} and {\it maxY}\rtfsp
a660d684
KB
781represent the maximum horizontal and vertical `pixel' values used in your
782application, the following code will scale the graphic to fit on the
783printer page:
784
785\begin{verbatim}
1f897d25 786 wxCoord w, h;
a660d684
KB
787 dc.GetSize(&w, &h);
788 double scaleX=(double)(maxX/w);
789 double scaleY=(double)(maxY/h);
790 dc.SetUserScale(min(scaleX,scaleY),min(scaleX,scaleY));
791\end{verbatim}
792
2233e5b8
RD
793\pythonnote{In place of a single overloaded method name, wxPython
794implements the following methods:\par
795\indented{2cm}{\begin{twocollist}
c9110876
VS
796\twocolitem{{\bf GetSize()}}{Returns a wxSize}
797\twocolitem{{\bf GetSizeTuple()}}{Returns a 2-tuple (width, height)}
2233e5b8
RD
798\end{twocollist}}
799}
06d20283 800
5873607e
VZ
801\perlnote{In place of a single overloaded method, wxPerl uses:\par
802\indented{2cm}{\begin{twocollist}
803\twocolitem{{\bf GetSize()}}{Returns a Wx::Size}
804\twocolitem{{\bf GetSizeWH()}}{Returns a 2-element list
0a67eeac 805 {\tt ( width, height )}}
5873607e
VZ
806\end{twocollist}
807}}
808
03ca23b6
JS
809\membersection{wxDC::GetSizeMM}\label{wxdcgetsizemm}
810
811\constfunc{void}{GetSizeMM}{\param{wxCoord *}{width}, \param{wxCoord *}{height}}
812
813\constfunc{wxSize}{GetSizeMM}{\void}
814
815Returns the horizontal and vertical resolution in millimetres.
6e76b35d 816
a660d684
KB
817\membersection{wxDC::GetTextBackground}\label{wxdcgettextbackground}
818
f6bcfd97
BP
819\constfunc{const wxColour\&}{GetTextBackground}{\void}
820
a660d684
KB
821Gets the current text background colour (see \helpref{wxDC::SetTextBackground}{wxdcsettextbackground}).
822
6e76b35d 823
a660d684
KB
824\membersection{wxDC::GetTextExtent}\label{wxdcgettextextent}
825
cc4f194e 826\constfunc{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w}, \param{wxCoord *}{h},\\
c94f845b 827 \param{wxCoord *}{descent = NULL}, \param{wxCoord *}{externalLeading = NULL}, \param{const wxFont *}{font = NULL}}
a660d684 828
cc4f194e
VZ
829\constfunc{wxSize}{GetTextExtent}{\param{const wxString\& }{string}}
830
a660d684 831Gets the dimensions of the string using the currently selected font.
cc4f194e 832\rtfsp{\it string} is the text string to measure, {\it descent} is the
a660d684
KB
833dimension from the baseline of the font to the bottom of the
834descender, and {\it externalLeading} is any extra vertical space added
835to the font by the font designer (usually is zero).
836
cc4f194e
VZ
837The text extent is returned in {\it w} and {\it h} pointers (first form) or as
838a \helpref{wxSize}{wxsize} object (second form).
839
268b0725
VZ
840If the optional parameter {\it font} is specified and valid, then it is used
841for the text extent calculation. Otherwise the currently selected font is.
a660d684 842
cc4f194e
VZ
843Note that this function only works with single-line strings.
844
845\wxheading{See also}
846
847\helpref{wxFont}{wxfont},\rtfsp
848\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
849\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
850\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent}
a660d684 851
06d20283
RD
852\pythonnote{The following methods are implemented in wxPython:\par
853\indented{2cm}{\begin{twocollist}
c9110876
VS
854\twocolitem{{\bf GetTextExtent(string)}}{Returns a 2-tuple, (width, height)}
855\twocolitem{{\bf GetFullTextExtent(string, font=NULL)}}{Returns a
06d20283
RD
8564-tuple, (width, height, descent, externalLeading) }
857\end{twocollist}}
858}
859
5873607e
VZ
860\perlnote{In wxPerl this method is implemented as
861 {\bf GetTextExtent( string, font = undef )} returning a four element
0a67eeac 862 array {\tt ( width, height, descent, externalLeading )}
5873607e
VZ
863}
864
6e76b35d 865
a660d684
KB
866\membersection{wxDC::GetTextForeground}\label{wxdcgettextforeground}
867
f6bcfd97
BP
868\constfunc{const wxColour\&}{GetTextForeground}{\void}
869
a660d684
KB
870Gets the current text foreground colour (see \helpref{wxDC::SetTextForeground}{wxdcsettextforeground}).
871
16964b5e
VS
872
873\membersection{wxDC::GetUserScale}\label{wxdcgetuserscale}
874
875\func{void}{GetUserScale}{\param{double}{ *x}, \param{double}{ *y}}
876
877Gets the current user scale factor (set by \helpref{SetUserScale}{wxdcsetuserscale}).
878
2edb0bde 879\perlnote{In wxPerl this method takes no arguments and return a two element
0a67eeac 880 array {\tt ( x, y )}}
16964b5e 881
6e76b35d 882
213ad8e7
VZ
883\membersection{wxDC::GradientFillConcentric}\label{wxdcgradientfillconcentric}
884
885\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}}
886
887\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{const wxPoint\& }{circleCenter}}
888
889Fill the area specified by rect with a radial gradient, starting from
890\arg{initialColour} at the centre of the circle and fading to \arg{destColour}
891on the circle outside.
892
893\arg{circleCenter} are the relative coordinates of centre of the circle in
894the specified \arg{rect}. If not specified, the cercle is placed at the
895centre of rect.
896
897\textbf{Note: } Currently this function is very slow, don't use it for
898real-time drawing.
899
900
901\membersection{wxDC::GradientFillLinear}\label{wxdcgradientfilllinear}
902
903\func{void}{GradientFillLinear}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{wxDirection}{ nDirection = wxEAST}}
904
905Fill the area specified by \arg{rect} with a linear gradient, starting from
906\arg{initialColour} and eventually fading to \arg{destColour}. The
907\arg{nDirection} specifies the direction of the colour change, default is to
908use \arg{initialColour} on the left part of the rectangle and
909\arg{destColour} on the right one.
910
911
a660d684
KB
912\membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex}
913
621b83d9 914\func{virtual wxCoord}{LogicalToDeviceX}{\param{wxCoord}{ x}}
a660d684
KB
915
916Converts logical X coordinate to device coordinate, using the current
917mapping mode.
918
6e76b35d 919
a660d684
KB
920\membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel}
921
621b83d9 922\func{virtual wxCoord}{LogicalToDeviceXRel}{\param{wxCoord}{ x}}
a660d684
KB
923
924Converts logical X coordinate to relative device coordinate, using the current
1387b68a
GD
925mapping mode but ignoring the x axis orientation.
926Use this for converting a width, for example.
a660d684 927
6e76b35d 928
a660d684
KB
929\membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey}
930
621b83d9 931\func{virtual wxCoord}{LogicalToDeviceY}{\param{wxCoord}{ y}}
a660d684
KB
932
933Converts logical Y coordinate to device coordinate, using the current
934mapping mode.
935
6e76b35d 936
a660d684
KB
937\membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel}
938
621b83d9 939\func{virtual wxCoord}{LogicalToDeviceYRel}{\param{wxCoord}{ y}}
a660d684
KB
940
941Converts logical Y coordinate to relative device coordinate, using the current
1387b68a
GD
942mapping mode but ignoring the y axis orientation.
943Use this for converting a height, for example.
a660d684 944
6e76b35d 945
a660d684
KB
946\membersection{wxDC::MaxX}\label{wxdcmaxx}
947
1f897d25 948\func{wxCoord}{MaxX}{\void}
a660d684
KB
949
950Gets the maximum horizontal extent used in drawing commands so far.
951
6e76b35d 952
a660d684
KB
953\membersection{wxDC::MaxY}\label{wxdcmaxy}
954
1f897d25 955\func{wxCoord}{MaxY}{\void}
a660d684
KB
956
957Gets the maximum vertical extent used in drawing commands so far.
958
6e76b35d 959
a660d684
KB
960\membersection{wxDC::MinX}\label{wxdcminx}
961
1f897d25 962\func{wxCoord}{MinX}{\void}
a660d684
KB
963
964Gets the minimum horizontal extent used in drawing commands so far.
965
6e76b35d 966
a660d684
KB
967\membersection{wxDC::MinY}\label{wxdcminy}
968
1f897d25 969\func{wxCoord}{MinY}{\void}
a660d684
KB
970
971Gets the minimum vertical extent used in drawing commands so far.
972
6e76b35d 973
b7cacb43 974\membersection{wxDC::IsOk}\label{wxdcisok}
a660d684
KB
975
976\func{bool}{Ok}{\void}
977
cc81d32f 978Returns true if the DC is ok to use.
a660d684 979
6e76b35d 980
f6bcfd97
BP
981\membersection{wxDC::ResetBoundingBox}\label{wxdcresetboundingbox}
982
983\func{void}{ResetBoundingBox}{\void}
984
985Resets the bounding box: after a call to this function, the bounding box
986doesn't contain anything.
987
988\wxheading{See also}
989
990\helpref{CalcBoundingBox}{wxdccalcboundingbox}
991
6e76b35d 992
1387b68a
GD
993\membersection{wxDC::SetAxisOrientation}\label{wxdcsetaxisorientation}
994
995\func{void}{SetAxisOrientation}{\param{bool}{ xLeftRight},
996 \param{bool}{ yBottomUp}}
997
998Sets the x and y axis orientation (i.e., the direction from lowest to
1d3f4b50
JS
999highest values on the axis). The default orientation is
1000x axis from left to right and y axis from top down.
1387b68a
GD
1001
1002\wxheading{Parameters}
1003
1004\docparam{xLeftRight}{True to set the x axis orientation to the natural
1005left to right orientation, false to invert it.}
1006
1007\docparam{yBottomUp}{True to set the y axis orientation to the natural
1008bottom up orientation, false to invert it.}
1009
6e76b35d 1010
a660d684
KB
1011\membersection{wxDC::SetBackground}\label{wxdcsetbackground}
1012
1013\func{void}{SetBackground}{\param{const wxBrush\& }{brush}}
1014
1015Sets the current background brush for the DC.
1016
6e76b35d 1017
a660d684
KB
1018\membersection{wxDC::SetBackgroundMode}\label{wxdcsetbackgroundmode}
1019
1020\func{void}{SetBackgroundMode}{\param{int}{ mode}}
1021
1022{\it mode} may be one of wxSOLID and wxTRANSPARENT. This setting determines
1023whether text will be drawn with a background colour or not.
1024
6e76b35d 1025
f70c0443
WS
1026\membersection{wxDC::SetBrush}\label{wxdcsetbrush}
1027
1028\func{void}{SetBrush}{\param{const wxBrush\& }{brush}}
1029
1030Sets the current brush for the DC.
1031
1032If the argument is wxNullBrush, the current brush is selected out of the device
fab86f26 1033context (leaving wxDC without any valid brush), allowing the current brush to
f70c0443
WS
1034be destroyed safely.
1035
1036See also \helpref{wxBrush}{wxbrush}.
1037
1038See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1039when drawing into a monochrome bitmap.
1040
1041
a660d684
KB
1042\membersection{wxDC::SetClippingRegion}\label{wxdcsetclippingregion}
1043
1f897d25 1044\func{void}{SetClippingRegion}{\param{wxCoord}{ x}, \param{wxCoord}{ y}, \param{wxCoord}{ width}, \param{wxCoord}{ height}}
a660d684 1045
5230934a
VZ
1046\func{void}{SetClippingRegion}{\param{const wxPoint\& }{pt}, \param{const wxSize\& }{sz}}
1047
1048\func{void}{SetClippingRegion}{\param{const wxRect\&}{ rect}}
1049
a724d789
JS
1050\func{void}{SetClippingRegion}{\param{const wxRegion\&}{ region}}
1051
5230934a
VZ
1052Sets the clipping region for this device context to the intersection of the
1053given region described by the parameters of this method and the previously set
1054clipping region. You should call
1055\helpref{DestroyClippingRegion}{wxdcdestroyclippingregion} if you want to set
1056the clipping region exactly to the region specified.
1057
1058The clipping region is an area to which drawing is restricted. Possible uses
1059for the clipping region are for clipping text or for speeding up window redraws
1060when only a known area of the screen is damaged.
a660d684 1061
a724d789
JS
1062\wxheading{See also}
1063
1064\helpref{wxDC::DestroyClippingRegion}{wxdcdestroyclippingregion}, \helpref{wxRegion}{wxregion}
a660d684 1065
6e76b35d 1066
f70c0443 1067\membersection{wxDC::SetDeviceOrigin}\label{wxdcsetdeviceorigin}
a660d684 1068
f70c0443 1069\func{void}{SetDeviceOrigin}{\param{wxCoord}{ x}, \param{wxCoord}{ y}}
a660d684 1070
f70c0443
WS
1071Sets the device origin (i.e., the origin in pixels after scaling has been
1072applied).
a660d684 1073
f70c0443
WS
1074This function may be useful in Windows printing
1075operations for placing a graphic on a page.
9000c624 1076
6e76b35d 1077
a660d684
KB
1078\membersection{wxDC::SetFont}\label{wxdcsetfont}
1079
1080\func{void}{SetFont}{\param{const wxFont\& }{font}}
1081
3e482a64
VZ
1082Sets the current font for the DC. It must be a valid font, in particular you
1083should not pass {\tt wxNullFont} to this method.
a660d684
KB
1084
1085See also \helpref{wxFont}{wxfont}.
1086
6e76b35d 1087
6ae7410f
VZ
1088\membersection{wxDC::SetLayoutDirection}\label{wxdcsetlayoutdirection}
1089
1090\func{void}{SetLayoutDirection}{\param{wxLayoutDirection}{ dir}}
1091
1092Sets the current layout direction for the device context. \arg{dir} may be either
b18a7b11 1093\texttt{wxLayout\_Default}, \texttt{wxLayout\_LeftToRight} or \texttt{wxLayout\_RightToLeft}.
6ae7410f
VZ
1094
1095\wxheading{See also}
1096
1097\helpref{GetLayoutDirection}{wxdcgetlayoutdirection}
1098
1099
a660d684
KB
1100\membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction}
1101
1102\func{void}{SetLogicalFunction}{\param{int}{ function}}
1103
fe604ccd 1104Sets the current logical function for the device context. This determines how
a660d684
KB
1105a source pixel (from a pen or brush colour, or source device context if
1106using \helpref{wxDC::Blit}{wxdcblit}) combines with a destination pixel in the
1107current device context.
1108
1109The possible values
1110and their meaning in terms of source and destination pixel values are
1111as follows:
1112
1113\begin{verbatim}
1114wxAND src AND dst
1115wxAND_INVERT (NOT src) AND dst
1116wxAND_REVERSE src AND (NOT dst)
1117wxCLEAR 0
1118wxCOPY src
1119wxEQUIV (NOT src) XOR dst
1120wxINVERT NOT dst
1121wxNAND (NOT src) OR (NOT dst)
1122wxNOR (NOT src) AND (NOT dst)
1123wxNO_OP dst
1124wxOR src OR dst
1125wxOR_INVERT (NOT src) OR dst
1126wxOR_REVERSE src OR (NOT dst)
1127wxSET 1
1128wxSRC_INVERT NOT src
1129wxXOR src XOR dst
1130\end{verbatim}
1131
1132The default is wxCOPY, which simply draws with the current colour.
1133The others combine the current colour and the background using a
6453876e 1134logical operation. wxINVERT is commonly used for drawing rubber bands or
a660d684
KB
1135moving outlines, since drawing twice reverts to the original colour.
1136
6e76b35d 1137
a660d684
KB
1138\membersection{wxDC::SetMapMode}\label{wxdcsetmapmode}
1139
1140\func{void}{SetMapMode}{\param{int}{ int}}
1141
1142The {\it mapping mode} of the device context defines the unit of
1143measurement used to convert logical units to device units. Note that
1144in X, text drawing isn't handled consistently with the mapping mode; a
1145font is always specified in point size. However, setting the {\it
1146user scale} (see \helpref{wxDC::SetUserScale}{wxdcsetuserscale}) scales the text appropriately. In
2edb0bde 1147Windows, scalable TrueType fonts are always used; in X, results depend
a660d684
KB
1148on availability of fonts, but usually a reasonable match is found.
1149
03ca23b6 1150The coordinate origin is always at the top left of the screen/printer.
a660d684 1151
03ca23b6
JS
1152Drawing to a Windows printer device context uses the current mapping mode,
1153but mapping mode is currently ignored for PostScript output.
a660d684
KB
1154
1155The mapping mode can be one of the following:
1156
1157\begin{twocollist}\itemsep=0pt
e3065973 1158\twocolitem{wxMM\_TWIPS}{Each logical unit is 1/20 of a point, or 1/1440 of
a660d684 1159 an inch.}
e3065973
JS
1160\twocolitem{wxMM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.}
1161\twocolitem{wxMM\_METRIC}{Each logical unit is 1 mm.}
1162\twocolitem{wxMM\_LOMETRIC}{Each logical unit is 1/10 of a mm.}
1163\twocolitem{wxMM\_TEXT}{Each logical unit is 1 pixel.}
a660d684
KB
1164\end{twocollist}
1165
6e76b35d 1166
f70c0443
WS
1167\membersection{wxDC::SetPalette}\label{wxdcsetpalette}
1168
1169\func{void}{SetPalette}{\param{const wxPalette\& }{palette}}
1170
1171If this is a window DC or memory DC, assigns the given palette to the window
1172or bitmap associated with the DC. If the argument is wxNullPalette, the current
1173palette is selected out of the device context, and the original palette
1174restored.
1175
1176See \helpref{wxPalette}{wxpalette} for further details.
1177
1178
a660d684
KB
1179\membersection{wxDC::SetPen}\label{wxdcsetpen}
1180
1181\func{void}{SetPen}{\param{const wxPen\& }{pen}}
1182
1183Sets the current pen for the DC.
1184
1185If the argument is wxNullPen, the current pen is selected out of the device
fab86f26
VZ
1186context (leaving wxDC without any valid pen), allowing the current brush to
1187be destroyed safely.
a660d684 1188
9000c624
RR
1189See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1190when drawing into a monochrome bitmap.
1191
6e76b35d 1192
a660d684
KB
1193\membersection{wxDC::SetTextBackground}\label{wxdcsettextbackground}
1194
1195\func{void}{SetTextBackground}{\param{const wxColour\& }{colour}}
1196
1197Sets the current text background colour for the DC.
1198
6e76b35d 1199
a660d684
KB
1200\membersection{wxDC::SetTextForeground}\label{wxdcsettextforeground}
1201
1202\func{void}{SetTextForeground}{\param{const wxColour\& }{colour}}
1203
1204Sets the current text foreground colour for the DC.
1205
9000c624
RR
1206See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
1207when drawing into a monochrome bitmap.
1208
6e76b35d 1209
a660d684
KB
1210\membersection{wxDC::SetUserScale}\label{wxdcsetuserscale}
1211
1212\func{void}{SetUserScale}{\param{double}{ xScale}, \param{double}{ yScale}}
1213
1214Sets the user scaling factor, useful for applications which require
1215`zooming'.
1216
6e76b35d 1217
a660d684
KB
1218\membersection{wxDC::StartDoc}\label{wxdcstartdoc}
1219
1220\func{bool}{StartDoc}{\param{const wxString\& }{message}}
1221
1222Starts a document (only relevant when outputting to a printer).
5b5035ce 1223Message is a message to show while printing.
a660d684 1224
6e76b35d 1225
a660d684
KB
1226\membersection{wxDC::StartPage}\label{wxdcstartpage}
1227
1228\func{bool}{StartPage}{\void}
1229
1230Starts a document page (only relevant when outputting to a printer).
b67a86d5 1231
e3b81044
VZ
1232
1233\membersection{wxDC::StretchBlit}\label{wxdcstretchblit}
1234
1235\func{bool}{StretchBlit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ dstWidth}, \param{wxCoord}{ dstHeight},
1236 \param{wxDC* }{source}, \param{wxCoord}{ xsrc}, \param{wxCoord}{ ysrc}, \param{wxCoord}{ srcWidth}, \param{wxCoord}{ srcHeight},
1237 \param{int}{ logicalFunc = wxCOPY}, \param{bool }{useMask = false}, \param{wxCoord}{ xsrcMask = -1}, \param{wxCoord}{ ysrcMask = -1}}
1238
1239Copy from a source DC to this DC, specifying the destination
1240coordinates, destination size, source DC, source coordinates,
1241size of source area to copy, logical function, whether to use a bitmap mask,
1242and mask source position.
1243
1244\wxheading{Parameters}
1245
1246\docparam{xdest}{Destination device context x position.}
1247
1248\docparam{ydest}{Destination device context y position.}
1249
1250\docparam{dstWidth}{Width of destination area.}
1251
1252\docparam{dstHeight}{Height of destination area.}
1253
1254\docparam{source}{Source device context.}
1255
1256\docparam{xsrc}{Source device context x position.}
1257
1258\docparam{ysrc}{Source device context y position.}
1259
1260\docparam{srcWidth}{Width of source area to be copied.}
1261
1262\docparam{srcHeight}{Height of source area to be copied.}
1263
1264\docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.}
1265
1266\docparam{useMask}{If true, Blit does a transparent blit using the mask that is associated with the bitmap
1267selected into the source device context. The Windows implementation does the following if \texttt{MaskBlt} cannot be used:
1268
1269\begin{enumerate}
1270\item Creates a temporary bitmap and copies the destination area into it.
1271\item Copies the source area into the temporary bitmap using the specified logical function.
1272\item Sets the masked area in the temporary bitmap to BLACK by ANDing the
1273mask bitmap with the temp bitmap with the foreground colour set to WHITE
1274and the background colour set to BLACK.
1275\item Sets the unmasked area in the destination area to BLACK by ANDing the
1276mask bitmap with the destination area with the foreground colour set to BLACK
1277and the background colour set to WHITE.
1278\item ORs the temporary bitmap with the destination area.
1279\item Deletes the temporary bitmap.
1280\end{enumerate}
1281
1282This sequence of operations ensures that the source's transparent area need not be black,
1283and logical functions are supported.
1284
1285{\bf Note:} on Windows, blitting with masks can be speeded up considerably by compiling
1286wxWidgets with the \texttt{wxUSE\_DC\_CACHE} option enabled. You can also influence whether \texttt{MaskBlt}
1287or the explicit mask blitting code above is used, by using \helpref{wxSystemOptions}{wxsystemoptions} and
1288setting the {\bf no-maskblt} option to 1.
1289
1290}
1291
1292\docparam{xsrcMask}{Source x position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
1293will be assumed for the mask source position. Currently only implemented on Windows.}
1294
1295\docparam{ysrcMask}{Source y position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
1296will be assumed for the mask source position. Currently only implemented on Windows.}
1297
1298
1299\wxheading{Remarks}
1300
1301There is partial support for Blit in wxPostScriptDC, under X.
1302
1303wxDC::StretchBlit is only implemented under wxMAC and wxMSW.
1304
1305See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
1306
1307\newsince{2.9.0}
1308
1309\wxheading{See also}
1310
1311\helpref{wxDC::Blit}{wxdcblit}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
1312