2021年8月15日日曜日

GIMP Script-Fu (5) レイヤー移動を座標値で GIMP 2.99 用

GIMP 2.10.x で正常稼働している レイヤー移動を座標値で のスクリプト。
GIMP 2.99 (将来の来るべき GIMP 3)では ... 動きません!。
其処で、手直し しました。
GIMP 2.99.6 で動く事を確認しています。


GIMP Script-Fu (5) レイヤー移動を座標値で (GIMP 2.6 用) 改
此のスクリプトは 私に取って 記念すべき 公開 第1号 のもの。

でも、
GIMP 2.99 に、そのまま、持ち込むと ... 。
メニューにすら現れ無く、使えませぬ!。

GIMP Script-Fu(14) GIMP 3.0 が来る前にやらなければいけない事 追補 で書いた通り、
手を入れて、 初めて、 延命! が可能になります。  ;)

GIMP 3 時代に突入しても動いてくれ!、と願いつつ。


まぁ、 一応、 Code 載せて置きますか ... 。


以下のページからファイルとして入手も可能です。   無断でのリンクの掲載・転載はお止め下さい。
https://shiroyuki-mot-presents.blogspot.com/2021/08/download-sfu-shiro-layer-shift.html


スクリプト名: Shiro_Layer_Shift.scm
登録関数名: script-fu-shiro-layer-shift

;Scheme for GIMP 2.99.6 +

;関数(関数名・引数・処理)

(define (script-fu-shiro-layer-shift img drawable x y type)
(gimp-image-undo-group-start img)
(let ((offsetsX 0) (offsetsY 0))
(set! offsetsX (car (gimp-drawable-get-offsets drawable)))
(set! offsetsY (cadr (gimp-drawable-get-offsets drawable)))
(if (= type 0)
  (gimp-layer-set-offsets drawable (+ offsetsX x) (+ offsetsY y))
  (gimp-layer-set-offsets drawable x y)
)
(gimp-displays-flush)
(gimp-image-undo-group-end img)
))


;登録

(script-fu-register
  _"script-fu-shiro-layer-shift" ;func name
  _"レイヤー移動  (Shiro版)  UnDo:Ctrl+Z" ;menu label
  _"レイヤーを指定した座標に移動させます" ;description
  ;_"Move Layer by Value"                ;menu label (en)
  ;_"Move layer by value (relative/absolute)" ;description (en)
  _"ShiroYuki_Mot" ;Original scm by"Go" ;author
  _"ShiroYuki_Mot" ;Original scm by"Go" ;copyright notice
  _"2021/08/07" ;Original scm in 2006/10" ;date created
  _"*" ;image type on the script1:04 2021/08/09
  SF-IMAGE    _"Image"    0
  SF-DRAWABLE _"Drawable" 0
  SF-ADJUSTMENT _"X (横座標) " '(0 -8000 8000 1 100 0 1)
  SF-ADJUSTMENT _"Y (縦座標) " '(0 -8000 8000 1 100 0 1)
  SF-OPTION     _"位置 (相対/絶対) " '(_"相対値" _"絶対値")
  ;SF-ADJUSTMENT _"X (Horizontal) " '(0 -8000 8000 1 100 0 1)
  ;SF-ADJUSTMENT _"Y (Vertical) " '(0 -8000 8000 1 100 0 1)
  ;SF-OPTION    _"Coordinates " '(_"Relative Value" _"Absolute Value"))
)

(script-fu-menu-register "script-fu-shiro-layer-shift"
"<Image>/Layer")


;Notice for Migration to GIMP 3 API
; register name/label/desc. start with _"..."
; proc gimp-drawable-offsets > gimp-drawable-get-offsets


参考迄。
関数の代替えチェックって、結構、大変かも、です。
今ですら、 205 項目ありますから。
ミスを防ぐ為には、機械的に、総舐め で、チェックさせるのが、一番。
なので、 暫定的な プログラム (.Netframework VB.net 将来 C# に移行予定) を書いて、文字列置換しています。
登録絡みの文字列冒頭へ "_" 挿入も プログラム で行っています。
未だ、不完全ですけれど ... 動いてはいます。
自分で書いたものが対象なので、 OK ですが、
書き手の癖や指向で Code では ばらつき が大きいので、使える汎用のもの を書くのは至難かも。
自分のものが対象なので、一応、役に立ってはくれていますが ... 。

また、此のケースでは登場しませんが、
Enum 名(数値で扱う処を名前で呼び出す様にした仕組み)の場合は、
GIMP の機能の刷新や推移と絡んでいるので、単純に 置換 と言う訳には行きません。
Procedure Browser で確認の上、書き換えて、更に、実行結果を見て 考察 が必要になるものが多いと思います。
端折って書いて仕舞えば、自動変換等では対応出来無いのだろう、と思っています。



0 件のコメント:

コメントを投稿