「all-layers-process-serial-number_m256.scm.txt」の編集履歴(バックアップ)一覧はこちら

all-layers-process-serial-number_m256.scm.txt」(2012/08/14 (火) 12:43:40) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

// scheme ;; ;; 全レイヤーに対し、以下のどちらかを行う Script-fu スクリプト ;; ・レイヤー名を連番でリネーム ;; ・連番テキストを描画 ;; ;; * レイヤーメニューに追加される ;; * 連番文字列を描画する際に使用するフォント種類は、 ;; 事前にフォントタブ内などで選択しておく。 ;; また、現在の前景色で描画される。 ;; ;; 余談: ;; * レイヤー名の最後に「(100ms)」等を書くと、 ;; GIFアニメ作成・再生の際、ウェイト調整ができる。 ;; ;; 2012/08/14 GIMP 2.8に対応。 (script-fu-register "script-fu-all-layers-process-serial-number" "全レイヤーに連番関連処理" "全レイヤーを連番リネーム、または、連番テキストを描画" "mieki256" "Public Domain" "2010-06-21,2012-08-14" "*" SF-IMAGE "Image" 0 SF-DRAWABLE "Drawable" 0 SF-OPTION "処理内容" '("連番リネーム" "連番を描画") SF-ADJUSTMENT "桁数" '(4 1 10 1 5 0 1) SF-ADJUSTMENT "開始番号" '(0 0 9999999 1 5 0 1) SF-TOGGLE "逆順" FALSE SF-STRING "付加文字列(前)" "" SF-STRING "付加文字列(後)" "" SF-ADJUSTMENT "描画位置 X" '(0 0 9999 1 10 0 1) SF-ADJUSTMENT "描画位置 Y" '(0 0 9999 1 10 0 1) SF-ADJUSTMENT "フォントサイズ(pixel)" '(24 1 9999 1 10 0 1) ) (script-fu-menu-register "script-fu-all-layers-process-serial-number" "<Image>/Layer") (define (script-fu-all-layers-process-serial-number image drawable job ; 処理種類 digits ; 桁数 start ; 開始番号 revfg ; 逆順フラグ prefix ; 前に付加する文字列 suffix ; 後に付加する文字列 x ; 描画位置 x y ; 描画位置 y size ; フォントサイズ ) ;; ---------------------------------------- ;; GIMP2.6 か GIMP2.4 なら #t を、そうでなければ #f を返す (define (script-fu-check-gimp26) (let ((version-head (substring (car (gimp-version)) 0 4))) (or (string=? version-head "2.6.") (string=? version-head "2.4.")))) ;; ---------------------------------------- ;; 通常レイヤーのみのレイヤーID一覧(list)を取得する ;; 引数は、(vector->list VECTOR) で、listにして渡すこと。 (define (script-fu-get-layers-list ls) (if (null? ls) ;; 空リストだった場合 '() (let* ((layer (car ls)) ;; 今チェックしてるレイヤー (layer-rest (cdr ls))) ;; 残りのレイヤー (if (= (car (gimp-item-is-group layer)) 0) ;; 通常レイヤーだった場合 (cons layer (script-fu-get-layers-list layer-rest)) ;; レイヤーグループだった場合 (let* ( ;; 子レイヤーの一覧を取得 (child (cadr (gimp-item-get-children layer))) (child-list (vector->list child))) (append (script-fu-get-layers-list child-list) (script-fu-get-layers-list layer-rest))))))) ;; ---------------------------------------- ;; 通常レイヤーのみのレイヤーID一覧(vector)を取得する (define (script-fu-get-layers-array image) (if (script-fu-check-gimp26) ;; GIMP 2.6用 (cadr (gimp-image-get-layers image)) ;; GIMP 2.8以降用 (let* ((layers (gimp-image-get-layers image)) (layer-array (cadr layers)) ; レイヤーID一覧(vector) (layer-list (vector->list layer-array)) ; レイヤーIDリスト(list) ) (list->vector (script-fu-get-layers-list layer-list))))) ;; ---------------------------------------- ;; 桁数分を「0」で埋めた文字列を作成して返す関数 (define (gen-numstr prefix start count digits suffix) (let* ((zeros (make-string 10 #\0)) ; "000..."を作成 (str (number->string (+ start count))) (num (string-append zeros str)) (pos (- (string-length num) (max digits (string-length str))))) (string-append prefix (substring num pos) suffix))) ;; ---------------------------------------- ;; メイン処理 (let* ((layer-array (vector->list (script-fu-get-layers-array image))) ; レイヤーlist取得 (layers-len (length layer-array)) ;; レイヤー枚数取得 (font (car (gimp-context-get-font))) ;; フォント種類取得 (num 0) (stepvalue 0)) ;; カウンタ開始番号とステップ値を設定 (set! num (if (= revfg FALSE) (- layers-len 1) 0)) (set! stepvalue (if (= revfg FALSE) -1 1)) (gimp-image-undo-group-start image) ; Undo Start ;; レイヤー枚数分ループ処理 (let loop ((lis1 layer-array)) (if (null? lis1) #t (let ((layer (car lis1)) (str (gen-numstr prefix start num digits suffix))) (if (= job 0) ;; レイヤー名変更 (gimp-layer-set-name layer str) ;; 文字描画 (let ((txt 0)) ;; 指定レイヤーをアクティブに (gimp-image-set-active-layer image layer) ;; 文字描画 (set! txt (car (gimp-text-fontname image layer x y str 0 TRUE size PIXELS font))) ;; 選択領域を固定 (gimp-floating-sel-anchor txt))) (set! num (+ num stepvalue)) ; カウンタ増減 ;; 再帰でループ (loop (cdr lis1))))) (gimp-image-undo-group-end image) ; Undo End (gimp-displays-flush) ; 再描画 ))

表示オプション

横に並べて表示:
変化行の前後のみ表示: