Allegro GUI で日本語フォント使う。

  Allegro デフォルトの GUI はちょっと地味すぎるので よりかっこいいデザインの拡張GUIライブラリがいくつかリリースされています。
ここではAdime という GUIライブラリを紹介します。

OSXへインストールする方法

Adime (Allegro Dialogs Made Easy)
http://adime.sourceforge.net/
ライセンス:The ZLIB/LIBPNG license.

このAdime GUIライブラリは Windows 95 風のGUI を構成することができます。
導入には、配布サイトから adime-2.2.1.tar.gz をダウンロードしてきます。
説明書はreadme.txt 、HTML版は adime-2.2.1/docs/html/ ディレクトリ以下にあります。
OSX へのインストール方法は /adime-2.2.1/docs/build/macosx.txt を参照。

※OSXへのインストールは、
Allegro 4.1.18 + Adime 2.20 だとコンパイルは成功する、動作もする。(ただし、4.2.0にアップグレードした場合は使えなくなる)
Allegro 4.2.0β + Adime 2.20 だと コンパイルも失敗する。
現在の問題点:UTF8 文字列(ひらがなとか)が含まれたパスやファイル名が化ける。(これはAllegroシステムの問題かもしれない。)
Allegro 4.2.0 正式版 + Adime 2.21
Allegro4.20正式版では、UTF8文字列が含まれたファイルパスを正常に表示できるよう改善されました。

cd adime-2.2.1 ./fix.sh macosx cp ./misc/makefile.osx ./ misc/makefile.osx を いま作業しているディレクトリに コピーする。 そうしないとmakeしても -lalld が見つからないとエラーが出る。 make sudo make install
注意:説明書にかいてある makeall や installall だと なぜかエラーがでるので。 make , sudo make install を使います。 (OSX では フレームワークでのインストールが確認されている。) ○インストールのオプション Xcode 用に 埋め込みフレームワークと プロジェクトのテンプレートのインストール がオプションとして用意されている。 sudo make install が終わってから
sudo make install-framework
もしフレームワークを埋め込むなら
sudo make install-framework EMBED=1
もしテンプレートをインストールするなら
sudo make install-template
○テンプレートをインストールする場合、保存されるパスに注意 make install-template した場合、Projectbuilder用のパスにインストールされてしまう。 /Developer/ProjectBuilder Extras/Project Templates/Application/Adime Application Xcodeで使用するにはこれではダメなので、テンプレートの入っているAdime Applicationフォルダを、 /Library/Application Support/Apple/Developer Tools/Project Templates へ移動しておくとXcode から使う事ができる。 テンプレートをコピーする( スペースを含むパス名なので引用符で囲ってある。)
cp -r '/Developer/ProjectBuilder Extras/Project Templates/Application/Adime Application' '/Library/Application Support/Apple/Developer Tools/Project Templates/Application/Adime Application'
テンプレートをインストールしている場合は、新規プロジェクト作成で「Adime Application」という項目が できている。これを選択すると、 Allegro コードと Adime コードのひな形コードが生成される。 「グループとファイル」の設定も自動的になされているので。ビルド実行するだけでGUI表示ができる。 (テンプレートを使っている場合、フレームワークのために、「その他のリンカ設定」を変更する必要がある。) ○Xcode 上で開発する場合の設定「その他のリンカ設定」
基本的には、 "-lalleg"より前に"-ladime" をリンクする。 "-ladime" の代わりに "-ladimd" を指定すると デバッグモード -ladimd_s" あるいは "-ladime_s" を使えば、静的リンクされる。 -framework Adime を使えば、 フレームワークとしてリンクできる。 例: -L/usr/local/lib -framework Adime -lalleg-main
○スタンドアローンのアプリケーションを作りたい場合は フレームワーク あるいは、 埋め込みフレームワークとしてインストールする必要がある。
sudo make install-framework または sudo make install-framework EMBED=1
Xcode で新規Allegroプロジェクトを作成したあと、プロジェクトの 「グループとファイル」の Linked freamework に、Adime.framework を登録する。

○ユニフォントを使う方法。


(左はサンプルの unifont, 右は恵梨沙フォント)
ここでは、サンプル付属の example/exunicod.c の unifont.dat アーカイブのフォントを流用する方法を説明します。
 unicod.dat を プロジェクトディレクトリ内の build ディレクトリにコピーしておけばプログラムから読み込む事ができる。
ソースのほうは、部分だけ紹介。
set_uformat(U_UTF8);//Allegro を初期化する前に ユニコードに設定する allegro_init(); //データアーカイブファイルを読む DATAFILE *data; //アーカイブのデータをロードする data = load_datafile("./unifont.dat"); if (!data) { allegro_message(uconvert_ascii("Unable to load %s\n", "unifont.dat" ) );return -1; } //ロードされたフォンオブジェクトを adime で使用するフォントに設定する。 adime_font = data[0].dat; adime_title_font= data[0].dat; adime_button_font= data[0].dat; (set_gfx_mode する部分) //admie 初期化 adime_init(); //ダイアログ adime_lowlevel_dialogf( "Windowタイトル" , 10,10, 100, "Unicod.datのフォントを使用 %nothing[]%line[]%buttonrow[でかいボタン;CTRL+O;ENTER]", buttonrow_callback); //アーカイブは使い終わったら破棄する unload_datafile(data);
このunifont.dat をユーザーが用意したもの(TrueTypeフォントを画像化しgrabber でDATアーカイブに固める)を読み込む こともできます。 unifont.dat をgrabber で読み込むと 中のデータ構造がわかります。 DATアーカイブされたフォント以外にも allegro システムフォントを読み込む方法はあります。

○Glyph Keeper を使用してTrueTypeフォントを使う。


Allegro の拡張ライブラリ のGlyph keeper を使って Fontオブジェクトに 
TrueType Font データを割り当てると をGUI にフォントが適用されるようになります。
ただし、読み込むフォントは Unicodeフォントでなければいけません。 
ファイル選択ダイアログ以外の表示は問題なく日本語文字が表示されます。
Allegro4.2.0正式版で、ファイル選択ダイアログの表示が改善されました。

Glyph keeper ライブラリの詳細はこちら

○その他、問題点など

 書式については マニュアル  adime-2.2.1/docs/html/adime000.html 
 int adime_dialogf の関数の説明 に乗っているのでを参考にして下さい。
 例えば
%button[text]  文字が書かれたボタンを表示する
%line[]   ラインで区切る。(<HR>タグと同じ)
%nothing[] 改行する。(<BR>タグと同じ)

char text_file[1024*6] = ""; adime_lowlevel_dialogf( "Window タイトル" , 10,10, 150, "Glyph Keeperで gk_create_allegro_font %nothing[] を適用 OsakaUnicodeを使用 12px %nothing[]%line[]%buttonrow[でかいボタン;CTRL+O;ENTER]" "Text File:%filename[1024,txt,Select a Text File]" "A string:%list[,なずな;はこべ;セリ;すずしろ]" , buttonrow_callback,text_file,language_names);
現在、日本語フォントの表示にはひとつだけ問題があって、ファイル選択ダイアログで表示した パスやファイル名に日本語の文字が使われている部分が文字化けするという現象があります。 これが OS固有の問題なのか、Allegro の問題なのか Adime の問題なのかははっきりしていません。 Allegro 4.2.0 正式版で改善されました。
	 Last modified  2005/11/27 

Tsukubado