FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
ShapeViewer.h
[詳解]
1#if !defined(__FK_SHAPE_VIEWER_HEADER__)
2#define __FK_SHAPE_VIEWER_HEADER__
3
4#include <FK/Window.h>
5#include <FK/MatExample.h>
6#include <FK/Line.h>
7#include <FK/Solid.h>
8#include <FK/Texture.h>
9#include <FK/Model.h>
10#include <FK/Light.h>
11#include <FK/Scene.h>
12#include <map>
13
14namespace FK {
15#if !defined(FK_DOXYGEN_USER_PROCESS)
16
17 enum class fk_ShapeGUIMenuItem {
18 NONE,
19 WRLOPEN,
20 STLOPEN,
21 DXFOPEN,
22 WRLSAVE,
23 STLSAVE,
24 IMAGESNAP,
25 QUIT,
26 POLYDRAW,
27 EDGEDRAW,
28 VERTEXDRAW,
29 LIGHTROTATE,
30 AXISDRAW,
31 AMBIENT,
32 DIFFUSE,
33 SPECULAR,
34 EMISSION,
35 SHININESS,
36 VERTEXCOLOR,
37 EDGECOLOR
38 };
39
40 class fk_GUI_;
41
42#endif
43
45
82#if !defined(FK_DOXYGEN_USER_PROCESS)
83 class Member {
84 public:
85 fk_Dimension fkWinSize;
86 fk_Dimension allWinSize;
87 fk_Dimension groupPos;
88 fk_Dimension mousePos;
89
90 int mouseX, mouseY;
91
92 // Window
93 std::unique_ptr<Fl_Window> mainWindow;
94 std::unique_ptr<fk_Window> viewWin;
95 int fps;
96 fk_FrameController fps_admin;
97
98 // GUI
99 std::unique_ptr<fk_GUI_> gui;
100
101 // flag
102 bool changeFlag;
103 bool lightFlag;
104 //bool materialFlag;
105 bool moveFlag;
106 bool oldMoveFlag;
107 fk_Draw drawMode;
108 bool axisFlag;
109
110 // FK Object
111 fk_Model parentModel;
112 std::map<int, int> IDMap;
113 fk_Model lightModel[2], camera, axisModel;
114 fk_Solid localSolid;
115 fk_Line axisLine;
116 fk_Light light;
117 fk_Scene scene;
118 std::vector<std::unique_ptr<fk_Model>> modelArray;
119 std::vector<std::unique_ptr<fk_Material>> polyMaterial;
120 std::vector<std::unique_ptr<fk_Color>> edgeColor;
121 std::vector<std::unique_ptr<fk_Color>> vertexColor;
122
123 Member(void);
124 };
125#endif
126
127 public:
129
136 fk_ShapeViewer(int w = 300, int h = 360);
137
140
143
145
163 bool draw(void);
164
166
172 void setWindowSize(int w, int h);
173
175
178
180
189 void setShape(fk_Shape *shape);
190
192
202 void setShape(int ID, fk_Shape *shape);
203
205
214 fk_Shape * getShape(int ID = 0);
215
217
222 int getModelNum(void);
223
225
228 void clearModel(void);
229
231
234
236
270
272
280
282
293
295
303
305
314
316
324
326
335 void setSmoothMode(bool mode);
336
338
345 bool getSmoothMode(void);
346
348
357 void setBlendStatus(bool mode);
358
360
367 bool getBlendStatus(void);
368
369
371
379
381
392 void setBGColor(float r, float g, float b);
393
395
403
405
412 void setAxisMode(bool mode);
413
415
422 bool getAxisMode(void);
423
425
431 void setAxisScale(double scale);
432
434
441 double getAxisScale(void);
442
443
444
446
453
456
458
492 void setDrawMode(int ID, fk_Draw mode);
493
495
505
507
518 void setElementMode(int ID, fk_ElementMode mode);
519
521
531
533
542 void setShadingMode(int ID, fk_ShadingMode mode);
543
545
554
555
557
568 void setSmoothMode(int ID, bool mode);
569
571
580 bool getSmoothMode(int ID);
581
582
584
591 void setPointSize(int ID, double size);
592
594
604 double getPointSize(int ID);
605
607
615 void setMaterial(int ID, fk_Material mat);
616
618
626 void setEdgeColor(int ID, fk_Color col);
627
629
637 void setVertexColor(int ID, fk_Color col);
638
640
643
645
654 void setHead(double angle);
655
657
664 double getHead(void);
665
667
676 void setPitch(double angle);
677
679
686 double getPitch(void);
687
689
698 void setBank(double angle);
699
701
708 double getBank(void);
709
711
718 void setScale(double scale);
719
721
728 double getScale(void);
729
731
734
736
746 void setPosition(int ID, fk_Vector pos);
747
749
761 void setPosition(int ID, double x, double y, double z);
762
764
775 void setAngle(int ID, fk_Angle angle);
776
778
792 void setAngle(int ID, double h, double p, double b);
793
795
806 void setVec(int ID, fk_Vector vec);
807
809
822 void setVec(int ID, double x, double y, double z);
823
825
836 void setUpvec(int ID, fk_Vector vec);
837
839
852 void setUpvec(int ID, double x, double y, double z);
854
857
859
867 void setFPS(int fps);
869
872
874
894 bool snapImage(std::string fileName,
897
899
916 bool snapImage(fk_Image *image,
919
922
924
930 void setPutStrMode(const fk_PutStrMode mode);
931
933
940
942
948 bool setPutFile(const std::string &str);
949
951
957 void putString(const std::string &str);
958
959#if !defined(FK_CLI_CODE)
961
967 void printf(const char *format, ...);
968#endif
969
971
977 void clearBrowser(void);
979
980#if !defined(FK_DOXYGEN_USER_PROCESS)
981 void SetFinalizeMode(void);
982 virtual bool shapeProcess(fk_Solid *shape);
983#endif
984
985#if !defined(FK_OLD_NONSUPPORT) && !defined(FK_DOXYGEN_USER_PROCESS)
986 void setLineWidth(int ID, double width);
987 double getLineWidth(int ID);
988#endif
989
990 private:
991 std::unique_ptr<Member> _m;
992
993 void InitValue(void);
994 void InitFlag(void);
995 void InitWindow(void);
996 void InitGUI(void);
997 void LightInit(void);
998 void AxisInit(void);
999 void ViewInit(void);
1000 void ModelInit(int, fk_Shape *);
1001 void RotateLight(double);
1002 bool MenuSelect(void);
1003 void SetOrientation(double, double, double, double);
1004 void SetAxisLine(double);
1005 void MovePosition(double, double, double);
1006 void DragShape(void);
1007 void KeyHandle(void);
1008 std::string CommonFileChooser(std::string, int, std::string);
1009 void SetAllMaterial(void);
1010 void SetSceneFlg(fk_ShapeGUIMenuItem);
1011
1012 void GetMaterial(int, fk_ShapeGUIMenuItem,
1013 double *, double *, double *);
1014 void SetMaterial(int, fk_ShapeGUIMenuItem,
1015 double, double, double);
1016 void SetDrawMode(void);
1017
1018 fk_Model * GetModel(int);
1019 };
1020}
1021
1022#endif // !__FK_SHAPE_VIEWER_HEADER__
1023
1024/****************************************************************************
1025 *
1026 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
1027 *
1028 * Redistribution and use in source and binary forms,
1029 * with or without modification, are permitted provided that the
1030 * following conditions are met:
1031 *
1032 * - Redistributions of source code must retain the above
1033 * copyright notice, this list of conditions and the
1034 * following disclaimer.
1035 *
1036 * - Redistributions in binary form must reproduce the above
1037 * copyright notice, this list of conditions and the
1038 * following disclaimer in the documentation and/or
1039 * other materials provided with the distribution.
1040 *
1041 * - Neither the name of the copyright holders nor the names
1042 * of its contributors may be used to endorse or promote
1043 * products derived from this software without specific
1044 * prior written permission.
1045 *
1046 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1047 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1048 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
1049 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
1050 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
1051 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1052 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1053 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1054 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1055 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1056 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1057 * POSSIBILITY OF SUCH DAMAGE.
1058 *
1059 ****************************************************************************/
1060/****************************************************************************
1061 *
1062 * Copyright (c) 1999-2024, Fine Kernel Project, All rights reserved.
1063 *
1064 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
1065 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
1066 *
1067 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
1068 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
1069 *
1070 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
1071 * および下記免責条項を含めること。
1072 *
1073 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
1074 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
1075 * 含めること。
1076 *
1077 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
1078 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
1079 * コントリビューターの名前を使用してはならない。
1080 *
1081 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
1082 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
1083 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
1084 * に限定されない、いかなる保証もないものとします。著作権者もコン
1085 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
1086 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
1087 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
1088 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
1089 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
1090 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
1091 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
1092 * ついて、一切責任を負わないものとします。
1093 *
1094 ****************************************************************************/
オイラー角を表すクラス
Definition Angle.h:21
FK の各クラスの基盤となる基本クラス
Definition Base.h:113
RGB色を管理するクラス
Definition Color.h:21
画像サイズを表すクラス
Definition Image.h:67
フレームレート制御クラス
Definition FrameController.h:28
画像を生成、管理するクラス
Definition Image.h:260
光源を管理するクラス
Definition Light.h:48
有向線分を生成、管理するクラス
Definition Line.h:22
マテリアル(質感)を管理するクラス
Definition Material.h:40
モデルを生成、管理するクラス
Definition Model.h:98
シーンを制御するクラス
Definition Scene.h:48
簡易形状表示システム用クラス
Definition ShapeViewer.h:81
void setShape(fk_Shape *shape)
単独形状設定関数
void setWindowSize(int w, int h)
描画領域サイズ変更関数
void setAxisMode(bool mode)
座標軸描画設定関数
double getScale(void)
カメラ倍率参照関数
void setPointSize(int ID, double size)
形状頂点描画サイズ設定関数
bool getBlendStatus(void)
透過処理参照関数
void setElementMode(fk_ElementMode mode)
要素モード設定関数
void setHead(double angle)
カメラヘッド角設定関数
void setAxisScale(double scale)
座標軸大きさ設定関数
void setDrawMode(fk_Draw mode)
描画モード設定関数
void setBank(double angle)
カメラバンク角設定関数
void setPosition(int ID, fk_Vector pos)
形状位置設定関数1
void setUpvec(int ID, fk_Vector vec)
形状アップベクトル設定関数1
fk_PutStrMode getPutStrMode(void)
メッセージ出力モード参照関数
fk_Vector getCenter(void)
描画領域中心座標参照関数
fk_ElementMode getElementMode(int ID)
形状別要素モード設定関数
bool getSmoothMode(int ID)
スムースモード参照関数
fk_Draw getDrawMode(int ID)
個別形状描画モード参照関数
void setBGColor(float r, float g, float b)
背景色設定関数2
void setDrawMode(int ID, fk_Draw mode)
個別形状描画モード設定関数
void printf(const char *format,...)
メッセージ出力書式付き設定関数
bool snapImage(fk_Image *image, fk_SnapProcMode mode=fk_SnapProcMode::FRONT)
描画画像データ出力関数
void setPutStrMode(const fk_PutStrMode mode)
メッセージ出力モード設定関数
void setAngle(int ID, double h, double p, double b)
形状姿勢設定関数2
void setBGColor(fk_Color col)
背景色設定関数1
void setEdgeColor(int ID, fk_Color col)
形状稜線描画色設定関数
void setScale(double scale)
カメラ倍率設定関数
void clearBrowser(void)
メッセージ出力用ブラウザ初期化関数
bool getAxisMode(void)
座標軸描画参照関数
void setUpvec(int ID, double x, double y, double z)
形状アップベクトル設定関数2
bool draw(void)
描画更新関数
void setVec(int ID, fk_Vector vec)
形状方向ベクトル設定関数1
void setMaterial(int ID, fk_Material mat)
形状マテリアル設定関数
void clearModel(void)
形状設定初期化関数
fk_ElementMode getElementMode(void)
要素モード設定関数
void setShape(int ID, fk_Shape *shape)
ID付き形状設定関数
int getModelNum(void)
形状設定数参照関数
double getPitch(void)
カメラピッチ角参照関数
bool setPutFile(const std::string &str)
メッセージ出力用ファイル設定関数
double getPointSize(int ID)
形状頂点描画サイズ参照関数
fk_Color getBGColor(void)
背景色参照関数
bool getSmoothMode(void)
スムースモード参照関数
fk_ShapeViewer(int w=300, int h=360)
コンストラクタ
void setPosition(int ID, double x, double y, double z)
形状位置設定関数2
void setPitch(double angle)
カメラピッチ角設定関数
void setAngle(int ID, fk_Angle angle)
形状姿勢設定関数1
void setElementMode(int ID, fk_ElementMode mode)
形状別要素モード設定関数
void putString(const std::string &str)
メッセージ出力文字列設定関数
double getHead(void)
カメラヘッド角参照関数
fk_ShadingMode getShadingMode(int ID)
シェーディングモード参照関数
void setShadingMode(fk_ShadingMode mode)
シェーディングモード設定関数
fk_ShadingMode getShadingMode(void)
シェーディングモード参照関数
void setBlendStatus(bool mode)
透過処理設定関数
void setSmoothMode(bool mode)
スムースモード設定関数
double getBank(void)
カメラバンク角参照関数
void setVertexColor(int ID, fk_Color col)
形状頂点描画色設定関数
void setVec(int ID, double x, double y, double z)
形状方向ベクトル設定関数2
fk_Shape * getShape(int ID=0)
形状参照関数
double getAxisScale(void)
座標軸大きさ参照関数
void setFPS(int fps)
FPS設定関数
void setShadingMode(int ID, fk_ShadingMode mode)
シェーディングモード設定関数
void setSmoothMode(int ID, bool mode)
スムースモード設定関数
fk_Draw getDrawMode(void)
描画モード参照関数
bool snapImage(std::string fileName, fk_ImageType format=fk_ImageType::BMP, fk_SnapProcMode mode=fk_SnapProcMode::FRONT)
描画画像ファイル出力関数
virtual ~fk_ShapeViewer()
デストラクタ
形状用基底クラス
Definition Shape.h:44
半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス
Definition Solid.h:66
3次元ベクトルを管理するクラス
Definition Vector.h:45
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
fk_PutStrMode
メッセージ出力タイプを表す列挙型
Definition Window.h:68
fk_ShadingMode
シェーディングモードを表す列挙型
Definition Model.h:33
@ NONE
未定義境界
fk_SnapProcMode
画像取り込み方法を表す列挙型
Definition Image.h:56
@ FRONT
OpenGL フロントバッファ
fk_ElementMode
描画優先モードを表す列挙型
Definition Model.h:26
fk_ImageType
画像フォーマットを表す列挙型
Definition Image.h:49
@ BMP
Windows Bitmap (BMP) 形式
fk_Draw
描画モードを表す列挙型
Definition DrawMode.h:7