; Simon Budig (define (script-fu-lcd-downscale img drw y-scale) (let* ((drawable-width 0) (drawable-height 0) (old-fg (car (gimp-palette-get-foreground))) (red-layer drw) (green-layer #f) (blue-layer #f) ) (gimp-undo-push-group-start img) (gimp-selection-all img) (if (not (= RGB (car (gimp-image-base-type img)))) (gimp-convert-rgb img) ) (set! red-layer (car (gimp-image-flatten img))) (set! drawable-width (car (gimp-image-width img))) (set! drawable-height (car (gimp-image-height img))) (if (= TRUE y-scale) (begin (set! drawable-height (/ drawable-height 3)) (gimp-image-scale img drawable-width drawable-height) ) ) (plug-in-video 1 img red-layer 2 0 1) (set! green-layer (car (gimp-layer-copy red-layer 1))) (gimp-image-add-layer img green-layer -1) (gimp-layer-set-mode green-layer LIGHTEN-ONLY) (set! blue-layer (car (gimp-layer-copy red-layer 1))) (gimp-image-add-layer img blue-layer -1) (gimp-layer-set-mode blue-layer LIGHTEN-ONLY) (gimp-palette-set-foreground '(255 0 0)) (gimp-bucket-fill red-layer FG-BUCKET-FILL MULTIPLY-MODE 100 0 0 1 1) (gimp-palette-set-foreground '(0 255 0)) (gimp-bucket-fill green-layer FG-BUCKET-FILL MULTIPLY-MODE 100 0 0 1 1) (gimp-palette-set-foreground '(0 0 255)) (gimp-bucket-fill blue-layer FG-BUCKET-FILL MULTIPLY-MODE 100 0 0 1 1) (gimp-layer-set-offsets red-layer 0 0) (gimp-layer-set-offsets green-layer -1 0) (gimp-layer-set-offsets blue-layer -2 0) (set! red-layer (car (gimp-image-flatten img))) (set! green-layer (car (gimp-layer-copy red-layer 1))) (gimp-image-add-layer img green-layer -1) (gimp-layer-set-mode green-layer LIGHTEN-ONLY) (set! blue-layer (car (gimp-layer-copy red-layer 1))) (gimp-image-add-layer img blue-layer -1) (gimp-layer-set-mode blue-layer LIGHTEN-ONLY) (gimp-layer-set-offsets red-layer 0 0) (gimp-layer-set-offsets green-layer 1 0) (gimp-layer-set-offsets blue-layer 2 0) (set! red-layer (car (gimp-image-flatten img))) (gimp-image-scale img (/ drawable-width 3) drawable-height) (gimp-selection-none img) (gimp-palette-set-foreground old-fg) (gimp-undo-push-group-end img) (gimp-displays-flush))) (script-fu-register "script-fu-lcd-downscale" _"/Script-Fu/Alchemy/LCD Downscale..." "Scale Layer down, optimized for LCD's with subpixel ordering RGB" "Simon Budig " "Simon Budig" "2000" "" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable to apply" 0 SF-TOGGLE _"Scale Y-direction" TRUE )