From 35fda58c33585cb6a6e0a77ce238957d862a7ee2 Mon Sep 17 00:00:00 2001
From: treeform <starplant@gmail.com>
Date: Sun, 7 Nov 2021 15:42:53 -0800
Subject: [PATCH] Fixed negative/flipped axis matrix drawing.

---
 src/pixie/images.nim  |  5 ++++-
 tests/test_images.nim | 13 +++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/pixie/images.nim b/src/pixie/images.nim
index 0065b11..5d374cc 100644
--- a/src/pixie/images.nim
+++ b/src/pixie/images.nim
@@ -881,7 +881,10 @@ proc drawUber(
                 x += 16
 
       var srcPos = p + dx * x.float32 + dy * y.float32
-      srcPos = vec2(max(0, srcPos.x), max(0, srcPos.y))
+      srcPos = vec2(
+        clamp(srcPos.x, 0, b.width.float32),
+        clamp(srcPos.y, 0, b.height.float32)
+      )
 
       for x in x ..< xMax:
         let samplePos = ivec2((srcPos.x - h).int32, (srcPos.y - h).int32)
diff --git a/tests/test_images.nim b/tests/test_images.nim
index 92530fd..8d5ad7e 100644
--- a/tests/test_images.nim
+++ b/tests/test_images.nim
@@ -202,3 +202,16 @@ block:
   let image = newImage(100, 100)
   image.fill(rgba(255, 255, 255, 255))
   doAssert not image.isTransparent()
+
+block:
+  let a = newImage(400, 400)
+  let b = newImage(156, 434)
+  b.fill(rgba(255, 0, 0, 255))
+  a.draw(
+    b,
+    mat3(
+      -0.5, -4.371138828673793e-008, 0.0,
+      -4.371138828673793e-008, 0.5, 0.0,
+      292.0, 45.0, 1.0
+    )
+  )