From 07128cbe5d7fef1110426954e2dd6f2da71fc65f Mon Sep 17 00:00:00 2001 From: James Addison Date: Sat, 1 Mar 2025 15:28:06 +0000 Subject: [PATCH 1/2] Upgrade #94: [gimpscript] GIMP3 compatibility * Remove implicit SIOD array accesses[1] * Migrate removed `drawable` API calls to `item` equivalents * Introduce TinyScheme `vector-ref` and `vector-length` calls * Migrate[2] from `get-active-layer` to `get-selected-layers` * Call `file-png-export` (instead of `save`) with named arguments Refs: - [1] https://www.gimp.org/docs/script-fu-update.html#carempty - [2] https://samjcreations.blogspot.com/2022/08/api-gimp-29912-script-fu.html --- scripts/gimpscript | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/gimpscript b/scripts/gimpscript index 5480698e..c7019bdb 100644 --- a/scripts/gimpscript +++ b/scripts/gimpscript @@ -5,8 +5,8 @@ (define (script-fu-set-all-layers-invisible inImage inDrawable) (let* ( (layers (gimp-image-get-layers inImage)) - (num-layers (car layers)) - (layer-array (cadr layers)) + (layer-array (car layers)) + (num-layers (vector-length layer-array)) (theLayer) ) @@ -14,9 +14,9 @@ (while (> num-layers 0) (set! num-layers (- num-layers 1)) - (set! theLayer (aref layer-array num-layers)) - (if (= (car (gimp-drawable-get-visible theLayer) ) TRUE) - (gimp-drawable-set-visible theLayer FALSE) + (set! theLayer (vector-ref layer-array num-layers)) + (if (= (car (gimp-item-get-visible theLayer) ) TRUE) + (gimp-item-set-visible theLayer FALSE) ) ) @@ -46,10 +46,10 @@ (let* ( (image (car (gimp-file-load RUN-NONINTERACTIVE inImageName inImageName))) - (visibleStuff (car (gimp-image-get-active-layer image))) + (visibleStuff (vector-ref (car (gimp-image-get-selected-layers image)) 0)) (layers (gimp-image-get-layers image)) - (num-layers (car layers)) - (layer-array (cadr layers)) + (layer-array (car layers)) + (num-layers (vector-length layer-array)) (thisLayer -1) (thisNumLayers 0) (theseLayers layers) @@ -66,8 +66,8 @@ ; iterate through all layers of the image (while (> num-layers 0) (set! num-layers (- num-layers 1)) - (set! thisLayer (aref layer-array num-layers)) - (set! thisLayerName (car (gimp-drawable-get-name thisLayer))) + (set! thisLayer (vector-ref layer-array num-layers)) + (set! thisLayerName (car (gimp-item-get-name thisLayer))) ; (gimp-message (string-append "Image Layer-Name: " thisLayerName)) ; iterate through all layer Names we shall use @@ -75,7 +75,7 @@ (while (not (null? layerNames)) ; if layerName matches this user supplied layername: make it visible (if (string=? (car layerNames) thisLayerName) - (gimp-drawable-set-visible thisLayer TRUE) + (gimp-item-set-visible thisLayer TRUE) ) (set! layerNames (cdr layerNames)) ) @@ -83,7 +83,7 @@ ; Merge all visible layers into one layer which we then save to the given filename (set! visibleStuff (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))) - (file-png-save RUN-NONINTERACTIVE image visibleStuff outImageName outImageName 0 9 0 0 0 0 0) + (file-png-export #:run-mode RUN-NONINTERACTIVE #:image image #:file outImageName #:interlaced FALSE #:compression 9 #:bkgd FALSE #:offs FALSE #:phys FALSE #:time FALSE #:save-transparent FALSE) (gimp-image-delete image) ) ) From 0e0bf942b49da97ede3ca7b9448ff669e742f581 Mon Sep 17 00:00:00 2001 From: James Addison Date: Mon, 17 Mar 2025 20:39:54 +0000 Subject: [PATCH 2/2] Upgrade #94: [gimpscript] Cleanup: remove unused `visibleStuff` variable --- scripts/gimpscript | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/gimpscript b/scripts/gimpscript index c7019bdb..4639f369 100644 --- a/scripts/gimpscript +++ b/scripts/gimpscript @@ -46,7 +46,6 @@ (let* ( (image (car (gimp-file-load RUN-NONINTERACTIVE inImageName inImageName))) - (visibleStuff (vector-ref (car (gimp-image-get-selected-layers image)) 0)) (layers (gimp-image-get-layers image)) (layer-array (car layers)) (num-layers (vector-length layer-array)) @@ -82,7 +81,6 @@ ) ; Merge all visible layers into one layer which we then save to the given filename - (set! visibleStuff (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE))) (file-png-export #:run-mode RUN-NONINTERACTIVE #:image image #:file outImageName #:interlaced FALSE #:compression 9 #:bkgd FALSE #:offs FALSE #:phys FALSE #:time FALSE #:save-transparent FALSE) (gimp-image-delete image) )