diff options
Diffstat (limited to '')
-rw-r--r-- | plug-ins/script-fu/scripts/addborder.scm | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/plug-ins/script-fu/scripts/addborder.scm b/plug-ins/script-fu/scripts/addborder.scm new file mode 100644 index 0000000..ed47feb --- /dev/null +++ b/plug-ins/script-fu/scripts/addborder.scm @@ -0,0 +1,177 @@ +; GIMP - The GNU Image Manipulation Program +; Copyright (C) 1995 Spencer Kimball and Peter Mattis +; +; This program is free software: you can redistribute it and/or modify +; it under the terms of the GNU General Public License as published by +; the Free Software Foundation; either version 3 of the License, or +; (at your option) any later version. +; +; This program is distributed in the hope that it will be useful, +; but WITHOUT ANY WARRANTY; without even the implied warranty of +; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +; GNU General Public License for more details. +; +; You should have received a copy of the GNU General Public License +; along with this program. If not, see <https://www.gnu.org/licenses/>. +; +; Copyright (C) 1997 Andy Thomas alt@picnic.demon.co.uk +; +; Version 0.2 10.6.97 Changed to new script-fu interface in 0.99.10 + +; Delta the color by the given amount. Check for boundary conditions +; If < 0 set to zero +; If > 255 set to 255 +; Return the new value + +(define (script-fu-addborder aimg adraw xsize ysize color dvalue) + + (define (deltacolor col delta) + (let* ((newcol (+ col delta))) + (if (< newcol 0) (set! newcol 0)) + (if (> newcol 255) (set! newcol 255)) + newcol + ) + ) + + (define (adjcolor col delta) + (mapcar (lambda (x) (deltacolor x delta)) col) + ) + + (define (gen_top_array xsize ysize owidth oheight width height) + (let* ((n_array (cons-array 10 'double))) + (aset n_array 0 0 ) + (aset n_array 1 0 ) + (aset n_array 2 xsize) + (aset n_array 3 ysize) + (aset n_array 4 (+ xsize owidth)) + (aset n_array 5 ysize) + (aset n_array 6 width) + (aset n_array 7 0 ) + (aset n_array 8 0 ) + (aset n_array 9 0 ) + n_array) + ) + + (define (gen_left_array xsize ysize owidth oheight width height) + (let* ((n_array (cons-array 10 'double))) + (aset n_array 0 0 ) + (aset n_array 1 0 ) + (aset n_array 2 xsize) + (aset n_array 3 ysize) + (aset n_array 4 xsize) + (aset n_array 5 (+ ysize oheight)) + (aset n_array 6 0 ) + (aset n_array 7 height ) + (aset n_array 8 0 ) + (aset n_array 9 0 ) + n_array) + ) + + (define (gen_right_array xsize ysize owidth oheight width height) + (let* ((n_array (cons-array 10 'double))) + (aset n_array 0 width ) + (aset n_array 1 0 ) + (aset n_array 2 (+ xsize owidth)) + (aset n_array 3 ysize) + (aset n_array 4 (+ xsize owidth)) + (aset n_array 5 (+ ysize oheight)) + (aset n_array 6 width) + (aset n_array 7 height) + (aset n_array 8 width ) + (aset n_array 9 0 ) + n_array) + ) + + (define (gen_bottom_array xsize ysize owidth oheight width height) + (let* ((n_array (cons-array 10 'double))) + (aset n_array 0 0 ) + (aset n_array 1 height) + (aset n_array 2 xsize) + (aset n_array 3 (+ ysize oheight)) + (aset n_array 4 (+ xsize owidth)) + (aset n_array 5 (+ ysize oheight)) + (aset n_array 6 width) + (aset n_array 7 height) + (aset n_array 8 0 ) + (aset n_array 9 height) + n_array) + ) + + (let* ((img (car (gimp-item-get-image adraw))) + (owidth (car (gimp-image-width img))) + (oheight (car (gimp-image-height img))) + (width (+ owidth (* 2 xsize))) + (height (+ oheight (* 2 ysize))) + (layer (car (gimp-layer-new img + width height + (car (gimp-drawable-type-with-alpha adraw)) + _"Border Layer" 100 LAYER-MODE-NORMAL)))) + + (gimp-context-push) + (gimp-context-set-paint-mode LAYER-MODE-NORMAL) + (gimp-context-set-opacity 100.0) + (gimp-context-set-antialias FALSE) + (gimp-context-set-feather FALSE) + + (gimp-image-undo-group-start img) + + (gimp-image-resize img + width + height + xsize + ysize) + + (gimp-image-insert-layer img layer 0 0) + (gimp-drawable-fill layer FILL-TRANSPARENT) + + (gimp-context-set-background (adjcolor color dvalue)) + (gimp-image-select-polygon img + CHANNEL-OP-REPLACE + 10 + (gen_top_array xsize ysize owidth oheight width height)) + (gimp-drawable-edit-fill layer FILL-BACKGROUND) + (gimp-context-set-background (adjcolor color (/ dvalue 2))) + (gimp-image-select-polygon img + CHANNEL-OP-REPLACE + 10 + (gen_left_array xsize ysize owidth oheight width height)) + (gimp-drawable-edit-fill layer FILL-BACKGROUND) + (gimp-context-set-background (adjcolor color (- 0 (/ dvalue 2)))) + (gimp-image-select-polygon img + CHANNEL-OP-REPLACE + 10 + (gen_right_array xsize ysize owidth oheight width height)) + + (gimp-drawable-edit-fill layer FILL-BACKGROUND) + (gimp-context-set-background (adjcolor color (- 0 dvalue))) + (gimp-image-select-polygon img + CHANNEL-OP-REPLACE + 10 + (gen_bottom_array xsize ysize owidth oheight width height)) + + (gimp-drawable-edit-fill layer FILL-BACKGROUND) + (gimp-selection-none img) + (gimp-image-undo-group-end img) + (gimp-displays-flush) + + (gimp-context-pop) + ) +) + +(script-fu-register "script-fu-addborder" + _"Add _Border..." + _"Add a border around an image" + "Andy Thomas <alt@picnic.demon.co.uk>" + "Andy Thomas" + "6/10/97" + "*" + SF-IMAGE "Input image" 0 + SF-DRAWABLE "Input drawable" 0 + SF-ADJUSTMENT _"Border X size" '(12 1 250 1 10 0 1) + SF-ADJUSTMENT _"Border Y size" '(12 1 250 1 10 0 1) + SF-COLOR _"Border color" '(38 31 207) + SF-ADJUSTMENT _"Delta value on color" '(25 1 255 1 10 0 1) +) + +(script-fu-menu-register "script-fu-addborder" + "<Image>/Filters/Decor") |