public static SKMatrix44 Concat()

in binding/SkiaSharp/SKMatrix44.cs [302:466]


		public static SKMatrix44 Concat (SKMatrix44 first, SKMatrix44 second) =>
			first * second;

		public readonly SKMatrix44 PreConcat (SKMatrix44 matrix) =>
			this * matrix;

		public readonly SKMatrix44 PostConcat (SKMatrix44 matrix) =>
			matrix * this;

		public static void Concat (ref SKMatrix44 target, SKMatrix44 first, SKMatrix44 second) =>
			target = first * second;

		// Operations

		public static SKMatrix44 Negate (SKMatrix44 value) =>
			-value;

		public static SKMatrix44 Add (SKMatrix44 value1, SKMatrix44 value2) =>
			value1 + value2;

		public static SKMatrix44 Subtract (SKMatrix44 value1, SKMatrix44 value2) =>
			value1 - value2;

		public static SKMatrix44 Multiply (SKMatrix44 value1, SKMatrix44 value2) =>
			value1 * value2;

		public static SKMatrix44 Multiply (SKMatrix44 value1, float value2) =>
			value1 * value2;

		// operators

		public static SKMatrix44 operator - (SKMatrix44 value) =>
			-((Matrix4x4)value);

		public static SKMatrix44 operator + (SKMatrix44 value1, SKMatrix44 value2) =>
			((Matrix4x4)value1) + ((Matrix4x4)value2);

		public static SKMatrix44 operator - (SKMatrix44 value1, SKMatrix44 value2) =>
			((Matrix4x4)value1) - ((Matrix4x4)value2);

		public static SKMatrix44 operator * (SKMatrix44 value1, SKMatrix44 value2) =>
			((Matrix4x4)value1) * ((Matrix4x4)value2);

		public static SKMatrix44 operator * (SKMatrix44 value1, float value2) =>
			((Matrix4x4)value1) * value2;

		// properties

		public SKMatrix Matrix =>
			new SKMatrix (
				m00, m10, m30,
				m01, m11, m31,
				m03, m13, m33);

		public float this[int row, int column] {
			get => row switch {
				0 => column switch {
					0 => m00,
					1 => m01,
					2 => m02,
					3 => m03,
					_ => throw new ArgumentOutOfRangeException (nameof (column))
				},
				1 => column switch {
					0 => m10,
					1 => m11,
					2 => m12,
					3 => m13,
					_ => throw new ArgumentOutOfRangeException (nameof (column))
				},
				2 => column switch {
					0 => m20,
					1 => m21,
					2 => m22,
					3 => m23,
					_ => throw new ArgumentOutOfRangeException (nameof (column))
				},
				3 => column switch {
					0 => m30,
					1 => m31,
					2 => m32,
					3 => m33,
					_ => throw new ArgumentOutOfRangeException (nameof (column))
				},
				_ => throw new ArgumentOutOfRangeException (nameof (row))
			};
			set {
				switch (row) {
					case 0:
						switch (column) {
							case 0:
								m00 = value;
								break;
							case 1:
								m01 = value;
								break;
							case 2:
								m02 = value;
								break;
							case 3:
								m03 = value;
								break;
							default:
								throw new ArgumentOutOfRangeException (nameof (column));
						};
						break;
					case 1:
						switch (column) {
							case 0:
								m10 = value;
								break;
							case 1:
								m11 = value;
								break;
							case 2:
								m12 = value;
								break;
							case 3:
								m13 = value;
								break;
							default:
								throw new ArgumentOutOfRangeException (nameof (column));
						};
						break;
					case 2:
						switch (column) {
							case 0:
								m20 = value;
								break;
							case 1:
								m21 = value;
								break;
							case 2:
								m22 = value;
								break;
							case 3:
								m23 = value;
								break;
							default:
								throw new ArgumentOutOfRangeException (nameof (column));
						};
						break;
					case 3:
						switch (column) {
							case 0:
								m30 = value;
								break;
							case 1:
								m31 = value;
								break;
							case 2:
								m32 = value;
								break;
							case 3:
								m33 = value;
								break;
							default:
								throw new ArgumentOutOfRangeException (nameof (column));
						};
						break;
					default:
						throw new ArgumentOutOfRangeException (nameof (row));
				};
			}
		}