wxMM_POINTS
};
+/**
+ Simple collection of various font metrics.
+
+ This object is returned by wxDC::GetFontMetrics().
+
+ @since 2.9.2
+
+ @library{wxcore}
+ @category{dc,gdi}
+ */
+struct wxFontMetrics
+{
+ /// Constructor initializes all fields to 0.
+ wxFontMetrics();
+
+ int height, ///< Total character height.
+ ascent, ///< Part of the height above the baseline.
+ descent, ///< Part of the height below the baseline.
+ internalLeading, ///< Intra-line spacing.
+ externalLeading, ///< Inter-line spacing.
+ averageWidth; ///< Average font width, a.k.a. "x-width".
+};
/**
wxWidgets offers an alternative drawing API based on the modern drawing
backends GDI+, CoreGraphics and Cairo. See wxGraphicsContext, wxGraphicsRenderer
and related classes. There is also a wxGCDC linking the APIs by offering
- the wxDC API ontop of a wxGraphicsContext.
+ the wxDC API on top of a wxGraphicsContext.
wxDC is an abstract base class and cannot be created directly.
Use wxPaintDC, wxClientDC, wxWindowDC, wxScreenDC, wxMemoryDC or
a device unit is a @e pixel. For a printer, the device unit is defined by the
resolution of the printer (usually given in @c DPI: dot-per-inch).
- All wxDC functions use instead @b logical units, unless where explicitely
+ All wxDC functions use instead @b logical units, unless where explicitly
stated. Logical units are arbitrary units mapped to device units using
the current mapping mode (see wxDC::SetMapMode).
@section dc_alpha_support Support for Transparency / Alpha Channel
- On Mac OS X colours with alpha channel are supported. Instances of wxPen
- or wxBrush that are built from wxColour use the colour's alpha values
- when stroking or filling.
+ In general wxDC methods don't support alpha transparency and the alpha
+ component of wxColour is simply ignored and you need to use wxGraphicsContext
+ for full transparency support. There are, however, a few exceptions: first,
+ under Mac OS X colours with alpha channel are supported in all the normal
+ wxDC-derived classes as they use wxGraphicsContext internally. Second,
+ under all platforms wxSVGFileDC also fully supports alpha channel. In both
+ of these cases the instances of wxPen or wxBrush that are built from
+ wxColour use the colour's alpha values when stroking or filling.
+
+
+ @section Support for Transformation Matrix
+
+ On some platforms (currently only under MSW and only on Windows NT, i.e.
+ not Windows 9x/ME, systems) wxDC has support for applying an arbitrary
+ affine transformation matrix to its coordinate system. Call
+ CanUseTransformMatrix() to check if this support is available and then call
+ SetTransformMatrix() if it is. If the transformation matrix is not
+ supported, SetTransformMatrix() always simply returns false and doesn't do
+ anything.
@library{wxcore}
*/
wxCoord GetCharWidth() const;
+ /**
+ Returns the various font characteristics.
+
+ This method allows to retrieve some of the font characteristics not
+ returned by GetTextExtent(), notably internal leading and average
+ character width.
+
+ Currently this method returns correct results only under wxMSW, in the
+ other ports the internal leading will always be 0 and the average
+ character width will be computed as the width of the character 'x'.
+
+ @since 2.9.2
+ */
+ wxFontMetrics GetFontMetrics() const;
+
/**
Gets the dimensions of the string using the currently selected font.
@a string is the text string to measure, @e heightLine, if non @NULL,
'zooming'.
*/
void SetUserScale(double xScale, double yScale);
+
+
+ /**
+ @name Transformation matrix
+
+ See the notes about the availability of these functions in the class
+ documentation.
+ */
+ //@{
+
+ /**
+ Check if the use of transformation matrix is supported by the current
+ system.
+
+ Currently this function always returns @false for non-MSW platforms and
+ may return @false for old (Windows 9x/ME) Windows systems. Normally
+ support for the transformation matrix is always available in any
+ relatively recent Windows versions.
+
+ @since 2.9.2
+ */
+ bool CanUseTransformMatrix() const;
+
+ /**
+ Set the transformation matrix.
+
+ If transformation matrix is supported on the current system, the
+ specified @a matrix will be used to transform between wxDC and physical
+ coordinates. Otherwise the function returns @false and doesn't change
+ the coordinate mapping.
+
+ @since 2.9.2
+ */
+ bool SetTransformMatrix(const wxAffineMatrix2D& matrix);
+
+ /**
+ Return the transformation matrix used by this device context.
+
+ By default the transformation matrix is the identity matrix.
+
+ @since 2.9.2
+ */
+ wxAffineMatrix2D GetTransformMatrix() const;
+
+ /**
+ Revert the transformation matrix to identity matrix.
+
+ @since 2.9.2
+ */
+ void ResetTransformMatrix();
+
+ //@}
};