~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to plug-ins/script-fu/scripts/burn-in-anim.scm

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2007-05-02 16:33:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070502163303-bvzhjzbpw8qglc4y
Tags: 2.3.16-1ubuntu1
* Resynchronized with Debian, remaining Ubuntu changes:
  - debian/rules: i18n magic.
* debian/control.in:
  - Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch,
  debian/patches/10_dont_show_wizard.patch: updated.
* debian/patches/04_composite-signedness.patch,
  debian/patches/05_add-letter-spacing.patch: dropped, used upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
;
13
13
 
14
14
(define (script-fu-burn-in-anim org-img
15
 
                                org-layer
16
 
                                glow-color
17
 
                                fadeout
18
 
                                bl-width
19
 
                                corona-width
20
 
                                after-glow
21
 
                                show-glow
22
 
                                optimize
23
 
                                speed)
 
15
                                org-layer
 
16
                                glow-color
 
17
                                fadeout
 
18
                                bl-width
 
19
                                corona-width
 
20
                                after-glow
 
21
                                show-glow
 
22
                                optimize
 
23
                                speed)
24
24
 
25
25
  (let* (
26
 
         ;--- main variable: "bl-x" runs from 0 to layer-width
27
 
         (bl-x 0)
28
 
         (frame-nr 0))
 
26
        ;--- main variable: "bl-x" runs from 0 to layer-width
 
27
        (bl-x 0)
 
28
        (frame-nr 0)
 
29
        (img)
 
30
        (source-layer)
 
31
        (bg-source-layer)
 
32
        (source-layer-width)
 
33
        (bg-layer)
 
34
        (bg-layer-name)
 
35
        (bl-layer)
 
36
        (bl-layer-name)
 
37
        (bl-mask)
 
38
        (bl-layer-width)
 
39
        (bl-height)
 
40
        (bl-x-off)
 
41
        (bl-y-off)
 
42
        (nofadeout-bl-x-off)
 
43
        (nofadeout-bl-width)
 
44
        (blended-layer)
 
45
        (img-display)
 
46
        )
29
47
 
30
48
    (if (< speed 1)
31
 
        (set! speed (* -1 speed)) )
 
49
        (set! speed (* -1 speed)) )
32
50
 
33
51
    ;--- check image and work on a copy
34
 
    (if (= (car (gimp-image-get-layers org-img)) 2)
 
52
    (if (and (= (car (gimp-image-get-layers org-img)) 2)
 
53
             (= (car (gimp-image-get-floating-sel org-img)) -1))
35
54
 
36
55
        ;--- main program structure starts here, begin of "if-1"
37
 
        (begin
38
 
          (gimp-context-push)
 
56
        (begin
 
57
          (gimp-context-push)
39
58
 
40
 
          (set! img (car (gimp-image-duplicate org-img)))
41
 
          (gimp-image-undo-disable img)
42
 
          (if (> (car (gimp-drawable-type org-layer)) 1 )
43
 
              (gimp-image-convert-rgb img))
44
 
          (set! source-layer    (aref (cadr (gimp-image-get-layers img)) 0 ))
45
 
          (set! bg-source-layer (aref (cadr (gimp-image-get-layers img)) 1 ))
46
 
          (set! source-layer-width (car (gimp-drawable-width  source-layer)))
 
59
          (set! img (car (gimp-image-duplicate org-img)))
 
60
          (gimp-image-undo-disable img)
 
61
          (if (> (car (gimp-drawable-type org-layer)) 1 )
 
62
              (gimp-image-convert-rgb img))
 
63
          (set! source-layer    (aref (cadr (gimp-image-get-layers img)) 0 ))
 
64
          (set! bg-source-layer (aref (cadr (gimp-image-get-layers img)) 1 ))
 
65
          (set! source-layer-width (car (gimp-drawable-width  source-layer)))
47
66
 
48
67
          ;--- hide layers, cause we want to "merge visible layers" later
49
 
          (gimp-drawable-set-visible source-layer FALSE)
50
 
          (gimp-drawable-set-visible bg-source-layer     FALSE)
 
68
          (gimp-drawable-set-visible source-layer FALSE)
 
69
          (gimp-drawable-set-visible bg-source-layer     FALSE)
51
70
 
52
71
          ;--- process image horizontal with pixel-speed
53
 
          (while (< bl-x (+ source-layer-width bl-width))
54
 
                 (set! bl-layer (car (gimp-layer-copy source-layer TRUE)))
55
 
                 (set! bl-layer-name (string-append "fr-nr"
56
 
                                                    (number->string frame-nr 10) ) )
57
 
 
58
 
                 (gimp-image-add-layer img bl-layer -2)
59
 
                 (gimp-drawable-set-name bl-layer bl-layer-name)
60
 
                 (gimp-drawable-set-visible bl-layer TRUE)
61
 
                 (gimp-layer-set-preserve-trans bl-layer TRUE)
62
 
                 (gimp-layer-add-alpha bl-layer)
63
 
 
64
 
                 ;--- add an alpha mask for blending and select it
65
 
                 (gimp-selection-layer-alpha bl-layer)
66
 
                 (set! bl-mask (car (gimp-layer-create-mask bl-layer ADD-BLACK-MASK)))
67
 
                 (gimp-layer-add-mask bl-layer bl-mask)
68
 
 
69
 
                 ;--- handle layer geometry
70
 
                 (set! bl-layer-width source-layer-width)
71
 
                 (set! bl-height      (car (gimp-drawable-height bl-layer)))
72
 
                 (set! bl-x-off (- bl-x     bl-width))
73
 
                 (set! bl-x-off (+ bl-x-off (car  (gimp-drawable-offsets bl-layer))))
74
 
                 (set! bl-y-off             (cadr (gimp-drawable-offsets bl-layer)))
75
 
 
76
 
                 ;--- select a rectangular area to blend
77
 
                 (gimp-rect-select img bl-x-off bl-y-off bl-width bl-height CHANNEL-OP-REPLACE 0 0)
78
 
                 ;--- select at least 1 pixel!
79
 
                 (gimp-rect-select img bl-x-off bl-y-off (+ bl-width 1) bl-height CHANNEL-OP-ADD 0 0)
80
 
 
81
 
                 (if (= fadeout FALSE)
82
 
                     (begin
83
 
                       (set! nofadeout-bl-x-off (car (gimp-drawable-offsets bl-layer)))
84
 
                       (set! nofadeout-bl-width (+ nofadeout-bl-x-off bl-x))
85
 
                       (set! nofadeout-bl-width (max nofadeout-bl-width 1))
86
 
                       (gimp-rect-select img nofadeout-bl-x-off bl-y-off
87
 
                                         nofadeout-bl-width bl-height
88
 
                                         CHANNEL-OP-REPLACE 0 0)))
89
 
 
90
 
                 ;--- alpha blending text to trans (fadeout)
91
 
                 (gimp-context-set-foreground '(255 255 255))
92
 
                 (gimp-context-set-background '(  0   0   0))
93
 
                 (if (= fadeout TRUE)
94
 
                     (begin
95
 
                       ; blend with 20% offset to get less transparency in the front
96
 
                       (gimp-edit-blend bl-mask FG-BG-RGB-MODE NORMAL-MODE
97
 
                                        GRADIENT-LINEAR 100 20 REPEAT-NONE FALSE
98
 
                                        FALSE 0 0 TRUE
99
 
                                        (+ bl-x-off bl-width) 0 bl-x-off 0)))
100
 
 
101
 
                 (if (= fadeout FALSE)
102
 
                     (begin
103
 
                       (gimp-context-set-foreground '(255 255 255))
104
 
                       (gimp-edit-bucket-fill bl-mask FG-BUCKET-FILL NORMAL-MODE
105
 
                                              100 255 0 0 0)))
106
 
 
107
 
                 (gimp-layer-remove-mask bl-layer MASK-APPLY)
108
 
 
109
 
                 ;--- add bright glow in front
110
 
                 (if (= show-glow TRUE)
111
 
                     (begin
112
 
                       ;--- add some brightness to whole text
113
 
                       (if (= fadeout TRUE)
114
 
                           (gimp-brightness-contrast bl-layer 100 0))
115
 
 
116
 
                     ;--- blend glow color inside the letters
117
 
                     (gimp-context-set-foreground glow-color)
118
 
                     (gimp-edit-blend bl-layer FG-TRANSPARENT-MODE NORMAL-MODE
119
 
                                      GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
120
 
                                      FALSE 0 0 TRUE
121
 
                                      (+ bl-x-off bl-width) 0
122
 
                                      (- (+ bl-x-off bl-width) after-glow) 0)
123
 
 
124
 
                     ;--- add corona effect
125
 
                     (gimp-selection-layer-alpha bl-layer)
126
 
                     (gimp-selection-sharpen img)
127
 
                     (gimp-selection-grow img corona-width)
128
 
                     (gimp-layer-set-preserve-trans bl-layer FALSE)
129
 
                     (gimp-selection-feather img corona-width)
130
 
                     (gimp-context-set-foreground glow-color)
131
 
                     (gimp-edit-blend bl-layer FG-TRANSPARENT-MODE NORMAL-MODE
132
 
                                      GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
133
 
                                      FALSE 0 0 TRUE
134
 
                                      (- (+ bl-x-off bl-width) corona-width) 0
135
 
                                      (- (+ bl-x-off bl-width) after-glow) 0))
136
 
         )
137
 
 
138
 
                 ;--- merge with bg layer
139
 
                 (set! bg-layer (car (gimp-layer-copy bg-source-layer FALSE)))
140
 
                 (gimp-image-add-layer img bg-layer -1)
141
 
                 (gimp-image-lower-layer img bg-layer)
142
 
                 (set! bg-layer-name (string-append "bg-"
143
 
                                                    (number->string frame-nr 10)))
144
 
                 (gimp-drawable-set-name bg-layer bg-layer-name)
145
 
                 (gimp-drawable-set-visible bg-layer TRUE)
146
 
                 (set! blended-layer (car (gimp-image-merge-visible-layers img
147
 
                                                                           CLIP-TO-IMAGE)))
148
 
                 ;(set! blended-layer bl-layer)
149
 
                 (gimp-drawable-set-visible blended-layer FALSE)
150
 
 
151
 
                 ;--- end of "while" loop
152
 
                 (set! frame-nr (+ frame-nr 1))
153
 
                 (set! bl-x     (+ bl-x speed)))
154
 
 
155
 
          ;--- finalize the job
156
 
          (gimp-selection-none img)
157
 
          (gimp-image-remove-layer img    source-layer)
158
 
          (gimp-image-remove-layer img bg-source-layer)
159
 
 
160
 
          (gimp-image-set-filename img "burn-in")
161
 
 
162
 
          (if (= optimize TRUE)
163
 
              (begin
164
 
                (gimp-image-convert-indexed img 1 WEB-PALETTE 250 FALSE TRUE "")
165
 
                (set! img-out (car (plug-in-animationoptimize 0
166
 
                                                              img
167
 
                                                              bl-layer)))))
168
 
 
169
 
          (gimp-drawable-set-visible (aref (cadr (gimp-image-get-layers img)) 0)
170
 
                                  TRUE)
171
 
          (gimp-image-undo-enable img)
172
 
          (gimp-image-clean-all img)
173
 
          (set! img-display (car (gimp-display-new img)))
174
 
 
175
 
          (gimp-displays-flush)
176
 
 
177
 
          (gimp-context-pop))
178
 
 
179
 
        ;--- false form of "if-1"
180
 
        (gimp-message _"Burn-In: Need two layers in total!"
181
 
                      "A foreground text layer with transparency"
182
 
                      "and a background layer."))))
 
72
          (while (< bl-x (+ source-layer-width bl-width))
 
73
              (set! bl-layer (car (gimp-layer-copy source-layer TRUE)))
 
74
              (set! bl-layer-name (string-append "fr-nr"
 
75
                                                 (number->string frame-nr 10) ) )
 
76
 
 
77
              (gimp-image-add-layer img bl-layer -2)
 
78
              (gimp-drawable-set-name bl-layer bl-layer-name)
 
79
              (gimp-drawable-set-visible bl-layer TRUE)
 
80
              (gimp-layer-set-lock-alpha bl-layer TRUE)
 
81
              (gimp-layer-add-alpha bl-layer)
 
82
 
 
83
              ;--- add an alpha mask for blending and select it
 
84
              (gimp-selection-layer-alpha bl-layer)
 
85
              (set! bl-mask (car (gimp-layer-create-mask bl-layer ADD-BLACK-MASK)))
 
86
              (gimp-layer-add-mask bl-layer bl-mask)
 
87
 
 
88
              ;--- handle layer geometry
 
89
              (set! bl-layer-width source-layer-width)
 
90
              (set! bl-height      (car (gimp-drawable-height bl-layer)))
 
91
              (set! bl-x-off (- bl-x     bl-width))
 
92
              (set! bl-x-off (+ bl-x-off (car  (gimp-drawable-offsets bl-layer))))
 
93
              (set! bl-y-off             (cadr (gimp-drawable-offsets bl-layer)))
 
94
 
 
95
              ;--- select a rectangular area to blend
 
96
              (gimp-rect-select img bl-x-off bl-y-off bl-width bl-height CHANNEL-OP-REPLACE 0 0)
 
97
              ;--- select at least 1 pixel!
 
98
              (gimp-rect-select img bl-x-off bl-y-off (+ bl-width 1) bl-height CHANNEL-OP-ADD 0 0)
 
99
 
 
100
              (if (= fadeout FALSE)
 
101
                  (begin
 
102
                    (set! nofadeout-bl-x-off (car (gimp-drawable-offsets bl-layer)))
 
103
                    (set! nofadeout-bl-width (+ nofadeout-bl-x-off bl-x))
 
104
                    (set! nofadeout-bl-width (max nofadeout-bl-width 1))
 
105
                    (gimp-rect-select img nofadeout-bl-x-off bl-y-off
 
106
                                      nofadeout-bl-width bl-height
 
107
                                      CHANNEL-OP-REPLACE 0 0)
 
108
                  )
 
109
              )
 
110
 
 
111
              ;--- alpha blending text to trans (fadeout)
 
112
              (gimp-context-set-foreground '(255 255 255))
 
113
              (gimp-context-set-background '(  0   0   0))
 
114
              (if (= fadeout TRUE)
 
115
                  (begin
 
116
                    ; blend with 20% offset to get less transparency in the front
 
117
                    (gimp-edit-blend bl-mask FG-BG-RGB-MODE NORMAL-MODE
 
118
                                     GRADIENT-LINEAR 100 20 REPEAT-NONE FALSE
 
119
                                     FALSE 0 0 TRUE
 
120
                                     (+ bl-x-off bl-width) 0 bl-x-off 0)
 
121
                  )
 
122
              )
 
123
 
 
124
              (if (= fadeout FALSE)
 
125
                  (begin
 
126
                    (gimp-context-set-foreground '(255 255 255))
 
127
                    (gimp-edit-bucket-fill bl-mask FG-BUCKET-FILL NORMAL-MODE
 
128
                                           100 255 0 0 0)
 
129
                  )
 
130
              )
 
131
 
 
132
              (gimp-layer-remove-mask bl-layer MASK-APPLY)
 
133
 
 
134
              ;--- add bright glow in front
 
135
              (if (= show-glow TRUE)
 
136
                  (begin
 
137
                    ;--- add some brightness to whole text
 
138
                    (if (= fadeout TRUE)
 
139
                        (gimp-brightness-contrast bl-layer 100 0)
 
140
                    )
 
141
 
 
142
          ;--- blend glow color inside the letters
 
143
          (gimp-context-set-foreground glow-color)
 
144
          (gimp-edit-blend bl-layer FG-TRANSPARENT-MODE NORMAL-MODE
 
145
                   GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
 
146
                   FALSE 0 0 TRUE
 
147
                   (+ bl-x-off bl-width) 0
 
148
                   (- (+ bl-x-off bl-width) after-glow) 0)
 
149
 
 
150
          ;--- add corona effect
 
151
          (gimp-selection-layer-alpha bl-layer)
 
152
          (gimp-selection-sharpen img)
 
153
          (gimp-selection-grow img corona-width)
 
154
          (gimp-layer-set-lock-alpha bl-layer FALSE)
 
155
          (gimp-selection-feather img corona-width)
 
156
          (gimp-context-set-foreground glow-color)
 
157
          (gimp-edit-blend bl-layer FG-TRANSPARENT-MODE NORMAL-MODE
 
158
                   GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
 
159
                   FALSE 0 0 TRUE
 
160
                   (- (+ bl-x-off bl-width) corona-width) 0
 
161
                   (- (+ bl-x-off bl-width) after-glow) 0)
 
162
                  )
 
163
              )
 
164
 
 
165
              ;--- merge with bg layer
 
166
              (set! bg-layer (car (gimp-layer-copy bg-source-layer FALSE)))
 
167
              (gimp-image-add-layer img bg-layer -1)
 
168
              (gimp-image-lower-layer img bg-layer)
 
169
              (set! bg-layer-name (string-append "bg-"
 
170
                                                 (number->string frame-nr 10)))
 
171
              (gimp-drawable-set-name bg-layer bg-layer-name)
 
172
              (gimp-drawable-set-visible bg-layer TRUE)
 
173
              (set! blended-layer (car (gimp-image-merge-visible-layers img
 
174
                                        CLIP-TO-IMAGE)))
 
175
              ;(set! blended-layer bl-layer)
 
176
              (gimp-drawable-set-visible blended-layer FALSE)
 
177
 
 
178
              ;--- end of "while" loop
 
179
              (set! frame-nr (+ frame-nr 1))
 
180
              (set! bl-x     (+ bl-x speed))
 
181
          )
 
182
 
 
183
          ;--- finalize the job
 
184
          (gimp-selection-none img)
 
185
          (gimp-image-remove-layer img    source-layer)
 
186
          (gimp-image-remove-layer img bg-source-layer)
 
187
 
 
188
          (gimp-image-set-filename img "burn-in")
 
189
 
 
190
          (if (= optimize TRUE)
 
191
              (begin
 
192
                (gimp-image-convert-indexed img 1 WEB-PALETTE 250 FALSE TRUE "")
 
193
                (set! img-out (car (plug-in-animationoptimize 0
 
194
                                                              img
 
195
                                                              bl-layer)))
 
196
              )
 
197
          )
 
198
 
 
199
          (gimp-drawable-set-visible (aref (cadr (gimp-image-get-layers img)) 0)
 
200
                                  TRUE)
 
201
          (gimp-image-undo-enable img)
 
202
          (gimp-image-clean-all img)
 
203
          (set! img-display (car (gimp-display-new img)))
 
204
 
 
205
          (gimp-displays-flush)
 
206
 
 
207
          (gimp-context-pop)
 
208
        )
 
209
 
 
210
        ;--- false form of "if-1"
 
211
        (gimp-message _"Burn-In: Needs two layers in total!\nA foreground text layer with transparency and a background layer.")
 
212
    )
 
213
  )
 
214
)
183
215
 
184
216
 
185
217
(script-fu-register "script-fu-burn-in-anim"
186
 
                    _"B_urn-In..."
187
 
                    "Burn-in like effect on a fg (text) layer and a bg layer; V2.1"
188
 
                    "Roland Berger roland@fuchur.leute.server.de"
189
 
                    "Roland Berger"
190
 
                    "January 2001"
191
 
                    "RGBA GRAYA INDEXEDA"
192
 
                    SF-IMAGE     "The image"            0
193
 
                    SF-DRAWABLE  "Layer to animate"     0
194
 
                    SF-COLOR    _"Glow color"           '(255 255 255)
195
 
                    SF-TOGGLE   _"Fadeout"              FALSE
196
 
                    SF-VALUE    _"Fadeout width"        "100"
197
 
                    SF-VALUE    _"Corona width"         "7"
198
 
                    SF-VALUE    _"After glow"           "50"
199
 
                    SF-TOGGLE   _"Add glowing"          TRUE
200
 
                    SF-TOGGLE   _"Prepare for GIF"      FALSE
201
 
                    SF-VALUE    _"Speed (pixels/frame)" "50")
 
218
    _"B_urn-In..."
 
219
    _"Create intermediate layers to produce an animated 'burn-in' transition between two layers"
 
220
    "Roland Berger roland@fuchur.leute.server.de"
 
221
    "Roland Berger"
 
222
    "January 2001"
 
223
    "RGBA GRAYA INDEXEDA"
 
224
    SF-IMAGE    "The image"            0
 
225
    SF-DRAWABLE "Layer to animate"     0
 
226
    SF-COLOR   _"Glow color"           "white"
 
227
    SF-TOGGLE  _"Fadeout"              FALSE
 
228
    SF-VALUE   _"Fadeout width"        "100"
 
229
    SF-VALUE   _"Corona width"         "7"
 
230
    SF-VALUE   _"After glow"           "50"
 
231
    SF-TOGGLE  _"Add glowing"          TRUE
 
232
    SF-TOGGLE  _"Prepare for GIF"      FALSE
 
233
    SF-VALUE   _"Speed (pixels/frame)" "50"
 
234
)
202
235
 
203
236
(script-fu-menu-register "script-fu-burn-in-anim"
204
 
                         _"<Image>/Script-Fu/Animators")
 
237
                         "<Image>/Filters/Animation/Animators")