CodeBuilder FAQ Version: 2.28 (1998-11-08)

5. 応用編

5-1: UNIX スクリプト

Cyber-shot の画像ファイルから thumbnail と HTML を自動生成:

thumbnail は、イメージ集の一覧画面等で使用するための縮小画像のことです。 Cyber-shot のマック版アルバムソフトによるイメージ・ファイルは、リソース フォークの中に独自の thumbnail を持っていますが、ここでは、 JPEG ツール のdjpeg, cjpeg ( → 4-1 )を使って、別途、自動生成しています。 また、アルバムソフトが作るイメージ・ファイル IMAGE0NN には拡張子 jpg を つけて、WWW ブラウザが認識できるようにします。

各スクリプトは下記に(便宜上 .txt を付けてます):

  <http://www.st.rim.or.jp/~kimu/cb/archive/imgjpg.txt>
  <http://www.st.rim.or.jp/~kimu/cb/archive/thumbnail.txt>
  <http://www.st.rim.or.jp/~kimu/cb/archive/image-index.txt>

バグ回避のため B-shell で書き直したモノ:

  <http://www.st.rim.or.jp/~kimu/cb/archive/imgjpg.sh.txt>
  <http://www.st.rim.or.jp/~kimu/cb/archive/thumbnail.sh.txt>

% cd /mac_volume/data_dir (ここに IMAGE001, IMAGE002, IMAGE003 ... があるとする) % finderinfo -C MUMM -T BINA IMAGE* ( CodeBuilder で扱えるバイナリ・ファイルとする) % imgjpg ( cs001.jpg, cs002.jpg, cs003.jpg ... とリネームする) % thumbnail (縮小画像 cs001-s.jpg, cs002-s.jpg, cs003-s.jpg ... を生成) % image-index > index.html % sync

Cyber-shot マルチ画面連写画像を GIF アニメ化:

NetPBM、djpeg、GIFMerge (→ 4-1 )を呼び出して、標記のことを実現 する shell script です(手抜き&簡単)です。

  <http://www.st.rim.or.jp/~kimu/cb/archive/anicyber.txt>

ただし、上記スクリプトは UNIX 汎用です。CodeBuilder でマック側のボリュー ム上のファイルを処理する場合は、JPEG 形式で保存した Cyber-shot 画像ファ イルに対して、下記のコマンドを実行し、CodeBuilder で認識できるバイナリ ファイルにしてください。

  % finderinfo -C MUMM -T BINA filename.jpeg
  % vi anicyber
    (パラメータ変更は、スクリプトを直接書き換える)
  % anicyber

GIF アニメ filename.gif 生成後、マックの GIF Builder 等のツールを使って、 パラメータを変更することもできるはずです。あれ?できない?

QV-10 形式テキストの HTML 化 perl script:

HP200LX で動きます。 UNIX でも、当然、動きます。

    <http://www.st.rim.or.jp/~kimu/palm/qvsec.pl>

5-2: マッキントッシュ・プログラミング

まだ途上なんですけど...

まずは付属のサンプル・プログラム:

プリ・インストールされているユーザ cbuser (あるいは cbnext )のホーム ディレクトリにおいてあるサンプル・プログラムの中で "C" のところには、 マックのアプリケーション生成のサンプルが入ってます。いわゆる "hello world" プログラムです。

    sample_code/C/

マックのプログラムを gcc ( GNU プロジェクトの C コンパイラ)でホントに make できることを実感しましょう。ここで学ぶことは、Makefile を見れば分 かりますが、

  - 実行プログラムはマック側のファイル・システム上に吐くこと
  - マック用インクルード・ファイルの指定(コンパイル時)
        CPPFLAGS = -I/usr/include/MacOS
  - マック用ライブラリ・ファイルの指定(リンク時)
        /usr/macppc/lib/MacOS/Mac_start.o
        /usr/macppc/lib/MacOS/InterfaceLib.a
  - クリエータ、ファイル・タイプの指定(リンク時)
        -Xlcreator 'MISC' -Xltype APPL

リソースをくっつける:

マックのアプリケーション開発で必ず登場するのが ResEdit 。各種ウィンドウ やアイコン等を定義して、リソースの詰まったファイルを作るものです。 このリソース情報を、実行プログラムにひっつけるのも、CodeBuilder 上の コマンドで可能です。ただしリソース・ファイル自身のファイル情報を CodeBuilder が認識できる MUMM/BINA にしておく必要があります。 リソースを扱うコマンドは restool です。

  % restool -c -o mac-appl-file resource-file.rsrc

このコマンドを Makefile のリンクの次に入れておけば、自動化できます。

一般的なマック用コンパイラとの違い:

  - 4 文字定数(例: 'TEXT')に対し gcc は警告を出す。

- パスカル型文字定数定義(例: "\pTHIS IS A PEN.")を gcc は知らない。

DropShell:

info-mac/dev/src (インフォ・マック/プログラム開発/ソースコード)に 入っている DropShell と、それを踏まえた DropUNIX は、UNIX アプリなんか をマックに( CodeWarrior 等のコンパイラを使って)簡単に移植できるように 考えられたツールです。ふつーの UNIX コマンドに、ドラッグ&ドロップをは じめとしたマックらしいユーザ・インターフェースを被せることができます。

まず DropShell ですが、ほとんど修正しないで gcc でコンパイルできました。 (実際は、先に、次に述べる DropUNIX に挑戦したのですが、挫折しました。) 変更点は...

    #include  を  #include  と変更
    "\p" ... Str255 のパスカル型 NULL 文字(?)を作って置き換え

付属のリソース・ファイル( PPC 用)は、 restool コマンドを使うと、なぜか MacOS ごとフリーズするので、マック側の ResEdit でひっつけました。

で、起動してみるとメニュー等はちゃんと選べます。でも肝心の「ドラッグ &ドロップ」ができないのです。書類のアイコンを重ねても、反応しません。 なんでだろうなぁ。マック・プログラミングの知識が皆無なので、ゼンゼン ワカリマセ〜ン。

その後、いろいろ試してみましたが、CodeBuilder で生成したプログラム は、AppleEvent を正しく扱えないような感じです。ドラッグ&ドロップは もちろん、メニュー選択等でも AppleEvent は反応してくれません。そんな〜。

メニュー・バーを設定して WaitNextEvent でメニュー選択を待つ、といった 伝統的なプログラムならちゃんと動作するようです。

DropUNIX:

いわゆる main(argc, argv) の部分をマックのインターフェースで包み込んで くれますものです。例えば、ドラッグ&ドロップしたファイルのファイル名を argc に渡すといった、マック特有の処理の部分を代行してくれるのです。

前述の DropShell をほぼそのまま使っていますが、CodeWarrior でコンパイル することしか考えていないようで、CodeBuilder の gcc では苦戦しています。 だましだましして、プログラムはできたんですが... Finder から起動して、 File -> Open... でダイアログ・ボックスも出るんですが、ファイルを選んだ ところで、MacOS ごとフリーズしてしまいます (;_;)


CodeBuilder FAQ Version: 2.28 (1998-11-08)