common paint: improve rotation condition precision
authorHermet Park <chuneon.park@samsung.com>
Fri, 12 Nov 2021 08:09:40 +0000 (17:09 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Tue, 16 Nov 2021 08:37:47 +0000 (17:37 +0900)
src/lib/tvgMath.h
src/lib/tvgPaint.cpp

index b9a0488..81c9744 100644 (file)
@@ -30,7 +30,8 @@
 
 static inline bool mathRotated(const Matrix* m)
 {
-    if (fabs(m->e12) > FLT_EPSILON || fabs(m->e21 > FLT_EPSILON)) return true;
+    if (fabs(m->e12) > FLT_EPSILON || fabs(m->e21 > FLT_EPSILON) || (m->e11 < -FLT_EPSILON) || (m->e22 < -FLT_EPSILON)) return true;
+
     else return false;
 }
 
index f20c920..b437ccd 100644 (file)
@@ -46,10 +46,10 @@ static bool _compFastTrack(Paint* cmpTarget, const RenderTransform* pTransform,
     if (rTransform) rTransform->update();
 
     //No Rotation?
-    if (pTransform && (pTransform->m.e12 != 0 || pTransform->m.e21 != 0 || pTransform->m.e11 != pTransform->m.e22)) return false;
-    if (rTransform && (rTransform->m.e12 != 0 || rTransform->m.e21 != 0 || rTransform->m.e11 != rTransform->m.e22)) return false;
+    if (pTransform && (fabs(pTransform->m.e12) > FLT_EPSILON || fabs(pTransform->m.e21 > FLT_EPSILON))) return false;
+    if (rTransform && (fabs(rTransform->m.e12) > FLT_EPSILON || fabs(rTransform->m.e21 > FLT_EPSILON))) return false;
 
-    //Othogonal Rectangle?
+    //Axis-Aligned Rectangle?
     auto pt1 = pts + 0;
     auto pt2 = pts + 1;
     auto pt3 = pts + 2;