GIMP 3.0.0-RC3 では 動か無かった gimp-text-layer-new ですが、
最新の git Version (Nightly) で正常に機能する様になったので、
其の辺りの事を書いて見ましょう。
今迄の書き方は ... 通りませぬ。
少しずつですが、GIMP Script 群 を 3 時代に向けて書き直し出しました。
先ずは、比較的 簡単? な Script-Fu から。
でも、 Text Layer 作成を扱うもの は GIMP 3.0.0-RC3 と Script-Fu v3 で、
コケていたのですが ... 。
漸く、 git Version (Nightly) で正常に機能する様になったのです。
原因は、一部の引数 が機能していなかった所為です。
恐らく、次期 の RC 若しくは RC が取れた正式版 でお披露目になる筈です。
此処では、一足先に、Text Layer の扱い方に触れて置きます。
利用する言語は Script-Fu そう Scheme (LISP) です。
幾つか、ポイントを。
Font の呼び出しは 名前 では無く id に変更されています。
どうやら、
利用フォントに依って、名前の重複があった様で、
其れへの対応 と聞いています。
基本的に、大多数の 要素 が id で処理されています。
???-get-by-name の類は 正確に答えを返さ無いケースがあると思って下さい。
色に関しては、3要素から4要素へと変わっています。
基本は RGB の三つ と 透明度 と です。
"black" "white" "red" 等の 既登録名も使える様です。
また、現状では、言語設定に係わらず、
文字の単位は INCH の様で、
設定変更は UNIT-PIXEL UNIT-POINT 等の ENUM で可能です。
Default の UNIT を取って 其れを引数に代入すると、
とても大きな文字が出てびっくり!しますので、ご用心を。
例 (define unit (gimp-get-default-unit)) 、
小さな画像で試していたら、遥か外に飛び出す程の大きさでした。
Console の経緯でご覧戴きます。
> (script-fu-use-v3)
()
> (define image (gimp-image-new 600 400 RGB))
image
> (gimp-display-new image)
1
> (define text "test")
text
> (define font (gimp-font-get-by-name "Monospace Bold"))
font
> font
2446
> (define unit UNIT-POINT)
unit
> unit
3
> (define size 17.0)
size
> (gimp-text-layer-new image text font size unit)
2
> (define parent 0) (define position 0)
parentposition
> (gimp-image-insert-layer image 2 parent position)
()
> (define unit UNIT-PIXEL)
unit
> unit
0
> (define layer (gimp-text-layer-new image text font size unit))
layer
> layer
3
> (gimp-image-insert-layer image layer parent position)
()
> (gimp-displays-flush)
()
[2025/03/08] 追記
おっとぉぅ、すっかり忘れていました。
上の例は GUI に設定された Foreground Color で描画しています。
Text Layer の色を指定するなら、以下を参照して下さい。
色指定構文の位置は、変数 layer に値がセットされた後なら OK です。
Context の Color を変更する手もありますが ... 。
(script-fu-use-v3)
(define image (gimp-image-new 600 400 RGB))
(gimp-display-new image)
(define text "test")
(define font (gimp-font-get-by-name "Monospace Bold"))
(define unit UNIT-POINT)
(define size 17.0)
(define layer (gimp-text-layer-new image text font size unit))
(define parent 0) (define position 0)
(gimp-image-insert-layer image layer parent position)
(define color "red") ; Color=Red value=registed-name
(define color '(0 0 0 255)) ; Color=Black value=RBGA-list
(gimp-text-layer-set-color layer color)
(gimp-displays-flush)
0 件のコメント:
コメントを投稿