FineKernelToolKit: FK/ShapeViewer.h ソースファイル

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
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
80
81 class fk_ShapeViewer : public fk_BaseObject {
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
139 virtual ~fk_ShapeViewer();
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
269 void setDrawMode(fk_Draw mode);
270
272
279 fk_Draw getDrawMode(void);
280
282
292 void setElementMode(fk_ElementMode mode);
293
295
302 fk_ElementMode getElementMode(void);
303
305
313 void setShadingMode(fk_ShadingMode mode);
314
316
323 fk_ShadingMode getShadingMode(void);
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
378 void setBGColor(fk_Color col);
379
381
392 void setBGColor(float r, float g, float b);
393
395
402 fk_Color getBGColor(void);
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
451 fk_Vector getCenter(void);
453
456
458
492 void setDrawMode(int ID, fk_Draw mode);
493
495
504 fk_Draw getDrawMode(int ID);
505
507
518 void setElementMode(int ID, fk_ElementMode mode);
519
521
530 fk_ElementMode getElementMode(int ID);
531
533
542 void setShadingMode(int ID, fk_ShadingMode mode);
543
545
553 fk_ShadingMode getShadingMode(int ID);
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,
895 fk_ImageType format = fk_ImageType::BMP,
896 fk_SnapProcMode mode = fk_SnapProcMode::FRONT);
897
899
915
916 bool snapImage(fk_Image *image,
917 fk_SnapProcMode mode = fk_SnapProcMode::FRONT);
919
922
924
930 void setPutStrMode(const fk_PutStrMode mode);
931
933
939 fk_PutStrMode getPutStrMode(void);
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 ****************************************************************************/
Light.h
Line.h
MatExample.h
Model.h
Scene.h
Solid.h
Texture.h
Window.h
FK::fk_Angle
オイラー角を表すクラス
Definition Angle.h:21
FK::fk_BaseObject::fk_BaseObject
fk_BaseObject(fk_Type type=fk_Type::BASEOBJECT)
コンストラクタ
FK::fk_Color
RGB色を管理するクラス
Definition Color.h:21
FK::fk_Dimension
画像サイズを表すクラス
Definition Image.h:67
FK::fk_FrameController
フレームレート制御クラス
Definition FrameController.h:28
FK::fk_Image
画像を生成、管理するクラス
Definition Image.h:260
FK::fk_Light
光源を管理するクラス
Definition Light.h:48
FK::fk_Line
有向線分を生成、管理するクラス
Definition Line.h:22
FK::fk_Material
マテリアル(質感)を管理するクラス
Definition Material.h:40
FK::fk_Model
モデルを生成、管理するクラス
Definition Model.h:101
FK::fk_Scene
シーンを制御するクラス
Definition Scene.h:48
FK::fk_ShapeViewer::setShape
void setShape(fk_Shape *shape)
単独形状設定関数
FK::fk_ShapeViewer::setWindowSize
void setWindowSize(int w, int h)
描画領域サイズ変更関数
FK::fk_ShapeViewer::setAxisMode
void setAxisMode(bool mode)
座標軸描画設定関数
FK::fk_ShapeViewer::getScale
double getScale(void)
カメラ倍率参照関数
FK::fk_ShapeViewer::setPointSize
void setPointSize(int ID, double size)
形状頂点描画サイズ設定関数
FK::fk_ShapeViewer::getBlendStatus
bool getBlendStatus(void)
透過処理参照関数
FK::fk_ShapeViewer::setElementMode
void setElementMode(fk_ElementMode mode)
要素モード設定関数
FK::fk_ShapeViewer::setHead
void setHead(double angle)
カメラヘッド角設定関数
FK::fk_ShapeViewer::setAxisScale
void setAxisScale(double scale)
座標軸大きさ設定関数
FK::fk_ShapeViewer::setDrawMode
void setDrawMode(fk_Draw mode)
描画モード設定関数
FK::fk_ShapeViewer::setBank
void setBank(double angle)
カメラバンク角設定関数
FK::fk_ShapeViewer::setPosition
void setPosition(int ID, fk_Vector pos)
形状位置設定関数1
FK::fk_ShapeViewer::setUpvec
void setUpvec(int ID, fk_Vector vec)
形状アップベクトル設定関数1
FK::fk_ShapeViewer::getPutStrMode
fk_PutStrMode getPutStrMode(void)
メッセージ出力モード参照関数
FK::fk_ShapeViewer::getCenter
fk_Vector getCenter(void)
描画領域中心座標参照関数
FK::fk_ShapeViewer::getElementMode
fk_ElementMode getElementMode(int ID)
形状別要素モード設定関数
FK::fk_ShapeViewer::getSmoothMode
bool getSmoothMode(int ID)
スムースモード参照関数
FK::fk_ShapeViewer::getDrawMode
fk_Draw getDrawMode(int ID)
個別形状描画モード参照関数
FK::fk_ShapeViewer::setBGColor
void setBGColor(float r, float g, float b)
背景色設定関数2
FK::fk_ShapeViewer::setDrawMode
void setDrawMode(int ID, fk_Draw mode)
個別形状描画モード設定関数
FK::fk_ShapeViewer::printf
void printf(const char *format,...)
メッセージ出力書式付き設定関数
FK::fk_ShapeViewer::snapImage
bool snapImage(fk_Image *image, fk_SnapProcMode mode=fk_SnapProcMode::FRONT)
描画画像データ出力関数
FK::fk_ShapeViewer::setPutStrMode
void setPutStrMode(const fk_PutStrMode mode)
メッセージ出力モード設定関数
FK::fk_ShapeViewer::setAngle
void setAngle(int ID, double h, double p, double b)
形状姿勢設定関数2
FK::fk_ShapeViewer::setBGColor
void setBGColor(fk_Color col)
背景色設定関数1
FK::fk_ShapeViewer::setEdgeColor
void setEdgeColor(int ID, fk_Color col)
形状稜線描画色設定関数
FK::fk_ShapeViewer::setScale
void setScale(double scale)
カメラ倍率設定関数
FK::fk_ShapeViewer::clearBrowser
void clearBrowser(void)
メッセージ出力用ブラウザ初期化関数
FK::fk_ShapeViewer::getAxisMode
bool getAxisMode(void)
座標軸描画参照関数
FK::fk_ShapeViewer::setUpvec
void setUpvec(int ID, double x, double y, double z)
形状アップベクトル設定関数2
FK::fk_ShapeViewer::draw
bool draw(void)
描画更新関数
FK::fk_ShapeViewer::setVec
void setVec(int ID, fk_Vector vec)
形状方向ベクトル設定関数1
FK::fk_ShapeViewer::setMaterial
void setMaterial(int ID, fk_Material mat)
形状マテリアル設定関数
FK::fk_ShapeViewer::clearModel
void clearModel(void)
形状設定初期化関数
FK::fk_ShapeViewer::getElementMode
fk_ElementMode getElementMode(void)
要素モード設定関数
FK::fk_ShapeViewer::setShape
void setShape(int ID, fk_Shape *shape)
ID付き形状設定関数
FK::fk_ShapeViewer::getModelNum
int getModelNum(void)
形状設定数参照関数
FK::fk_ShapeViewer::getPitch
double getPitch(void)
カメラピッチ角参照関数
FK::fk_ShapeViewer::setPutFile
bool setPutFile(const std::string &str)
メッセージ出力用ファイル設定関数
FK::fk_ShapeViewer::getPointSize
double getPointSize(int ID)
形状頂点描画サイズ参照関数
FK::fk_ShapeViewer::getBGColor
fk_Color getBGColor(void)
背景色参照関数
FK::fk_ShapeViewer::getSmoothMode
bool getSmoothMode(void)
スムースモード参照関数
FK::fk_ShapeViewer::fk_ShapeViewer
fk_ShapeViewer(int w=300, int h=360)
コンストラクタ
FK::fk_ShapeViewer::setPosition
void setPosition(int ID, double x, double y, double z)
形状位置設定関数2
FK::fk_ShapeViewer::setPitch
void setPitch(double angle)
カメラピッチ角設定関数
FK::fk_ShapeViewer::setAngle
void setAngle(int ID, fk_Angle angle)
形状姿勢設定関数1
FK::fk_ShapeViewer::setElementMode
void setElementMode(int ID, fk_ElementMode mode)
形状別要素モード設定関数
FK::fk_ShapeViewer::putString
void putString(const std::string &str)
メッセージ出力文字列設定関数
FK::fk_ShapeViewer::getHead
double getHead(void)
カメラヘッド角参照関数
FK::fk_ShapeViewer::getShadingMode
fk_ShadingMode getShadingMode(int ID)
シェーディングモード参照関数
FK::fk_ShapeViewer::setShadingMode
void setShadingMode(fk_ShadingMode mode)
シェーディングモード設定関数
FK::fk_ShapeViewer::getShadingMode
fk_ShadingMode getShadingMode(void)
シェーディングモード参照関数
FK::fk_ShapeViewer::setBlendStatus
void setBlendStatus(bool mode)
透過処理設定関数
FK::fk_ShapeViewer::setSmoothMode
void setSmoothMode(bool mode)
スムースモード設定関数
FK::fk_ShapeViewer::getBank
double getBank(void)
カメラバンク角参照関数
FK::fk_ShapeViewer::setVertexColor
void setVertexColor(int ID, fk_Color col)
形状頂点描画色設定関数
FK::fk_ShapeViewer::setVec
void setVec(int ID, double x, double y, double z)
形状方向ベクトル設定関数2
FK::fk_ShapeViewer::getShape
fk_Shape * getShape(int ID=0)
形状参照関数
FK::fk_ShapeViewer::getAxisScale
double getAxisScale(void)
座標軸大きさ参照関数
FK::fk_ShapeViewer::setFPS
void setFPS(int fps)
FPS設定関数
FK::fk_ShapeViewer::setShadingMode
void setShadingMode(int ID, fk_ShadingMode mode)
シェーディングモード設定関数
FK::fk_ShapeViewer::setSmoothMode
void setSmoothMode(int ID, bool mode)
スムースモード設定関数
FK::fk_ShapeViewer::getDrawMode
fk_Draw getDrawMode(void)
描画モード参照関数
FK::fk_ShapeViewer::snapImage
bool snapImage(std::string fileName, fk_ImageType format=fk_ImageType::BMP, fk_SnapProcMode mode=fk_SnapProcMode::FRONT)
描画画像ファイル出力関数
FK::fk_ShapeViewer::~fk_ShapeViewer
virtual ~fk_ShapeViewer()
デストラクタ
FK::fk_Shape
形状用基底クラス
Definition Shape.h:44
FK::fk_Solid
半稜線構造 (Half-Edge Structure) による任意形状を生成、管理するクラス
Definition Solid.h:66
FK::fk_Vector
3次元ベクトルを管理するクラス
Definition Vector.h:45
FK
Fine Kernel Toolkit 名前空間
Definition Angle.h:6
FK::fk_PutStrMode
fk_PutStrMode
メッセージ出力タイプを表す列挙型
Definition Window.h:68
FK::fk_ShadingMode
fk_ShadingMode
シェーディングモードを表す列挙型
Definition Model.h:36
FK::fk_BoundaryMode::NONE
@ NONE
未定義境界
Definition Boundary.h:19
FK::fk_SnapProcMode
fk_SnapProcMode
画像取り込み方法を表す列挙型
Definition Image.h:56
FK::fk_SnapProcMode::FRONT
@ FRONT
OpenGL フロントバッファ
Definition Image.h:57
FK::fk_ElementMode
fk_ElementMode
描画優先モードを表す列挙型
Definition Model.h:29
FK::fk_ImageType
fk_ImageType
画像フォーマットを表す列挙型
Definition Image.h:49
FK::fk_ImageType::BMP
@ BMP
Windows Bitmap (BMP) 形式
Definition Image.h:50
FK::fk_Draw
fk_Draw
描画モードを表す列挙型
Definition DrawMode.h:7