2024年2月3日土曜日

GIMP 2.99.17+ gimp-image-set-active-layer が無い!

GIMP 2.10.x で多用されていたと思われる、
gimp-image-set-active-layer ですが、
GIMP 3 の時代には 無用 となった様です。
Script を直さないと、コケますよ!。


gimp-image-set-active-layer ですが、
gimp-image-set-active-layer は 単独 Layer 中心 だった GIMP 2.10.x のものですが、
複数 Layers に処理の軸足を移した GIMP 2.99.17 では 撤去 されていますね。
今、GIMP 2.99.16 でも確認しましたが、既に、削除されていました。

  うわぁ、既に 変わってたんだぁ!。

はい。
Procedure Browser を見る限り、
旧版の gimp-image-set-active-layer は見当たりません。

無い Procedure(Function) を呼び出す形 になりますから、
既存の Script で 此れ を呼び出していれば、
そりゃぁ、2.99.17 でも、コケますよね。
直さなければ 無理! ってもんです。


少し、試して見ましょう。

Script Console  GIMP 2.99.17
Opened ImageID #1

> (gimp-image-get-selected-layers 1)
(1 #(20))
> (gimp-item-get-name 20)
("cxm0xxf1_DSC_xxxx.JPG CR_B35C10")
> (gimp-item-get-name 21)
("cxm0xxf1_DSC_xxxx.JPG")
> (gimp-image-set-selected-layers 1 2 #(20 21))
(#t)
> (gimp-image-set-selected-layers 1 1 #(21))
(#t)


ひとつのレイヤーを選択した状態から、
例えば、(gimp-image-set-selected-layers 1 2 #(20 21)) すると、
ふたつのレイヤーが選択状態になり、
GUI から 移動 させると、
旧版の 連結 と同じ効果が得られます。
そして、(gimp-image-set-selected-layers 1 1 #(21)) すると、
単一レイヤーが選ばれます。
此れが昔の (gimp-image-set-active-layer 1 21) に相当する のでしょう。
単一も複数も 同じ構文 で指定する訳ですね。



因みに、
gimp-image-get-layers 等の戻り値は配列ですから、
The list of layers contained in the image. と説明にはありますが、
GimpObjectArray なので、Scheme で言う処の リスト ではありませんね。
操作で、出番の多そうな、複数取得 or ID 取得 は こんな感じ ですね。
cadr や aref を使います。

Script Console  GIMP 2.99.17
Opened ImageID #5

>     (define layers (cadr (gimp-image-get-layers 5)))
layers
>     (define layer1 (aref layers 0))
layer1
>     (define layer2 (aref layers 1))
layer2
> layers
#(4 3)
> layer1
4
> layer2
3



0 件のコメント:

コメントを投稿