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)