FineKernelToolKit 2.8.10

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

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

FK/ShapeViewer.h
説明を見る。

    00001 /****************************************************************************
    00002  *
    00003  *  Copyright (c) 1999-2011, Fine Kernel Project, All rights reserved.
    00004  *
    00005  *  Redistribution and use in source and binary forms,
    00006  *  with or without modification, are permitted provided that the
    00007  *  following conditions are met:
    00008  *
    00009  *      - Redistributions of source code must retain the above
    00010  *          copyright notice, this list of conditions and the
    00011  *          following disclaimer.
    00012  *
    00013  *      - Redistributions in binary form must reproduce the above
    00014  *          copyright notice, this list of conditions and the
    00015  *          following disclaimer in the documentation and/or
    00016  *          other materials provided with the distribution.
    00017  *
    00018  *      - Neither the name of the copyright holders nor the names
    00019  *          of its contributors may be used to endorse or promote
    00020  *          products derived from this software without specific
    00021  *          prior written permission.
    00022  *
    00023  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    00024  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    00025  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
    00026  *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
    00027  *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    00028  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    00029  *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    00030  *  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    00031  *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    00032  *  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    00033  *  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    00034  *  POSSIBILITY OF SUCH DAMAGE.
    00035  *
    00036  ****************************************************************************/
    00037 /****************************************************************************
    00038  *
    00039  *  Copyright (c) 1999-2011, Fine Kernel Project, All rights reserved.
    00040  *
    00041  *  本ソフトウェアおよびソースコードのライセンスは、基本的に
    00042  *  「修正 BSD ライセンス」に従います。以下にその詳細を記します。
    00043  *
    00044  *  ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
    00045  *  以下の条件を満たす場合に限り、再頒布および使用が許可されます。
    00046  *
    00047  *  - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
    00048  *      および下記免責条項を含めること。
    00049  *
    00050  *  - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
    00051  *      資料に、上記の著作権表示、本条件一覧、および下記免責条項を
    00052  *      含めること。
    00053  *
    00054  *  - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
    00055  *      宣伝または販売促進に、本ソフトウェアの著作権者の名前または
    00056  *      コントリビューターの名前を使用してはならない。
    00057  *
    00058  *  本ソフトウェアは、著作権者およびコントリビューターによって「現
    00059  *  状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
    00060  *  および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
    00061  *  に限定されない、いかなる保証もないものとします。著作権者もコン
    00062  *  トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
    00063  *  問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
    00064  *  他の)不法行為であるかを問わず、仮にそのような損害が発生する可
    00065  *  能性を知らされていたとしても、本ソフトウェアの使用によって発生
    00066  *  した(代替品または代用サービスの調達、使用の喪失、データの喪失、
    00067  *  利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
    00068  *  間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
    00069  *  ついて、一切責任を負わないものとします。
    00070  *
    00071  ****************************************************************************/
    00072 #ifndef __FK_SHAPE_VIEWER_HEADER__
    00073 #define __FK_SHAPE_VIEWER_HEADER__
    00074
    00075 #include <FK/Window.h>
    00076 #include <FK/MatExample.h>
    00077 #include <FK/Line.h>
    00078 #include <FK/Texture.h>
    00079 #include <FK/Model.h>
    00080 #include <FK/Light.h>
    00081 #include <FK/Scene.h>
    00082 #include <map>
    00083
    00084 #ifndef FK_DOXYGEN_USER_PROCESS
    00085
    00086 enum fk_ShapeGUIMenuItem {
    00087     FK_SV_GUI_NONE,
    00088     FK_SV_GUI_WRLOPEN,
    00089     FK_SV_GUI_STLOPEN,
    00090     FK_SV_GUI_DXFOPEN,
    00091     FK_SV_GUI_WRLSAVE,
    00092     FK_SV_GUI_STLSAVE,
    00093     FK_SV_GUI_IMAGESNAP,
    00094     FK_SV_GUI_QUIT,
    00095     FK_SV_GUI_POLYDRAW,
    00096     FK_SV_GUI_EDGEDRAW,
    00097     FK_SV_GUI_VERTEXDRAW,
    00098     FK_SV_GUI_LIGHTROTATE,
    00099     FK_SV_GUI_AXISDRAW,
    00100     FK_SV_GUI_AMBIENT,
    00101     FK_SV_GUI_DIFFUSE,
    00102     FK_SV_GUI_SPECULAR,
    00103     FK_SV_GUI_EMISSION,
    00104     FK_SV_GUI_SHININESS,
    00105     FK_SV_GUI_VERTEXCOLOR,
    00106     FK_SV_GUI_EDGECOLOR
    00107 };
    00108
    00109 class fk_GUI_;
    00110
    00111 #endif
    00112
    00114
    00150 class fk_ShapeViewer : public fk_BaseObject {
    00151  private:
    00152
    00153     fk_Dimension        fkWinSize;
    00154     fk_Dimension        allWinSize;
    00155     fk_Dimension        groupPos;
    00156     fk_Dimension        mousePos;
    00157
    00158     int                 mouseX, mouseY;
    00159
    00160     // Window
    00161     Fl_Window           *mainWindow;
    00162     fk_Window           *viewWin;
    00163
    00164     // GUI
    00165     fk_GUI_             *gui;
    00166
    00167     // flag
    00168     bool                changeFlag;
    00169     bool                lightFlag;
    00170     bool                materialFlag;
    00171     bool                moveFlag;
    00172     bool                oldMoveFlag;
    00173     fk_DrawMode         drawMode;
    00174     bool                axisFlag;
    00175
    00176     // FK Object
    00177     fk_Model                    parentModel;
    00178     std::vector<fk_Model *>     modelArray;
    00179     std::map<int, int>          IDMap;
    00180     fk_Model                    lightModel[2], camera, axisModel;
    00181     fk_Solid                    localSolid;
    00182     fk_Line                     axisLine;
    00183     fk_Light                    light;
    00184     fk_Scene                    scene;
    00185     std::vector<fk_Material *>  polyMaterial;
    00186     std::vector<fk_Color *>     edgeColor;
    00187     std::vector<fk_Color *>     vertexColor;
    00188
    00189     void                InitValue(void);
    00190     void                InitFlag(void);
    00191     void                InitWindow(void);
    00192     void                InitGUI(void);
    00193     void                LightInit(void);
    00194     void                AxisInit(void);
    00195     void                ViewInit(void);
    00196     void                ModelInit(int, fk_Shape *);
    00197     void                RotateLight(double);
    00198     bool                MenuSelect(void);
    00199     void                SetOrientation(double, double, double, double);
    00200     void                SetAxisLine(double);
    00201     void                MovePosition(double, double, double);
    00202     void                DragShape(void);
    00203     void                KeyHandle(void);
    00204     std::string         CommonFileChooser(std::string, int, std::string);
    00205     void                SetAllMaterial(void);
    00206     void                SetSceneFlg(fk_ShapeGUIMenuItem);
    00207
    00208     void                GetMaterial(int, fk_ShapeGUIMenuItem,
    00209                                     double *, double *, double *);
    00210     void                SetMaterial(int, fk_ShapeGUIMenuItem,
    00211                                     double, double, double);
    00212     void                SetDrawMode(void);
    00213
    00214  public:
    00216
    00223     fk_ShapeViewer(int w = 300, int h = 360);
    00224
    00226     virtual ~fk_ShapeViewer();
    00227
    00229     //@(
    00230
    00232
    00251     bool    draw(void);
    00252
    00254
    00260     void    setWindowSize(int w, int h);
    00261
    00263
    00281     void    setOGLPointerMode(bool mode);
    00282
    00284
    00294     bool    getOGLPointerMode(void);
    00295
    00296     //@)
    00297
    00299     //@(
    00301
    00310     void        setShape(fk_Shape *shape);
    00311
    00313
    00323     void        setShape(int ID, fk_Shape *shape);
    00324
    00326
    00335     fk_Shape *  getShape(int ID = 0);
    00336
    00338
    00343     int     getModelNum(void);
    00344
    00346
    00349     void    clearModel(void);
    00350
    00352
    00365     virtual bool    shapeProcess(fk_Solid *shape);
    00366     //@)
    00367
    00369     //@(
    00370
    00372
    00400     void    setDrawMode(fk_DrawMode mode);
    00401
    00403
    00410     fk_DrawMode     getDrawMode(void);
    00411
    00413
    00422     void            setBlendStatus(bool mode);
    00423
    00425
    00432     bool            getBlendStatus(void);
    00433
    00435
    00442     void    setBGColor(fk_Color col);
    00443
    00445
    00456     void    setBGColor(float r, float g, float b);
    00457
    00459
    00466     fk_Color        getBGColor(void);
    00467
    00469
    00476     void            setAxisMode(bool mode);
    00477
    00479
    00486     bool            getAxisMode(void);
    00487
    00489
    00495     void    setAxisScale(double scale);
    00496
    00498
    00505     double  getAxisScale(void);
    00506
    00507
    00508
    00510
    00515     fk_Vector   getCenter(void);
    00516     //@)
    00517
    00519     //@(
    00520
    00522
    00551     void    setDrawMode(int ID, fk_DrawMode mode);
    00552
    00554
    00563     fk_DrawMode     getDrawMode(int ID);
    00564
    00566
    00573     void    setLineWidth(int ID, double width);
    00574
    00576
    00586     double  getLineWidth(int ID);
    00587
    00589
    00596     void    setPointSize(int ID, double size);
    00597
    00599
    00609     double  getPointSize(int ID);
    00610
    00612
    00620     void    setMaterial(int ID, fk_Material mat);
    00621
    00623
    00631     void    setEdgeColor(int ID, fk_Color col);
    00632
    00634
    00642     void    setVertexColor(int ID, fk_Color col);
    00643
    00644     //@)
    00645
    00647     //@(
    00648
    00650
    00659     void    setHead(double angle);
    00660
    00662
    00669     double  getHead(void);
    00670
    00672
    00681     void    setPitch(double angle);
    00682
    00684
    00691     double  getPitch(void);
    00692
    00694
    00703     void    setBank(double angle);
    00704
    00706
    00713     double  getBank(void);
    00714
    00716
    00723     void    setScale(double scale);
    00724
    00726
    00733     double  getScale(void);
    00734
    00735     //@)
    00736
    00738     //@(
    00739
    00741
    00751     void    setPosition(int ID, fk_Vector pos);
    00752
    00754
    00766     void    setPosition(int ID, double x, double y, double z);
    00767
    00769
    00780     void    setAngle(int ID, fk_Angle angle);
    00781
    00783
    00797     void    setAngle(int ID, double h, double p, double b);
    00798
    00800
    00811     void    setVec(int ID, fk_Vector vec);
    00812
    00814
    00827     void    setVec(int ID, double x, double y, double z);
    00828
    00830
    00841     void    setUpvec(int ID, fk_Vector vec);
    00842
    00844
    00857     void    setUpvec(int ID, double x, double y, double z);
    00858     //@)
    00859
    00861     //@(
    00862
    00864
    00890     void    setFrameMode(fk_FrameMode mode);
    00891
    00893
    00900     fk_FrameMode    getFrameMode(void);
    00901
    00903
    00919     void    setFrameInterval(int ms);
    00920
    00922
    00929     int     getFrameInterval(void);
    00930
    00932
    00941     int     getSkipFrame(void);
    00942     //@)
    00943
    00945     //@(
    00946
    00947
    00949
    00967     bool    snapImage(std::string fileName,
    00968                       fk_ImageType format = FK_IMAGE_BMP,
    00969                       fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
    00970
    00972
    00988     bool    snapImage(fk_Image *image,
    00989                       fk_SnapProcMode mode = FK_SNAP_GL_FRONT);
    00990     //@)
    00991
    00993     //@(
    00994
    00996
    01002     void    setPutStrMode(const fk_PutStrMode mode);
    01003
    01005
    01011     fk_PutStrMode   getPutStrMode(void);
    01012
    01014
    01020     bool    setPutFile(const std::string &str);
    01021
    01023
    01029     void    putString(const std::string &str);
    01030
    01032
    01038     void    printf(const char *format, ...);
    01039
    01041
    01047     void    clearBrowser(void);
    01048     //@)
    01049 };
    01050
    01051 #endif // !__FK_SHAPE_VIEWER_HEADER__

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義