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 + ) + )