; ; line-through.scm ; 主線をレイヤ化します ; ; written by Shinobu Ruho. ; (define (script-fu-line-through img drawable) ; undo グループのはじまり (gimp-undo-push-group-start img) ; 現在の描画色、背景色保持 (set! old-fg (car (gimp-palette-get-foreground))) (set! old-bg (car (gimp-palette-get-background))) ; 元のレイヤをコピーする。 (set! inv-layer (car (gimp-layer-copy drawable 0))) ; コピーしたレイヤを反転 (gimp-invert img inv-layer) ; 主線のレイヤの生成 (set! width (car (gimp-image-width img))) (set! height (car (gimp-image-height img))) (set! dtype (car (gimp-drawable-type drawable))) (set! line-layer (car (gimp-layer-new img width height dtype "Line-Layer" 100 NORMAL))) ; 新たなレイヤを追加する (gimp-image-add-layer img inv-layer 0) (gimp-image-add-layer img line-layer 0) ; 主線のレイヤを塗りつぶす (gimp-palette-set-foreground old-bg) (gimp-palette-set-background old-fg) (gimp-edit-fill img line-layer) ; 主線のレイヤにレイヤマスクを追加 (gimp-layer-add-alpha line-layer) (set! layermask (car (gimp-layer-create-mask line-layer 0))) (gimp-image-add-layer-mask img line-layer layermask) ; 主線内容をコピー (gimp-edit-copy img inv-layer) ; 主線レイヤのレイヤマスクにペースト (set! sel-float (car (gimp-edit-paste img layermask FALSE) ) ) ; 選択領域の固定 (gimp-floating-sel-anchor sel-float) ; 描画色と背景色を元に戻す (gimp-palette-set-foreground old-fg) (gimp-palette-set-background old-bg) ; アクティブレイヤを主線レイヤに設定 (gimp-image-set-active-layer img line-layer) ; 元のレイヤをコピーしたものを不可視に設定 (gimp-layer-set-visible inv-layer FALSE) ; 本当はこれで色を反転したレイヤを潰しておきたいんだけど、 ; 入れるとGIMPが落ちる ; (gimp-layer-delete inv-layer) ; undo グループの終わり (gimp-undo-push-group-end img) ; 出力 (gimp-displays-flush) ) (script-fu-register "script-fu-line-through" "/Script-Fu/Original/Line-Through" "Line Through a layer" "Shinobu Ruho" "Shinobu Ruho" "2000" "RGB*, GRAY*" SF-IMAGE "Image" 0 SF-DRAWABLE "Line to Layer" 0)