From d4b3da8a43dc9c9926fa2e1be04490057e3a3a36 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Sat, 18 May 2024 17:58:34 +0400 Subject: [PATCH] Refactoring --- .../PublicHeaders/LottieCpp/Vectors.h | 40 ++++++------- .../Lottie/Public/Primitives/Vectors.mm | 60 +++++++++---------- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/submodules/TelegramUI/Components/LottieCpp/PublicHeaders/LottieCpp/Vectors.h b/submodules/TelegramUI/Components/LottieCpp/PublicHeaders/LottieCpp/Vectors.h index 006c40917e..5046d96b10 100644 --- a/submodules/TelegramUI/Components/LottieCpp/PublicHeaders/LottieCpp/Vectors.h +++ b/submodules/TelegramUI/Components/LottieCpp/PublicHeaders/LottieCpp/Vectors.h @@ -149,16 +149,16 @@ inline double radiansToDegrees(double value) { } struct CATransform3D { - double m11, m12, m13, m14; - double m21, m22, m23, m24; - double m31, m32, m33, m34; - double m41, m42, m43, m44; + float m11, m12, m13, m14; + float m21, m22, m23, m24; + float m31, m32, m33, m34; + float m41, m42, m43, m44; CATransform3D( - double m11_, double m12_, double m13_, double m14_, - double m21_, double m22_, double m23_, double m24_, - double m31_, double m32_, double m33_, double m34_, - double m41_, double m42_, double m43_, double m44_ + float m11_, float m12_, float m13_, float m14_, + float m21_, float m22_, float m23_, float m24_, + float m31_, float m32_, float m33_, float m34_, + float m41_, float m42_, float m43_, float m44_ ) : m11(m11_), m12(m12_), m13(m13_), m14(m14_), m21(m21_), m22(m22_), m23(m23_), m24(m24_), @@ -184,7 +184,7 @@ struct CATransform3D { m41 == 0.0 && m42 == 0.0 && m43 == 0.0 && m44 == 1.0; } - static CATransform3D makeTranslation(double tx, double ty, double tz) { + static CATransform3D makeTranslation(float tx, float ty, float tz) { return CATransform3D( 1, 0, 0, 0, 0, 1, 0, 0, @@ -193,7 +193,7 @@ struct CATransform3D { ); } - static CATransform3D makeScale(double sx, double sy, double sz) { + static CATransform3D makeScale(float sx, float sy, float sz) { return CATransform3D( sx, 0, 0, 0, 0, sy, 0, 0, @@ -202,12 +202,12 @@ struct CATransform3D { ); } - static CATransform3D makeRotation(double radians, double x, double y, double z); + static CATransform3D makeRotation(float radians, float x, float y, float z); - static CATransform3D makeSkew(double skew, double skewAxis) { - double mCos = cos(degreesToRadians(skewAxis)); - double mSin = sin(degreesToRadians(skewAxis)); - double aTan = tan(degreesToRadians(skew)); + static CATransform3D makeSkew(float skew, float skewAxis) { + float mCos = cos(degreesToRadians(skewAxis)); + float mSin = sin(degreesToRadians(skewAxis)); + float aTan = tan(degreesToRadians(skew)); CATransform3D transform1( mCos, @@ -273,9 +273,9 @@ struct CATransform3D { Vector2D const &anchor, Vector2D const &position, Vector2D const &scale, - double rotation, - std::optional skew, - std::optional skewAxis + float rotation, + std::optional skew, + std::optional skewAxis ) { CATransform3D result = CATransform3D::identity(); if (skew.has_value() && skewAxis.has_value()) { @@ -287,13 +287,13 @@ struct CATransform3D { return result; } - CATransform3D rotated(double degrees) const; + CATransform3D rotated(float degrees) const; CATransform3D translated(Vector2D const &translation) const; CATransform3D scaled(Vector2D const &scale) const; - CATransform3D skewed(double skew, double skewAxis) const { + CATransform3D skewed(float skew, float skewAxis) const { return CATransform3D::makeSkew(skew, skewAxis) * (*this); } diff --git a/submodules/TelegramUI/Components/LottieCpp/Sources/Lottie/Public/Primitives/Vectors.mm b/submodules/TelegramUI/Components/LottieCpp/Sources/Lottie/Public/Primitives/Vectors.mm index 0cd9eb8659..40e93bad15 100644 --- a/submodules/TelegramUI/Components/LottieCpp/Sources/Lottie/Public/Primitives/Vectors.mm +++ b/submodules/TelegramUI/Components/LottieCpp/Sources/Lottie/Public/Primitives/Vectors.mm @@ -463,7 +463,7 @@ CATransform3D fromNativeTransform(::CATransform3D const &value) { return result; } -CATransform3D CATransform3D::makeRotation(double radians, double x, double y, double z) { +CATransform3D CATransform3D::makeRotation(float radians, float x, float y, float z) { return fromNativeTransform(CATransform3DMakeRotation(radians, x, y, z)); /*if (x == 0.0 && y == 0.0 && z == 0.0) { @@ -501,7 +501,7 @@ CATransform3D CATransform3D::makeRotation(double radians, double x, double y, do return returnValue;*/ } -CATransform3D CATransform3D::rotated(double degrees) const { +CATransform3D CATransform3D::rotated(float degrees) const { return fromNativeTransform(CATransform3DRotate(nativeTransform(*this), degreesToRadians(degrees), 0.0, 0.0, 1.0)); //return CATransform3D::makeRotation(degreesToRadians(degrees), 0.0, 0.0, 1.0) * (*this); } @@ -523,20 +523,20 @@ CATransform3D CATransform3D::operator*(CATransform3D const &b) const { return *this; } - simd_double4x4 simdLhs = { - simd_make_double4(b.m11, b.m21, b.m31, b.m41), - simd_make_double4(b.m12, b.m22, b.m32, b.m42), - simd_make_double4(b.m13, b.m23, b.m33, b.m43), - simd_make_double4(b.m14, b.m24, b.m34, b.m44) + simd_float4x4 simdLhs = { + simd_make_float4(b.m11, b.m21, b.m31, b.m41), + simd_make_float4(b.m12, b.m22, b.m32, b.m42), + simd_make_float4(b.m13, b.m23, b.m33, b.m43), + simd_make_float4(b.m14, b.m24, b.m34, b.m44) }; - simd_double4x4 simdRhs = { - simd_make_double4(m11, m21, m31, m41), - simd_make_double4(m12, m22, m32, m42), - simd_make_double4(m13, m23, m33, m43), - simd_make_double4(m14, m24, m34, m44) + simd_float4x4 simdRhs = { + simd_make_float4(m11, m21, m31, m41), + simd_make_float4(m12, m22, m32, m42), + simd_make_float4(m13, m23, m33, m43), + simd_make_float4(m14, m24, m34, m44) }; - simd_double4x4 simdResult = simd_mul(simdRhs, simdLhs); + simd_float4x4 simdResult = simd_mul(simdRhs, simdLhs); return CATransform3D( simdResult.columns[0][0], simdResult.columns[1][0], simdResult.columns[2][0], simdResult.columns[3][0], simdResult.columns[0][1], simdResult.columns[1][1], simdResult.columns[2][1], simdResult.columns[3][1], @@ -550,13 +550,13 @@ bool CATransform3D::isInvertible() const { } CATransform3D CATransform3D::inverted() const { - simd_double4x4 matrix = { - simd_make_double4(m11, m21, m31, m41), - simd_make_double4(m12, m22, m32, m42), - simd_make_double4(m13, m23, m33, m43), - simd_make_double4(m14, m24, m34, m44) + simd_float4x4 matrix = { + simd_make_float4(m11, m21, m31, m41), + simd_make_float4(m12, m22, m32, m42), + simd_make_float4(m13, m23, m33, m43), + simd_make_float4(m14, m24, m34, m44) }; - simd_double4x4 result = simd_inverse(matrix); + simd_float4x4 result = simd_inverse(matrix); CATransform3D nativeResult = CATransform3D( result.columns[0][0], result.columns[1][0], result.columns[2][0], result.columns[3][0], result.columns[0][1], result.columns[1][1], result.columns[2][1], result.columns[3][1], @@ -590,29 +590,29 @@ CGRect CGRect::applyingTransform(CATransform3D const &transform) const { return *this; } - simd_double3 simdRow1 = simd_make_double3(transform.m11, transform.m12, transform.m14); - simd_double3 simdRow2 = simd_make_double3(transform.m21, transform.m22, transform.m24); - simd_double3 simdRow3 = simd_make_double3(transform.m41, transform.m42, transform.m44); + simd_float3 simdRow1 = simd_make_float3(transform.m11, transform.m12, transform.m14); + simd_float3 simdRow2 = simd_make_float3(transform.m21, transform.m22, transform.m24); + simd_float3 simdRow3 = simd_make_float3(transform.m41, transform.m42, transform.m44); Vector2D sourceTopLeft = Vector2D(x, y); Vector2D sourceTopRight = Vector2D(x + width, y); Vector2D sourceBottomLeft = Vector2D(x, y + height); Vector2D sourceBottomRight = Vector2D(x + width, y + height); - simd_double3 simdTopLeft = sourceTopLeft.x * simdRow1 + sourceTopLeft.y * simdRow2 + simdRow3; - simd_double3 simdTopRight = sourceTopRight.x * simdRow1 + sourceTopRight.y * simdRow2 + simdRow3; - simd_double3 simdBottomLeft = sourceBottomLeft.x * simdRow1 + sourceBottomLeft.y * simdRow2 + simdRow3; - simd_double3 simdBottomRight = sourceBottomRight.x * simdRow1 + sourceBottomRight.y * simdRow2 + simdRow3; + simd_float3 simdTopLeft = sourceTopLeft.x * simdRow1 + sourceTopLeft.y * simdRow2 + simdRow3; + simd_float3 simdTopRight = sourceTopRight.x * simdRow1 + sourceTopRight.y * simdRow2 + simdRow3; + simd_float3 simdBottomLeft = sourceBottomLeft.x * simdRow1 + sourceBottomLeft.y * simdRow2 + simdRow3; + simd_float3 simdBottomRight = sourceBottomRight.x * simdRow1 + sourceBottomRight.y * simdRow2 + simdRow3; Vector2D topLeft = Vector2D(simdTopLeft[0] / simdTopLeft[2], simdTopLeft[1] / simdTopLeft[2]); Vector2D topRight = Vector2D(simdTopRight[0] / simdTopRight[2], simdTopRight[1] / simdTopRight[2]); Vector2D bottomLeft = Vector2D(simdBottomLeft[0] / simdBottomLeft[2], simdBottomLeft[1] / simdBottomLeft[2]); Vector2D bottomRight = Vector2D(simdBottomRight[0] / simdBottomRight[2], simdBottomRight[1] / simdBottomRight[2]); - double minX = simd_reduce_min(simd_make_double4(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x)); - double minY = simd_reduce_min(simd_make_double4(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y)); - double maxX = simd_reduce_max(simd_make_double4(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x)); - double maxY = simd_reduce_max(simd_make_double4(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y)); + float minX = simd_reduce_min(simd_make_float4(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x)); + float minY = simd_reduce_min(simd_make_float4(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y)); + float maxX = simd_reduce_max(simd_make_float4(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x)); + float maxY = simd_reduce_max(simd_make_float4(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y)); return CGRect(minX, minY, maxX - minX, maxY - minY); }