From 3e8225a5ba8dba14ad33c93ed71086d3492505d0 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Fri, 28 Jul 2023 13:19:50 +0900 Subject: [PATCH] common math: promote matrix functions. comparing matrices is a common mathmatical operation. --- src/lib/tvgMath.h | 9 +++++++++ src/savers/tvg/tvgTvgSaver.cpp | 6 +----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lib/tvgMath.h b/src/lib/tvgMath.h index b28e20e5..afe18498 100644 --- a/src/lib/tvgMath.h +++ b/src/lib/tvgMath.h @@ -45,6 +45,15 @@ static inline bool mathEqual(float a, float b) return (fabsf(a - b) < FLT_EPSILON); } +static inline bool mathEqual(const Matrix& a, const Matrix& b) +{ + if (!mathEqual(a.e11, b.e11) || !mathEqual(a.e12, b.e12) || !mathEqual(a.e13, b.e13) || + !mathEqual(a.e21, b.e21) || !mathEqual(a.e22, b.e22) || !mathEqual(a.e23, b.e23) || + !mathEqual(a.e31, b.e31) || !mathEqual(a.e32, b.e32) || !mathEqual(a.e33, b.e33)) { + return false; + } + return true; +} static inline bool mathRightAngle(const Matrix* m) { diff --git a/src/savers/tvg/tvgTvgSaver.cpp b/src/savers/tvg/tvgTvgSaver.cpp index b75ac0e3..0276e746 100644 --- a/src/savers/tvg/tvgTvgSaver.cpp +++ b/src/savers/tvg/tvgTvgSaver.cpp @@ -93,11 +93,7 @@ static bool _merge(Shape* from, Shape* to) auto t1 = from->transform(); auto t2 = to->transform(); - if (!mathEqual(t1.e11, t2.e11) || !mathEqual(t1.e12, t2.e12) || !mathEqual(t1.e13, t2.e13) || - !mathEqual(t1.e21, t2.e21) || !mathEqual(t1.e22, t2.e22) || !mathEqual(t1.e23, t2.e23) || - !mathEqual(t1.e31, t2.e31) || !mathEqual(t1.e32, t2.e32) || !mathEqual(t1.e33, t2.e33)) { - return false; - } + if (!mathEqual(t1, t2)) return false; //stroke if (P(from)->strokeFirst() != P(to)->strokeFirst()) return false;