mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 00:59:44 -06:00
wxWidgets3: update to svn r70933
This commit is contained in:
127
Externals/wxWidgets3/include/wx/affinematrix2dbase.h
vendored
Normal file
127
Externals/wxWidgets3/include/wx/affinematrix2dbase.h
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/affinematrix2dbase.h
|
||||
// Purpose: Common interface for 2D transformation matrices.
|
||||
// Author: Catalin Raceanu
|
||||
// Created: 2011-04-06
|
||||
// Copyright: (c) wxWidgets team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_AFFINEMATRIX2DBASE_H_
|
||||
#define _WX_AFFINEMATRIX2DBASE_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
|
||||
#if wxUSE_GEOMETRY
|
||||
|
||||
#include "wx/geometry.h"
|
||||
|
||||
struct wxMatrix2D
|
||||
{
|
||||
wxMatrix2D(wxDouble v11 = 1,
|
||||
wxDouble v12 = 0,
|
||||
wxDouble v21 = 0,
|
||||
wxDouble v22 = 1)
|
||||
{
|
||||
m_11 = v11; m_12 = v12;
|
||||
m_21 = v21; m_22 = v22;
|
||||
}
|
||||
|
||||
wxDouble m_11, m_12, m_21, m_22;
|
||||
};
|
||||
|
||||
// A 2x3 matrix representing an affine 2D transformation.
|
||||
//
|
||||
// This is an abstract base class implemented by wxAffineMatrix2D only so far,
|
||||
// but in the future we also plan to derive wxGraphicsMatrix from it (it should
|
||||
// also be documented then as currently only wxAffineMatrix2D itself is).
|
||||
class WXDLLIMPEXP_CORE wxAffineMatrix2DBase
|
||||
{
|
||||
public:
|
||||
wxAffineMatrix2DBase() {}
|
||||
virtual ~wxAffineMatrix2DBase() {}
|
||||
|
||||
// sets the matrix to the respective values
|
||||
virtual void Set(const wxMatrix2D& mat2D, const wxPoint2DDouble& tr) = 0;
|
||||
|
||||
// gets the component valuess of the matrix
|
||||
virtual void Get(wxMatrix2D* mat2D, wxPoint2DDouble* tr) const = 0;
|
||||
|
||||
// concatenates the matrix
|
||||
virtual void Concat(const wxAffineMatrix2DBase& t) = 0;
|
||||
|
||||
// makes this the inverse matrix
|
||||
virtual bool Invert() = 0;
|
||||
|
||||
// return true if this is the identity matrix
|
||||
virtual bool IsIdentity() const = 0;
|
||||
|
||||
// returns true if the elements of the transformation matrix are equal ?
|
||||
virtual bool IsEqual(const wxAffineMatrix2DBase& t) const = 0;
|
||||
bool operator==(const wxAffineMatrix2DBase& t) const { return IsEqual(t); }
|
||||
bool operator!=(const wxAffineMatrix2DBase& t) const { return !IsEqual(t); }
|
||||
|
||||
|
||||
//
|
||||
// transformations
|
||||
//
|
||||
|
||||
// add the translation to this matrix
|
||||
virtual void Translate(wxDouble dx, wxDouble dy) = 0;
|
||||
|
||||
// add the scale to this matrix
|
||||
virtual void Scale(wxDouble xScale, wxDouble yScale) = 0;
|
||||
|
||||
// add the rotation to this matrix (counter clockwise, radians)
|
||||
virtual void Rotate(wxDouble ccRadians) = 0;
|
||||
|
||||
// add mirroring to this matrix
|
||||
void Mirror(int direction = wxHORIZONTAL)
|
||||
{
|
||||
wxDouble x = (direction & wxHORIZONTAL) ? -1 : 1;
|
||||
wxDouble y = (direction & wxVERTICAL) ? -1 : 1;
|
||||
Scale(x, y);
|
||||
}
|
||||
|
||||
|
||||
// applies that matrix to the point
|
||||
wxPoint2DDouble TransformPoint(const wxPoint2DDouble& src) const
|
||||
{
|
||||
return DoTransformPoint(src);
|
||||
}
|
||||
|
||||
void TransformPoint(wxDouble* x, wxDouble* y) const
|
||||
{
|
||||
wxCHECK_RET( x && y, "Can't be NULL" );
|
||||
|
||||
const wxPoint2DDouble dst = DoTransformPoint(wxPoint2DDouble(*x, *y));
|
||||
*x = dst.m_x;
|
||||
*y = dst.m_y;
|
||||
}
|
||||
|
||||
// applies the matrix except for translations
|
||||
wxPoint2DDouble TransformDistance(const wxPoint2DDouble& src) const
|
||||
{
|
||||
return DoTransformDistance(src);
|
||||
}
|
||||
|
||||
void TransformDistance(wxDouble* dx, wxDouble* dy) const
|
||||
{
|
||||
wxCHECK_RET( dx && dy, "Can't be NULL" );
|
||||
|
||||
const wxPoint2DDouble
|
||||
dst = DoTransformDistance(wxPoint2DDouble(*dx, *dy));
|
||||
*dx = dst.m_x;
|
||||
*dy = dst.m_y;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual
|
||||
wxPoint2DDouble DoTransformPoint(const wxPoint2DDouble& p) const = 0;
|
||||
virtual
|
||||
wxPoint2DDouble DoTransformDistance(const wxPoint2DDouble& p) const = 0;
|
||||
};
|
||||
|
||||
#endif // wxUSE_GEOMETRY
|
||||
|
||||
#endif // _WX_AFFINEMATRIX2DBASE_H_
|
Reference in New Issue
Block a user