#ifndef __INCLUDE_PNM_READ_H__
#define __INCLUDE_PNM_READ_H__

#ifndef TRUE
#define TRUE
#endif
#ifndef FALSE
#define FALSE
#endif
#define MAX_PATH 256
//-----------------------------------------------------------------
// 画像データ
//-----------------------------------------------------------------
typedef unsigned char PIXEL; 
typedef struct RGB_PACKED_PIXEL {
    PIXEL r;
    PIXEL g;
    PIXEL b;
} CPIXEL;
//-----------------------------------------------------------------
// 画像形式
//-----------------------------------------------------------------
enum PNM_TYPE {
    PNM_P1 = 1, // PBM(アスキー)
    PNM_P2 = 2, // PGM(アスキー)
    PNM_P3 = 3, // PPM(アスキー)
    PNM_P4 = 4, // PBM(バイナリ)
    PNM_P5 = 5, // PGM(バイナリ)
    PNM_P6 = 6, // PPM(バイナリ)
};
//-----------------------------------------------------------------
// 画像情報
//-----------------------------------------------------------------
typedef struct PNM_IMAGE_INFO{
    int itype;
    int iw,ih;
    int imax;
} PNMInfo;
//-----------------------------------------------------------------
// 関数宣言
//-----------------------------------------------------------------
PIXEL* read_pnm(char* ifile,PNMInfo* pi);
PIXEL* ppm2bmp(PNMInfo pi,PIXEL* pdata);
PIXEL* pgm2bmp(PNMInfo pi,PIXEL* pdata);
void disp_header(PNMInfo pi);
void PNM_Gimgread(FILE** fp,PNMInfo pi,PIXEL* pdata);
void PNM_Cimgread(FILE** fp,PNMInfo pi,PIXEL* pdata);
void write_pnm(char* ofile,PNMInfo pi,PIXEL* pdata);
void PNM_Headout(FILE** fp,PNMInfo pi);
void PNM_Gimgout(FILE** fp,PNMInfo pi,PIXEL* pdata);
void PNM_Cimgout(FILE** fp,PNMInfo pi,PIXEL* pdata);
void pnmSetPixel(PNMInfo pi,PIXEL* pdata,int x,int y,PIXEL p);
void pnmGetPixel(PNMInfo pi,PIXEL* pdata,int x,int y,PIXEL* p);
void pnmSetRGB(PNMInfo pi,PIXEL* pdata,int x,int y,CPIXEL p);
void pnmGetRGB(PNMInfo pi,PIXEL* pdata,int x,int y,CPIXEL* p);

#endif //__INCLUDE_PNM_READ_H__