;; --------------------------------------------------------- ;; * ;; * Script-Fu Metal color v1.1 ;; * ;; * pour GIMP 2.0.x ;; * ;; * ;; * abcdugimp.free.fr 06/10/2004 ;; * ;; --------------------------------------------------------- ;; Vous êtes libre d'utiliser ce script comme bon vous semble ;; feel free to use it for whatever you like. ;; declarations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LANCEMENT (define (script-fu-metal-color-2 image drawable c-ap taille saturation decalage g1 g2 mode conserver) ;; init generale (let* ( ;; conserver les outils dans des variables (old-fg (car (gimp-palette-get-foreground))) (old-deg (car (gimp-gradients-get-gradient))) ;; connaitre les dimensions de l'image (image-width (car (gimp-image-width image))) (image-height (car (gimp-image-height image))) ;; variable déterminant si il y a une sélection (var-select (car (gimp-selection-is-empty image))) ;; creation de la nouvelle image temporaire (image2 (car (gimp-image-new image-width image-height 0))) ;; creation des calques (base-layer (car (gimp-layer-new image2 image-width image-height RGBA-IMAGE "temp" 100 NORMAL))) ;; calque temporaire pour image2 temporaire aussi (degrade-layer (car (gimp-layer-new image image-width image-height RGBA-IMAGE "Degrade" 100 DIVIDE-MODE))) ;; pour le degrade ) ;; debut d'historique d'annulation (gimp-image-undo-group-start image) (if (= var-select TRUE) ;; test si il y a selection (begin ;; aucune selection n'a été faite ) (begin ;; une selection a ete faite (set! canal (car (gimp-selection-save image))) ;; canal stockant la selection originelle de l'utilisateur (gimp-selection-none image) ;; desactive la selection ) ) ;; selections (gimp-edit-copy drawable) ;; copie (set! metal-canal (car (gimp-channel-new image2 image-width image-height "Mask de canal metal color" 50 '(0 0 0)) )) ;; cree un nouveau canal (gimp-edit-clear metal-canal) ;; nettoyer le mask de canal (gimp-image-add-channel image2 metal-canal 0) ;; add channel (gimp-floating-sel-anchor(car (gimp-edit-paste metal-canal 0))) ;; colle et ancre la selection flottante ;; initialisations (gimp-gradients-set-gradient "Golden") ;;(gimp-drawable-set-visible drawable FALSE) ;; calque source invisible (gimp-drawable-set-visible metal-canal FALSE) ;; mask de canal invisible ;; add layer (gimp-image-add-layer image2 base-layer -1) ;; init calques ;; vider les calques pour qu'il n'y est pas de trace indesirable (gimp-edit-clear base-layer) ;;-------------------------------------------------- ;; preparation de la base ;;-------------------------------------------------- (gimp-selection-load metal-canal) ;; canal vers selction (gimp-selection-invert image2) ;; inverser la selection (gimp-palette-set-foreground '(0 0 0)) (gimp-edit-fill base-layer 0) ;; remplir de noir ;; plug-in cubisme (plug-in-cubism 1 image2 base-layer taille saturation c-ap) ;; chromage (script-fu-chrome-logo-alpha image2 base-layer decalage '(255 255 255)) ;; --- le background creer par le script chrome est de trop !!! (set! temp-layer (car (gimp-image-get-active-layer image2))) ;; definir le calque principal (et actif) d'image2 (set! from-layer (car (gimp-image-merge-down image2 temp-layer 0))) ;; fusionner ;; le copier dans image (set! new-layer (car (gimp-layer-new-from-drawable from-layer image))) (gimp-image-add-layer image new-layer -1) (gimp-image-delete image2) ;; supprimer image2 (gimp-drawable-set-name new-layer "Base") ;; renommer ;;-------------------------------------------------- ;;-------------------------------------------------- ;; creer les autres calques ;;-------------------------------------------------- (gimp-image-add-layer image degrade-layer -1) ;; ajouter le calque (gimp-edit-clear degrade-layer) ;; vider le calque (set! base2-layer (car (gimp-layer-new-from-drawable new-layer image))) ;;dupliquer (gimp-image-add-layer image base2-layer -1) ;; ajouter le calque (gimp-drawable-set-name base2-layer "Base 2") ;; renommer (set! base3-layer (car (gimp-layer-new-from-drawable new-layer image))) ;;dupliquer (gimp-image-add-layer image base3-layer -1) ;; ajouter le calque (gimp-drawable-set-name base3-layer "Base 3") ;; renommer (set! base4-layer (car (gimp-layer-new-from-drawable new-layer image))) ;;dupliquer (gimp-image-add-layer image base4-layer -1) ;; ajouter le calque (gimp-drawable-set-name base4-layer "Base 4") ;; renommer ;;-------------------------------------------------- ;;-------------------------------------------------- ;; faire les degrades ;;-------------------------------------------------- (gimp-gradients-set-gradient g1) ;; definir le degrade (gimp-edit-blend degrade-layer 3 0 0 100 0 0 FALSE FALSE 0 0 TRUE 0 0 0 image-height) ;; remplir ;; garder la transparence (gimp-layer-set-preserve-trans base3-layer 1) (gimp-layer-set-preserve-trans base4-layer 1) (gimp-edit-blend base3-layer 3 0 0 100 0 0 FALSE FALSE 0 0 TRUE 0 0 0 image-height) ;; remplir (gimp-gradients-set-gradient g2) ;; definir le degrade (gimp-edit-blend base4-layer 3 0 0 100 0 0 FALSE FALSE 0 0 TRUE 0 0 0 image-height) ;; remplir ;;-------------------------------------------------- ;;-------------------------------------------------- ;; mode de calques ;;-------------------------------------------------- (gimp-layer-set-mode base2-layer VALUE-MODE) (gimp-layer-set-mode base3-layer BURN-MODE) (gimp-layer-set-mode base4-layer BURN-MODE) ;;-------------------------------------------------- ;;-------------------------------------------------- ;; Fusionner les calques ;;-------------------------------------------------- (if (= conserver FALSE) (begin (gimp-image-merge-down image degrade-layer 0) (gimp-image-merge-down image base2-layer 0) (gimp-image-merge-down image base3-layer 0) (set! final-layer (car (gimp-image-merge-down image base4-layer 0))) (gimp-drawable-set-name final-layer "Effet metal-color") ;; renommer ) (begin (if (= mode TRUE) (begin (gimp-message "Le MODE DE FUSION exige de ne pas conserver les calques...") (gimp-image-merge-down image degrade-layer 0) (gimp-image-merge-down image base2-layer 0) (gimp-image-merge-down image base3-layer 0) (set! final-layer (car (gimp-image-merge-down image base4-layer 0))) (gimp-drawable-set-name final-layer "Effet metal-color") ;; renommer ) ) ) ) (if (= mode TRUE) (begin (gimp-layer-set-mode final-layer SCREEN-MODE) ;; mode de calque (set! mode-layer (car (gimp-layer-new-from-drawable drawable image))) ;; dupliquer l'original (gimp-image-add-layer image mode-layer -1) ;; ajouter le calque (gimp-image-lower-layer image mode-layer) ;; descendre la calque dans la pile (set! ecran-layer (car (gimp-image-merge-down image final-layer 0))) ;; fusionner (gimp-drawable-set-name ecran-layer "Effet metal-color") ;; renommer ) ) ;;-------------------------------------------------- (if (= var-select TRUE) ;; test si il y AVAIT selection (begin ;; aucune selection n'avait été faite ) (begin ;; une selection avait été faite (remettre la selection de l'utilisateur) (gimp-selection-load canal) ;; mask de canal vers selection (gimp-image-remove-channel image canal) ;; supprimer le mask de canal ) ) ;; mise a jour ;; fin d'historique d'annulation (gimp-image-undo-group-end image) (gimp-displays-flush) ;; actualisation de l'image ;;remettre toutes les outils comme au debut (gimp-palette-set-foreground old-fg) (gimp-gradients-set-gradient old-deg) ) ;; fin du let ) ;; fin du define ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Fin du Script ;; registre (script-fu-register "script-fu-metal-color-2" "/Script-Fu/Alchemy/Metal color" "Effet de metal colore. Utilisation du script 'chrome.scm'. abcdugimp.free.fr" "Expression" "Free" "06/10/2004" "RGB*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 SF-TOGGLE "CUBISME : Utiliser la couleur d'arriere-plan" FALSE SF-ADJUSTMENT "CUBISME : Taille des carreaux" '(10 0 100 1 10 1 0) SF-ADJUSTMENT "CUBISME : Saturation des carreaux" '(2.5 0 10 0.1 1 1 0) SF-ADJUSTMENT "CHROME : Decalages (pixels x 2)" '(10 2 100 1 10 0 1) SF-GRADIENT "Gradient principal" "Golden" SF-GRADIENT "Gradient secondaire" "Greens" SF-TOGGLE "Mode de fusion avec votre calque ?" FALSE SF-TOGGLE "Conserver les calques ?" FALSE )