/*
 *   Tiff Load/Save function 2    By N.Takahashi
 *
 *       ver1.1 1994/02/02	Tiff LZW圧縮/展開 サポート
 *       ver0.2 1994/01/30	Tiff 関数コール変更 + ファイル名変更
 *       -----------------------
 *       ver0.1 1993/11/15  初版
 */

#ifndef __U_TIFF
#define __U_TIFF

#ifndef __U_PALETTE
#define __U_PALETTE

typedef struct palette256 {
	unsigned short red[256];
	unsigned short green[256];
	unsigned short blue[256];
} PALETTE256;

typedef struct palette16 {
	unsigned short red[16];
	unsigned short green[16];
	unsigned short blue[16];
} PALETTE16;

#endif		/* __U_PALETTE */


/* Tiff_xxx アクセス構造体
   xsize , ysize = 画像サイズ
   color  = 色数
   gmem   = 画像データ
   gmsize = 画像サイズ
   pmem   = パレットデータ
   pmsize = パレットサイズ
   comp   = 圧縮形式
*/
typedef struct tiff {
	int xsize;
	int ysize;
	int color;
	int comp;
	int gmsize;
	int pmsize;
	char *gmem;
	char *pmem;
} Tiff;


/* エラーメッセージ */
#define Tiff__OK		0
#define Tiff__NOOPEN	1
#define Tiff__NOREAD	2
#define Tiff__NOTIFF	3
#define Tiff__NOCOMP	4
#define Tiff__NOMEM		5
#define Tiff__ILLCOL	6
#define Tiff__ILLCOMP	7
#define Tiff__ILLCALL	8

extern char *Tiff_err[];


/* Prototype function */
Tiff *Tiff_new( void );
void Tiff_delete( Tiff *tp );
int Tiff_setgraph( Tiff *tp, int xsize, int ysize, int color, void *gmem, void *pmem );
int Tiff_getgraph( int *xsize, int *ysize, int *color, char **gmem, char **pmem, Tiff *tp );
int Tiff_save( char *fn, Tiff *tp );
int Tiff_load( char *fn, Tiff *tp );
int Tiff_decompress( Tiff *tp );
int Tiff_compress( Tiff *tp );
int Tiff_make_palette( Tiff *tp );


#endif		/* __U_TIFF */

/* 関数一覧 */

/*
1   関数 Tiff_new : Tiff初期化
   戻り値 = Tiff *tp   <- これを使って以降の関数を呼び出す｡

2   関数 Tiff_delete : Tiff削除
   Tiff *tp の実体を削除する｡

3   関数 Tiff_setgraph : (非圧縮)画像データ設定
   xsize , ysize = 画像サイズ
   color  = 色数
   gmem   = 画像データ
   pmem   = パレットデータ

4   関数 Tiff_getgraph : (非圧縮)画像データ読みだし
   xsize , ysize = 画像サイズ
   color  = 色数
   gmem   = 画像データ
   pmem   = パレットデータ

5   関数 Tiff_save : Tiff形式セーブ
   fn = ファイル名

6   関数 Tiff_load : Tiff形式ロード
   fn = ファイル名

7   関数 Tiff_decompress : Tiff LZW展開

8   関数 Tiff_compress : Tiff LZW圧縮

9   関数 Tiff_make_palette : Tiffパレット作成

*/

