AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.7.0" />

 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)); } } }