; Shrek text ; Copyright (c) 2004 Ivan Zenkov ; ; ; Based on iText tutorial by Craig Marshall ; ; 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 2 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, write to the Free Software ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ; --------------------------------------------------------------------- ; CHANGE HISTORY ; ; 2005-11-11, djp - back-ported so the script will run in 1.2.* version of the app ; ; --------------------------------------------------------------------- (define (script-fu-shrek-text string font-name font-size text-color shadow) (let* ((text-ext (gimp-text-get-extents-fontname string font-size 0 font-name)) (wid (+ (car text-ext) 20)) (hig (+ (cadr text-ext) 20)) (img (car (gimp-image-new wid hig 0))) (bg-layer (car (gimp-layer-new img wid hig 0 "Background" 100 0))) (shadow-layer (car (gimp-layer-new img wid hig 1 "Shadow" 100 0))) (text-layer (car (gimp-layer-new img wid hig 1 "Text" 100 0))) (glow-layer (car (gimp-layer-new img wid hig 1 "Glow layer (first)" 100 0))) (plastic-layer (car (gimp-layer-new img wid hig 1 "Plastic effect" 100 0))) (text-channel (car (gimp-channel-new img wid hig "Text channel" 50 '(0 0 0)))) (shrink-num (/ (caddr text-ext) (* (/ (/ (caddr text-ext) 3.3) (caddr text-ext)) 100))) (blur-num (/ (caddr text-ext) 10)) (old-fg (car (gimp-palette-get-foreground))) (old-bg (car (gimp-palette-get-background)))) (gimp-image-undo-disable img) (gimp-image-add-layer img bg-layer 1) (gimp-image-add-layer img text-layer -1) (gimp-image-add-layer img glow-layer -1) (gimp-image-add-layer img plastic-layer -1) (gimp-image-add-channel img text-channel 0) (gimp-palette-set-background '(255 255 255)) (gimp-edit-clear bg-layer) (gimp-edit-clear text-layer) (gimp-edit-clear glow-layer) (gimp-edit-clear plastic-layer) (gimp-palette-set-background '(0 0 0)) (gimp-edit-clear text-channel) (gimp-palette-set-foreground text-color) (gimp-floating-sel-anchor (car (gimp-text-fontname img text-layer 10 10 string 0 TRUE font-size PIXELS font-name))) ; glow effect (gimp-selection-layer-alpha text-layer) (gimp-selection-shrink img shrink-num) (gimp-edit-fill glow-layer 2) (gimp-layer-set-mode glow-layer 5) (gimp-selection-none img) (plug-in-gauss-iir2 1 img glow-layer blur-num blur-num) ;; ugly code (set! glow-layer-second (car (gimp-layer-copy glow-layer 0))) (gimp-layer-set-name glow-layer-second "Glow layer (second)") (gimp-image-add-layer img glow-layer-second -1) (gimp-layer-set-mode glow-layer-second 5) (set! text-layer (car (gimp-image-merge-down img glow-layer-second 2))) (set! text-layer (car (gimp-image-merge-down img glow-layer 2))) ; blur channel (gimp-edit-copy text-layer) (gimp-floating-sel-anchor (car (gimp-edit-paste text-channel 0))) (plug-in-gauss-iir2 1 img text-channel (/ blur-num 2) (/ blur-num 2)) ;(gimp-drawable-set-visible text-channel 0) ; new name in 2.*; old name in 1.2.* below (gimp-channel-set-visible text-channel 0) ; plastic effect (gimp-edit-fill plastic-layer 1) (gimp-layer-set-mode plastic-layer 4) (plug-in-lighting 1 img plastic-layer text-channel 0 TRUE FALSE 0 0 '(255 255 255) 1 0 1 -1 -1 1 0.30 1 0.40 0.60 27 TRUE FALSE FALSE) (set! text-layer (car (gimp-image-merge-down img plastic-layer 2))) ; shadow (if (= shadow TRUE) (script-fu-drop-shadow img text-layer 0 0 1 '(0 0 0) 100 0)) (gimp-palette-set-foreground old-fg) (gimp-palette-set-background old-bg) (gimp-image-undo-enable img) (gimp-display-new img))) ; (gimp-selection-layer-alpha text-layer) ; (gimp-edit-fill shadow-layer 1) ; (gimp-selection-none img) ; (plug-in-gauss-iir2 1 img shadow-layer 1 1) ; I can't use script-fu-drop-shadow :-( ; ERROR: wta(1st) to min (see errobj) ; Please fix it. ; (script-fu-drop-shadow 0 img bg-layer 0 0 1 '(0 0 0) 100 1) ; I can't delete channel ; ERROR: Procedural database execution failed: ; (gimp_drawable_delete 66) ; Please fix it. ; (gimp-drawable-delete text-channel) (script-fu-register "script-fu-shrek-text" _"/Xtns/Script-Fu/Logos/Shrek Text..." "Gives text a plastic effect" "Ivan Zenkov" "Ivan Zenkov" "September 17, 2004" "" SF-STRING _"Text" "Shrek" SF-FONT _"Font" "Serif Bold" SF-ADJUSTMENT _"Font Size (pixels)" '(100 2 1000 1 10 0 1) SF-COLOR _"Text Color" '(84 155 8) SF-TOGGLE _"Shadow" TRUE) ; shrek-text.scm ends here