diff --git a/applications/gimp/agw.scm b/applications/gimp/agw.scm new file mode 100644 index 0000000..a5c26dc --- /dev/null +++ b/applications/gimp/agw.scm @@ -0,0 +1,68 @@ +(define (agw-vec-list vl) (vector->list (cadr vl))) + +(define (agw-p67-font) + (for-each + (lambda (im) + (let ((dr (car (gimp-image-get-active-drawable im))) + (fname (car (gimp-image-get-filename im)))) + (unless (eq? (gimp-image-base-type im) RGB) + (gimp-image-convert-rgb im)) + (gimp-drawable-desaturate dr DESATURATE-LUMINANCE) + (gimp-image-convert-indexed + im + CONVERT-DITHER-NONE + CONVERT-PALETTE-CUSTOM + 0 ; num-cols (ign.) + FALSE ; alpha-dither + FALSE ; remove-unused + "p67 palette") + (gimp-file-save RUN-NONINTERACTIVE im dr fname fname))) + (agw-vec-list (gimp-image-list)))) + +(define (agw-destructure im) + (for-each + (lambda (dr) + (when (gimp-item-is-drawable dr) + (plug-in-colortoalpha RUN-NONINTERACTIVE im dr (car (gimp-context-get-foreground))))) + (agw-vec-list (gimp-image-get-layers im)))) + +(define (agw-export-font start dir pfx sfx im) + (letrec ((num (string->number start 16)) + (pre (string-append dir "/" pfx)) + (fnc (lambda (ls n) + (let* ((dr (car ls)) + (nx (cdr ls)) + (dr? (gimp-item-is-drawable dr)) + (fnm (string-append pre (number->string n 16) sfx))) + (when dr? + (gimp-file-save RUN-NONINTERACTIVE im dr fnm fnm)) + (unless (null? nx) + (fnc nx (if dr? (succ n) n))))))) + (fnc (agw-vec-list (gimp-image-get-layers im)) num))) + +(define author "Alison Gray Watson") +(define license "Public domain") +(define path "/:>") + +(script-fu-register + "agw-p67-font" + "P67 Font" "Converts open images to a project67 font" + author license "2021" "") +(script-fu-register + "agw-destructure" + "Destructure" "Deletes foreground color from all layers" + author license "2021" "" + SF-IMAGE "Image" 0) +(script-fu-register + "agw-export-font" + "Export Layers" "Exports all layers with hex names" + author license "2021" "" + SF-STRING "Start Number (Hex)" "21" + SF-DIRNAME "Output Directory" "/tmp" + SF-STRING "Prefix (Optional)" "" + SF-STRING "Suffix (Required)" ".png" + SF-IMAGE "Image" 0) + +(script-fu-menu-register "agw-p67-font" path) +(script-fu-menu-register "agw-destructure" path) +(script-fu-menu-register "agw-export-font" path)