From 7ac3a7341ea9bf9d1440d9e6b652bcf3fdc999f0 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 5 Aug 2021 23:21:21 +0200 Subject: [PATCH] include: Add d3dx10 vector and matrix types. Signed-off-by: Matteo Bruni Signed-off-by: Alexandre Julliard --- include/d3dx10math.h | 164 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/include/d3dx10math.h b/include/d3dx10math.h index c8bcfd2ce4e..5790fbdf63b 100644 --- a/include/d3dx10math.h +++ b/include/d3dx10math.h @@ -24,6 +24,34 @@ #include +#ifndef D3DVECTOR_DEFINED +#define D3DVECTOR_DEFINED +typedef struct _D3DVECTOR +{ + float x; + float y; + float z; +} D3DVECTOR; +#endif + +#ifndef D3DMATRIX_DEFINED +#define D3DMATRIX_DEFINED +typedef struct _D3DMATRIX +{ + union + { + struct + { + float _11, _12, _13, _14; + float _21, _22, _23, _24; + float _31, _32, _33, _34; + float _41, _42, _43, _44; + }; + float m[4][4]; + }; +} D3DMATRIX; +#endif + typedef enum _D3DX_CPU_OPTIMIZATION { D3DX_NOT_OPTIMIZED, @@ -82,6 +110,142 @@ public: float r, g, b, a; } D3DXCOLOR, *LPD3DXCOLOR; +typedef struct D3DXVECTOR2 +{ +#ifdef __cplusplus + D3DXVECTOR2() {}; + D3DXVECTOR2(const float *pf); + D3DXVECTOR2(float fx, float fy); + + operator float* (); + operator const float* () const; + + D3DXVECTOR2& operator += (const D3DXVECTOR2&); + D3DXVECTOR2& operator -= (const D3DXVECTOR2&); + D3DXVECTOR2& operator *= (float); + D3DXVECTOR2& operator /= (float); + + D3DXVECTOR2 operator + () const; + D3DXVECTOR2 operator - () const; + + D3DXVECTOR2 operator + (const D3DXVECTOR2&) const; + D3DXVECTOR2 operator - (const D3DXVECTOR2&) const; + D3DXVECTOR2 operator * (float) const; + D3DXVECTOR2 operator / (float) const; + + friend D3DXVECTOR2 operator * (float, const D3DXVECTOR2&); + + BOOL operator == (const D3DXVECTOR2&) const; + BOOL operator != (const D3DXVECTOR2&) const; +#endif /* __cplusplus */ + float x, y; +} D3DXVECTOR2, *LPD3DXVECTOR2; + +#ifdef __cplusplus +typedef struct D3DXVECTOR3 : public D3DVECTOR +{ + D3DXVECTOR3() {}; + D3DXVECTOR3(const float *pf); + D3DXVECTOR3(const D3DVECTOR& v); + D3DXVECTOR3(float fx, float fy, float fz); + + operator float* (); + operator const float* () const; + + D3DXVECTOR3& operator += (const D3DXVECTOR3&); + D3DXVECTOR3& operator -= (const D3DXVECTOR3&); + D3DXVECTOR3& operator *= (float); + D3DXVECTOR3& operator /= (float); + + D3DXVECTOR3 operator + () const; + D3DXVECTOR3 operator - () const; + + D3DXVECTOR3 operator + (const D3DXVECTOR3&) const; + D3DXVECTOR3 operator - (const D3DXVECTOR3&) const; + D3DXVECTOR3 operator * (float) const; + D3DXVECTOR3 operator / (float) const; + + friend D3DXVECTOR3 operator * (float, const struct D3DXVECTOR3&); + + BOOL operator == (const D3DXVECTOR3&) const; + BOOL operator != (const D3DXVECTOR3&) const; +} D3DXVECTOR3, *LPD3DXVECTOR3; +#else /* !__cplusplus */ +typedef struct _D3DVECTOR D3DXVECTOR3, *LPD3DXVECTOR3; +#endif /* !__cplusplus */ + +typedef struct D3DXVECTOR4 +{ +#ifdef __cplusplus + D3DXVECTOR4() {}; + D3DXVECTOR4(const float *pf); + D3DXVECTOR4(float fx, float fy, float fz, float fw); + + operator float* (); + operator const float* () const; + + D3DXVECTOR4& operator += (const D3DXVECTOR4&); + D3DXVECTOR4& operator -= (const D3DXVECTOR4&); + D3DXVECTOR4& operator *= (float); + D3DXVECTOR4& operator /= (float); + + D3DXVECTOR4 operator + () const; + D3DXVECTOR4 operator - () const; + + D3DXVECTOR4 operator + (const D3DXVECTOR4&) const; + D3DXVECTOR4 operator - (const D3DXVECTOR4&) const; + D3DXVECTOR4 operator * (float) const; + D3DXVECTOR4 operator / (float) const; + + friend D3DXVECTOR4 operator * (float, const D3DXVECTOR4&); + + BOOL operator == (const D3DXVECTOR4&) const; + BOOL operator != (const D3DXVECTOR4&) const; +#endif /* __cplusplus */ + float x, y, z, w; +} D3DXVECTOR4, *LPD3DXVECTOR4; + +#ifdef __cplusplus +typedef struct D3DXMATRIX : public D3DMATRIX +{ + D3DXMATRIX() {}; + D3DXMATRIX(const float *pf); + D3DXMATRIX(const D3DMATRIX& mat); + D3DXMATRIX(float f11, float f12, float f13, float f14, + float f21, float f22, float f23, float f24, + float f31, float f32, float f33, float f34, + float f41, float f42, float f43, float f44); + + float& operator () (UINT row, UINT col); + float operator () (UINT row, UINT col) const; + + operator float* (); + operator const float* () const; + + D3DXMATRIX& operator *= (const D3DXMATRIX&); + D3DXMATRIX& operator += (const D3DXMATRIX&); + D3DXMATRIX& operator -= (const D3DXMATRIX&); + D3DXMATRIX& operator *= (float); + D3DXMATRIX& operator /= (float); + + D3DXMATRIX operator + () const; + D3DXMATRIX operator - () const; + + D3DXMATRIX operator * (const D3DXMATRIX&) const; + D3DXMATRIX operator + (const D3DXMATRIX&) const; + D3DXMATRIX operator - (const D3DXMATRIX&) const; + D3DXMATRIX operator * (float) const; + D3DXMATRIX operator / (float) const; + + friend D3DXMATRIX operator * (float, const D3DXMATRIX&); + + BOOL operator == (const D3DXMATRIX&) const; + BOOL operator != (const D3DXMATRIX&) const; +} D3DXMATRIX, *LPD3DXMATRIX; +#else /* !__cplusplus */ +typedef struct _D3DMATRIX D3DXMATRIX, *LPD3DXMATRIX; +#endif /* !__cplusplus */ + #ifdef __cplusplus extern "C" { #endif