FineKernelToolKit 2.9.0

- メインページ
- ネームスペース
- クラス
- ファイル

- ファイル一覧
- ファイルメンバ

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Window.h
説明を見る。
1 /****************************************************************************
2 *
3 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
4 *
5 * Redistribution and use in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *
9 * - Redistributions of source code must retain the above
10 * copyright notice, this list of conditions and the
11 * following disclaimer.
12 *
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the
15 * following disclaimer in the documentation and/or
16 * other materials provided with the distribution.
17 *
18 * - Neither the name of the copyright holders nor the names
19 * of its contributors may be used to endorse or promote
20 * products derived from this software without specific
21 * prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 ****************************************************************************/
37 /****************************************************************************
38 *
39 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
40 *
41 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
42 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
43 *
44 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
45 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
46 *
47 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
48 * および下記免責条項を含めること。
49 *
50 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
51 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
52 * 含めること。
53 *
54 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
55 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
56 * コントリビューターの名前を使用してはならない。
57 *
58 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
59 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
60 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
61 * に限定されない、いかなる保証もないものとします。著作権者もコン
62 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
63 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
64 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
65 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
66 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
67 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
68 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
69 * ついて、一切責任を負わないものとします。
70 *
71 ****************************************************************************/
72
73 #ifdef FK_D3D
74 #include <FK/D3D/Window.h>
75 #else
76
77 // fk_Window for OpenGL
78
79 #ifndef __FK_WINDOW_HEADER__
80 #define __FK_WINDOW_HEADER__
81
82 #include <stdarg.h>
83
84 // for Graphics Header.
85 #include <FL/Fl_Gl_Window.H>
86 #include <FL/Fl_Multi_Browser.H>
87
88 // for FK Header.
89 #include <FK/Engine.H>
90 #include <FK/FrameController.H>
91
92 // for Graphics Routine
94 typedef unsigned int fk_FrameMode;
95
96 const fk_FrameMode FK_DEFAULT_FRAME = 0x0000;
97 const fk_FrameMode FK_WAIT_FRAME = 0x0001;
98 const fk_FrameMode FK_SKIP_FRAME = 0x0002;
99
101 enum fk_SpecialKey {
102 FK_SHIFT_R,
103 FK_SHIFT_L,
104 FK_CTRL_R,
105 FK_CTRL_L,
106 FK_ALT_R,
107 FK_ALT_L,
108 FK_ENTER,
109 FK_BACKSPACE,
110 FK_DELETE,
111 FK_CAPS_LOCK,
112 FK_TAB,
113 FK_PAGE_UP,
114 FK_PAGE_DOWN,
115 FK_HOME,
116 FK_END,
117 FK_INSERT,
118 FK_LEFT,
119 FK_RIGHT,
120 FK_UP,
121 FK_DOWN,
122 FK_F1,
123 FK_F2,
124 FK_F3,
125 FK_F4,
126 FK_F5,
127 FK_F6,
128 FK_F7,
129 FK_F8,
130 FK_F9,
131 FK_F10,
132 FK_F11,
133 FK_F12
134 };
135
137 enum fk_MouseButton {
138 FK_MOUSE1,
139 FK_MOUSE2,
140 FK_MOUSE3
141 };
142
144 enum fk_PutStrMode {
145 FK_PUTSTR_NONE,
146 FK_PUTSTR_CONSOLE,
147 FK_PUTSTR_ERR_CONSOLE,
148 FK_PUTSTR_BROWSER,
149 FK_PUTSTR_FILE
150 };
151
152
154
189 class fk_Window : public Fl_Gl_Window, public fk_BaseObject {
190
191 private:
192
193 fk_GraphicsEngine engine;
194
195 fk_Image snapBuffer;
196
197 bool winOpenFlag;
198 int GLWinWSize;
199 int GLWinHSize;
200 int GLWinXPosition;
201 int GLWinYPosition;
202 char lastKey;
203
204 fk_FrameMode frameMode;
205 unsigned long frameTime, prevTime;
206 unsigned long frameInterval;
207 int skipCount;
208
209 fk_FrameController fps_admin;
210 int fps;
211
212 bool stereoMode;
213
214
215 static Fl_Window *putWin;
216 static Fl_Multi_Browser *browser;
217 static fk_PutStrMode putStrMode;
218 static FILE *putStrFP;
219 static int winNum;
220
221 void SetPickViewPort(int &, int &);
222 bool IsInsideWindow(void);
223 Fl_Group * GetInhParentWindow(void);
224 void GetPickData(bool, fk_PickData *, int, int, int);
225
226 void draw(); // virtual Function from Fl_Gl_Window class
227
228 static void PutBrowser(const std::string &);
229
230 #ifdef WIN32
231 bool SnapImageGDI(fk_Image *);
232 #endif
233
234 protected:
235
236 void drawScene(void);
237 void drawSceneLeft(void);
238 void drawSceneRight(void);
239
240 public:
241
243
250 fk_Window(int x = 0, int y = 0,
251 int w = 300, int h = 300, std::string name = "FK Window");
252
254 virtual ~fk_Window();
255
256
258
259
261
266 void setScene(fk_Scene *scene);
268
270
271
287 int drawWindow(bool drawFlag = true);
288
290
299 bool winOpenStatus(void);
300
302
310 void resizeWindow(int x, int y, int w, int h);
311
313
344 bool getKeyStatus(char key, bool insideFlag = true);
345
347
380 bool getSpecialKeyStatus(fk_SpecialKey key, bool insideFlag = true);
381
383
401 char getLastKey(void);
402
404
431 void getMousePosition(int *x, int *y, bool insideFlag = true);
432
434
456 bool getMouseStatus(fk_MouseButton button, bool insideFlag = true);
457
459
473 int getMouseWheelStatus(void);
474
476
497 void getPickModel(fk_PickData *data, int pixel);
498
500
521 void getPickModel(fk_PickData *data, int pixel, int x, int y);
523
525
526
534 void setFPS(int fps);
535
536 #ifndef FK_DOXYGEN_USER_PROCESS
537
539
564 void setFrameMode(fk_FrameMode mode);
565
567
574 fk_FrameMode getFrameMode(void);
575
577
593 void setFrameInterval(int ms);
594
596
603 int getFrameInterval(void);
604
606
615 int getSkipFrame(void);
616
617 #endif
618
620
622
623
625
643 bool getProjectPosition(double x, double y,
644 fk_Plane *plane, fk_Vector *pos);
645
647
661 bool getProjectPosition(double x, double y,
662 double dist, fk_Vector *pos);
663
665
681 bool getWindowPosition(fk_Vector pos_3D, fk_Vector *pos_2D);
683
685
686
705 void setOGLPointerMode(bool mode);
706
708
722 bool getOGLPointerMode(void);
723
725
743 void setOGLTextureBindMode(bool mode);
744
746
760 bool getOGLTextureBindMode(void);
761
763
775 void clearTextureMemory(void);
776
778
794 unsigned long getUsingTextureMemory(void);
795
797
807 virtual void preInit(void) {}
808
810
820 virtual void postInit(void) {}
821
823
831 virtual void preDraw(void) {}
832
834
842 virtual void postDraw(void) {}
844
845 #ifndef FK_DOXYGEN_USER_PROCESS
846 virtual void preDrawLeft(void) {}
847 virtual void postDrawLeft(void) {}
848 virtual void preDrawRight(void) {}
849 virtual void postDrawRight(void) {}
850 #endif
851
853
854
856
872 bool snapImage(std::string fileName,
873 fk_ImageType format = FK_IMAGE_BMP,
874 fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
875
877
890 bool snapImage(fk_Image *image,
891 fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
893
895
896
898
911 static unsigned long getNow(void);
913
915
916
918
941 static void setPutStrMode(const fk_PutStrMode mode);
942
944
951 static fk_PutStrMode getPutStrMode(void);
952
954
971 static bool setPutFile(const std::string &fileName);
972
974
988 static void putString(const std::string &str);
989
991
1005 static void printf(const char *format, ...);
1006
1008
1021 static void clearBrowser(void);
1023
1025
1026
1047 void setOGLStereoMode(bool mode);
1048
1050
1063 bool getOGLStereoMode(void);
1065
1066 };
1067
1068
1069 #endif /* !__FK_WINDOW_HEADER__ */
1070
1071 #endif /* !D3D_BRANCH */
fk_Window::getPickModel
void getPickModel(fk_PickData *data, int pixel)
ピックによるモデル選択関数
FK_F3
F3 ファンクションキー
Definition: Window.h:124
FK_MOUSE1
マウス左クリック(第1ボタン)
Definition: Window.h:138
fk_Window::getUsingTextureMemory
unsigned long getUsingTextureMemory(void)
テクスチャメモリ使用量取得関数
FK_UP
上矢印キー
Definition: Window.h:120
fk_Window::setFPS
void setFPS(int fps)
fk_Plane
幾何平面を管理するクラス
Definition: Plane.h:96
FK_WAIT_FRAME
const fk_FrameMode FK_WAIT_FRAME
フレーム待機制御
Definition: Window.h:97
fk_Window::printf
static void printf(const char *format,...)
メッセージ出力書式付き設定関数
fk_Window::drawWindow
int drawWindow(bool drawFlag=true)
描画更新関数
fk_Window::getMousePosition
void getMousePosition(int *x, int *y, bool insideFlag=true)
マウスポインタ位置取得関数
fk_Window::getMouseWheelStatus
int getMouseWheelStatus(void)
マウスホイール回転量取得関数
FK_TAB
タブキー
Definition: Window.h:112
fk_MouseButton
fk_MouseButton
マウスボタンを表す列挙型
Definition: Window.h:137
FK_CAPS_LOCK
キャップスロックキー
Definition: Window.h:111
FK_CTRL_L
左コントロールキー
Definition: Window.h:105
FK_CTRL_R
右コントロールキー
Definition: Window.h:104
FK_PUTSTR_FILE
ファイル出力
Definition: Window.h:149
fk_Window::getProjectPosition
bool getProjectPosition(double x, double y, fk_Plane *plane, fk_Vector *pos)
投影平面から任意平面への射影点算出関数
fk_Window::~fk_Window
virtual ~fk_Window()
デストラクタ
fk_Window::putString
static void putString(const std::string &str)
メッセージ出力文字列設定関数
FK_F10
F10 ファンクションキー
Definition: Window.h:131
fk_SnapProcMode
fk_SnapProcMode
画像取り込み方法を表す列挙型
Definition: Image.h:128
fk_Window::resizeWindow
void resizeWindow(int x, int y, int w, int h)
描画領域寸法変更関数
fk_Vector
3次元ベクトルを管理するクラス
Definition: Vector.h:110
FK_DELETE
デリート(削除)キー
Definition: Window.h:110
fk_Window::drawSceneLeft
void drawSceneLeft(void)
FK_INSERT
インサートキー
Definition: Window.h:117
fk_Window::setPutFile
static bool setPutFile(const std::string &fileName)
メッセージ出力用ファイル設定関数
fk_Window::getKeyStatus
bool getKeyStatus(char key, bool insideFlag=true)
標準キー状態取得関数
fk_Window::setScene
void setScene(fk_Scene *scene)
シーン登録関数
fk_Window::clearBrowser
static void clearBrowser(void)
メッセージ出力用ブラウザ初期化関数
FK_SKIP_FRAME
const fk_FrameMode FK_SKIP_FRAME
フレーム間引き制御
Definition: Window.h:98
fk_Window::preInit
virtual void preInit(void)
初期化前処理関数
Definition: Window.h:807
FK_IMAGE_BMP
Windows Bitmap (BMP) 形式
Definition: Image.h:122
fk_SpecialKey
fk_SpecialKey
特殊キーを表す列挙型
Definition: Window.h:101
fk_Scene
シーンを制御するクラス
Definition: Scene.h:109
FK_ALT_R
右オルトキー
Definition: Window.h:106
fk_Window::setOGLTextureBindMode
void setOGLTextureBindMode(bool mode)
OpenGL テクスチャ切り替え低減処理制御関数
FK_F1
F1 ファンクションキー
Definition: Window.h:122
fk_Window::winOpenStatus
bool winOpenStatus(void)
描画状態取得関数
FK_HOME
ホームキー
Definition: Window.h:115
FK_DOWN
下矢印キー
Definition: Window.h:121
fk_Window::drawScene
void drawScene(void)
fk_Window::setPutStrMode
static void setPutStrMode(const fk_PutStrMode mode)
メッセージ出力モード設定関数
FK_END
エンドキー
Definition: Window.h:116
fk_Window::clearTextureMemory
void clearTextureMemory(void)
テクスチャメモリ解放関数
FK_F2
F2 ファンクションキー
Definition: Window.h:123
FK_MOUSE2
マウス中クリック、あるいはホイールクリック(第2ボタン)
Definition: Window.h:139
FK_LEFT
左矢印キー
Definition: Window.h:118
fk_Window::drawSceneRight
void drawSceneRight(void)
fk_Window::getSpecialKeyStatus
bool getSpecialKeyStatus(fk_SpecialKey key, bool insideFlag=true)
特殊キー状態取得関数
FK_F4
F4 ファンクションキー
Definition: Window.h:125
fk_Window::postInit
virtual void postInit(void)
初期化後処理関数
Definition: Window.h:820
fk_Window::snapImage
bool snapImage(std::string fileName, fk_ImageType format=FK_IMAGE_BMP, fk_SnapProcMode mode=FK_SNAP_GL_FRONT)
描画画像ファイル出力関数
FK_BACKSPACE
バックスペース(後退)キー
Definition: Window.h:109
fk_Window::getMouseStatus
bool getMouseStatus(fk_MouseButton button, bool insideFlag=true)
マウスボタン状態取得関数
fk_Window::getPutStrMode
static fk_PutStrMode getPutStrMode(void)
メッセージ出力モード参照関数
FK_PUTSTR_BROWSER
専用ブラウザ出力
Definition: Window.h:148
fk_Window::getOGLTextureBindMode
bool getOGLTextureBindMode(void)
OpenGL テクスチャ切り替え低減処理参照関数
fk_BaseObject
FK の各クラスの基盤となる基本クラス
Definition: Base.h:212
fk_Window::fk_Window
fk_Window(int x=0, int y=0, int w=300, int h=300, std::string name="FK Window")
コンストラクタ
FK_PUTSTR_CONSOLE
コンソール標準出力
Definition: Window.h:146
fk_PickData
ピックによる取得データを管理するクラス
Definition: PickData.h:103
FK_PAGE_DOWN
ページダウンキー
Definition: Window.h:114
FK_F11
F11 ファンクションキー
Definition: Window.h:132
FK_F6
F6 ファンクションキー
Definition: Window.h:127
fk_ImageType
fk_ImageType
画像フォーマットを表す列挙型
Definition: Image.h:121
fk_Image
画像を生成、管理するクラス
Definition: Image.h:235
FK_PUTSTR_ERR_CONSOLE
コンソールエラー出力
Definition: Window.h:147
fk_PutStrMode
fk_PutStrMode
メッセージ出力タイプを表す列挙型
Definition: Window.h:144
FK_F5
F5 ファンクションキー
Definition: Window.h:126
fk_Window::getWindowPosition
bool getWindowPosition(fk_Vector pos_3D, fk_Vector *pos_2D)
空間座標から投影座標への射影点算出関数
FK_F8
F8 ファンクションキー
Definition: Window.h:129
fk_Window::postDraw
virtual void postDraw(void)
描画後処理関数
Definition: Window.h:842
FK_ALT_L
左オルトキー
Definition: Window.h:107
fk_Window::getLastKey
char getLastKey(void)
最終押下キー取得関数
FK_MOUSE3
マウス右クリック(第3ボタン)
Definition: Window.h:140
fk_FrameMode
unsigned int fk_FrameMode
フレーム制御タイプを表す型
Definition: Window.h:94
fk_Window
FLTK 用シーン描画ウィジェットクラス
Definition: Window.h:189
fk_Window::setOGLStereoMode
void setOGLStereoMode(bool mode)
立体視モード設定関数
FK_SNAP_GL_FRONT
OpenGL フロントバッファ
Definition: Image.h:129
FK_PAGE_UP
ページアップキー
Definition: Window.h:113
FK_RIGHT
右矢印キー
Definition: Window.h:119
FK_F9
F9 ファンクションキー
Definition: Window.h:130
FK_SHIFT_L
左シフトキー
Definition: Window.h:103
fk_Window::getOGLPointerMode
bool getOGLPointerMode(void)
OpenGL 頂点配列処理参照関数
FK_ENTER
エンター(改行、リターン)キー
Definition: Window.h:108
fk_Window::preDraw
virtual void preDraw(void)
描画前処理関数
Definition: Window.h:831
FK_DEFAULT_FRAME
const fk_FrameMode FK_DEFAULT_FRAME
フレーム制御無効
Definition: Window.h:96
FK_F12
F12 ファンクションキー
Definition: Window.h:133
FK_PUTSTR_NONE
出力なし
Definition: Window.h:145
FK_SHIFT_R
右シフトキー
Definition: Window.h:102
fk_Window::getNow
static unsigned long getNow(void)
現時点システム時間参照関数
fk_Window::setOGLPointerMode
void setOGLPointerMode(bool mode)
OpenGL 頂点配列処理制御関数
FK_F7
F7 ファンクションキー
Definition: Window.h:128
fk_Window::getOGLStereoMode
bool getOGLStereoMode(void)
立体視モード取得関数