libpng for OS/2 =============== Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. Packaging for OS/2 by homy/newfs(8) これはなに? =========== 本パッケージは PNG フォーマットのグラフィックファイルを読み書きするラ イブラリ libpng の OS/2 版です。DLL とコンパイル時に必要なヘッダファイ ルが含まれています。 PNG フォーマットは GIF フォーマットに代わるグラフィックフォーマットと して提唱されているものです(GIF フォーマットは特許問題のため、自由に商 用で利用することができないからです)。 【注意】 libpng ではデータ圧縮ライブラリとして zlib を使用しています。libpng を 利用するためには、別途 zlib を用意する必要があります。 本パッケージが利用できる zlib は拙作の zlib104.dll です。 無保証 ====== 本パッケージは無保証です。本パッケージが原因で利用者が被ることとなった いかなる被害についても、作者、配布者、その他利用者以外の人物、団体に責 任をとる義務はないものとします。 使用条件等 ========== 本パッケージの利用条件は、ファイル png.h に記述してあります。日本語で 平易な文で表現すると、以下のとおりです。 あなたは下記の条件のもとで、本ソフトウェアのソースコード等を無償で利用、 コピー、修正、配布することができます。 1. 本ソースコードの出所を偽らないこと 2. 修正したものには相応の表記を用い、元のバージョンとの混乱がないよう にすること 3. ソースコードからコピーライトに関する記述を削除したり修正したりしな いこと 以上の条件は OS/2 版パッケージ作成者が勝手に翻訳したものです。内容につ いては無保証です。公式には、必ず png.h を参照してください。 使い方 ====== PNG089.DLL を CONFIG.SYS に記述してある LIBPATH で示されるい ずれかのディレクトリにコピーしてください。 実行ファイルは附属していません。ということで、このパッケージ単体では何 もすることができません。悪しからず。 プログラム開発 ============== ライブラリの使用方法は、同梱の libpng.txt を参照してください。 本パッケージは IBM VisualAge C++ により作成されています。 あなたが作成したプログラムをリンクするときは、同梱のインポートライブラ リをリンクしてください。例えば以下のようにします。 icc myprog.c png089i.lib emx で利用する場合も同梱のインポートライブラリを利用するか、emximp を 用いて .a 形式のインポートライブラリを作成してリンクしてください。 gcc -o myprog.exe myprog.c png089i.lib -Zomf emximp -o png089i.a png089i.lib gcc -o myprog.exe myprog.c png089i.a emx での利用 ------------ 本ライブラリは IBM VisualAge C++ (以下VAC++)のライブラリを用いて構成さ れています。VAC++ と emx では FILE * 構造体に互換性がないため、emx 環 境からはデフォルトの入出力関数を用いることはできません。すなわち、 fopen() 等で作成された FILE * 構造体を png_init_io() に渡しても正しく 動作しません。 emx から利用する場合は、自分で入出力関数を作成し、png_set_read_fn() 等 で設定するようにしてください。以下に簡単な例をあげます。 /* 自前の読み込み関数 */ static void my_read_fn(png_structp png_ptr, png_bytep data, png_uint_32 length) { if (fread(data, length, 1, (FILE *)png_get_io_ptr(png_ptr)) != 1) png_error(png_ptr, "read error"); } int main(int argc, char **argv) { FILE *fp = fopen("pngfile.png", "rb"); png_structp png_ptr; png_infop info_ptr; png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); info_ptr = png_create_info_struct(png_ptr); /* 自前の読み込み関数を設定する */ png_set_read_fn(png_ptr, fp, my_read_func); png_read_info(png_ptr, info_ptr); : : : } OS/2 版について =============== 本パッケージの DLL および実行ファイルは IBM VisualAgeC++ 3.0 (CTC304) でコンパイルし、同マルチスレッド用ランタイムライブラリがスタティックリ ンクしてあります。 パッケージ作成者 ================ ご意見、ご要望、はげまし、うはうはな画像ファイルは以下までお願いします。 また、読めない画像があった等のご報告もお気軽にどうぞ。 homy/newfs(8)