#ifndef __GRAPHICALCONLIB_H__
#define __GRAPHICALCONLIB_H__

#ifdef _DEBUG
#pragma comment(lib,"GConsoleLib_d.lib")
#endif
#ifndef _DEBUG
#pragma comment(lib,"GConsoleLib.lib")
#endif


//定数
#define TEXTSIZE 20
#define LINEHEIGHT 24

//プロトタイプ宣言
//GraphicalConsoleに文字を表示する
//書式はprintfと同じ。
void gprintf(const char* _Format, ...);

//GraphicalConsoleに文字を表示する（ワイド文字版）
//書式はwprintfと同じ。
void gwprintf(const wchar_t* _Format, ...);

//GraphicalConsoleに画像を表示する
//引数char* fname：画像のファイル名。画像ファイル名は基本フルパスとすること
//引数int x, y：画像を表示する座標。xは640未満、yは480未満まで。
//戻り値：なし
void gimage(const char* fname, int x, int y);

//GraphicalConsoleから文字を取得する
//テキストの受信にはクリップボードを使用する
//gscanfはない。必要な場合はggetsで文字を取得してからsscanfで読み取る
//引数char* _Buffer：結果を記録する
//引数size_t sizeInCharacters：読み込みバッファのサイズ
//戻り値　取得に成功した場合は_Bufferをそのまま返す。失敗した場合はNULLを返す
char *ggets(char* _Buffer, size_t sizeInCharacters);

//GraphicalConsoleから文字を取得する（ワイド文字版）
//テキストの受信にはクリップボードを使用する
//引数wchar_t* _Buffer：結果を記録する
//引数size_t sizeInCharacters：読み込みバッファのサイズ
//戻り値　取得に成功した場合は_Bufferをそのまま返す。失敗した場合はNULLを返す
wchar_t *ggetws(wchar_t* _Buffer, size_t sizeInCharacters);

//グラフィカルコンソールから1文字入力する
//戻り値：char型の文字コード。取得に失敗した場合はEOF（-1）を返す
char ggetchar();

//グラフィカルコンソールから1文字入力する（ワイド文字版）
//戻り値：wchar_t型の文字コード。取得に失敗した場合はWEOF（0xFFFF）を返す
wchar_t ggetwchar();

//グラフィカルコンソールのカーソルを移動
// 引数int x,y：カーソルの座標。xは63まで。yは19まで。xは半角単位。
// 戻り値：なし
// 1文字のサイズは全角20ピクセル、行送りは24ピクセル
void glocate(int x, int y);

//グラフィカルコンソールの文字色を設定
// 引数int red,green,blue：赤・緑・青の色。0〜255
// 戻り値：なし
void gcolor(int red, int green, int blue);

//グラフィカルコンソールを最前面に表示
// 引数：なし
// 戻り値：なし
void gfront();

//グラフィカルコンソールを消去
// 引数：なし
// 戻り値：なし
void gcls();


//グラフィカルコンソールに線を描画
// 引数int x1,y1,x2,y2：始点と終点の座標。
// 戻り値：なし
// 色はgcolor関数で指定
void gline(int x1, int y1, int x2, int y2);

//グラフィカルコンソールに点を描画
// 引数int x,y：中心位置の座標。
// 引数int hankei：点のサイズ（半径）
// 戻り値：なし
// 色はgcolor関数で指定
void gpoint(int x, int y, int hankei);

//グラフィカルコンソールに四角形を描画
// 引数int x,y,width,height：左上座標と幅、高さ
// 戻り値：なし
// 色はgcolor関数で指定
void gbox(int x, int y, int width, int height);

#endif