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 
90 };
91 
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 
100  FK_PAD_UP = 32,
104 };
105 
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 
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;
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 =
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 
830 
832 
834 
835 
837 
850 
852 
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 
1001 
1002 #endif
fk_SwitchStatus getMouseStatus(fk_MouseButton buttonCode)
マウスボタン状態取得関数
void entry(fk_Model *model)
モデル表示登録関数1
アプリケーションウィンドウクラス
Definition: SimpleWindow.h:126
fk_Input * getPadManager(void)
void setScene(fk_Scene *scene, bool defCameraAndLight=false)
シーン設定関数1
Definition: SimpleWindow.h:102
void open(void)
ウィンドウ生成関数
fk_AppWindow fkut_SimpleWindow
Definition: SimpleWindow.h:1000
光源を管理するクラス
Definition: Light.h:119
void setGuideScale(double scale)
グリッド幅設定関数
bool isModelPicked(fk_Model *model, int pixel=1, int mouseX=-1, int mouseY=-1)
モデルクリック判定関数1
int getPadCount(void)
fk_MouseButton
マウスボタンを表す列挙型
Definition: Window.h:137
FK Performer キャラクターランタイムクラス
Definition: MotionCharactor.h:112
void setCursorState(bool visible, bool center)
マウスカーソル表示制御関数
fk_SwitchStatus getPadButtonStatus(int padID, int buttonID)
ゲームパッドの入力を受け取るための構造体
Definition: Input.h:117
ゲームパッド・ジョイスティック系デバイス制御クラス
Definition: Input.h:257
const fk_GuideMode FK_AXIS_Z
Definition: GuideObject.h:83
fk_Vector getPadDirection(int padID, int axisID)
モデルを生成、管理するクラス
Definition: Model.h:139
離しっぱなしの状態
Definition: SimpleWindow.h:86
fk_Model * getCameraModel(void)
カメラモデル取得関数
void showGuide(fk_GuideMode mode=FK_AXIS_X|FK_AXIS_Y|FK_AXIS_Z|FK_GRID_XZ)
グリッド・軸設定関数
3次元ベクトルを管理するクラス
Definition: Vector.h:110
void setBGColor(double r, double g, double b)
背景色設定関数1
マウスによる視点操作クラス
Definition: TrackBall.h:86
void clearModel(bool defCameraAndLight=false)
全モデル登録解除関数
void setFPS(int fps)
FPS設定関数
void setCameraFocus(double x, double y, double z)
カメラ注視点設定関数1
RGB色を管理するクラス
Definition: Material.h:92
fk_SpecialKey
特殊キーを表す列挙型
Definition: Window.h:101
シーンを制御するクラス
Definition: Scene.h:109
フルスクリーン制御クラス
Definition: Fullscreen.h:95
void procMouseView(fk_Model *camera, double spinX, double spinY, bool lockSW)
FPS視点的カメラ制御関数1.
Definition: SimpleWindow.h:101
void hideGuide(void)
グリッド・軸消去関数
押しっぱなしの状態
Definition: SimpleWindow.h:89
void setTrackBallMode(bool mode)
トラックボールモード制御関数
void close(void)
ウィンドウ破棄関数
bool update(bool forceFlag=false)
シーン描画関数
fk_Vector getMousePosition(void)
マウスポインタ位置取得関数
void setGuideNum(int num)
グリッド数設定関数
fk_SwitchStatus getSpecialKeyStatus(fk_SpecialKey keyCode)
特殊キー状態取得関数
void toFullscreen(void)
フルスクリーン化関数
fk_SwitchStatus
Definition: SimpleWindow.h:85
fk_PadDirection fkut_PadDirection
Definition: SimpleWindow.h:106
fk_AppWindow(void)
コンストラクタ
void setCameraModel(fk_Model *model)
カメラモデル設定関数1
unsigned int fk_GuideMode
Definition: GuideObject.h:78
座標系可視化支援クラス
Definition: GuideObject.h:114
void setSize(int w, int h)
ウィンドウサイズ設定関数
void toWindow(void)
ウィンドウ化関数
離した瞬間
Definition: SimpleWindow.h:87
~fk_AppWindow(void)
デストラクタ
void setGuideAxisWidth(double width)
軸線幅設定関数
fk_Scene * getScene(void)
シーン取得関数
fk_PadDirection
Definition: SimpleWindow.h:99
friend class fk_CubicModel
Definition: SimpleWindow.h:128
Definition: SimpleWindow.h:103
const fk_GuideMode FK_GRID_XZ
Definition: GuideObject.h:84
void setCameraPos(double x, double y, double z)
カメラ位置設定関数1
const fk_GuideMode FK_AXIS_Y
Definition: GuideObject.h:82
fk_SwitchStatus fkut_SwitchStatus
Definition: SimpleWindow.h:92
fk_SwitchStatus getKeyStatus(char keyChar)
通常キー状態取得関数
const fk_GuideMode FK_AXIS_X
Definition: GuideObject.h:81
FLTK 用シーン描画ウィジェットクラス
Definition: Window.h:189
void setCameraDefault(void)
カメラ初期化関数
void setInnerSize(int x, int y, int w, int h)
描画領域サイズ設定関数
Definition: SimpleWindow.h:100
void setWindowName(const std::string &name)
ウィンドウタイトル設定関数
void setGuideGridWidth(double width)
グリッド線幅設定関数
2D スプライトモデルクラス
Definition: SpriteModel.h:105
void setSceneDefault(void)
シーン設定初期化関数
押した瞬間
Definition: SimpleWindow.h:88