/*	
 *	clippnm.h
 *
 *	Netpbm format
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2016 Naoyuki Sawa
 *
 *	* Sat Apr 09 21:06:53 JST 2016 Naoyuki Sawa
 *	- 1st リリース。
 *	- 画像を、PBMテキスト形式(P1),又は,PGMテキスト形式(P2),又は,PPMテキスト形式(P3)で保存します。
 *	  直接ファイルに保存する関数(〜_save())と、ストリームに出力する関数(〜_dump()を用意しました。
 *	- 当モジュールを作成した主な目的は、P/ECEの画面を簡単に保存するためです。
 *	  BMP形式やTGA形式等で保存するよりも、PNM形式で保存する方が簡単でコード量が少なく出来るので、PNM形式を選択しました。
 *	  想定する使い方は、P/ECEのフラッシュメモリ上にファイルとして保存するか、又は、標準エラー出力でUSB経由で出力します。
 *	  その後、ImageMagick等を使って、PNM形式よりも汎用的な形式(BMP形式やPNG形式等)へ変換して下さい。
 *	- P/ECEの画像形式に適しているのはPGM形式ですから、実際にはほとんどpgm_save(),又は,pgm_dump()しか使わないと思います。
 *	  しかし、PBM形式とPPM形式もほとんど同じ処理で対応出来るので、PBM形式とPPM形式も対応しておく事にしました。
 *	- PNM形式で保存する事が目的であり、読み込む事は目的ではないので、PNM形式の読み込み関数は作成していません。
 *	- □参照資料「Wikipedia - Netpbm format」(http://en.wikipedia.org/wiki/Netpbm_format)
 *	  │A Netpbm format is any graphics format used and defined by the Netpbm project.
 *	  │The portable pixmap format (PPM), the portable graymap format (PGM) and the portable bitmap format (PBM) are image file formats designed to be easily exchanged between platforms.
 *	  │They are also sometimes referred to collectively as the portable anymap format (PNM), not to be confused with the related portable arbitrary map format.
 */
#ifndef __CLIP_PNM_H__
#define __CLIP_PNM_H__
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/*****************************************************************************
 *	Portable bitmap format (PBM)
 *****************************************************************************/
void pbm_save(const char* path/*拡張子省略可*/, int w, int h, int (*fnPoint)(int x, int y, void* arg), void* arg);
void pbm_dump(FILE* fp, int w, int h, int (*fnPoint)(int x, int y, void* arg), void* arg);
/*****************************************************************************
 *	Portable graymap format (PGM)
 *****************************************************************************/
void pgm_save(const char* path/*拡張子省略可*/, int w, int h, int maxVal, int (*fnPoint)(int x, int y, void* arg), void* arg);
void pgm_dump(FILE* fp, int w, int h, int maxVal, int (*fnPoint)(int x, int y, void* arg), void* arg);
/*****************************************************************************
 *	Portable pixmap format (PPM)
 *****************************************************************************/
void ppm_save(const char* path/*拡張子省略可*/, int w, int h, int maxVal, int (*fnPoint)(int x, int y, void* arg), void* arg);
void ppm_dump(FILE* fp, int w, int h, int maxVal, int (*fnPoint)(int x, int y, void* arg), void* arg);
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__CLIP_PNM_H__
