75 lines
1.8 KiB
Scheme
75 lines
1.8 KiB
Scheme
; multisplit: splits up a mavica multi (sprites in one layer) into layers
|
|
; so you make make from png/jpg sprite a gif animation
|
|
; put me in ~/.gimp-ver/scripts and find me script-fu>animators>MultiSplit
|
|
|
|
(define (script-fu-multisplit multimg
|
|
drawable
|
|
horizontal
|
|
vertical
|
|
delay)
|
|
(let* (
|
|
(width 0)
|
|
(height 0)
|
|
(img 0)
|
|
(layerNum 0)
|
|
(hpos 0)
|
|
(vpos 0)
|
|
(layer 0)
|
|
(floatingLayer 0)
|
|
)
|
|
|
|
(set! width (/ (car (gimp-image-width multimg)) horizontal))
|
|
(set! height (/ (car (gimp-image-height multimg)) vertical))
|
|
(set! img (car (gimp-image-new width height RGB)))
|
|
|
|
(set! vpos 0)
|
|
(while (< vpos vertical)
|
|
(set! hpos 0)
|
|
(while (< hpos horizontal)
|
|
(set! layerNum (+ layerNum 1))
|
|
(set! layer (car (gimp-layer-new img width height RGB
|
|
(string-append "Frame" delay "(replace)")
|
|
100 NORMAL)))
|
|
|
|
(gimp-layer-add-alpha layer)
|
|
(gimp-drawable-fill layer TRANSPARENT-FILL)
|
|
(gimp-image-add-layer img layer -1)
|
|
|
|
(gimp-rect-select multimg
|
|
(* hpos width) (* vpos height)
|
|
width height
|
|
REPLACE FALSE 0)
|
|
|
|
(gimp-edit-copy drawable)
|
|
|
|
(gimp-selection-all img)
|
|
|
|
(set! floatingLayer (car (gimp-edit-paste layer 0)))
|
|
(gimp-floating-sel-anchor floatingLayer)
|
|
|
|
(gimp-selection-none img)
|
|
(gimp-selection-none multimg)
|
|
|
|
(set! hpos (+ hpos 1))
|
|
)
|
|
(set! vpos (+ vpos 1))
|
|
)
|
|
|
|
(gimp-display-new img)
|
|
)
|
|
)
|
|
|
|
(script-fu-register "script-fu-multisplit"
|
|
"<Image>/Script-Fu/Animators/MultiSplit"
|
|
"Split an image into layers"
|
|
"Rick Miller (Rick.Miller@Linux.org)"
|
|
"Rick Miller"
|
|
"05/19/2000"
|
|
"RGB RGBA GRAY GRAYA"
|
|
SF-IMAGE "Image" 0
|
|
SF-DRAWABLE "Drawable" 0
|
|
SF-VALUE "Horizontal Slices" "3"
|
|
SF-VALUE "Vertical Slices" "3"
|
|
SF-VALUE "Default Delay" "\"250ms\"")
|
|
|