fd5cfba711
Correct errors in TransformPoint() and TransformDistance(). Change Rotate() to interpret positive angles as rotating clockwise, for consistency with wxGraphicsContext::Rotate(). Improve the unit test to verify that all the transformations work correctly. Closes #14334. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/affinematrix2d.h
|
|
// Purpose: wxAffineMatrix2D class.
|
|
// Author: Based on wxTransformMatrix by Chris Breeze, Julian Smart
|
|
// Created: 2011-04-05
|
|
// Copyright: (c) wxWidgets team
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_AFFINEMATRIX2D_H_
|
|
#define _WX_AFFINEMATRIX2D_H_
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_GEOMETRY
|
|
|
|
#include "wx/affinematrix2dbase.h"
|
|
|
|
// A simple implementation of wxAffineMatrix2DBase interface done entirely in
|
|
// wxWidgets.
|
|
class WXDLLIMPEXP_CORE wxAffineMatrix2D : public wxAffineMatrix2DBase
|
|
{
|
|
public:
|
|
wxAffineMatrix2D() : m_11(1), m_12(0),
|
|
m_21(0), m_22(1),
|
|
m_tx(0), m_ty(0)
|
|
{
|
|
}
|
|
|
|
// Implement base class pure virtual methods.
|
|
virtual void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr);
|
|
virtual void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const;
|
|
virtual void Concat(const wxAffineMatrix2DBase& t);
|
|
virtual bool Invert();
|
|
virtual bool IsIdentity() const;
|
|
virtual bool IsEqual(const wxAffineMatrix2DBase& t) const;
|
|
virtual void Translate(wxDouble dx, wxDouble dy);
|
|
virtual void Scale(wxDouble xScale, wxDouble yScale);
|
|
virtual void Rotate(wxDouble cRadians);
|
|
|
|
protected:
|
|
virtual wxPoint2DDouble DoTransformPoint(const wxPoint2DDouble& p) const;
|
|
virtual wxPoint2DDouble DoTransformDistance(const wxPoint2DDouble& p) const;
|
|
|
|
private:
|
|
wxDouble m_11, m_12, m_21, m_22, m_tx, m_ty;
|
|
};
|
|
|
|
#endif // wxUSE_GEOMETRY
|
|
|
|
#endif // _WX_AFFINEMATRIX2D_H_
|