#ifndef __IMAGE_H_
#define __IMAGE_H_

// バイト型を定義(0〜255の整数値=0〜2^8-1=8bit=1byte)
typedef unsigned char byte;

// １画素あたりのチャンネル数(B=0, G=1, R=2の3種類)
#define IMAGE_CHANNELS	3

// １画素あたりのビット数(8bit × 3チャンネル)
#define IMAGE_BITCOUNT	(8 * IMAGE_CHANNELS)

// ２４ビット３チャンネル画像の構造体
struct _Image
{
	int width;		// 幅
	int height;		// 高さ
	byte*** pdata;	// 画像データへのポイント
};

// ２４ビット３チャンネル画像の構造体へのポイント型
typedef struct _Image* Image;

//関数のプロトタイプ

//入出力関数
Image loadImage(const char* filepath);					//画像データの読込関数
void saveImage(Image image, const char* filepath);		//画像データの保存関数

Image createImage(int height, int width);				//画像データの生成関数
void deleteImage(Image image);							//画像データの解放関数

//処理関数
void fillImage(Image image, byte r, byte g, byte b);	//@塗りつぶし処理関数
void grayscale(Image image);							//Aグレースケール処理関数
void color_reversal(Image image);						//B色反転処理関数

#endif