/*	
 *	nuklear_dxlib.h
 *
 *	NuklearのDxLib用レンダリングバックエンド
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2016 Naoyuki Sawa
 *
 *	* Fri Oct 21 22:24:40 JST 2016 Naoyuki Sawa
 *	- 1st リリース。
 *	  '/clip/nuklear/nuklear.h'は、オリジナル版の'nuklear-master/nuklear.h'を少しだけ変更したものです。
 *	  '/clip/nuklear/nuklear_dxlib.h'と'/clip/nuklear/nuklear_dxlib.cpp'は、オリジナル版の'nuklear-master/demo/gdi/nuklear_gdi.h'を参考にして作成しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 867b335 3 days ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Sat Oct 22 10:03:01 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 4020b1b 9 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Sun Oct 23 10:04:30 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 01eb4f8 3 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Sat Oct 29 01:47:50 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_set_font()を削除しました。
 *	  アプリケーション側で「nk_style_set_font(ctx,font);」又は「nk_style_push_font(ctx,font)〜nk_style_pop_font(ctx)」とすれば良いだけなので、
 *	  ヘルパ関数を用意しておく必要が無かったので、nk_dxlib_set_font()は削除する事にしました。
 *	* Sun Oct 30 21:21:13 JST 2016 Naoyuki Sawa
 *	- nk_dxlibfont_create()とnk_dxlibfont_del()を削除し、nk_dxlib_init_font()を追加しました。
 *	  変更した理由は、以下の通りです。
 *	- これまでは、nk_dxlibfont_create()内でDxLibのフォントハンドルを作成し、nk_dxlibfont_del()内で削除していました。
 *	  しかし、DxLibのフォントハンドルはコストの高いリソースであり、GUIだけのために専用のフォントハンドルを作成するのは無駄が多いと思いました。
 *	- そこで、DxLibのフォントハンドルを作成,及び,削除するのはアプリケーション側に任せて、nk_dxlib_init_font()にはフォントハンドルを指定するように変更しました。
 *	  こうする事で、アプリケーション側の処理とGUIの処理とでフォントハンドルを共用出来て、無駄が減らせるからです。
 *	- 上記の通り、無駄は減ったのですが、アプリケーション側で行うべき処理(フォントハンドルの作成)が増えた分、コーディングの手間はこれまでよりも少し増えました。
 *	  まあ、一般的なアプリケーションでは、最初にフォントハンドルを全て作成しておくので、それを指定すれば良く、さほど手間は増えないと思います。
 *	* Mon Oct 31 10:46:38 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 69b13a0 11 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- 今回の目玉は、多くのAPIの引数に、struct nk_panel型の変数を指定しなくて良くなった事です。
 *	  これまでは、レイアウトを管理するための一時変数を、呼び出し側のスタックフレーム上などに用意して、それをAPIに引き渡す必要が有ったのですが、もう不要になりました。
 *	  アプリケーション側の記述が簡略化されて、とても使い易くなったと思います。
 *	- オリジナル版の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'の定義は削除して下さい。	⇒{{2016/10/31コメント追記:オリジナル版のNuklearリビジョンb280370にて修正されたので、'FIFO_INCLUDE_FIXED_TYPES'の定義は削除しました。}}
 *	* Mon Oct 31 21:38:12 JST 2016 Naoyuki Sawa
 *	- NK_WINDOW_SCROLL_AUTO_HIDEに対応しました。
 *	  詳細は、以下の通りです。
 *	- これまでは、nk_begin()等にNK_WINDOW_SCROLL_AUTO_HIDEを指定しても、スクロールバーが消えていませんでした。
 *	  原因は、コンテキストのdelta_time_secondsフィールドに、経過時間を設定していなかった事でした。
 *	  コンテキストのdelta_time_secondsフィールドには、アプリケーション側で、経過時間を格納する必要が有りました。
 *	  今回、nk_dxlib_render()をそのように修正したので、NK_WINDOW_SCROLL_AUTO_HIDEを指定すると、一定時間後にスクロールバーが消えるようになりました。
 *	- 尚、2016/10/31時点のNuklear(リビジョン69b13a0)では、delta_time_secondsフィールドは、NK_WINDOW_SCROLL_AUTO_HIDEの用途にしか使用されていません。
 *	  従って、もしNK_WINDOW_SCROLL_AUTO_HIDEに対応する必要が無ければ、アプリケーションがdelta_time_secondsフィールドに値を格納しなくても構いません。
 *	* Mon Oct 31 22:01:20 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_draw_image()を、仮実装から、本実装に変更しました。
 *	  これまでは、仮実装として、矩形を描いてしました。
 *	  今回、本実装として、画像を描くように変更しました。
 *	  詳細は、nk_dxlib_draw_image()の実装を参照して下さい。
 *	- アプリケーション側では、nk_image構造体のhandle.idフィールドに、スプライト番号を格納して下さい。
 *	  尚、スプライト自体がサブイメージを管理出来ますので、Nuklearのサブイメージ管理(nk_subimage_id()等)は利用しません。	⇒{{2016/11/03コメント追記:nk_dxlib_draw_image()を、サブイメージの描画に対応しました。}}
 *	* Mon Oct 31 22:15:07 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit b280370 2 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- FIFO_INCLUDE_FIXED_TYPESのバグが修正されていました。(詳細は'Mon Oct 31 10:46:38 JST 2016'のコメントを参照して下さい。)
 *	  もう、バグ回避のためのコードは不要になりました。
 *	* Tue Nov 01 21:19:19 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit dea4a71 41 minutes ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- 今回のリビジョンに、僕のプルリクエストが取り込まれました(^^)y
 *	  修正した点は、nk_combo_separator(),及び,それを呼び出しているnk_combo_string()が、正しく動作するように修正した事です。
 *	* Tue Nov 01 21:32:40 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_init()の引数を全て削除し、nk_dxlib_render()に引数pCbkQue,priを追加しました。
 *	  pCbkQue,priは、nk_dxlib_render()の実行中だけに必要な情報なので、nk_dxlib_init()の引数に指定してnk_dxlib構造体に格納するよりも、nk_dxlib_render()の引数にする方が自然だと思ったからです。
 *	  この変更により、nk_dxlib_render()を呼び出す度に、pCbkQue,priを変更する事も可能になりました。
 *	- 尚、これまでnk_dxlib_init()の引数に指定していたwidth,heightは、元々必要無かった事に気付いたので、nk_dxlib_render()の引数には追加しませんでした。
 *	  Nuklearは描画領域のサイズについて関知しないので、width,heightを指定する必要が無いからです。
 *	* Wed Nov 02 21:33:27 JST 2016 Naoyuki Sawa
 *	- NuklearのDxLib用レンダリングバックエンドの、複数インスタンスを作成出来るようにしました。
 *	  詳細は、以下の通りです。
 *	- これまでは、NuklearのDxLib用レンダリングバックエンドのインスタンスは、nuklear_dxlib.cpp内のローカル変数'dxlib'に保持しており、一つのインスタンスしか作成出来ませんでした。
 *	  つまり、アプリケーション起動時に一度だけnk_dxlib_init()を呼び出してコンテキストを受け取り、アプリケーション終了時に一度だけnk_dxlib_free()を呼び出してコンテキストを破棄するという、使い方しか出来ませんでした。
 *	  実用上はそれでも十分なのですが、Nuklear自体はコンテキストの複数インスタンスに対応しているのに、当モジュール側の制約で一つのインスタンスしか作成出来ないのは良くないと思ったので、修正する事にしました。
 *	- 複数インスタンスに対応するために、以下の変更を行いました。
 *	  ・nuklear_dxlib.cpp内のローカル変数'dxlib'を削除し、初期化時に動的に構造体のメモリを確保して、その中に個々のインスタンスの情報を格納するようにしました。
 *	    それに伴い、初期化関数の名前を、nk_dxlib_init()⇒nk_dxlib_new()に変更しました。
 *	    一つのインスタンスを初期化する関数ではなく、新しいインスタンスを作成して返す関数である事を強調するためです。
 *	  ・nk_dxlib_free()に、引数ctxを追加しました。
 *	    nk_dxlib_free()が、nk_dxlib_new()が割り当てた個々のインスタンスのリソースを解放します。
 *	  ・nk_dxlib_handle_event()に、引数ctxを追加しました。
 *	    入力を処理するコンテキストを渡して下さい。
 *	    複数インスタンスを作成した場合は、全てのインスタンスに対して、同じイベントを処理させても構いません。
 *	  ・nk_dxlib_render()に、引数ctxを追加しました。
 *	    描画を行うコンテキストを渡して下さい。
 *	    複数インスタンスを作成した場合は、個々のインスタンスに対して、nk_dxlib_render()を呼び出して下さい。
 *	- 複数インスタンスの使用例は以下の通りです(※未検証):
 *	  │--- メインループ ---
 *	  │int cpp_main(int argc, char* argv[]) {
 *	  │  struct nk_context* ctx1 = nk_dxlib_new();
 *	  │  struct nk_context* ctx2 = nk_dxlib_new();
 *	  │  〜
 *	  │  for(;;) {
 *	  │    〜
 *	  │    nk_dxlib_render(ctx1);
 *	  │    nk_dxlib_render(ctx2);
 *	  │  }
 *	  │}
 *	  │--- ウインドウプロシージャ ---
 *	  │static LRESULT CALLBACK NkWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
 *	  │  if(nk_dxlib_handle_event(ctx1, hWnd, uMsg, wParam, lParam) | //両方のコンテキストに処理させるために'||'ではなく'|'とする。
 *	  │     nk_dxlib_handle_event(ctx2, hWnd, uMsg, wParam, lParam)) {
 *	  │    if(nk_window_is_any_hovered(ctx1) || //ここは判定だけなので'||'で構わない。
 *	  │       nk_window_is_any_hovered(ctx2)) {
 *	  │      SetUseHookWinProcReturnValue(TRUE); return 1;
 *	  │    }
 *	  │  }
 *	  │  return 0;
 *	  │}
 *	* Wed Nov 02 22:11:30 JST 2016 Naoyuki Sawa
 *	- PrpWnd_exec()を追加しました。
 *	  clipprp.cモジュールのPrpEdt_exec()はPDCursesを使っているのに対して、こちらはNuklearを使って似た表示を行ってみた応用例です。
 *	  ただし、PrpEdt_exec()は編集にも対応していますが、PrpWnd_exec()は表示のみで、編集は未対応です。
 *	  PrpEdt_exec()は、PrpEdt_new()/PrpEdt_exec()/PrpEdt_draw()/PrpEdt_free()の組み合わせで使うか,又は,PrpEdt_run()でブロッキングするかですが、PrpWnd_exec()は準備は不要でこの関数一つでブロッキング無しで使えます。
 *	  詳細は、nuklear_dxlib.cpp内のPrpWnd_exec()実装箇所の、「■使用例」を参照して下さい。
 *	- PrpEdt_exec()はclipprp.cモジュールに含めたのに対して、PrpWnd_exec()はclipprp.cモジュールに含めなかった理由は、まだNuklearが発展途上で頻繁に変更される可能性が高いと思ったからです。
 *	  PDCursesは既に枯れていて当面変更されないと思うのでclipprp.cモジュールに含めても構いませんが、PrpWnd_exec()をclipprp.cモジュールに含めるとNuklearの仕様が変わる度にclipprp.cを変更する必要が生じてエンバグの危険が有ると思いました。
 *	  それよりも、nuklear_dxlib.cppに含めておけば、Nuklearの仕様が変わった時は、NuklearのDxLib用レンダリングバックエンドの追従と一緒に、同じモジュール内でPrpWnd_exec()も修正すれば良いからです。
 *	* Thu Nov 03 18:19:33 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_draw_image()を、サブイメージの描画に対応しました。
 *	  スプライトの一部だけを描画します。
 *	- 主に、カーソルの描画を行うために利用しています。
 *	  カーソルをロードする処理の例は、nk_dxlib_draw_image()内のコメントを参照して下さい。
 *	* Fri Nov 04 09:13:40 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 18bacf0 6 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- 今回のリビジョンに、僕のプルリクエストが二つ取り込まれました(^^)y
 *	  修正した点は、nk_value_color_byte()とnk_hsva_f()のバグ修正です。
 *	* Fri Nov 04 21:14:19 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_load_cursor()を追加しました。
 *	  '/clip/test.win/grp/MkTexNo.bat'の同日のコメントも参照して下さい。
 *	- Nuklearにカーソル描画を行わせたい場合に、これまではカーソルをロードする処理をアプリケーション側のソース内で明示的に書いていましたが、今後はnk_dxlib_load_cursor()を呼び出すだけで良くなりました。
 *	  尚、Nuklearにカーソル描画を行わせない場合(Windowsのカーソル表示だけで良い場合)は、nk_dxlib_load_cursor()を呼び出す必要は有りません。
 *	* Sat Nov 05 21:12:06 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_draw_rect_multi_color()を、仮実装から、本実装に変更しました。
 *	  これまでは、仮実装として、単色で塗り潰していました。
 *	  今回、本実装として、グラデーションで塗り潰すように変更しました。
 *	  詳細は、nk_dxlib_draw_rect_multi_color()の実装を参照して下さい。
 *	* Wed Nov 09 21:58:17 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 9f9591c 3 days ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- 今回のリビジョンに、僕のプルリクエストが取り込まれました(^^)y
 *	  修正した点は、nk_color_hex_rgba()とnk_color_hex_rgb()のバグ修正です。
 *	* Thu Nov 10 10:10:00 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 42efd82 6 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Fri Nov 11 21:09:25 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 02fb019 23 minutes ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Sat Nov 12 09:40:37 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 7fa1aa2 7 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	- 今回のリビジョンに、僕のプルリクエストが取り込まれました(^^)y
 *	  修正した点は、nk_layout_row_begin(〜NK_STATIC〜)を使うと間違ったレイアウトになっていた問題の修正です。
 *	* Sun Nov 13 21:39:44 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit f2b9b9a 2 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Tue Nov 15 09:07:00 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 8e60328 4 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Thu Nov 17 21:56:29 JST 2016 Naoyuki Sawa
 *	- nk_dxlib_new()に、ポップアップの枠が表示されない問題を暫定的に回避する処理を追加しました。
 *	  2016/11/17時点のNuklear(リビジョン8e60328)では、nk_style_from_table()にて、win->popup_border_colorとwin->popup_borderの初期化が欠けている問題が有ります。
 *	  2016/11/16にプルリクエスト(https://github.com/vurtun/nuklear/pull/286)を提出しましたが、まだ採用されていないので、それまでここで明示的に初期化しておく事にします。
 *	  プルリクエストが採用されたら、この処理は不要になるので、削除して下さい。
 *	* Sat Nov 19 14:03:42 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit e229856 12 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 *	* Sun Nov 20 09:41:16 JST 2016 Naoyuki Sawa
 *	- 'nuklear.h'を更新しました。
 *	  下記のリビジョンをダウンロードし、前回と同じ変更を適用しました。
 *	- □使用した'nuklear.h'のリビジョン
 *	  │https://github.com/vurtun/nuklear
 *	  │Latest commit 6a374ea 5 hours ago
 *	  オリジナル版のNuklearの上記のリビジョンを「keep/nuklear-master.7z」に保存しておきました。
 */
#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
#define NK_STRTOD	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__
