#!/usr/bin/env ruby1.8
#
#= dcmodel thumbnail generate ruby script
#
#  Editor :: kawahara
#  Version:: 2014/10/28 14:54:23
#
#== Overview
#
#This file is generate by following ruby script automatically.
#
#      /home/kawahara/dcmodel-thum.rb
#      version "$Revision: 1.31 $ : $Date: 2007/05/22 05:13:14 $"
#
#Please edit this file according to your purpose.
#
#== Usage
#
#Please check following sample page and reference manual.
#
#  http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-sample
#  http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-rdoc
#
##################################################

require "/home/kawahara/dcmodel-thum.rb"

######################################################
# DCModelThumbnail のインスタンスを作成 (必須)
thumb = DCModelThumbnail.new

# サムネイル実行コマンド (必須)。最後に実行すること
END{
  thumb.create
}

#thumb.copyright = "GFD Dennou Club"
                              # コピーライト

thumb.index     = "../sample_thum"
                              # 作成されるサムネイルのファイル名 (拡張子除く)

#thumb.index_ext = ".htm"
                              # 作成されるサムネイルの拡張子名

thumb.infofile  = "#{File.basename(thumb.index)}.txt"
                              # 「情報ファイル (infofile)」のファイル名

#thumb.ext_list.push("bmp")
                              # 画像ファイルとして認識させたい拡張子の
                              # 追加。デフォルトでは 
                              # gif, png, jpg, jpeg,
                              # GIF, PNG, JPG, JPEG
                              # が認識される。

#thumb.headlimit = "headlimit_"
                              # headlimit に当てはまらないものは画像と
                              # しては無視され、当てはまるものは「情報
                              # ファイル」において、接頭部分 headlimit 
                              # を省略して指定することが可能となる。

#thumb.blankfig = true
                              # 画像ファイル名を表示しない

#thumb.figdir    = "../figdir"
                              # 絵のあるディレクトリの名前。
                              # 必ず存在していなければならない。

#thumb.thumbnaildir    = "../thumbdir"
                              # サムネイル画像を置くディレクトリの名前

#thumb.thumbnailtail    = "_thumb.png"
                              # サムネイル画像の拡張子名

#thumb.thumbnailpage = "1"
                              # サムネイル画像化する元画像のページ番号

#thumb.convert_cmd = "convert -depth 8 -geometry"
                              # convert コマンドおよびオプション。この
                              # 後ろに画像サイズが 200x150 のような形
                              # 式で指定される。

#thumb.convert_overwrite = false
                              # convert コマンドが実行される際、既に出
                              # 力先のファイルがある場合に上書きするた
                              # めのフラグ。これが false の場合、出力
                              # 先のファイルが存在し、且つ元のファイル
                              # よりも新しい場合は変換を行わない。

#thumb.css       = "/GFD_Dennou_Club/ftp/arch/dcmodel/htmltools/dcmodel.css"
                              # スタイルシートファイル

#thumb.rd2_path  = "/usr/bin/rd2"
                              # rd2 コマンドへのパス

#thumb.rd2htmlextlib = "/GFD_Dennou_Club/ftp/arch/dcmodel/lib/ruby/1.8"
                              # rd2-ext-lib へのライブラリへのパス

#thumb.mksigen = false
                              # SIGEN ファイルを作らない場合は false 
                              # にセットする

#thumb.norobots = true
                              # HTML のロボット検索を禁止する場合には 
                              # true にセットする

#thumb.img_width  = 200
                              # 画像ファイルサイズ (幅)

#thumb.img_height = 150
                              # 画像ファイルサイズ (高さ)

#thumb.figtable_num = 3
                              # 横にならべるファイル数

#thumb.style = <<-STYLE
#  a:link { color:#269900; }
#  a:visited { color:#269900; }
#  a:hover { color:#99FF33; }
#STYLE
                              # スタイルシートを直接設定するためのもの 
                              # (css ファイルに書き込む情報を直接指定
                              # できる)

#thumb.html_author  = "kawahara"
                              # html の作成者情報 (デフォルトはユーザ
                              # アカウント名が自動取得される)

thumb.title     = "dcmodel-thum : 実験結果サムネイル簡易作成スクリプト"
                              # html ヘッダのタイトル

                              # 本体に書き出すメッセージ。サムネイルの
                              # 部分よりも上に出力される。この変数自体
                              # は Array オブジェクトで、その内部に 
                              # String オブジェクトが格納される。

                              # フッターメッセージ。
                              # "=" ではなく、"<<" で代入することに注意！！
thumb.footer    = Array.new
#thumb.footer    << <<-Footer
# 
#Footer

                              # メッセージ。
                              # "=" ではなく、"<<" で代入することに注意！！
thumb.message   = Array.new
thumb.message   << <<-Message
=begin
[((<地球流体電脳倶楽部|URL:http://www.gfd-dennou.org>))]
[((<dcmodel|URL:http://www.gfd-dennou.org/library/dcmodel>)) |
((<dcmodel-tools|URL:http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/SIGEN.htm>))]
[((<dcmodel-thum.rb|URL:http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-rdoc>))]

= dcmodel-thum : 実験結果サムネイル簡易作成スクリプト

* ((<概要・利用・動作環境の概説>))
* ((<バージョン 1.1 (オリジナルやまだ由ツール) からの仕様変更>))
* ((<利用の手引き>))
* ((<画像の用意>))
* ((<dcmodel-thum.rb の用意>))
* ((<とりあえず実行>))
* ((<子スクリプトの実行>))
* ((<できたものを見てみる>))
* ((<スクリプトの編集 (入門編)>))
* ((<再度実行>))
* ((<「情報ファイル」の編集 (入門編)>))
* ((<もう一度実行>))
* ((<スクリプトの編集 (応用編)>))
* ((<「情報ファイル」の編集 (応用編)>))


== 概要・利用・動作環境の概説

((<dcmodel-thum.rb の rdoc マニュアル|URL:http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-rdoc>))

Overview と Operation Environment と Usage をさらっと読んだら戻ってきてね。

なお、以下の URL にはこの出力結果と同等のものが置いてあるはずです。

((<dcmodel-thum.rb の サンプル|URL:http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-sample>))

== バージョン 1.1 (オリジナルやまだ由ツール) からの仕様変更

ここは、バージョン 1.2 以降から利用している人には不要です。
バージョン 1.1 のオリジナルのやまだ由ツールから利用している
方は、以下の変更点にご注意ください。

  * 「情報ファイル (infofile)」の書式
    * 画像名に拡張子を加えるようになった
    * 1.1 では <画像名> : <コメント> だったが、
      現在は <画像名> : <修飾子> : <コメント> になっている。
  * pathname.rb を利用するため、ruby 1.8 を利用するか、1.6 ならば
    実行の際に RUBYLIB のパスが通ったところに pathname.rb が必要
    である。


== 利用の手引き

=== dcmodel-thum.rb の入手の方法

((<dcmodel-thum.rb スクリプト本体|URL:http://www.gfd-dennou.org/library/dcmodel/bin/dcmodel-thum.rb>)) をダウンロード
してください。もしくは cvsroot をもっている www.gfd-dennou.org にログインが
可能であれば、cvs からも直接取得が可能です。

    $ CVS_RSH=ssh; export CVS_RSH
    $ cvs -d :ext:www.gfd-dennou.org:/GFD_Dennou_Club/ftp/arch/dcmodel/cvsroot checkout dcmodel-tools

既に www.gfd-dennou.org にログインした状態であれば、以下のコマンドのみで
取得可能です。

    $ cvs -d /GFD_Dennou_Club/ftp/arch/dcmodel/cvsroot checkout dcmodel-tools


== 画像の用意

サムネイル化しようとする画像を (({figdir })) という
ディレクトリに置いてください。現在、画像として認識されるのは、
(({ gif, png, jpg, jpeg, GIF, PNG, JPG, JPEG }))
です。アニメーション gif にも一応対応していますが, サムネイル化する
ページ番号は全画像共通にしか設定できません. 

他の形式の画像を認識させたい場合は ((<スクリプトの編集 (入門編)>)) 
を参照してください。とりあえず、
まずは (({figdir })) を作成して下さい。

== dcmodel-thum.rb の用意

((<dcmodel-thum.rb の入手の方法>)) で取得した dcmodel-thum.rb は
(({ thum-src })) というディレクトリを作ってそこに置いて下さい。
結果的に、以下のような構成になっていると良いです。

    ./figdir/*****.jpg
             *****.gif
    ./thum-src/dcmodel-thum.rb


== とりあえず実行

(({ thum-src })) へ移動し、dcmodel-thum.rb を実行してください。

    $ cd thum-src
    $ ruby dcmodel-thum.rb

すると、dcmodel-thum-make.rb という実行スクリプトが作成される
はずです。

== 子スクリプトの実行

今度は dcmodel-thum-make.rb を実行します。

    $ ruby dcmodel-thum-make.rb

すると、(({ ../sample_thum.htm }))というファイルが作成されます。
これがサムネイルの HTML です。


== できたものを見てみる

(({ ../sample_thum.htm })) をブラウザで見てみてください。
このページと同様のメッセージが書かれたページが出力されている
はずです。

figdir に画像をおいてあった場合、それらが
下にサムネイル化されているはずです。


== スクリプトの編集 (入門編)

このままでは使えないので、(({ dcmodel-thum-make.rb })) を編集してください。
まず、ここに記述されるコメントを削除しましょう。

以下の部分以降を全て消してください。

    thumb.message   << <<-Message
    =begin
    [((<地球流体電脳倶楽部|URL:http://www.gfd-dennou.org>))]
    [((<dcmodel|URL:http://www.gfd-dennou.org/library/dcmodel>)) |
                            :
                            : 

次に、作成される HTML ファイルの名前を希望のものに変更してください。
下記のように infofile を設定しておくと「情報ファイル」(後述) の
名前も一緒に変更されて便利です。

   thumb.index     = "../result"
   thumb.infofile  = "\#\{File.basename(thumb.index)\}.txt"

画像として認識したい拡張子を増やしたい場合は以下のようにしてください。

   thumb.ext_list.push("bmp")

画像ファイル名が長く、ファイル名の頭の部分を取り除いて表示したい、
またはファイル名の頭で出力するファイルの選択を行いたい場合は
以下のように設定してください。

   thumb.headlimit = "exp_name_"

画像ファイル名を HTML に表示したくない場合は以下のように設定してください。
個別的にファイル名を非表示にしたい場合は
((<「情報ファイル」の編集 (応用編)>)) の ((<ファイル名非表示>))
を参照してください。

   thumb.blankfig = true

画像の縦横サイズや、サムネイルで横に表示する画像の数は以下のように
設定してください。

   thumb.img_width  = 200
   thumb.img_height = 150
   thumb.figtable_num = 3

自動生成されるサムネイル画像の置き場と画像の名前の最後部を
次のように指定して下さい. 

   thumb.thumbnaildir  = "../thumb"    # サムネイル画像を置くディレクトリ名
   thumb.thumbnailtail = "_thumb.png"  # サムネイル画像の拡張子名

アニメーション gif 等複数ページを束ねた画像に対してはサムネイル化する
ページ番号を 1 より大きい値に設定できます. 

    thumb.thumbnailpage = "50"      # サムネイル画像化する元画像のページ番号

スタイルシートに書き込む設定を単体でも指定可能です。
例えば、リンクに関する動作を設定するには以下のようにします。

   thumb.style = <<-STYLE
     a:link { color:#269900; }
     a:visited { color:#269900; }
     a:hover { color:#99FF33; }
   STYLE

元々の (({ thumb.title ... })) の行を例えば以下のように書き換え、
タイトルを設定してください。(これは HTML の head タグ内の 
title タグに設定されます )

  thumb.title     = "実験結果"

ちょうどこのチュートリアルが作成される場所に書き出す、
メッセージを設定してください。ここに書き込む内容がそのまま
HTML として出力されるので、HTML タグも書き込んでください。

((* 注意！！ *)) message に代入するときの記号は必ず 「=」
ではなく、「<<」にしてください。

    thumb.message   << <<-MSG
    <h1>実験結果</h1>

    <p>
      以下は実験結果を一覧したものである
    </p>

    <h2>実験設定</h2>

    <ul>
      <li>解像度       : T42L20
      <li>時間ステップ : 30 s
    </ul>
                            :
                            : 
      MSG

サムネイル部分の下にメッセージを記述したい場合は、以下のように
設定しましょう。書き方は上記の message と同様です。

    thumb.footer  << <<-MSG
    =begin
    == 参考資料
    
    * 地球流体電脳倶楽部 dcmodel プロジェクト.
      ((<URL:http://www.gfd-dennou.org/library/dcmodel>)), 
      地球流体電脳倶楽部.
    
    =end
    MSG


== 再度実行

再度 dcmodel-thum-make.rb を実行します。

    $ ruby dcmodel-thum-make.rb

すると、上記の記述が反映された (({ ../sample_thum.htm })) が
作成されます。ブラウザで確認してください。

ただし、これだけでは、サムネイル内のコメントを編集できないので、
以下の ((<「情報ファイル」の編集 (入門編)>)) を参照してください。


== 「情報ファイル」の編集 (入門編)

dcmodel-thum-make.rb を実行したディレクトリには上記で設定した
infofile に対応したファイルが作成されるはずです。

   thumb.infofile  = "\#\{File.basename(thumb.index)\}.txt"

このファイルを編集することで、サムネイル内にコメントを記述できます。

まず中身を見てみてください。

    fig1.png::
    fig2.gif::
    fig3.jpg::
    fig3.png::

これは、以下のようなフォーマットになっています。

    <画像名> : <修飾子> : <コメント>

<修飾子> に関しては ((<「情報ファイル」の編集 (応用編)>))
を参照してください。


=== 画像の順序の入れ替え

サムネイルには「情報ファイル」に書き込まれた順に書き出されます。
入れ替えたい時には行ごとその位置を入れ替えてください。

    fig2.gif::
    fig3.jpg::
    fig3.png::
    fig1.png::

=== コメント付け

コメントをつけたいときには、以下のようにしてください。

    fig1.png:: 1 回目の実験
    fig2.gif:: 2 回目の実験
    fig3.jpg:: 3 回目の実験 (jpg 画像)
    fig3.png:: 3 回目の実験 (png 画像)

HTML タグはそのまま認識されるので、以下のように書き込むことが
可能です。

    fig1.png:: <hr> 1 回目の実験 <br> 失敗 <hr>


=== コメントアウト

コメントアウトしたい場合は行頭に 「#」を書き込みます。

    # fig2.gif:: 2 回目の実験


=== ラベル

画像ではなく、コメントのみを書き込みたいときは、<画像名> に
「label」と記述します。

    label:: <hr><table><tr><td>実験設定 2</td><td>パラメータ 3</td></tr></table>

=== スペース

一つ分飛ばして表示したい時は以下のように <画像名> の部分に何も書かないで
下さい。
  
    　::


== もう一度実行

再度 dcmodel-thum-make.rb を実行します。

    $ ruby dcmodel-thum-make.rb

すると、上記の記述が反映された (({ ../sample_thum.htm })) が
作成されます。ブラウザで確認してください。


== スクリプトの編集 (応用編)

((<スクリプトの編集 (入門編)>)) の応用版です。

((<dcmodel-thum.rb の rdoc マニュアル|URL:http://www.gfd-dennou.org/library/dcmodel/doc/dcmodel-tools/dcmodel-thum-rdoc>))
の DCModelThumbnail クラスの Attribute に設定できる全ての値
の情報があるので、詳しくはそちらを参照ください。

=== 電脳サーバ以外で使うために

電脳サーバ以外での利用を考える場合には、下記の設定も編集する
必要があるかもしれません。

コピーライト

   thumb.copyright = "GFD Dennou Club"

スタイルシート

   thumb.css       = "/GFD_Dennou_Club/ftp/arch/dcmodel/htmltools/dcmodel.css"

rd2 コマンドへのパス (これは、下記で紹介する RD という書法で
書く必要が無ければ、設定の必要はありません)

   thumb.rd2_path  = "/usr/bin/rd2"

rd2html-ext-lib の設定 (これも、下記で紹介する RD という書法で
書く必要が無ければ、設定の必要はありません)

   thumb.rd2htmlextlib = "/GFD_Dennou_Club/ftp/arch/dcmodel/lib"
    

=== RD を使いたい人のために

中には、「RD
((-
RD (Ruby Documents) や rdtool に関しては、
((<RD事始め|URL:http://www.rubyist.net/~rubikitch/computer/rd-intro/>))
や
((<RAA - rdtool|URL:http://raa.ruby-lang.org/project/rdtool/>))
を参照してください。
-)) 
で書きたい！！  HTML でなんか書きたくない！！」という
わがままは方もいるかもしれません。(これを書いている私が正にそうです。
そのためにこのツールを改良したと言っても過言ではありません…)。

そういう方は、メッセージの設定の際に、頭に 「=begin」、一番最後に
「=end」と記述してください。

    thumb.message   << <<-MSG
    =begin
    = 実験結果

    以下は実験結果を一覧したものである

    == 実験設定

    * 解像度       : T42L20
    * 時間ステップ : 30 s
                            :
                            : 
    =end
    MSG

すると、この情報を rdtool で HTML 化したものをサムネイルのファイルに
埋め込みます。

=== RT を使いたい人のために (未実装)

((* 注意： *)) この機能はまだバージョン $Revision: 1.31 $ : $Date: 2007/05/22 05:13:14 $ では組み込まれていません。

他にも、「RT
((-
((<RT|URL:http://www.rubyist.net/~rubikitch/computer/rt/>))
を参照してください。
-)) 
で書いてみたい！！」という方もいるかもしれません。

そういう方は、メッセージの設定の際に、頭に 「=begin RT」、一番最後に
「=end」と記述してください。

    thumb.message   << <<-MSG
    =begin RT
    caption = 表テスト

         , 人間, == , 犬 , ==
     ||  , 男  , 女 ,オス,メス

      x  , 1.0 , 2.0, 1.1, 1.2
      y  , 0.4 , 0.5, 0.3, 0.1

    =end
    MSG

すると、この情報を rttool で HTML 化したものをサムネイルのファイルに
埋め込みます。


=== SIGEN ファイル生成のコントロール

デフォルトではサムネイルファイルの作成と同時に SIGEN ファイル
<http://www.gfd-dennou.org/library/cc-env/mksigen/desc.htm> を
作成しますが、不要である場合は mksigen を false にしてください。

   thumb.mksigen = false


=== ロボット検索の禁止

生成するサムネイルをロボット検索して欲しくない場合には
norobots を true にしてください。

   thumb.norobots = true

=== サムネイル画像変換ツールの変更

デフォルトでサムネイルを変換するコマンドおよびオプションは
以下の通りです。

    convert -depth 8 -geometry

これを変換したい場合には以下のように設定を行ってください。
ただし、空白の場合やシステムに存在しないコマンドが設定されている
場合にはエラーを返します。

   thumb.convert_cmd = "mogrify -geometry"

デフォルトでは既に出力先にファイルが存在し、且つ元のファイルよりも
新しい場合、時間の短縮のため、画像ファイルの変換を行いません。
もしも毎回必ずファイルの変換を行いたい場合は以下のように設定してください。

   thumb.convert_overwrite = true


== 「情報ファイル」の編集 (応用編)

((<「情報ファイル」の編集 (入門編)>)) の応用版です。

=== 右寄せ・左寄せ

<修飾子>に ">" を書き込むと右寄せに、"<" を書き込むと左寄せになります。

    fig1.png:>: 右寄せだよ
    fig2.gif:<: 左寄せだよ
    fig3.jpg:: デフォルトは真ん中寄せだよ


=== 複数行入力

<修飾子>に "m" を書き込むことで複数行入力が可能です。
なお、上記の ((<右寄せ・左寄せ>)) と併用する場合にはカンマ "," で
区切ります。内容自体は "{" と "}" でくくります。

    fig1.png:m:{
    <p>
     複数行入力を行うよ。
     こういうことできるよ。
     便利だねー。テーブルも書きやすいね。
    </p>
    }
    fig2.gif:>,m:{
    <ul>
      <li> 併用するにはこうするよ。
    </ul>
    }

=== ファイル名非表示

<修飾子>に "b" を書き込むことでファイル名の表示を抑制します。

    fig1.png:b: ファイル名表示が抑制されます

全てのファイル名を一括で抑制する方法は ((<スクリプトの編集 (入門編)>))
を参照してください。(属性 blankfig を true に設定します)。


=== RD を使いたい人のために

<修飾子>に "rd" を書き込むことで、文字列は RD として解釈され、
rdtool で HTML に変換されます。RD でページ内リンクを作成する 
記法も利用可能で、本文やフッタ、サムネイル内のヘッダにリンクを
貼ることもできます。(例 ((<ヘッダ1>))、((<ヘッダ2>)) )

    fig1.png:m,rd:{
    ((<りんく|URL:./>)) はこんな感じで書けるよ。
    * リストも
      * 簡単
    RD ラベルを使用したページ内リンクは
    ((<RD を使いたい人のために>)) のように記述すれば OK です。
    }


=== RT を使いたい人のために (未実装)

((* 注意： *)) この機能はまだバージョン $Revision: 1.31 $ : $Date: 2007/05/22 05:13:14 $ では組み込まれていません。

<修飾子>に "rt" を書き込むことで、文字列は RT として解釈され、
rttool で HTML に変換されます。

    fig1.png:m,rt:{
    caption = 表テスト

         , 人間, == , 犬 , ==
     ||  , 男  , 女 ,オス,メス

      x  , 1.0 , 2.0, 1.1, 1.2
      y  , 0.4 , 0.5, 0.3, 0.1
    }


=== 「情報ファイル」からタイトルの設定

((<スクリプトの編集 (入門編)>)) でタイトルの設定に関して
記述しましたが、「情報ファイル」からの設定も可能です。
<画像名> に title と記述し <コメント> にタイトルを書き込んでください。

     title:: 実験設定 其の弐

((<スクリプトの編集 (入門編)>)) は上書きされます。


=== 「情報ファイル」から本文メッセージの追加

((<スクリプトの編集 (入門編)>)) で本文メッセージの設定に関して
記述しましたが、「情報ファイル」から追加も可能です。
<画像名> に message と記述し、本文メッセージを書き込んでください。

     message:m,rd:{
     = サンプルだー

     == 目次です

     === さらに目次です

     ((<ほげ|URL:thum/sample_thum.txt>))
     }
     message:m:{
     <b>HTML</b> ですが何か問題でも？
     <ul>
       <li>ちいさな  
       <li>テーブルを
       <li>作って    
       <li>みたよ♪
     </ul>
     <hr>
     }

=== 「情報ファイル」からフッターメッセージの追加

((<スクリプトの編集 (入門編)>)) でフッターメッセージの設定に関して
記述しましたが、「情報ファイル」から追加も可能です。
<画像名> に footer と記述し、フッターメッセージを書き込んでください。

     footer:m,rd:{
     == フッターです
     参考文献とか書き込むのに便利かもしれません。
     }

=end

Message

