レイヤー移動を座標値で の最新版です。
GIMP 3.0.0-RC2 で確認しています。
制限事項は 単独 Layer が対象! 。
もう、手直し も、此れが限界 でしょう。
利用時の 制限 が厳しいので、
根本から弄ら無いといけなくなる様です。
ですから、最後の足掻き になると思っています。
レイヤー移動を座標値で の最新版。
複数 Layers を扱うのは、容易ではありません。
なので、公開するのは、此の 単独レイヤー版 のみにします。
仮に、
複数あっても、左上座標が Group 化 で問題無いなら、
事前に手作業で Group 化( Group 新設し格納の上 Group を選択 )してから、
お使い下さい。
処理中に、選択を全て Group に収める方法もありますが、
Group にした後の 左上座標 が、
必ずしも、想定のものと同じでは無いケースもあって、
採用を取り止めました。
(例:文字が際にある場合等)
なので、必要な場合には、手作業をお願いします。
或いは、連続利用の場合、設定値は維持されていますから、
再度呼び出して、其れを利用も可能です。
つまり、複数分に対して繰り返して実行する事。
尚、
相対的な移動のみ なら、
複数を扱う事も可能な訳ですが、
絶対位置指定の場合、
元の相互位置関係を維持出来ないので、
単独に限定した次第です。
選択されたものが ひとつ が 前提条件 です。
script name : script-fu-shiro-layer-shift-1l
file name : Shiro-Layer-Shift-1L.scm
また、Script-Fu v3 ですから、
格納場所は 個人用の plug-ins Directory です。
同名の Sub-Directory に入れた状態で 配置 します。
例えば、
C:¥Users¥<YourName>¥AppData¥Roaming¥GIMP¥3.0¥plug-ins¥Shiro-Layer-Shift-1L
選択されたものが ひとつ は、
script-fu-register-filter で SF-ONE-DRAWABLE を指定しています。
GUI から操作する場合、
複数が選択されている状態では、グレーアウト して、実行出来ません。
しかし、
Procedure Browser 等を眺めれば、
ONE-DRAWABLE の制限は見当たりません。
書き手が、実行時に、選択数をチェックして、
例外処理する事が勧められていましたね。
此処でも、其の様に、しています。
GUI だけ考えれば、冗長な と思われるかも知れませんが、
他の Script から呼ばれる、若しくは、Console で実行される、
そうしたケースへの配慮です。
さて、全 Code 。
#!/usr/bin/env gimp-script-fu-interpreter-3.0
;!# Close comment started on first line.
; v2>v3
; TRUE => #t FALSE => #f
; Use script-fu-register-filter
; Now, drawables is a vector #(...)
;Scheme for GIMP 3.0.0-RC1 +
(define (script-fu-shiro-layer-shift-1l
image
drawables
x
y
type
)
(script-fu-use-v3)
(if (> (vector-length drawables) 1)
(begin
(gimp-message (string-append
"レイヤーが複数指定されています : "
(number->string (vector-length drawables))
"¥n")
)
(quit)
)
)
(gimp-image-undo-group-start image)
(let* (
(lyr (vector-ref drawables 0))
(offsetsX 0)
(offsetsY 0)
(offsetsX (car (gimp-drawable-get-offsets lyr)))
(offsetsY (cadr (gimp-drawable-get-offsets lyr)))
)
(if (= type 0)
(gimp-layer-set-offsets lyr (+ offsetsX x) (+ offsetsY y))
(gimp-layer-set-offsets lyr x y)
)
)
(gimp-displays-flush)
(gimp-image-undo-group-end image)
)
(script-fu-register-filter
"script-fu-shiro-layer-shift-1l" ;func name
_"レイヤー移動 (Shiro版 1L) UnDo:Ctrl+Z" ;menu label
_"単一レイヤーを指定した座標に移動させます" ;description
"ShiroYuki_Mot" ;Original scm by"Go" ;author
"ShiroYuki_Mot" ;Original scm by"Go" ;copyright notice
"2025/01/03" ;date created
"*" ;image type on the script
SF-ONE-DRAWABLE ; v3 >>> additional argument
;SF-IMAGE "Image" 0 ;Commment out for v3
;SF-DRAWABLE "Drawable" 0 ;Commment out for v3
SF-ADJUSTMENT "X (横座標) " (list 0 -8000 8000 1 100 0 SF-SPINNER)
SF-ADJUSTMENT "Y (縦座標) " (list 0 -8000 8000 1 100 0 SF-SPINNER)
SF-OPTION "位置 (相対/絶対) " '("相対値"
"絶対値")
)
(script-fu-menu-register "script-fu-shiro-layer-shift-1l"
"<Image>/Layer")
後日、別 Blog にて、ファイル公開 の予定です。
公開後に、リンクを追記しますね。
GIMP Script-Fu v3 Shiro-Layer-Shift for 1 Layer
https://shiroyuki-mot-presents.blogspot.com/2025/01/download-sfu-v3-shiro-layer-shift-1l.html
[2025/01/08] リンク追記
0 件のコメント:
コメントを投稿