Add wxDC::SetTransformMatrix() and related methods and implement them in wxMSW.

Add support for world transformations to wxDC too. Currently this is
implemented in wxMSW only but could be easily provided in the ports that use
wxGraphicsContext for wxDC implementation later.

Closes #13092.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-04-23 16:03:10 +00:00
parent 54580df4e2
commit e71508e160
19 changed files with 429 additions and 0 deletions

View File

@@ -163,6 +163,17 @@ struct wxFontMetrics
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}
@category{dc,gdi}
@@ -1499,6 +1510,58 @@ public:
'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();
//@}
};