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)