TransformMatrix
Represents a transformation matrix value.
using System;
using System.Globalization;
namespace AngleSharp.Css
{
public struct TransformMatrix : IEquatable<TransformMatrix>, ICssObject
{
public static readonly TransformMatrix Zero = default(TransformMatrix);
public static readonly TransformMatrix One = new TransformMatrix(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0);
private float _m11;
private float _m12;
private float _m13;
private float _m21;
private float _m22;
private float _m23;
private float _m31;
private float _m32;
private float _m33;
private float _tx;
private float _ty;
private float _tz;
public float M11 => _m11;
public float M12 => _m12;
public float M13 => _m13;
public float M21 => _m21;
public float M22 => _m22;
public float M23 => _m23;
public float M31 => _m31;
public float M32 => _m32;
public float M33 => _m33;
public float Tx => _tx;
public float Ty => _ty;
public float Tz => _tz;
public TransformMatrix(float m11, float m12, float m13, float m21, float m22, float m23, float m31, float m32, float m33, float tx, float ty, float tz)
{
_m11 = m11;
_m12 = m12;
_m13 = m13;
_m21 = m21;
_m22 = m22;
_m23 = m23;
_m31 = m31;
_m32 = m32;
_m33 = m33;
_tx = tx;
_ty = ty;
_tz = tz;
}
public bool Equals(TransformMatrix other)
{
if (_m11 == other._m11 && _m12 == other._m12 && _m13 == other._m13 && _m21 == other._m21 && _m22 == other._m22 && _m32 == other._m32 && _m31 == other._m31 && _m23 == other._m23 && _m33 == other._m33 && _tx == other._tx && _ty == other._ty)
return _tz == other._tz;
return false;
}
public static TransformMatrix operator *(TransformMatrix a, TransformMatrix b)
{
return new TransformMatrix(a._m11 * b._m11 + a._m12 * b._m21 + a._m13 * b._m31, a._m11 * b._m12 + a._m12 * b._m22 + a._m13 * b._m32, a._m11 * b._m13 + a._m12 * b._m23 + a._m13 * b._m33, a._m21 * b._m11 + a._m22 * b._m21 + a._m23 * b._m31, a._m21 * b._m12 + a._m22 * b._m22 + a._m23 * b._m32, a._m21 * b._m13 + a._m22 * b._m23 + a._m23 * b._m33, a._m31 * b._m11 + a._m32 * b._m21 + a._m33 * b._m31, a._m31 * b._m12 + a._m32 * b._m22 + a._m33 * b._m32, a._m31 * b._m13 + a._m32 * b._m23 + a._m33 * b._m33, a._m11 * b._tx + a._m12 * b._ty + a._m13 * b._tz + a._tx, a._m21 * b._tx + a._m22 * b._ty + a._m23 * b._tz + a._ty, a._m31 * b._tx + a._m32 * b._ty + a._m33 * b._tz + a._tz);
}
public override bool Equals(object obj)
{
if (obj is TransformMatrix)
return Equals((TransformMatrix)obj);
return false;
}
public override int GetHashCode()
{
return (int)(_m11 + _m12 + _m13 + _m21 + _m22 + _m23 + _m31 + _m32 + _m33 + _tx + _ty + _tz);
}
public string ToCss()
{
return FunctionNames.Build(FunctionNames.Matrix3d, _m11.ToString(CultureInfo.InvariantCulture), _m12.ToString(CultureInfo.InvariantCulture), _m13.ToString(CultureInfo.InvariantCulture), _m21.ToString(CultureInfo.InvariantCulture), _m22.ToString(CultureInfo.InvariantCulture), _m23.ToString(CultureInfo.InvariantCulture), _m31.ToString(CultureInfo.InvariantCulture), _m32.ToString(CultureInfo.InvariantCulture), _m33.ToString(CultureInfo.InvariantCulture), _tx.ToString(CultureInfo.InvariantCulture), _ty.ToString(CultureInfo.InvariantCulture), _tz.ToString(CultureInfo.InvariantCulture));
}
}
}