;Modernized with ModernizeMatic7 for Gimp 2.10.22 by vitforlinux.wordpress.com - dont remove ; Début du script-fu sweet_candy_text_gimp_2_8.scm ; ; Accès par : Fichier > Créer > Logos > Sweet candy text... ; File > Create > Logos > Sweet candy text... ; ; ; adaptation du didacticiel Create sweet candy text! par Coco http://gimpusers.com/tutorials/create-sweet-candy-letters ; ; Ce script-fu utilise le greffon "Déformation interactive ou IWarp" si "Deformation interactive / IWarp (Stripes) " est validé. ; Pour avoir un bel effet, les déplacements de la souris doivent être perpendiculaires aux bandes. ; Les valeurs conseillées dans l'onglet "paramètres" sont : ; Déplacer = validé ; Rayon de déformation = 5 à 100 ; Intensité de déformation = 0,3 ; Bilinéaire = validé ; Suréchantillonnage adaptatif = validé (ou pas) ; Profondeur max = 2 ; Seuil = 2 ; Dans l'onglet "Animer", aucune option ne doit être validée. ; ; ; This script-fu uses the "IWarp" plugin if "Deformation interactive / IWarp (Stripes) " is checked. ; The mouse movement should be perpendicular to the stripes. ; The recommended values in the tab "Settings" are: ; Move = checked ; Deform radius = 5 to 100 ; Deform amount = 0.3 ; Bilinear = checked ; Adaptive supersample = checked (or no) ; Max depth = 2 ; Threshold = 2 ; In the tab "Animate" no option should be validated. ; ; ; ; ; Licence GNU/GPL ; ; -------------------------------------------------------------------- ; version 1.0 par samj (www.aljacom.com/~gimp) 2010/12/28 ; version 2.0 par samj (www.aljacom.com/~gimp) 2010/12/30 pour gimp 2.7.2 (le rendu est différent => voir avec futures versions pour changer brosse "Circle Fuzzy" ou augmenter netteté sur 1 calque ou paramètre "flou" ou ...) ; version 2.01 par samj (www.aljacom.com/~gimp) 2010/12/30 valeur négatives pour découpage crop dans version 2.0 => nouveau découpage à partir de new_from_visible ; version 2.02 par samj (www.aljacom.com/~gimp) 2011/05/17 pour gimp 2.7.3 ; version 2.03 par samj (www.aljacom.com/~gimp) 2012/05/07 pour gimp 2.8.0 ; version 299 2021-12 for Gimp 2.10.22 and 2.99.8 by Vitforlinux changed IWarp (removed) with Ripple, Brush (original removed) and Font (better work), code updated for compatibility with new Gimp Version. ; -------------------------------------------------------------------- ; ; ; (cond ((not (defined? 'gimp-text-fontname)) (define (gimp-text-fontname fn1 fn2 fn3 fn4 fn5 fn6 fn7 fn8 PIXELS fn9) (gimp-text-font fn1 fn2 fn3 fn4 fn5 fn6 fn7 fn8 fn9)))) (cond ((not (defined? 'gimp-text-get-extents-fontname)) (define (gimp-text-get-extents-fontname efn1 efn2 PIXELS efn3) (gimp-text-get-extents-font efn1 efn2 efn3)))) (define ( script-fu-sweet-candy-text299mod Couleur_du_fond Texte Police Taille_Police justification letter-spacing line-spacing Flou Inclinaison_Stripes Espacement_Stripes Couleur_1_Stripes Couleur_2_Stripes Nettete_Stripes IWarp_Stripes separation couleur_separation largeur_separation shadow couleur_ombre x_ombre y_ombre ) (let* ( ; affectation des variables ; mémoriser les couleurs PP et AP (old-fg (car (gimp-context-get-foreground))) (old-bg (car (gimp-context-get-background))) ; mémoriser brosse (old-brush (car (gimp-context-get-brush))) ; mémoriser le dégradé actif (old_gradient (car (gimp-context-get-gradient))) ; caractéristiques de la surface occupée par le texte (fond_texte (gimp-text-get-extents-fontname Texte Taille_Police 0 Police)) ; largeur de la future image sans Contour (width (car fond_texte)) ; hauteur de la future image sans Contour (height (cadr fond_texte)) ; créer une nouvelle image rgb (img (car (gimp-image-new (+ width height) (+ width height) 0))) ; définir le Contour en pixels (contour (/ (+ width height) 20 )) ; calques texte (calque_texte) (copie_texte_desaturate) (calque_texte_2) (ombre) ; calque stripes (stripes) ; calque fond (calque_fond) ; largeur rainure en pixels (largeur_rainure) ; nombre de rainures (nombre_de_rainures) ; index (index) ; activer le contour du texte par une brosse (Brosse_contour TRUE) ; chemin_texte (chemin_texte) ; chemin du texte tracé avec la brosse (chemin_texte_trace_avec_brosse) ; chemin_texte_effet (chemin_texte_effet) ; calque new from visible (new_from_visible) (justification (cond ((= justification 0) 2) ((= justification 1) 0) ((= justification 2) 1) ((= justification 3) 3))) ) ;; Start undo group. (gimp-image-undo-group-start img) ; calque fond ******************************************************************************* ; créer un nouveau calque (set! calque_fond (car (gimp-layer-new img (+ width height) (+ width height) 1 "Fond" 100 0))) ; ajouter le calque (gimp-image-insert-layer img calque_fond -1 0) ; choisir Couleur_du_fond pp (gimp-context-set-foreground Couleur_du_fond) ; remplir de Couleur_du_fond (gimp-drawable-fill calque_fond 0) ; rendre invisible (gimp-item-set-visible calque_fond FALSE) ; calque Texte ******************************************************************************* ; choisir noir pp (gimp-context-set-foreground '(0 0 0)) ; choisir blanc comme ap (gimp-context-set-background '(255 255 255)) ; créer le calque texte ; (gimp-text-fontname image drawable x y text border antialias size size-type fontname) (set! calque_texte (car (gimp-text-fontname img -1 (/ height 2) (/ width 2) Texte 0 TRUE Taille_Police 0 Police))) (gimp-text-layer-set-letter-spacing calque_texte letter-spacing) ; Set Letter Spacing (gimp-text-layer-set-justification calque_texte justification) ; Text Justification (Rev Value) (gimp-text-layer-set-line-spacing calque_texte line-spacing) ; Set Line Spacing ; activer le contour du texte avec une brosse (if (= Brosse_contour TRUE) (begin ; créer un chemin à partir du texte (set! chemin_texte (car (gimp-vectors-new-from-text-layer img calque_texte))) ; ajouter le chemin à l'image (gimp-image-insert-vectors img chemin_texte 0 0) ; calque texte aux dimensions de l'image (gimp-layer-resize-to-image-size calque_texte) ; opacité à 100 (gimp-context-set-opacity 100) ; déterminer la taille des la brosse Circle Fuzzy en fonction de la Police ;(gimp-context-set-brush "2. Hardness 025") ; 5*5 (if (= (string->number (substring (car(gimp-version)) 0 3)) 2.10) (gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush (car (gimp-brush-get-by-name "2. Hardness 025")))) (gimp-context-set-brush-size 4) (if (> Taille_Police 90) ; 70 (begin ;(gimp-context-set-brush "Circle Fuzzy (05)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 3) ) ) ; 7*7 (if (> Taille_Police 110) ; 90 (begin ;(gimp-context-set-brush "Circle Fuzzy (07)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 7) ) ) ; 9*9 (if (> Taille_Police 130) ; 110 (begin ;(gimp-context-set-brush "Circle Fuzzy (09)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 9) ) ) ; 11*11 (if (> Taille_Police 150) ; 130 (begin ;(gimp-context-set-brush "Circle Fuzzy (11)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 11) ) ) ; 13*13 (if (> Taille_Police 170) ; 150 (begin ;(gimp-context-set-brush "Circle Fuzzy (13)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 13) ) ) ; 15*15 (if (> Taille_Police 190) ; 170 (begin ;(gimp-context-set-brush "Circle Fuzzy (15)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 15) ) ) ; 17*17 (if (> Taille_Police 210) ; 190 (begin ;(gimp-context-set-brush "Circle Fuzzy (17)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 17) ) ) ; 19*19 (if (> Taille_Police 230) ; 210 (begin ;(gimp-context-set-brush "Circle Fuzzy (19)") ;(gimp-context-set-brush "2. Hardness 025") (gimp-context-set-brush-size 19) ) ) ; 21*21 ; faire contour chemin avec brosse (gimp-drawable-edit-stroke-item calque_texte chemin_texte) ) ) ; donner un nom au calque (gimp-item-set-name calque_texte "Texte et effet") ; calque texte aux dimensions de l'image (gimp-layer-resize-to-image-size calque_texte) ; obtenir une sélection à partir du texte tracé avec la brosse (gimp-image-select-item img 0 calque_texte) ; sélection vers chemin (set! chemin_texte_trace_avec_brosse (car (plug-in-sel2path 1 img calque_texte))) ; ne rien sélectionner (gimp-selection-none img) ; effet**************** ; colorier (gimp-drawable-colorize-hsl calque_texte 180 0 70) ; bumpmap (plug-in-bump-map 1 ; run-mode img ; image calque_texte ; drawable calque_texte ; bumpmap 250 ; azimuth 45 ; elevation 50 ; depth 0 ; xofs 0 ; yofs 0 ; waterlevel 0 ; ambient 1 ; compensate 0 ; invert 1 ; type ) ; lock canal alpha calque_texte (gimp-layer-set-lock-alpha calque_texte TRUE) ; appliquer un flou gaussien (plug-in-gauss 1 img calque_texte (* Taille_Police (/ Flou 300)) (* Taille_Police (/ Flou 300)) 0) ; unlock canal alpha calque_texte (gimp-layer-set-lock-alpha calque_texte FALSE) ; obtenir une sélection à partir du texte tracé avec la brosse (gimp-image-select-item img 0 calque_texte) ; sélection vers chemin (set! chemin_texte_effet (car (plug-in-sel2path 1 img calque_texte))) ; calque copie_texte_desaturate***************************************************************** ; copier le calque texte , ajouter puis donner un nom (set! copie_texte_desaturate (car (gimp-layer-copy calque_texte TRUE))) (gimp-image-insert-layer img copie_texte_desaturate -1 0) (gimp-item-set-name copie_texte_desaturate "Texte desaturate") ; appliquer desaturate (gimp-drawable-desaturate copie_texte_desaturate 0) ; calque Texte 2 ******************************************************************************* ; choisir noir pp (gimp-context-set-foreground '(0 0 0)) ; choisir blanc comme ap (gimp-context-set-background '(255 255 255)) ; créer un nouveau calque + grand pour pouvoir pivoter en couvrant le texte (set! calque_texte_2 (car (gimp-layer-new img (+ width height) (+ width height) 1 "Texte noir" 100 0))) ; ajouter le calque (gimp-image-insert-layer img calque_texte_2 -1 0) ; remplir la sélection de noir (gimp-drawable-edit-fill calque_texte_2 ; drawable 0 ; fill-mode ) ; passer le calque en mode overlay (gimp-layer-set-mode calque_texte_2 5) ; ne rien sélectionner (gimp-selection-none img) ; calque stripes ***************************************************************************** ; créer un nouveau calque + grand pour pouvoir pivoter en couvrant le texte (set! stripes (car (gimp-layer-new img (+ width height) (+ width height) 1 "Stripes" 100 0))) ; ajouter le calque (gimp-image-insert-layer img stripes -1 0) ; choisir Couleur_1_Stripes pp (gimp-context-set-foreground Couleur_1_Stripes) ; remplir de Couleur_1_Stripes (gimp-drawable-fill stripes 0) ; determiner largeur rainure et nombre de rainures (set! largeur_rainure (round (* (/ (car fond_texte) 1000) Espacement_Stripes))) ; (gimp-message (number->string largeur_rainure)) (set! nombre_de_rainures (round (/ (+ width height) largeur_rainure))) ; (gimp-message (number->string nombre_de_rainures)) ; mettre index à 1 (set! index 1) ; boucle pour créer les rainures (while (< index nombre_de_rainures) ; ne rien sélectionner (gimp-selection-none img) ; faire une sélection rectangulaire ;(gimp-rect-select ; img ; image ; (* index largeur_rainure) ; x ; 0 ; y ; largeur_rainure ; width ; (+ width height) ; height ; 0 ; operation ; TRUE ; feather ; Nettete_Stripes ; feather-radius ;) ; modifications pour gimp 2.7.3 ;(gimp-context-set-antialias TRUE) (gimp-context-set-feather TRUE) ; (gimp-context-set-feather-radius feather-radius-x feather-radius-y) (gimp-context-set-feather-radius Nettete_Stripes Nettete_Stripes) (gimp-image-select-rectangle img ; image 0 ; operation (* index largeur_rainure) ; x 0 ; y largeur_rainure ; width (+ width height) ; height ) ; choisir Couleur_2_Stripes pp (gimp-context-set-foreground Couleur_2_Stripes) ; remplir la sélection de Couleur_2_Stripes (gimp-drawable-edit-fill stripes ; drawable 0 ; fill-mode ) ; voir s'il faut mettre une séparation de 1 pixel entre les couleurs (if (= separation TRUE) ; (begin ; ne rien sélectionner (gimp-selection-none img) ; faire une petite sélection rectangulaire ;(gimp-rect-select ; img ; image ; (* (+ 1 index) largeur_rainure) ; x ; 0 ; y ; largeur_separation ; width ; (+ width height) ; height ; 0 ; operation ; TRUE ; feather ; 1 ; feather-radius ;) ; modifications pour gimp 2.7.3 ;(gimp-context-set-antialias TRUE) (gimp-context-set-feather TRUE) ; (gimp-context-set-feather-radius feather-radius-x feather-radius-y) (gimp-context-set-feather-radius 1 1) (gimp-image-select-rectangle img ; image 0 ; operation (* (+ 1 index) largeur_rainure) ; x 0 ; y largeur_separation ; width (+ width height) ; height ) ; choisir Couleur_2_Stripes pp (gimp-context-set-foreground couleur_separation) ; remplir la sélection de Couleur_2_Stripes (gimp-drawable-edit-fill stripes ; drawable 0 ; fill-mode ) ) ) ; ajouter 2 à l'index (set! index (+ index 2)) ; ne rien sélectionner (gimp-selection-none img) ) ; rotation du calque (if (= (* Inclinaison_Stripes Inclinaison_Stripes) (* 90 90)) ; vérifier si angle 90 pour joli rendu (begin (gimp-drawable-transform-rotate-simple stripes ; drawable 0 ; rotate-type TRUE ; auto-center (/ (+ width height) 2) ; center-x (/ (+ width height) 2) ; center-y 1 ; clip-result ) ) ;else (begin (gimp-item-transform-rotate stripes ; drawable ( / (* Inclinaison_Stripes (* 2 3.14159265358979323846)) 360); angle TRUE ; auto-center (/ (+ width height) 2) ; center-x (/ (+ width height) 2) ; center-y ) ) ) ; déformer les bandes si autorisé (if (= IWarp_Stripes TRUE) ; (plug-in-iwarp 0 img stripes) (plug-in-ripple 1 img stripes 100 15 1 0 1 TRUE FALSE) ) ; effet ******************************************************************************* ; obtenir une sélection à partir du texte (gimp-image-select-item img 0 calque_texte) ; sélection vers chemin (plug-in-sel2path 1 img calque_texte) ; inverser la sélection (gimp-selection-invert img) ; sélection vers chemin (plug-in-sel2path 1 img calque_texte) ; supprimer le contenu de la sélection sur le calque stripes (gimp-drawable-edit-clear stripes) ; mettre en mode Grain merge (gimp-layer-set-mode stripes 21) ; ne rien sélectionner (gimp-selection-none img) ;***************************************************************************************** ; descendre la calque copie_texte_desaturate (gimp-image-lower-item img copie_texte_desaturate) ; appliquer shadow (if (= shadow TRUE) (begin ; copier le calque copie_texte_desaturate , ajouter puis donner un nom (set! ombre (car (gimp-layer-copy copie_texte_desaturate TRUE))) (gimp-image-insert-layer img ombre -1 4) (gimp-item-set-name ombre "Ombre") ; sélection du texte (gimp-image-select-item img 0 ombre) ; choisir couleur_ombre pp (gimp-context-set-foreground couleur_ombre) ; remplir la sélection de gris (gimp-drawable-edit-fill ombre ; drawable 0 ; fill-mode BUCKET-FILL-FG ) ; ne rien sélectionner (gimp-selection-none img) ; flou (plug-in-gauss-iir2 1 img ombre (/ Taille_Police 8) (/ Taille_Police 8) ) ; décaler le calque (gimp-layer-set-offsets ombre (/ Taille_Police x_ombre) (/ Taille_Police y_ombre)) ) ) ; calque new_from_visible****************************************************************** ; version 1.02 ; ajuster l'image aux calques (gimp-image-resize-to-layers img) ; ajouter un nouveau calque à partir de visible en haut de la pile (set! new_from_visible (car (gimp-layer-new-from-visible img img "Rendu final" ))) (gimp-image-insert-layer img new_from_visible -1 0) ; découpage calque new_from_visible pour déterminer dimensions image (plug-in-autocrop 1 img new_from_visible) ; découpage de l'image ; version 2.0 ne fonctionne pas (gimp-image-crop img (+ width (* 2 contour)) (+ height (* 2 contour)) (- (/ height 2) contour) (- (/ width 2) contour) ) ;***************************************************************************************** ; restaurer PP et AP (gimp-context-set-foreground old-fg) (gimp-context-set-background old-bg) ; restaurer brosse (gimp-context-set-brush old-brush) ; restaurer ancien dégradé (gimp-context-set-gradient old_gradient) ; ne rien sélectionner (gimp-selection-none img) ; afficher l'image (gimp-display-new img) ;; End undo group. (gimp-image-undo-group-end img) ) ) (script-fu-register "script-fu-sweet-candy-text299mod" "Sweet candy text 299 mod..." "Ecriture bonbon / Sweet candy text " "samj" "samj" "2010-12-28" "" SF-COLOR "Couleur du fond / Background color " '(255 255 255) SF-TEXT "Texte / Text " "Sweet Candy" SF-FONT "Police / Font " "URW Bookman Semi-Bold Italic" ; Serif Bold Italic SF-ADJUSTMENT "Taille Police / Font Size [pixels] " '(300 12 480 1 10 0 1) SF-OPTION _"Text Justification" '("Centered" "Left" "Right" "Fill") SF-ADJUSTMENT _"Letter Spacing" '(0 -50 50 1 5 0 1) SF-ADJUSTMENT _"Line Spacing" '(-5 -300 300 1 10 0 1) SF-ADJUSTMENT "Flou Texte / Text Blur [%] " '(12 1 20 1 10 0 1) SF-ADJUSTMENT "Inclinaison Bandes / Stripes Angle [degres] " '(30 -180 180 1 10 0 0) SF-ADJUSTMENT "Espacement Bandes / Stripes Spacing [1/1000] " '(35 10 100 1 10 0 0) SF-COLOR "Couleur 1 Bandes / Stripes color 1 " '(255 255 255) SF-COLOR "Couleur 2 Bandes / Stripes color 2 " '(255 0 0) SF-ADJUSTMENT "Nettete Bandes / Stripes Sharpness " '(1 0 10 1 10 0 0) SF-TOGGLE "Deformation Bandes / Ripple Stripes " TRUE SF-TOGGLE "Separation Bandes / Stripes Borderline " TRUE SF-COLOR "Couleur Separation / Borderline Color " '(0 165 0) SF-ADJUSTMENT "Largeur Separation / Width Borderline [pixels] " '(7 0 10 1 10 0 0) SF-TOGGLE "Ombre / Shadow " FALSE SF-COLOR "Couleur Ombre / Shadow color " '(127 127 127) SF-ADJUSTMENT "X Decalage Ombre / X Shift Shadow [% Font] " '(-8 -20 20 1 10 0 0) SF-ADJUSTMENT "Y Decalage Ombre / Y Shift Shadow [% Font] " '(8 -20 20 1 10 0 0) ) (script-fu-menu-register "script-fu-sweet-candy-text299mod" "/File/Create/Logos/" ) ; FIN du script