FineKernelToolKit 2.9.0

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

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

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
SimpleWindow.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 #ifndef __FK_SIMPLE_WINDOW_HEADER__
73 #define __FK_SIMPLE_WINDOW_HEADER__
74
75 #include <FK/Window.h>
76 #include <FK/Light.h>
77 #include <FK/FrameController.H>
78 #include <FK/GuideObject.h>
79 #include <FK/TrackBall.h>
80 #include <FK/MotionCharactor.h>
81 #include <FK/SpriteModel.h>
82 #include <FK/Fullscreen.h>
83 #include <FK/Input.h>
84
85 enum fk_SwitchStatus {
86 FK_SW_RELEASE,
87 FK_SW_UP,
88 FK_SW_DOWN,
89 FK_SW_PRESS
90 };
91
92 typedef fk_SwitchStatus fkut_SwitchStatus;
93
94 #define FKUT_SW_RELEASE FK_SW_RELEASE
95 #define FKUT_SW_UP FK_SW_UP
96 #define FKUT_SW_DOWN FK_SW_DOWN
97 #define FKUT_SW_PRESS FK_SW_PRESS
98
99 enum fk_PadDirection {
100 FK_PAD_UP = 32,
101 FK_PAD_DOWN,
102 FK_PAD_LEFT,
103 FK_PAD_RIGHT
104 };
105
106 typedef fk_PadDirection fkut_PadDirection;
107
108 #define FKUT_PAD_UP FK_PAD_UP
109 #define FKUT_PAD_DOWN FK_PAD_DOWN
110 #define FKUT_PAD_LEFT FK_PAD_LEFT
111 #define FKUT_PAD_RIGHT FK_PAD_RIGHT
112
114
126 class fk_AppWindow {
127 private:
128 friend class fk_CubicModel;
129 friend class fk_SpriteModel;
130
131 Fl_Window *mainWin;
132 fk_Window *drawWin;
133
134 fk_AppWindow *ref_child;
135 fk_FrameController fps_admin;
136 fk_GuideObject guide;
137 fk_TrackBall *tb;
138 fk_FullscreenController fsc;
139
140 fk_Scene scene;
141 fk_Scene *ref_scene;
142
143 fk_Light lightShape;
144 fk_Model camera, light;
145 fk_Model *ref_camera;
146
147 int fps;
148 bool tbFlag, childMode;
149
150 static bool prevKeySt[256], prevSPKeySt[32], prevMouseSt[3];
151
152 fk_Input input;
153 fk_InputInfo prevInput[16], nowInput[16];
154 int inputCount;
155
156 void PushPrevStatus(void);
157 void ToggleScreen(void);
158
159 public:
160
162 fk_AppWindow(void);
164 fk_AppWindow(fk_AppWindow &parent);
166 ~fk_AppWindow(void);
167
169
170
172
179 void setWindowName(const std::string &name);
180
182
192 void setSize(int w, int h);
193
195
204 void setInnerSize(int x, int y, int w, int h);
205
207
220 void setBGColor(double r, double g, double b);
221
222
224
231 void setBGColor(const fk_Color &color);
232
234
248 void toFullscreen(void);
249
251
262 void toWindow(void);
264
266
267
269
274 void open(void);
275
277
287 void close(void);
288
290
306 bool update(bool forceFlag = false);
307
309
317 void setFPS(int fps);
319
320
322
323
342 void showGuide(fk_GuideMode mode =
343 FK_AXIS_X | FK_AXIS_Y | FK_AXIS_Z | FK_GRID_XZ);
344
346
352 void hideGuide(void);
353
355
363 void setGuideAxisWidth(double width);
364
366
374 void setGuideGridWidth(double width);
375
377
385 void setGuideScale(double scale);
386
388
396 void setGuideNum(int num);
398
400
401
403
410 void setCameraPos(double x, double y, double z);
411
413
418 void setCameraPos(const fk_Vector &pos);
419
421
429 void setCameraFocus(double x, double y, double z);
430
432
438 void setCameraFocus(const fk_Vector &pos);
439
441
450 void setCameraModel(fk_Model *model);
451
453
462 void setCameraModel(fk_Model &model);
463
465
474 fk_Model * getCameraModel(void);
475
476
478
485 void setCameraDefault(void);
487
489
490
512 void setScene(fk_Scene *scene, bool defCameraAndLight = false);
513
515
536 void setScene(fk_Scene &scene, bool defCameraAndLight = false);
537
539
547 fk_Scene * getScene(void);
548
550
557 void setSceneDefault(void);
558
560
577 void entry(fk_Model *model);
578
580
589 void entry(fk_Model &model);
590
592
604 void entry(fk_Model *model, fk_GuideObject *guide);
605
607
619 void entry(fk_Model &model, fk_GuideObject &guide);
620
622
630 void entry(fk_SpriteModel *model);
631
633
641 void entry(fk_SpriteModel &model);
642
644
653 void entry(fk_Performer *chara);
654
656
665 void entry(fk_Performer &chara);
666
668
676 void remove(fk_Model *model);
677
679
687 void remove(fk_Model &model);
688
690
702 void remove(fk_Model *model, fk_GuideObject *guide);
703
705
717 void remove(fk_Model &model, fk_GuideObject &guide);
718
720
729 void remove(fk_SpriteModel *model);
730
732
741 void remove(fk_SpriteModel &model);
742
744
753 void remove(fk_Performer *chara);
754
756
765 void remove(fk_Performer &chara);
766
768
776 void clearModel(bool defCameraAndLight = false);
778
779
781
782
784
804 fk_SwitchStatus getKeyStatus(char keyChar);
805
807
829 fk_SwitchStatus getSpecialKeyStatus(fk_SpecialKey keyCode);
830
832
834
835
837
849 fk_SwitchStatus getMouseStatus(fk_MouseButton buttonCode);
850
852
864 fk_Vector getMousePosition(void);
865
867
882 void setCursorState(bool visible, bool center);
884
886
887 // ゲームパッド認識個数取得関数
888 int getPadCount(void);
889 // ゲームパッドボタン状態取得関数
890 fk_SwitchStatus getPadButtonStatus(int padID, int buttonID);
891 // ゲームパッド方向キー取得関数
892 fk_Vector getPadDirection(int padID, int axisID);
893 // ゲームパッド管理オフジェクト取得関数
894 fk_Input * getPadManager(void);
896
898
899
901
909 void setTrackBallMode(bool mode);
910
912
937 bool isModelPicked(fk_Model *model, int pixel = 1,
938 int mouseX = -1, int mouseY = -1);
939
941
966 bool isModelPicked(fk_Model &model, int pixel = 1,
967 int mouseX = -1, int mouseY = -1);
968
970
980 void procMouseView(fk_Model *camera, double spinX,
981 double spinY, bool lockSW);
982
984
994 void procMouseView(fk_Model &camera, double spinX,
995 double spinY, bool lockSW);
997
998 };
999
1000 typedef fk_AppWindow fkut_SimpleWindow;
1001
1002 #endif
fk_AppWindow::getMouseStatus
fk_SwitchStatus getMouseStatus(fk_MouseButton buttonCode)
マウスボタン状態取得関数
fk_AppWindow::entry
void entry(fk_Model *model)
モデル表示登録関数1
fk_AppWindow
アプリケーションウィンドウクラス
Definition: SimpleWindow.h:126
fk_AppWindow::getPadManager
fk_Input * getPadManager(void)
fk_AppWindow::setScene
void setScene(fk_Scene *scene, bool defCameraAndLight=false)
シーン設定関数1
FK_PAD_LEFT
Definition: SimpleWindow.h:102
fk_AppWindow::open
void open(void)
ウィンドウ生成関数
Input.h
fkut_SimpleWindow
fk_AppWindow fkut_SimpleWindow
Definition: SimpleWindow.h:1000
fk_Light
光源を管理するクラス
Definition: Light.h:119
fk_AppWindow::setGuideScale
void setGuideScale(double scale)
グリッド幅設定関数
fk_AppWindow::isModelPicked
bool isModelPicked(fk_Model *model, int pixel=1, int mouseX=-1, int mouseY=-1)
モデルクリック判定関数1
fk_AppWindow::getPadCount
int getPadCount(void)
fk_MouseButton
fk_MouseButton
マウスボタンを表す列挙型
Definition: Window.h:137
fk_Performer
FK Performer キャラクターランタイムクラス
Definition: MotionCharactor.h:112
fk_AppWindow::setCursorState
void setCursorState(bool visible, bool center)
マウスカーソル表示制御関数
fk_AppWindow::getPadButtonStatus
fk_SwitchStatus getPadButtonStatus(int padID, int buttonID)
fk_InputInfo
ゲームパッドの入力を受け取るための構造体
Definition: Input.h:117
fk_Input
ゲームパッド・ジョイスティック系デバイス制御クラス
Definition: Input.h:257
FK_AXIS_Z
const fk_GuideMode FK_AXIS_Z
Definition: GuideObject.h:83
fk_AppWindow::getPadDirection
fk_Vector getPadDirection(int padID, int axisID)
fk_Model
モデルを生成、管理するクラス
Definition: Model.h:139
FK_SW_RELEASE
離しっぱなしの状態
Definition: SimpleWindow.h:86
fk_AppWindow::getCameraModel
fk_Model * getCameraModel(void)
カメラモデル取得関数
fk_AppWindow::showGuide
void showGuide(fk_GuideMode mode=FK_AXIS_X|FK_AXIS_Y|FK_AXIS_Z|FK_GRID_XZ)
グリッド・軸設定関数
fk_Vector
3次元ベクトルを管理するクラス
Definition: Vector.h:110
fk_AppWindow::setBGColor
void setBGColor(double r, double g, double b)
背景色設定関数1
fk_TrackBall
マウスによる視点操作クラス
Definition: TrackBall.h:86
fk_AppWindow::clearModel
void clearModel(bool defCameraAndLight=false)
全モデル登録解除関数
fk_AppWindow::setFPS
void setFPS(int fps)
FPS設定関数
fk_AppWindow::setCameraFocus
void setCameraFocus(double x, double y, double z)
カメラ注視点設定関数1
fk_Color
RGB色を管理するクラス
Definition: Material.h:92
fk_SpecialKey
fk_SpecialKey
特殊キーを表す列挙型
Definition: Window.h:101
fk_Scene
シーンを制御するクラス
Definition: Scene.h:109
fk_FullscreenController
フルスクリーン制御クラス
Definition: Fullscreen.h:95
fk_AppWindow::procMouseView
void procMouseView(fk_Model *camera, double spinX, double spinY, bool lockSW)
FPS視点的カメラ制御関数1.
FK_PAD_DOWN
Definition: SimpleWindow.h:101
Light.h
fk_AppWindow::hideGuide
void hideGuide(void)
グリッド・軸消去関数
FK_SW_PRESS
押しっぱなしの状態
Definition: SimpleWindow.h:89
fk_AppWindow::setTrackBallMode
void setTrackBallMode(bool mode)
トラックボールモード制御関数
fk_AppWindow::close
void close(void)
ウィンドウ破棄関数
fk_AppWindow::update
bool update(bool forceFlag=false)
シーン描画関数
SpriteModel.h
fk_AppWindow::getMousePosition
fk_Vector getMousePosition(void)
マウスポインタ位置取得関数
fk_AppWindow::setGuideNum
void setGuideNum(int num)
グリッド数設定関数
GuideObject.h
fk_AppWindow::getSpecialKeyStatus
fk_SwitchStatus getSpecialKeyStatus(fk_SpecialKey keyCode)
特殊キー状態取得関数
fk_AppWindow::toFullscreen
void toFullscreen(void)
フルスクリーン化関数
fk_SwitchStatus
fk_SwitchStatus
Definition: SimpleWindow.h:85
fkut_PadDirection
fk_PadDirection fkut_PadDirection
Definition: SimpleWindow.h:106
fk_AppWindow::fk_AppWindow
fk_AppWindow(void)
コンストラクタ
fk_AppWindow::setCameraModel
void setCameraModel(fk_Model *model)
カメラモデル設定関数1
fk_GuideMode
unsigned int fk_GuideMode
Definition: GuideObject.h:78
fk_GuideObject
座標系可視化支援クラス
Definition: GuideObject.h:114
fk_AppWindow::setSize
void setSize(int w, int h)
ウィンドウサイズ設定関数
fk_AppWindow::toWindow
void toWindow(void)
ウィンドウ化関数
FK_SW_UP
離した瞬間
Definition: SimpleWindow.h:87
fk_AppWindow::~fk_AppWindow
~fk_AppWindow(void)
デストラクタ
fk_AppWindow::setGuideAxisWidth
void setGuideAxisWidth(double width)
軸線幅設定関数
fk_AppWindow::getScene
fk_Scene * getScene(void)
シーン取得関数
TrackBall.h
fk_PadDirection
fk_PadDirection
Definition: SimpleWindow.h:99
fk_AppWindow::fk_CubicModel
friend class fk_CubicModel
Definition: SimpleWindow.h:128
FK_PAD_RIGHT
Definition: SimpleWindow.h:103
FK_GRID_XZ
const fk_GuideMode FK_GRID_XZ
Definition: GuideObject.h:84
fk_AppWindow::setCameraPos
void setCameraPos(double x, double y, double z)
カメラ位置設定関数1
FK_AXIS_Y
const fk_GuideMode FK_AXIS_Y
Definition: GuideObject.h:82
fkut_SwitchStatus
fk_SwitchStatus fkut_SwitchStatus
Definition: SimpleWindow.h:92
fk_AppWindow::getKeyStatus
fk_SwitchStatus getKeyStatus(char keyChar)
通常キー状態取得関数
FK_AXIS_X
const fk_GuideMode FK_AXIS_X
Definition: GuideObject.h:81
fk_Window
FLTK 用シーン描画ウィジェットクラス
Definition: Window.h:189
fk_AppWindow::setCameraDefault
void setCameraDefault(void)
カメラ初期化関数
fk_AppWindow::setInnerSize
void setInnerSize(int x, int y, int w, int h)
描画領域サイズ設定関数
Fullscreen.h
FK_PAD_UP
Definition: SimpleWindow.h:100
Window.h
fk_AppWindow::setWindowName
void setWindowName(const std::string &name)
ウィンドウタイトル設定関数
fk_AppWindow::setGuideGridWidth
void setGuideGridWidth(double width)
グリッド線幅設定関数
fk_SpriteModel
2D スプライトモデルクラス
Definition: SpriteModel.h:105
MotionCharactor.h
fk_AppWindow::setSceneDefault
void setSceneDefault(void)
シーン設定初期化関数
FK_SW_DOWN
押した瞬間
Definition: SimpleWindow.h:88