/*	
 *	nuklear_dxlib.h
 *
 *	NuklearのDxLib用レンダリングバックエンド
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2016-2017 Naoyuki Sawa
 *
 *	* Fri Oct 21 22:24:40 JST 2016 Naoyuki Sawa
 *	- 1st リリース。
 *	  変更履歴は、nuklear_dxlib.cppのコメントを参照して下さい。
 */
#ifndef __NUKLEAR_DXLIB_H__
#define __NUKLEAR_DXLIB_H__
/****************************************************************************
 *	
 ****************************************************************************/
//<!> If used needs to be defined for implementation and header <!>			以下のシンボルは、実装部と宣言部の両方で有効になる位置で、定義する必要が有ります。
#define NK_INCLUDE_FIXED_TYPES
//#define NK_INCLUDE_DEFAULT_ALLOCATOR	//nk_init()にBoehm GCのアロケータを使うように指定します。malloc,freeを直接使用しないのでNK_INCLUDE_DEFAULT_ALLOCATORの定義は不要です。
#define NK_INCLUDE_STANDARD_IO
#define NK_INCLUDE_STANDARD_VARARGS
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//{{2016/10/31削除:オリジナル版のNuklearリビジョンb280370にて修正されたので、バグ回避のためのコードは不要になりました。
////{{2016/10/31追加:オリジナル版のNuklearリビジョン69b13a0のバグ回避。オリジナル版のNuklearが修正されたらこの範囲のコードは削除しろ。
//// * Mon Oct 31 10:46:38 JST 2016 Naoyuki Sawa
//// - オリジナル版のNuklearリビジョン69b13a0では、下記の箇所がエンバグしているようです。(前回までは問題有りませんでした。)
////   'nuklear.h'の315行目:
////   ＞#ifdef FIFO_INCLUDE_FIXED_TYPES	…正しくはNK_INCLUDE_FIXED_TYPESであるはず。
////   GitHubのIssues(https://github.com/vurtun/nuklear/issues/268)に報告しておきました。
////   多分、オリジナル版のNuklearが修正してくれると思うので、手元で'nuklear.h'を直接修正するのではなく、一時的に'FIFO_INCLUDE_FIXED_TYPES'も定義して回避する事にしました。
////   オリジナル版のNuklearが修正されたら、'FIFO_INCLUDE_FIXED_TYPES'の定義は削除して下さい。
//#ifdef  NK_INCLUDE_FIXED_TYPES
//#define FIFO_INCLUDE_FIXED_TYPES
//#endif//NK_INCLUDE_FIXED_TYPES
////}}2016/10/31追加:オリジナル版のNuklearリビジョン69b13a0のバグ回避。オリジナル版のNuklearが修正されたらこの範囲のコードは削除しろ。
//}}2016/10/31削除:オリジナル版のNuklearリビジョンb280370にて修正されたので、バグ回避のためのコードは不要になりました。
/*--------------------------------------------------------------------------*/
//<!> If used it is only required to be defined for the implementation part <!>		以下のシンボルは、実装部だけで定義しても構わないのですが、あえて分ける必要も無いので、ここで定義しておく事にしました。
#define NK_MEMSET	memset
#define NK_MEMCPY	memcpy
#define NK_SQRT		sqrt
#define NK_SIN		sin
#define NK_COS		cos
//{{2017/03/16変更:リビジョン2e4db87にて、内部関数nk_strtoi(),nk_strtof(),nk_strtod()の引数endptrの型が(char**)⇒(const char**)に変更された事に伴い、C標準関数のstrtod()をそのまま使うと警告が出るようになった問題を回避しました。
//#define NK_STRTOD	strtod
//↓2017/03/16変更:リビジョン2e4db87にて、内部関数nk_strtoi(),nk_strtof(),nk_strtod()の引数endptrの型が(char**)⇒(const char**)に変更された事に伴い、C標準関数のstrtod()をそのまま使うと警告が出るようになった問題を回避しました。
#define NK_STRTOD(str,endptr)	strtod((str),(char**)(endptr))
//}}2017/03/16変更:リビジョン2e4db87にて、内部関数nk_strtoi(),nk_strtof(),nk_strtod()の引数endptrの型が(char**)⇒(const char**)に変更された事に伴い、C標準関数のstrtod()をそのまま使うと警告が出るようになった問題を回避しました。
//#define NK_DTOA	dtoa
#define NK_VSNPRINTF	vsnprintf
/*--------------------------------------------------------------------------*/
#include "nuklear.h"
/****************************************************************************
 *	グローバル関数
 ****************************************************************************/
#ifdef  __cplusplus
extern "C" {
#endif//__cplusplus
/*--------------------------------------------------------------------------*/
//{{2016/10/30変更:nk_dxlibfont_create()とnk_dxlibfont_del()を削除し、nk_dxlib_init_font()を追加しました。
//NK_API struct nk_user_font* nk_dxlibfont_create(const char* FontName, int Size);
//NK_API void nk_dxlibfont_del(struct nk_user_font* font/*NULL可*/);
//↓2016/10/30変更:nk_dxlibfont_create()とnk_dxlibfont_del()を削除し、nk_dxlib_init_font()を追加しました。
NK_API void nk_dxlib_init_font(struct nk_user_font* font, int FontHandle);
//}}2016/10/30変更:nk_dxlibfont_create()とnk_dxlibfont_del()を削除し、nk_dxlib_init_font()を追加しました。
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
//{{2016/11/01変更:nk_dxlib_init()の引数を全て削除し、nk_dxlib_render()に引数pCbkQue,priを追加しました。
//NK_API struct nk_context* nk_dxlib_init(ST_CbkQue* pCbkQue, int pri, int width, int height);
//↓2016/11/01変更:nk_dxlib_init()の引数を全て削除し、nk_dxlib_render()に引数pCbkQue,priを追加しました。
//NK_API struct nk_context* nk_dxlib_init();
//↓2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
NK_API struct nk_context* nk_dxlib_new();
//}}2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//{{2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//NK_API void nk_dxlib_free();
//↓2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
NK_API void nk_dxlib_free(struct nk_context* ctx);
//}}2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//{{2016/10/29削除:nk_dxlib_set_font()を削除しました。
//NK_API void nk_dxlib_set_font(struct nk_user_font* font);
//}}2016/10/29削除:nk_dxlib_set_font()を削除しました。
//{{2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//NK_API int nk_dxlib_handle_event(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
//↓2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
NK_API int nk_dxlib_handle_event(struct nk_context* ctx, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
//}}2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//{{2016/11/01変更:nk_dxlib_init()の引数を全て削除し、nk_dxlib_render()に引数pCbkQue,priを追加しました。
//NK_API void nk_dxlib_render();
//↓2016/11/01変更:nk_dxlib_init()の引数を全て削除し、nk_dxlib_render()に引数pCbkQue,priを追加しました。
//NK_API void nk_dxlib_render(ST_CbkQue* pCbkQue, int pri);
//↓2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
NK_API void nk_dxlib_render(struct nk_context* ctx, ST_CbkQue* pCbkQue, int pri);
//}}2016/11/02変更:NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
//{{2016/11/04追加:nk_dxlib_load_cursor()を追加しました。
NK_API void nk_dxlib_load_cursor(struct nk_context* ctx, int iSprNo_NK_CUSTOM_CURSOR_DATA);
//}}2016/11/04追加:nk_dxlib_load_cursor()を追加しました。
/****************************************************************************
 *	プロパティウインドウ
 ****************************************************************************/
int PrpWnd_exec(struct nk_context* ctx, const char* title, struct nk_rect bounds, nk_flags flags, const void* pPrpKey, int iTbl, void* pPrpTbl, int iBitPos, void (*fnVarFmt/*NULL可*/)(char* buf/*[cap]*/, int cap, int iFmt, int iVal));
/*--------------------------------------------------------------------------*/
#ifdef  __cplusplus
}//extern "C"
#endif//__cplusplus
#endif//__NUKLEAR_DXLIB_H__
