affinematrix2d.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/affinematrix2d.h
  3. // Purpose: wxAffineMatrix2D class.
  4. // Author: Based on wxTransformMatrix by Chris Breeze, Julian Smart
  5. // Created: 2011-04-05
  6. // Copyright: (c) wxWidgets team
  7. // Licence: wxWindows licence
  8. /////////////////////////////////////////////////////////////////////////////
  9. #ifndef _WX_AFFINEMATRIX2D_H_
  10. #define _WX_AFFINEMATRIX2D_H_
  11. #include "wx/defs.h"
  12. #if wxUSE_GEOMETRY
  13. #include "wx/affinematrix2dbase.h"
  14. // A simple implementation of wxAffineMatrix2DBase interface done entirely in
  15. // wxWidgets.
  16. class WXDLLIMPEXP_CORE wxAffineMatrix2D : public wxAffineMatrix2DBase
  17. {
  18. public:
  19. wxAffineMatrix2D() : m_11(1), m_12(0),
  20. m_21(0), m_22(1),
  21. m_tx(0), m_ty(0)
  22. {
  23. }
  24. // Implement base class pure virtual methods.
  25. virtual void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr);
  26. virtual void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const;
  27. virtual void Concat(const wxAffineMatrix2DBase& t);
  28. virtual bool Invert();
  29. virtual bool IsIdentity() const;
  30. virtual bool IsEqual(const wxAffineMatrix2DBase& t) const;
  31. virtual void Translate(wxDouble dx, wxDouble dy);
  32. virtual void Scale(wxDouble xScale, wxDouble yScale);
  33. virtual void Rotate(wxDouble cRadians);
  34. protected:
  35. virtual wxPoint2DDouble DoTransformPoint(const wxPoint2DDouble& p) const;
  36. virtual wxPoint2DDouble DoTransformDistance(const wxPoint2DDouble& p) const;
  37. private:
  38. wxDouble m_11, m_12, m_21, m_22, m_tx, m_ty;
  39. };
  40. #endif // wxUSE_GEOMETRY
  41. #endif // _WX_AFFINEMATRIX2D_H_