FineKernelToolKit 2.9.0

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

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

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
ShapeViewer.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_SHAPE_VIEWER_HEADER__
73 #define __FK_SHAPE_VIEWER_HEADER__
74
75 #include <FK/Window.h>
76 #include <FK/MatExample.h>
77 #include <FK/Line.h>
78 #include <FK/Texture.h>
79 #include <FK/Model.h>
80 #include <FK/Light.h>
81 #include <FK/Scene.h>
82 #include <map>
83
84 #ifndef FK_DOXYGEN_USER_PROCESS
85
86 enum fk_ShapeGUIMenuItem {
87 FK_SV_GUI_NONE,
88 FK_SV_GUI_WRLOPEN,
89 FK_SV_GUI_STLOPEN,
90 FK_SV_GUI_DXFOPEN,
91 FK_SV_GUI_WRLSAVE,
92 FK_SV_GUI_STLSAVE,
93 FK_SV_GUI_IMAGESNAP,
94 FK_SV_GUI_QUIT,
95 FK_SV_GUI_POLYDRAW,
96 FK_SV_GUI_EDGEDRAW,
97 FK_SV_GUI_VERTEXDRAW,
98 FK_SV_GUI_LIGHTROTATE,
99 FK_SV_GUI_AXISDRAW,
100 FK_SV_GUI_AMBIENT,
101 FK_SV_GUI_DIFFUSE,
102 FK_SV_GUI_SPECULAR,
103 FK_SV_GUI_EMISSION,
104 FK_SV_GUI_SHININESS,
105 FK_SV_GUI_VERTEXCOLOR,
106 FK_SV_GUI_EDGECOLOR
107 };
108
109 class fk_GUI_;
110
111 #endif
112
114
150 class fk_ShapeViewer : public fk_BaseObject {
151 private:
152
153 fk_Dimension fkWinSize;
154 fk_Dimension allWinSize;
155 fk_Dimension groupPos;
156 fk_Dimension mousePos;
157
158 int mouseX, mouseY;
159
160 // Window
161 Fl_Window *mainWindow;
162 fk_Window *viewWin;
163
164 // GUI
165 fk_GUI_ *gui;
166
167 // flag
168 bool changeFlag;
169 bool lightFlag;
170 bool materialFlag;
171 bool moveFlag;
172 bool oldMoveFlag;
173 fk_DrawMode drawMode;
174 bool axisFlag;
175
176 // FK Object
177 fk_Model parentModel;
178 std::vector<fk_Model *> modelArray;
179 std::map<int, int> IDMap;
180 fk_Model lightModel[2], camera, axisModel;
181 fk_Solid localSolid;
182 fk_Line axisLine;
183 fk_Light light;
184 fk_Scene scene;
185 std::vector<fk_Material *> polyMaterial;
186 std::vector<fk_Color *> edgeColor;
187 std::vector<fk_Color *> vertexColor;
188
189 void InitValue(void);
190 void InitFlag(void);
191 void InitWindow(void);
192 void InitGUI(void);
193 void LightInit(void);
194 void AxisInit(void);
195 void ViewInit(void);
196 void ModelInit(int, fk_Shape *);
197 void RotateLight(double);
198 bool MenuSelect(void);
199 void SetOrientation(double, double, double, double);
200 void SetAxisLine(double);
201 void MovePosition(double, double, double);
202 void DragShape(void);
203 void KeyHandle(void);
204 std::string CommonFileChooser(std::string, int, std::string);
205 void SetAllMaterial(void);
206 void SetSceneFlg(fk_ShapeGUIMenuItem);
207
208 void GetMaterial(int, fk_ShapeGUIMenuItem,
209 double *, double *, double *);
210 void SetMaterial(int, fk_ShapeGUIMenuItem,
211 double, double, double);
212 void SetDrawMode(void);
213
214 public:
216
223 fk_ShapeViewer(int w = 300, int h = 360);
224
226 virtual ~fk_ShapeViewer();
227
229
230
232
250 bool draw(void);
251
253
259 void setWindowSize(int w, int h);
260
262
280 void setOGLPointerMode(bool mode);
281
283
293 bool getOGLPointerMode(void);
294
296
298
299
309 void setShape(fk_Shape *shape);
310
312
322 void setShape(int ID, fk_Shape *shape);
323
325
334 fk_Shape * getShape(int ID = 0);
335
337
342 int getModelNum(void);
343
345
348 void clearModel(void);
349
351
364 virtual bool shapeProcess(fk_Solid *shape);
366
368
369
371
398 void setDrawMode(fk_DrawMode mode);
399
401
408 fk_DrawMode getDrawMode(void);
409
411
420 void setBlendStatus(bool mode);
421
423
430 bool getBlendStatus(void);
431
433
440 void setBGColor(fk_Color col);
441
443
454 void setBGColor(float r, float g, float b);
455
457
464 fk_Color getBGColor(void);
465
467
474 void setAxisMode(bool mode);
475
477
484 bool getAxisMode(void);
485
487
493 void setAxisScale(double scale);
494
496
503 double getAxisScale(void);
504
505
506
508
513 fk_Vector getCenter(void);
515
517
518
520
548 void setDrawMode(int ID, fk_DrawMode mode);
549
551
560 fk_DrawMode getDrawMode(int ID);
561
563
570 void setLineWidth(int ID, double width);
571
573
583 double getLineWidth(int ID);
584
586
593 void setPointSize(int ID, double size);
594
596
606 double getPointSize(int ID);
607
609
617 void setMaterial(int ID, fk_Material mat);
618
620
628 void setEdgeColor(int ID, fk_Color col);
629
631
639 void setVertexColor(int ID, fk_Color col);
640
642
644
645
647
656 void setHead(double angle);
657
659
666 double getHead(void);
667
669
678 void setPitch(double angle);
679
681
688 double getPitch(void);
689
691
700 void setBank(double angle);
701
703
710 double getBank(void);
711
713
720 void setScale(double scale);
721
723
730 double getScale(void);
731
733
735
736
738
748 void setPosition(int ID, fk_Vector pos);
749
751
763 void setPosition(int ID, double x, double y, double z);
764
766
777 void setAngle(int ID, fk_Angle angle);
778
780
794 void setAngle(int ID, double h, double p, double b);
795
797
808 void setVec(int ID, fk_Vector vec);
809
811
824 void setVec(int ID, double x, double y, double z);
825
827
838 void setUpvec(int ID, fk_Vector vec);
839
841
854 void setUpvec(int ID, double x, double y, double z);
856
858
859
861
886 void setFrameMode(fk_FrameMode mode);
887
889
896 fk_FrameMode getFrameMode(void);
897
899
915 void setFrameInterval(int ms);
916
918
925 int getFrameInterval(void);
926
928
937 int getSkipFrame(void);
939
941
942
943
945
963 bool snapImage(std::string fileName,
964 fk_ImageType format = FK_IMAGE_BMP,
965 fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
966
968
984 bool snapImage(fk_Image *image,
985 fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
987
989
990
992
998 void setPutStrMode(const fk_PutStrMode mode);
999
1001
1007 fk_PutStrMode getPutStrMode(void);
1008
1010
1016 bool setPutFile(const std::string &str);
1017
1019
1025 void putString(const std::string &str);
1026
1028
1034 void printf(const char *format, ...);
1035
1037
1043 void clearBrowser(void);
1045 };
1046
1047 #endif // !__FK_SHAPE_VIEWER_HEADER__
fk_ShapeViewer::getPutStrMode
fk_PutStrMode getPutStrMode(void)
メッセージ出力モード参照関数
fk_ShapeViewer::setPutStrMode
void setPutStrMode(const fk_PutStrMode mode)
メッセージ出力モード設定関数
fk_ShapeViewer::getBGColor
fk_Color getBGColor(void)
背景色参照関数
fk_ShapeViewer::getSkipFrame
int getSkipFrame(void)
スキップフレーム数参照関数
fk_ShapeViewer::getBlendStatus
bool getBlendStatus(void)
透過処理参照関数
fk_ShapeViewer::setBGColor
void setBGColor(fk_Color col)
背景色設定関数1
fk_ShapeViewer::setDrawMode
void setDrawMode(fk_DrawMode mode)
描画モード設定関数
Line.h
fk_ShapeViewer::getOGLPointerMode
bool getOGLPointerMode(void)
OpenGL 頂点配列処理参照関数
fk_Light
光源を管理するクラス
Definition: Light.h:119
Texture.h
fk_ShapeViewer::getModelNum
int getModelNum(void)
形状設定数参照関数
fk_ShapeViewer::clearModel
void clearModel(void)
形状設定初期化関数
fk_ShapeViewer::getFrameMode
fk_FrameMode getFrameMode(void)
フレームレート制御方法参照関数
fk_ShapeViewer::setPointSize
void setPointSize(int ID, double size)
形状頂点描画サイズ設定関数
fk_ShapeViewer::setFrameMode
void setFrameMode(fk_FrameMode mode)
フレームレート制御方法指定関数
fk_Line
有向線分を生成、管理するクラス
Definition: Line.h:92
fk_ShapeViewer::getAxisScale
double getAxisScale(void)
座標軸大きさ参照関数
fk_Model
モデルを生成、管理するクラス
Definition: Model.h:139
fk_SnapProcMode
fk_SnapProcMode
画像取り込み方法を表す列挙型
Definition: Image.h:128
fk_Angle
オイラー角を表すクラス
Definition: Angle.h:90
fk_ShapeViewer
簡易形状表示システム用クラス
Definition: ShapeViewer.h:150
fk_Vector
3次元ベクトルを管理するクラス
Definition: Vector.h:110
fk_ShapeViewer::putString
void putString(const std::string &str)
メッセージ出力文字列設定関数
Model.h
Scene.h
fk_ShapeViewer::setPosition
void setPosition(int ID, fk_Vector pos)
形状位置設定関数1
fk_ShapeViewer::setUpvec
void setUpvec(int ID, fk_Vector vec)
形状アップベクトル設定関数1
fk_ShapeViewer::setScale
void setScale(double scale)
カメラ倍率設定関数
fk_Shape
形状用基底クラス
Definition: Shape.h:86
fk_Color
RGB色を管理するクラス
Definition: Material.h:92
FK_IMAGE_BMP
Windows Bitmap (BMP) 形式
Definition: Image.h:122
fk_Scene
シーンを制御するクラス
Definition: Scene.h:109
Light.h
fk_ShapeViewer::getBank
double getBank(void)
カメラバンク角参照関数
fk_ShapeViewer::getAxisMode
bool getAxisMode(void)
座標軸描画参照関数
fk_ShapeViewer::setBank
void setBank(double angle)
カメラバンク角設定関数
fk_ShapeViewer::setWindowSize
void setWindowSize(int w, int h)
描画領域サイズ変更関数
fk_ShapeViewer::setFrameInterval
void setFrameInterval(int ms)
フレーム間時間設定関数
fk_ShapeViewer::setShape
void setShape(fk_Shape *shape)
単独形状設定関数
fk_ShapeViewer::getPitch
double getPitch(void)
カメラピッチ角参照関数
fk_ShapeViewer::printf
void printf(const char *format,...)
メッセージ出力書式付き設定関数
fk_ShapeViewer::setAxisMode
void setAxisMode(bool mode)
座標軸描画設定関数
fk_ShapeViewer::draw
bool draw(void)
描画更新関数
fk_ShapeViewer::~fk_ShapeViewer
virtual ~fk_ShapeViewer()
デストラクタ
fk_ShapeViewer::setPitch
void setPitch(double angle)
カメラピッチ角設定関数
fk_ShapeViewer::setBlendStatus
void setBlendStatus(bool mode)
透過処理設定関数
fk_ShapeViewer::getScale
double getScale(void)
カメラ倍率参照関数
fk_BaseObject
FK の各クラスの基盤となる基本クラス
Definition: Base.h:212
fk_ShapeViewer::setAxisScale
void setAxisScale(double scale)
座標軸大きさ設定関数
fk_ShapeViewer::setPutFile
bool setPutFile(const std::string &str)
メッセージ出力用ファイル設定関数
fk_Solid
半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス
Definition: Solid.h:137
fk_Material
マテリアル(質感)を管理するクラス
Definition: Material.h:311
fk_ShapeViewer::getPointSize
double getPointSize(int ID)
形状頂点描画サイズ参照関数
MatExample.h
fk_ShapeViewer::setLineWidth
void setLineWidth(int ID, double width)
形状稜線描画幅設定関数
fk_ImageType
fk_ImageType
画像フォーマットを表す列挙型
Definition: Image.h:121
fk_ShapeViewer::getFrameInterval
int getFrameInterval(void)
フレーム間時間参照関数
fk_Image
画像を生成、管理するクラス
Definition: Image.h:235
fk_ShapeViewer::setAngle
void setAngle(int ID, fk_Angle angle)
形状姿勢設定関数1
fk_ShapeViewer::clearBrowser
void clearBrowser(void)
メッセージ出力用ブラウザ初期化関数
fk_ShapeViewer::shapeProcess
virtual bool shapeProcess(fk_Solid *shape)
形状設定時処理関数
fk_ShapeViewer::setVec
void setVec(int ID, fk_Vector vec)
形状方向ベクトル設定関数1
fk_PutStrMode
fk_PutStrMode
メッセージ出力タイプを表す列挙型
Definition: Window.h:144
fk_ShapeViewer::setEdgeColor
void setEdgeColor(int ID, fk_Color col)
形状稜線描画色設定関数
fk_ShapeViewer::snapImage
bool snapImage(std::string fileName, fk_ImageType format=FK_IMAGE_BMP, fk_SnapProcMode mode=FK_SNAP_GL_FRONT)
描画画像ファイル出力関数
fk_ShapeViewer::setVertexColor
void setVertexColor(int ID, fk_Color col)
形状頂点描画色設定関数
fk_ShapeViewer::setHead
void setHead(double angle)
カメラヘッド角設定関数
fk_Dimension
画像サイズを表すクラス
Definition: Image.h:141
fk_FrameMode
unsigned int fk_FrameMode
フレーム制御タイプを表す型
Definition: Window.h:94
fk_DrawMode
unsigned int fk_DrawMode
Definition: Model.h:81
fk_Window
FLTK 用シーン描画ウィジェットクラス
Definition: Window.h:189
fk_ShapeViewer::getDrawMode
fk_DrawMode getDrawMode(void)
描画モード参照関数
FK_SNAP_GL_FRONT
OpenGL フロントバッファ
Definition: Image.h:129
fk_ShapeViewer::setMaterial
void setMaterial(int ID, fk_Material mat)
形状マテリアル設定関数
fk_ShapeViewer::getHead
double getHead(void)
カメラヘッド角参照関数
fk_ShapeViewer::setOGLPointerMode
void setOGLPointerMode(bool mode)
OpenGL 頂点配列処理制御関数
Window.h
fk_ShapeViewer::getShape
fk_Shape * getShape(int ID=0)
形状参照関数
fk_ShapeViewer::getCenter
fk_Vector getCenter(void)
描画領域中心座標参照関数
fk_ShapeViewer::fk_ShapeViewer
fk_ShapeViewer(int w=300, int h=360)
コンストラクタ
fk_ShapeViewer::getLineWidth
double getLineWidth(int ID)
形状稜線描画幅参照関数