]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/dc.tex
compilation fix for wxUSE_STL==1 in DoGetSibling()
[wxWidgets.git] / docs / latex / wx / dc.tex
index 5a7e773caf6bd6c1c39e4d3263ad32cece18c18c..fdc1c815be7b4e3ccf46d3e80025dfc361f9cb0c 100644 (file)
@@ -6,8 +6,10 @@ so a window can have a device context associated with it, and a printer also has
 In this way, the same piece of code may write to a number of different devices,
 if the device context is used as a parameter.
 
 In this way, the same piece of code may write to a number of different devices,
 if the device context is used as a parameter.
 
-Derived types of wxDC have documentation for specific features
-only, so refer to this section for most device context information.
+Notice that wxDC is an abstract base class and can't be created directly,
+please use \helpref{wxPaintDC}{wxpaintdc}, \helpref{wxClientDC}{wxclientdc}, 
+\helpref{wxWindowDC}{wxwindowdc}, \helpref{wxScreenDC}{wxscreendc}, 
+\helpref{wxMemoryDC}{wxmemorydc} or \helpref{wxPrinterDC}{wxprinterdc}.
 
 % VZ: we should really document them instead of this lame excuse, but I don't
 %     have time for it now, when it is done please remove this
 
 % VZ: we should really document them instead of this lame excuse, but I don't
 %     have time for it now, when it is done please remove this
@@ -16,6 +18,12 @@ there are also versions which accept single {\tt wxPoint} parameter instead of
 two {\tt wxCoord} ones or {\tt wxPoint} and {\tt wxSize} instead of four of
 them.
 
 two {\tt wxCoord} ones or {\tt wxPoint} and {\tt wxSize} instead of four of
 them.
 
+\wxheading{Support for Transparency / Alpha Channel}
+
+On Mac OS X when using Core Graphics (wx\_MAC\_USE\_CORE\_GRAPHICS set to 1) 
+colors with alpha are supported, so instances  {\tt wxPen} or  {\tt wxBrush} that are built from  {\tt wxColour} use
+the color's alpha values when stroking or filling.
+
 \wxheading{Derived from}
 
 \helpref{wxObject}{wxobject}
 \wxheading{Derived from}
 
 \helpref{wxObject}{wxobject}
@@ -24,6 +32,10 @@ them.
 
 <wx/dc.h>
 
 
 <wx/dc.h>
 
+\wxheading{Library}
+
+\helpref{wxCore}{librarieslist}
+
 \wxheading{See also}
 
 \helpref{Overview}{dcoverview}
 \wxheading{See also}
 
 \helpref{Overview}{dcoverview}
@@ -31,36 +43,6 @@ them.
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 
-\membersection{wxDC::wxDC}\label{wxdcctor}
-
-\func{}{wxDC}{\void}
-
-Constructor.
-
-
-\membersection{wxDC::\destruct{wxDC}}\label{wxdcdtor}
-
-\func{}{\destruct{wxDC}}{\void}
-
-Destructor.
-
-
-\membersection{wxDC::BeginDrawing}\label{wxdcbegindrawing}
-
-\func{void}{BeginDrawing}{\void}
-
-Allows optimization of drawing code under MS Windows. Enclose
-drawing primitives between {\bf BeginDrawing} and {\bf EndDrawing}\rtfsp
-calls.
-
-Drawing to a wxDialog panel device context outside of a
-system-generated OnPaint event {\it requires} this pair of calls to
-enclose drawing code. This is because a Windows dialog box does not have
-a retained device context associated with it, and selections such as pen
-and brush settings would be lost if the device context were obtained and
-released for each drawing operation.
-
-
 \membersection{wxDC::Blit}\label{wxdcblit}
 
 \func{bool}{Blit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
 \membersection{wxDC::Blit}\label{wxdcblit}
 
 \func{bool}{Blit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ width}, \param{wxCoord}{ height},
@@ -130,7 +112,7 @@ See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
 
 \wxheading{See also}
 
 
 \wxheading{See also}
 
-\helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
+\helpref{wxDC::StretchBlit}{wxdcstretchblit}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}
 
 \begin{comment}
 
 
 \begin{comment}
 
@@ -221,7 +203,7 @@ See also \helpref{wxDC::SetClippingRegion}{wxdcsetclippingregion}.
 
 \membersection{wxDC::DeviceToLogicalX}\label{wxdcdevicetologicalx}
 
 
 \membersection{wxDC::DeviceToLogicalX}\label{wxdcdevicetologicalx}
 
-\func{wxCoord}{DeviceToLogicalX}{\param{wxCoord}{ x}}
+\func{virtual wxCoord}{DeviceToLogicalX}{\param{wxCoord}{ x}}
 
 Convert device X coordinate to logical coordinate, using the current
 mapping mode.
 
 Convert device X coordinate to logical coordinate, using the current
 mapping mode.
@@ -229,7 +211,7 @@ mapping mode.
 
 \membersection{wxDC::DeviceToLogicalXRel}\label{wxdcdevicetologicalxrel}
 
 
 \membersection{wxDC::DeviceToLogicalXRel}\label{wxdcdevicetologicalxrel}
 
-\func{wxCoord}{DeviceToLogicalXRel}{\param{wxCoord}{ x}}
+\func{virtual wxCoord}{DeviceToLogicalXRel}{\param{wxCoord}{ x}}
 
 Convert device X coordinate to relative logical coordinate, using the current
 mapping mode but ignoring the x axis orientation.
 
 Convert device X coordinate to relative logical coordinate, using the current
 mapping mode but ignoring the x axis orientation.
@@ -238,7 +220,7 @@ Use this function for converting a width, for example.
 
 \membersection{wxDC::DeviceToLogicalY}\label{wxdcdevicetologicaly}
 
 
 \membersection{wxDC::DeviceToLogicalY}\label{wxdcdevicetologicaly}
 
-\func{wxCoord}{DeviceToLogicalY}{\param{wxCoord}{ y}}
+\func{virtual wxCoord}{DeviceToLogicalY}{\param{wxCoord}{ y}}
 
 Converts device Y coordinate to logical coordinate, using the current
 mapping mode.
 
 Converts device Y coordinate to logical coordinate, using the current
 mapping mode.
@@ -246,7 +228,7 @@ mapping mode.
 
 \membersection{wxDC::DeviceToLogicalYRel}\label{wxdcdevicetologicalyrel}
 
 
 \membersection{wxDC::DeviceToLogicalYRel}\label{wxdcdevicetologicalyrel}
 
-\func{wxCoord}{DeviceToLogicalYRel}{\param{wxCoord}{ y}}
+\func{virtual wxCoord}{DeviceToLogicalYRel}{\param{wxCoord}{ y}}
 
 Convert device Y coordinate to relative logical coordinate, using the current
 mapping mode but ignoring the y axis orientation.
 
 Convert device Y coordinate to relative logical coordinate, using the current
 mapping mode but ignoring the y axis orientation.
@@ -377,12 +359,15 @@ of many other toolkits).
 
 \func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
 
 
 \func{void}{DrawLines}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
 
-\func{void}{DrawLines}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
+Draws lines using an array of {\it points} of size {\it n}
+adding the optional offset coordinate. The current pen is
+used for drawing the lines.
 
 
-Draws lines using an array of {\it points} of size {\it n}, or list of
-pointers to points, adding the optional offset coordinate. The current
-pen is used for drawing the lines.  The programmer is responsible for
-deleting the list of points.
+\func{void}{DrawLines}{\param{const wxPointList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0}}
+
+This method uses a list of wxPoints, adding the optional offset
+coordinate. The programmer is responsible for deleting the list
+of points.
 
 \pythonnote{The wxPython version of this method accepts a Python list
 of wxPoint objects.}
 
 \pythonnote{The wxPython version of this method accepts a Python list
 of wxPoint objects.}
@@ -397,11 +382,14 @@ of wxPoint objects.}
 \func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
   \param{int }{fill\_style = wxODDEVEN\_RULE}}
 
 \func{void}{DrawPolygon}{\param{int}{ n}, \param{wxPoint}{ points[]}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
   \param{int }{fill\_style = wxODDEVEN\_RULE}}
 
-\func{void}{DrawPolygon}{\param{wxList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
+Draws a filled polygon using an array of {\it points} of size {\it n},
+adding the optional offset coordinate.
+
+\func{void}{DrawPolygon}{\param{const wxPointList *}{points}, \param{wxCoord}{ xoffset = 0}, \param{wxCoord}{ yoffset = 0},\\
   \param{int }{fill\_style = wxODDEVEN\_RULE}}
 
   \param{int }{fill\_style = wxODDEVEN\_RULE}}
 
-Draws a filled polygon using an array of {\it points} of size {\it n},
-or list of pointers to points, adding the optional offset coordinate.
+This method draws a filled polygon using a list of wxPoints,
+adding the optional offset coordinate.
 
 The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the
 default) or {\bf wxWINDING\_RULE}.
 
 The last argument specifies the fill rule: {\bf wxODDEVEN\_RULE} (the
 default) or {\bf wxWINDING\_RULE}.
@@ -509,10 +497,9 @@ the rectangle.
 Draws a spline between all given control points, using the current
 pen.
 
 Draws a spline between all given control points, using the current
 pen.
 
-\func{void}{DrawSpline}{\param{wxList *}{points}}
+\func{void}{DrawSpline}{\param{const wxPointList *}{points}}
 
 
-Draws a spline between all given control points, using the current
-pen.  Doesn't delete the wxList and contents.
+Draws a spline between all given control points.
 
 \func{void}{DrawSpline}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ x3}, \param{wxCoord}{ y3}}
 
 
 \func{void}{DrawSpline}{\param{wxCoord}{ x1}, \param{wxCoord}{ y1}, \param{wxCoord}{ x2}, \param{wxCoord}{ y2}, \param{wxCoord}{ x3}, \param{wxCoord}{ y3}}
 
@@ -568,15 +555,6 @@ wxUSE\_DC\_CACHEING preprocessor symbol for portability.
 Ends a document (only relevant when outputting to a printer).
 
 
 Ends a document (only relevant when outputting to a printer).
 
 
-\membersection{wxDC::EndDrawing}\label{wxdcenddrawing}
-
-\func{void}{EndDrawing}{\void}
-
-Allows optimization of drawing code under MS Windows. Enclose
-drawing primitives between {\bf BeginDrawing} and {\bf EndDrawing}\rtfsp
-calls.
-
-
 \membersection{wxDC::EndPage}\label{wxdcendpage}
 
 \func{void}{EndPage}{\void}
 \membersection{wxDC::EndPage}\label{wxdcendpage}
 
 \func{void}{EndPage}{\void}
@@ -655,6 +633,17 @@ rectangle are returned as a tuple.}
 {\tt ( x, y, width, height )}}
 
 
 {\tt ( x, y, width, height )}}
 
 
+\membersection{wxDC::GetDepth}\label{wxdcgetdepth}
+
+\constfunc{int}{GetDepth}{\void}
+
+Returns the depth (number of bits/pixel) of this DC.
+
+\wxheading{See also}
+
+\helpref{wxDisplayDepth}{wxdisplaydepth}
+
+
 \membersection{wxDC::GetFont}\label{wxdcgetfont}
 
 \constfunc{const wxFont\&}{GetFont}{\void}
 \membersection{wxDC::GetFont}\label{wxdcgetfont}
 
 \constfunc{const wxFont\&}{GetFont}{\void}
@@ -665,6 +654,20 @@ initially and only after calling \helpref{wxDC::SetFont}{wxdcsetfont} a valid
 font is returned.
 
 
 font is returned.
 
 
+\membersection{wxDC::GetLayoutDirection}\label{wxdcgetlayoutdirection}
+
+\constfunc{wxLayoutDirection}{GetLayoutDirection}{\void}
+
+Gets the current layout direction of the device context. On platforms where RTL layout
+is supported, the return value will either be \texttt{wxLayout\_LeftToRight} or 
+\texttt{wxLayout\_RightToLeft}. If RTL layout is not supported, the return value will 
+be \texttt{wxLayout\_Default}.
+
+\wxheading{See also}
+
+\helpref{SetLayoutDirection}{wxdcsetlayoutdirection}
+
+
 \membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction}
 
 \func{int}{GetLogicalFunction}{\void}
 \membersection{wxDC::GetLogicalFunction}\label{wxdcgetlogicalfunction}
 
 \func{int}{GetLogicalFunction}{\void}
@@ -679,6 +682,33 @@ Gets the current logical function (see \helpref{wxDC::SetLogicalFunction}{wxdcse
 Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}).
 
 
 Gets the {\it mapping mode} for the device context (see \helpref{wxDC::SetMapMode}{wxdcsetmapmode}).
 
 
+\membersection{wxDC::GetMultiLineTextExtent}\label{wxdcgetmultilinetextextent}
+
+\constfunc{void}{GetMultiLineTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w},\\
+  \param{wxCoord *}{h}, \param{wxCoord *}{heightLine = NULL}, \param{wxFont *}{font = NULL}}
+
+\constfunc{wxSize}{GetMultiLineTextExtent}{\param{const wxString\& }{string}}
+
+Gets the dimensions of the string using the currently selected font.
+\rtfsp{\it string} is the text string to measure, {\it heightLine}, if non NULL,
+is where to store the height of a single line.
+
+The text extent is returned in {\it w} and {\it h} pointers (first form) or as
+a \helpref{wxSize}{wxsize} object (second form).
+
+If the optional parameter {\it font} is specified and valid, then it is used
+for the text extent calculation. Otherwise the currently selected font is.
+
+Note that this function works both with single-line and multi-line strings.
+
+\wxheading{See also}
+
+\helpref{wxFont}{wxfont},\rtfsp
+\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
+\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
+\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
+
+
 \membersection{wxDC::GetPartialTextExtents}\label{wxdcgetpartialtextextents}
 
 \constfunc{bool}{GetPartialTextExtents}{\param{const wxString\&  }{text}, 
 \membersection{wxDC::GetPartialTextExtents}\label{wxdcgetpartialtextextents}
 
 \constfunc{bool}{GetPartialTextExtents}{\param{const wxString\&  }{text}, 
@@ -692,6 +722,11 @@ various platforms have a native API function that is faster or more
 accurate than the generic implementation then it should be used
 instead. 
 
 accurate than the generic implementation then it should be used
 instead. 
 
+\wxheading{See also}
+
+\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent},\rtfsp
+\helpref{wxDC::GetTextExtent}{wxdcgettextextent}
+
 \pythonnote{This method only takes the {\it text} parameter and
   returns a Python list of integers.}
 
 \pythonnote{This method only takes the {\it text} parameter and
   returns a Python list of integers.}
 
@@ -777,22 +812,31 @@ Gets the current text background colour (see \helpref{wxDC::SetTextBackground}{w
 
 \membersection{wxDC::GetTextExtent}\label{wxdcgettextextent}
 
 
 \membersection{wxDC::GetTextExtent}\label{wxdcgettextextent}
 
-\func{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w}, \param{wxCoord *}{h},\\
-  \param{wxCoord *}{descent = NULL}, \param{wxCoord *}{externalLeading = NULL}, \param{wxFont *}{font = NULL}}
+\constfunc{void}{GetTextExtent}{\param{const wxString\& }{string}, \param{wxCoord *}{w}, \param{wxCoord *}{h},\\
+  \param{wxCoord *}{descent = NULL}, \param{wxCoord *}{externalLeading = NULL}, \param{const wxFont *}{font = NULL}}
+
+\constfunc{wxSize}{GetTextExtent}{\param{const wxString\& }{string}}
 
 Gets the dimensions of the string using the currently selected font.
 
 Gets the dimensions of the string using the currently selected font.
-\rtfsp{\it string} is the text string to measure, {\it w} and {\it h} are
-the total width and height respectively, {\it descent} is the
+\rtfsp{\it string} is the text string to measure, {\it descent} is the
 dimension from the baseline of the font to the bottom of the
 descender, and {\it externalLeading} is any extra vertical space added
 to the font by the font designer (usually is zero).
 
 dimension from the baseline of the font to the bottom of the
 descender, and {\it externalLeading} is any extra vertical space added
 to the font by the font designer (usually is zero).
 
-The optional parameter {\it font} specifies an alternative
-to the currently selected font: but note that this does not
-yet work under Windows, so you need to set a font for
-the device context first.
+The text extent is returned in {\it w} and {\it h} pointers (first form) or as
+a \helpref{wxSize}{wxsize} object (second form).
+
+If the optional parameter {\it font} is specified and valid, then it is used
+for the text extent calculation. Otherwise the currently selected font is.
 
 
-See also \helpref{wxFont}{wxfont}, \helpref{wxDC::SetFont}{wxdcsetfont}.
+Note that this function only works with single-line strings.
+
+\wxheading{See also}
+
+\helpref{wxFont}{wxfont},\rtfsp
+\helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
+\helpref{wxDC::GetPartialTextExtents}{wxdcgetpartialtextextents},\rtfsp
+\helpref{wxDC::GetMultiLineTextExtent}{wxdcgetmultilinetextextent}
 
 \pythonnote{The following methods are implemented in wxPython:\par
 \indented{2cm}{\begin{twocollist}
 
 \pythonnote{The following methods are implemented in wxPython:\par
 \indented{2cm}{\begin{twocollist}
@@ -825,9 +869,38 @@ Gets the current user scale factor (set by \helpref{SetUserScale}{wxdcsetusersca
  array {\tt ( x, y )}}
 
 
  array {\tt ( x, y )}}
 
 
+\membersection{wxDC::GradientFillConcentric}\label{wxdcgradientfillconcentric}
+
+\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}}
+
+\func{void}{GradientFillConcentric}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{const wxPoint\& }{circleCenter}}
+
+Fill the area specified by rect with a radial gradient, starting from 
+\arg{initialColour} at the centre of the circle and fading to \arg{destColour} 
+on the circle outside.
+
+\arg{circleCenter} are the relative coordinates of centre of the circle in
+the specified \arg{rect}. If not specified, the cercle is placed at the
+centre of rect.
+
+\textbf{Note: } Currently this function is very slow, don't use it for
+real-time drawing.
+
+
+\membersection{wxDC::GradientFillLinear}\label{wxdcgradientfilllinear}
+
+\func{void}{GradientFillLinear}{\param{const wxRect\&}{ rect}, \param{const wxColour\&}{ initialColour}, \param{const wxColour\&}{ destColour}, \param{wxDirection}{ nDirection = wxEAST}}
+
+Fill the area specified by \arg{rect} with a linear gradient, starting from 
+\arg{initialColour} and eventually fading to \arg{destColour}. The 
+\arg{nDirection} specifies the direction of the colour change, default is to
+use \arg{initialColour} on the left part of the rectangle and 
+\arg{destColour} on the right one.
+
+
 \membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex}
 
 \membersection{wxDC::LogicalToDeviceX}\label{wxdclogicaltodevicex}
 
-\func{wxCoord}{LogicalToDeviceX}{\param{wxCoord}{ x}}
+\func{virtual wxCoord}{LogicalToDeviceX}{\param{wxCoord}{ x}}
 
 Converts logical X coordinate to device coordinate, using the current
 mapping mode.
 
 Converts logical X coordinate to device coordinate, using the current
 mapping mode.
@@ -835,7 +908,7 @@ mapping mode.
 
 \membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel}
 
 
 \membersection{wxDC::LogicalToDeviceXRel}\label{wxdclogicaltodevicexrel}
 
-\func{wxCoord}{LogicalToDeviceXRel}{\param{wxCoord}{ x}}
+\func{virtual wxCoord}{LogicalToDeviceXRel}{\param{wxCoord}{ x}}
 
 Converts logical X coordinate to relative device coordinate, using the current
 mapping mode but ignoring the x axis orientation.
 
 Converts logical X coordinate to relative device coordinate, using the current
 mapping mode but ignoring the x axis orientation.
@@ -844,7 +917,7 @@ Use this for converting a width, for example.
 
 \membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey}
 
 
 \membersection{wxDC::LogicalToDeviceY}\label{wxdclogicaltodevicey}
 
-\func{wxCoord}{LogicalToDeviceY}{\param{wxCoord}{ y}}
+\func{virtual wxCoord}{LogicalToDeviceY}{\param{wxCoord}{ y}}
 
 Converts logical Y coordinate to device coordinate, using the current
 mapping mode.
 
 Converts logical Y coordinate to device coordinate, using the current
 mapping mode.
@@ -852,7 +925,7 @@ mapping mode.
 
 \membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel}
 
 
 \membersection{wxDC::LogicalToDeviceYRel}\label{wxdclogicaltodeviceyrel}
 
-\func{wxCoord}{LogicalToDeviceYRel}{\param{wxCoord}{ y}}
+\func{virtual wxCoord}{LogicalToDeviceYRel}{\param{wxCoord}{ y}}
 
 Converts logical Y coordinate to relative device coordinate, using the current
 mapping mode but ignoring the y axis orientation.
 
 Converts logical Y coordinate to relative device coordinate, using the current
 mapping mode but ignoring the y axis orientation.
@@ -887,7 +960,7 @@ Gets the minimum horizontal extent used in drawing commands so far.
 Gets the minimum vertical extent used in drawing commands so far.
 
 
 Gets the minimum vertical extent used in drawing commands so far.
 
 
-\membersection{wxDC::Ok}\label{wxdcok}
+\membersection{wxDC::IsOk}\label{wxdcisok}
 
 \func{bool}{Ok}{\void}
 
 
 \func{bool}{Ok}{\void}
 
@@ -946,7 +1019,7 @@ whether text will be drawn with a background colour or not.
 Sets the current brush for the DC.
 
 If the argument is wxNullBrush, the current brush is selected out of the device
 Sets the current brush for the DC.
 
 If the argument is wxNullBrush, the current brush is selected out of the device
-context, and the original brush restored, allowing the current brush to
+context (leaving wxDC without any valid brush), allowing the current brush to
 be destroyed safely.
 
 See also \helpref{wxBrush}{wxbrush}.
 be destroyed safely.
 
 See also \helpref{wxBrush}{wxbrush}.
@@ -1001,6 +1074,18 @@ should not pass {\tt wxNullFont} to this method.
 See also \helpref{wxFont}{wxfont}.
 
 
 See also \helpref{wxFont}{wxfont}.
 
 
+\membersection{wxDC::SetLayoutDirection}\label{wxdcsetlayoutdirection}
+
+\func{void}{SetLayoutDirection}{\param{wxLayoutDirection}{ dir}}
+
+Sets the current layout direction for the device context. \arg{dir} may be either
+\texttt{wxLayout\_Default}, \texttt{wxLayout\_LeftToRight} or \texttt{wxLayout\_RightToLeft}.
+
+\wxheading{See also}
+
+\helpref{GetLayoutDirection}{wxdcgetlayoutdirection}
+
+
 \membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction}
 
 \func{void}{SetLogicalFunction}{\param{int}{ function}}
 \membersection{wxDC::SetLogicalFunction}\label{wxdcsetlogicalfunction}
 
 \func{void}{SetLogicalFunction}{\param{int}{ function}}
@@ -1064,7 +1149,7 @@ The mapping mode can be one of the following:
 \twocolitem{wxMM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.}
 \twocolitem{wxMM\_METRIC}{Each logical unit is 1 mm.}
 \twocolitem{wxMM\_LOMETRIC}{Each logical unit is 1/10 of a mm.}
 \twocolitem{wxMM\_POINTS}{Each logical unit is a point, or 1/72 of an inch.}
 \twocolitem{wxMM\_METRIC}{Each logical unit is 1 mm.}
 \twocolitem{wxMM\_LOMETRIC}{Each logical unit is 1/10 of a mm.}
-\twocolitem{wxMM\_TEXT}{Each logical unit is 1 pixel.}
+\twocolitem{wxMM\_TEXT}{Each logical unit is 1 device pixel.}
 \end{twocollist}
 
 
 \end{twocollist}
 
 
@@ -1077,7 +1162,7 @@ or bitmap associated with the DC. If the argument is wxNullPalette, the current
 palette is selected out of the device context, and the original palette
 restored.
 
 palette is selected out of the device context, and the original palette
 restored.
 
-See \helpref{wxPalette}{wxpalette} for further details. 
+See \helpref{wxPalette}{wxpalette} for further details.
 
 
 \membersection{wxDC::SetPen}\label{wxdcsetpen}
 
 
 \membersection{wxDC::SetPen}\label{wxdcsetpen}
@@ -1087,7 +1172,8 @@ See \helpref{wxPalette}{wxpalette} for further details.
 Sets the current pen for the DC.
 
 If the argument is wxNullPen, the current pen is selected out of the device
 Sets the current pen for the DC.
 
 If the argument is wxNullPen, the current pen is selected out of the device
-context, and the original pen restored.
+context (leaving wxDC without any valid pen), allowing the current brush to
+be destroyed safely.
 
 See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
 when drawing into a monochrome bitmap.
 
 See also \helpref{wxMemoryDC}{wxmemorydc} for the interpretation of colours
 when drawing into a monochrome bitmap.
@@ -1132,40 +1218,84 @@ Message is a message to show while printing.
 
 Starts a document page (only relevant when outputting to a printer).
 
 
 Starts a document page (only relevant when outputting to a printer).
 
-\section{\class{wxDCClipper}}\label{wxdcclipper}
 
 
-This is a small helper class which sets the specified DC to its constructor
-clipping region and then automatically destroys it in its destructor. Using
-it ensures that an unwanted clipping region is not left set on the DC.
+\membersection{wxDC::StretchBlit}\label{wxdcstretchblit}
 
 
-\wxheading{Derived from}
+\func{bool}{StretchBlit}{\param{wxCoord}{ xdest}, \param{wxCoord}{ ydest}, \param{wxCoord}{ dstWidth}, \param{wxCoord}{ dstHeight},
+  \param{wxDC* }{source}, \param{wxCoord}{ xsrc}, \param{wxCoord}{ ysrc}, \param{wxCoord}{ srcWidth}, \param{wxCoord}{ srcHeight}, 
+  \param{int}{ logicalFunc = wxCOPY}, \param{bool }{useMask = false}, \param{wxCoord}{ xsrcMask = -1}, \param{wxCoord}{ ysrcMask = -1}}
 
 
-No base class
+Copy from a source DC to this DC, specifying the destination
+coordinates, destination size, source DC, source coordinates,
+size of source area to copy, logical function, whether to use a bitmap mask, 
+and mask source position.
 
 
-\wxheading{Include files}
+\wxheading{Parameters}
 
 
-<wx/dc.h>
+\docparam{xdest}{Destination device context x position.}
 
 
-\wxheading{See also}
+\docparam{ydest}{Destination device context y position.}
 
 
-\helpref{wxDC}{wxdc}
+\docparam{dstWidth}{Width of destination area.}
 
 
-\latexignore{\rtfignore{\wxheading{Members}}}
+\docparam{dstHeight}{Height of destination area.}
 
 
+\docparam{source}{Source device context.}
 
 
-\membersection{wxDCClipper::wxDCClipper}\label{wxdcclipperctor}
+\docparam{xsrc}{Source device context x position.}
 
 
-\func{}{wxDCClipper}{\param{wxDC\& }{dc}, \param{wxCoord }{x},\param{wxCoord }{y},\param{wxCoord }{w},\param{wxCoord }{h},}
+\docparam{ysrc}{Source device context y position.}
 
 
-\func{}{wxDCClipper}{\param{wxDC\& }{dc}, \param{const wxRect\&}{ rect}}
+\docparam{srcWidth}{Width of source area to be copied.}
 
 
-Constructor: sets the clipping region for the given device context to the
-specified rectangle.
+\docparam{srcHeight}{Height of source area to be copied.}
 
 
+\docparam{logicalFunc}{Logical function to use: see \helpref{wxDC::SetLogicalFunction}{wxdcsetlogicalfunction}.}
 
 
-\membersection{wxDCClipper::\destruct{wxDCClipper}}\label{wxdcclipperdtor}
+\docparam{useMask}{If true, Blit does a transparent blit using the mask that is associated with the bitmap
+selected into the source device context. The Windows implementation does the following if \texttt{MaskBlt} cannot be used:
 
 
-\func{}{\destruct{wxDCClipper}}{\void}
+\begin{enumerate}
+\item Creates a temporary bitmap and copies the destination area into it.
+\item Copies the source area into the temporary bitmap using the specified logical function.
+\item Sets the masked area in the temporary bitmap to BLACK by ANDing the
+mask bitmap with the temp bitmap with the foreground colour set to WHITE
+and the background colour set to BLACK.
+\item Sets the unmasked area in the destination area to BLACK by ANDing the
+mask bitmap with the destination area with the foreground colour set to BLACK
+and the background colour set to WHITE.
+\item ORs the temporary bitmap with the destination area.
+\item Deletes the temporary bitmap.
+\end{enumerate}
+
+This sequence of operations ensures that the source's transparent area need not be black,
+and logical functions are supported.
+
+{\bf Note:} on Windows, blitting with masks can be speeded up considerably by compiling
+wxWidgets with the \texttt{wxUSE\_DC\_CACHE} option enabled. You can also influence whether \texttt{MaskBlt}
+or the explicit mask blitting code above is used, by using \helpref{wxSystemOptions}{wxsystemoptions} and
+setting the {\bf no-maskblt} option to 1.
+
+}
+
+\docparam{xsrcMask}{Source x position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
+will be assumed for the mask source position. Currently only implemented on Windows.}
+
+\docparam{ysrcMask}{Source y position on the mask. If both xsrcMask and ysrcMask are -1, xsrc and ysrc
+will be assumed for the mask source position. Currently only implemented on Windows.}
+
+
+\wxheading{Remarks}
+
+There is partial support for Blit in wxPostScriptDC, under X.
+
+wxDC::StretchBlit is only implemented under wxMAC and wxMSW.
+
+See \helpref{wxMemoryDC}{wxmemorydc} for typical usage.
+
+\newsince{2.9.0}
+
+\wxheading{See also}
 
 
-Destructor: destroys the clipping region set in the constructor.
+\helpref{wxDC::Blit}{wxdcblit}, \helpref{wxMemoryDC}{wxmemorydc}, \helpref{wxBitmap}{wxbitmap}, \helpref{wxMask}{wxmask}