From 6d9c61b18a8b3f46959e1d57746c9f2512c955a4 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 27 Dec 2022 19:28:50 -0500 Subject: graphics: 9-patch: Fix rendering of texture regions. --- chickadee/graphics/9-patch.scm | 4 ++-- examples/9-patch.scm | 14 +++++++++++--- examples/images/dialog-box.png | Bin 407 -> 8050 bytes 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/chickadee/graphics/9-patch.scm b/chickadee/graphics/9-patch.scm index 833fa42..faf5ef9 100644 --- a/chickadee/graphics/9-patch.scm +++ b/chickadee/graphics/9-patch.scm @@ -85,9 +85,9 @@ uniform int mode; float patch(float d, float m0, float m1, float length, float texLength) { if(d <= m0) { // inside the left/bottom margin. - return d; + return d * texLength; } else if(d >= length - m1) { // inside the right/top margin. - return texLength - (length - d); + return texLength - ((length - d) * texLength); } else if(mode == 0) { // in the middle, stretch mode. return mix(m0, texLength - m1, (d - m0) / (length - m0 - m1)); } else { // in the middle, tile mode. diff --git a/examples/9-patch.scm b/examples/9-patch.scm index debc69d..518ef89 100644 --- a/examples/9-patch.scm +++ b/examples/9-patch.scm @@ -6,12 +6,20 @@ (chickadee graphics texture)) (define image #f) +(define region1 #f) +(define region2 #f) +(define area1 (make-rect 192.0 192.0 256.0 96.0)) +(define area2 (make-rect 192.0 50.0 256.0 96.0)) +(define text-position (vec2 204.0 266.0)) (define (load) - (set! image (load-image "images/dialog-box.png"))) + (set! image (load-image "images/dialog-box.png")) + (set! region1 (make-texture-region image (make-rect 0.0 0.0 78.0 39.0))) + (set! region2 (make-texture-region image (make-rect 78.0 0.0 41.0 18.0)))) (define (draw alpha) - (draw-9-patch image (make-rect 192.0 192.0 256.0 96.0) #:margin 4.0) - (draw-text "I am error." (vec2 200.0 266.0))) + (draw-9-patch region1 area1 #:margin 7.0) + (draw-9-patch region2 area2 #:margin 4.0) + (draw-text "This is the 9-patch test." text-position)) (run-game #:load load #:draw draw) diff --git a/examples/images/dialog-box.png b/examples/images/dialog-box.png index a3b3329..c5bf71e 100644 Binary files a/examples/images/dialog-box.png and b/examples/images/dialog-box.png differ -- cgit v1.2.3