2018年4月15日日曜日

GIMP Script-Fu (12) GIMP バージョンの影響

嘗て書いて現役で使っていた GIMP の Script-Fu が ... 。
動かない! ... 。
はい。
そんな事もありますって。  :( 。


GIMP も、いよいよ、2.10 の時代になるのですね。

嬉しい様な、大変な様な ... 。

はい。
手放しで喜べない 事情 もあります。

それは、
嘗て書いて、未だに、現役で使っている Script-Fu 絡みの事です。

当初、
GIMP 2.9.6 辺りから触り出して、2.9.8 そして 2.10.0-RC1 と弄っては来ました。
でも、そのレベルは 触ると言うよりは 触れる です。
恐る恐る ですし、 深い処 迄 見ている訳ではありませんでした。

自分でも、Script-Fu 等を書くのですが、
それも、試していない程だったのです。

ようやく、重い腰を上げ、触ってみると ... 。  幾つかの Script -Fu & -Py です。.


あらまぁ ... 。

TRANS-IMAGE-FILL が 無くなってしまって、レイヤー追加 が落とされてしまいます。
正確には、Procedure ; gimp-drawable-fill で Enum の 文字列が変更されていて、
嘗て動いていた記述では 未定義変数 と見なされて コケて いますね。

Procedure Browser を覗くと、
GIMP 2.10.0-RC1 では FILL-TRANSPARENT (3) に変更されていますね。
GIMP 2.8.22 でも、TRANSPARENT-FILL (3) に変更されているのですが、
GIMP 2.8.22 上での実行では、 何とか落とされずに動いていました。

そう、元は TRANS-IMAGE-FILL と書いていたのです。

  かなり古い書き方ですね。
  Procedure Browser で確認せずに、昔の 記法 で書いて動いていたので ... 。
  チェックミスの類です。
  動けば善し レベル では こうした 落とし穴 が存在します。

  同じ様に、将来的に変る予定のものには、その旨の表記があったりしますね。
  今回は ... 。
  論外 の 書き方 なのでしょう。

Enum は 文字でなく INT32 で書くのが 吉 なのでしょうか?。

分かり易いので、文字列で記述していましたが、
バージョンが変わり、Enum の文字が変更されれば、途端に、機能しなくなっちゃう ... 。

でも、
もし、もしですよ、
Enum 定義で 順番が変われば、INT32 の番号も変わり、全く別のものを指す 事になる恐れだってありますが。
そもそも、 その場合、どの数字が災いなのか分かり難いし、
パニックに陥る事は必然な気もします ... 。


さて、
ざっと、自分で書いたものを調べて見ると  ( Windows cmd.exe FINDSTR command )、


C:\Users\UserA>findstr "TRANS-IMAGE-FILL" "C:\users\UserA\.gimp-2.8\scripts"

C:\Users\UserA>findstr "TRANS-IMAGE-FILL" "C:\users\UserA\.gimp-2.8\scripts\*.scm"
C:\users\UserA\.gimp-2.8\scripts\script102.scm:          (gimp-drawable-fill layerDID TRANS-IMAGE-FILL)
C:\users\UserA\.gimp-2.8\scripts\script102.scm:          (gimp-drawable-fill layerSID TRANS-IMAGE-FILL)
C:\users\UserA\.gimp-2.8\scripts\script102.scm:          (gimp-drawable-fill layerIID TRANS-IMAGE-FILL)
C:\users\UserA\.gimp-2.8\scripts\rscript301.scm:          (gimp-drawable-fill layerPID TRANS-IMAGE-FILL)


(define TRANS-IMAGE-FILL 3) 等と書いてしまったファイルを突っ込み逃げる手段もあるとは思いますが ... 。
今、悩みまくっています。
差し当たり、 TRANS-IMAGE-FILL を  TRANSPARENT-FILL に書き替えれば、
GIMP 2.10.0-RC1 でも 正常稼働 する様ですが。

つまり、想像ですが、こういう事だったのでしょう。
GIMP 2.8 系では、大昔の Enum を Alias として保持してくれていたが、
GIMP 2.9/2.10 系になると、直近の 2.8.22 等との差分は吸収しても、昔の記法は面倒見ない!、と。.


実は、
これ以外にも、

バージョンアップに伴って、 廃止された Procedure や 追加されたモードの類 が、
多々あります。

先の例は Enum GimpFillType でしたが、
Enum GimpLayerModeEffects 辺りも ごっそり 増えています。




コマンドやモードの増減変更 に関しては、
とても、私個人の力量では追い切れないので、省略しますが、
そのうち、何方かが、纏めて下さると思いますので、
暫くは、 Internet Surfing を怠らない様にした方が良いかも です。


0 件のコメント:

コメントを投稿