// generated by Fast Light User Interface Designer (fluid) version 2.0100 #ifndef GeoMeshViewUI_h #define GeoMeshViewUI_h #include "GL/glew.h" #ifdef _WIN32 #include "GL/wglew.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "GeoTreeSimpSequence.h" #include "GeoLodStripsConstructor.h" #include "GeoLodTreeLibrary.h" // About Dialog. #include "GTAboutDialog.h" #include "../resource.h" #include // State of the button process. enum ProcessState { NONE, STRIPIFY, EDGE_COLLAPSE, LEAVES_COLLAPSE, LODSTRIPS, LODSTRIPS_AUTO, LODTREES, LODTREES_AUTO, SELECT_LEAVES, VISUALIZE_LODSTRIPS, VISUALIZE_LODTREES }; // Simplification types enum SimplificationType { NO_SIMPLIFICATION, MESHSIMP, HOJAS, VIEWPOINTDRIVEN }; enum ProgressBarType { PROCESS, BUILD }; using namespace Geometry; class GeoMeshViewUI { friend class GeoMeshView; private: // File name Selected. char *mFileName; // The state of the application menus. ProcessState mApplicationState; // Mesh object(Model). Mesh *mGeoMesh; // Mesh for undo operation. Mesh *mUndoMesh; // Lod strips object. LodStripsLibrary *lodStripsLib; // Lod tree object. LodTreeLibrary *lodTreeLib; MeshSimplifier *mMeshSimplifier; TreeSimplifier *mTreeSimplifier; char *nombremesh; SimplificationType simplificationState; ProgressBarType progressBarType; MeshSimplificationSequence *oMeshSimpSequence; LodStripsConstructor *oLodStrip; GeoMeshLoader *geoMeshLoader; inline void cb_menuFileOpen_i(fltk::Item*, void*); static void cb_menuFileOpen(fltk::Item*, void*); inline void cb_menuFileSave_i(fltk::Item*, void*); static void cb_menuFileSave(fltk::Item*, void*); inline void cb_menuFileSaveAs_i(fltk::Item*, void*); static void cb_menuFileSaveAs(fltk::Item*, void*); inline void cb_menuFileLoadTexture_i(fltk::Item*, void*); static void cb_menuFileLoadTexture(fltk::Item*, void*); inline void cb_menuFileLoadTextureSubMesh_i(fltk::Item*, void*); static void cb_menuFileLoadTextureSubMesh(fltk::Item*, void*); inline void cb_menuMeshInfo_i(fltk::Item*, void*); static void cb_menuMeshInfo(fltk::Item*, void*); inline void cb_menuMeshExportOBJ_i(fltk::Item*, void*); static void cb_menuMeshExportOBJ(fltk::Item*, void*); inline void cb_menuTransformSharedVertex_i(fltk::Item*, void*); static void cb_menuFileTransformSharedVertex(fltk::Item* o, void* v); inline void cb_menuFileQuit_i(fltk::Item*, void*); static void cb_menuFileQuit(fltk::Item*, void*); inline void cb_menuEditUndo_i(fltk::Item*, void*); static void cb_menuEditUndo(fltk::Item*, void*); inline void cb_menuEditFit_i(fltk::Item*, void*); static void cb_menuEditFit(fltk::Item*, void*); inline void cb_menuEditRotate_i(fltk::Item*, void*); static void cb_menuEditRotate(fltk::Item*, void*); inline void cb_menuEditPan_i(fltk::Item*, void*); static void cb_menuEditPan(fltk::Item*, void*); inline void cb_menuEditZoom_i(fltk::Item*, void*); static void cb_menuEditZoom(fltk::Item*, void*); inline void cb_menuRenderWire_i(fltk::Item*, void*); static void cb_menuRenderWire(fltk::Item*, void*); inline void cb_menuRenderSolid_i(fltk::Item*, void*); static void cb_menuRenderSolid(fltk::Item*, void*); inline void cb_menuRenderCW_i(fltk::Item*, void*); static void cb_menuRenderCW(fltk::Item*, void*); inline void cb_menuRenderCCW_i(fltk::Item*, void*); static void cb_menuRenderCCW(fltk::Item*, void*); inline void cb_menuRenderFlat_i(fltk::Item*, void*); static void cb_menuRenderFlat(fltk::Item*, void*); inline void cb_menuRenderSmooth_i(fltk::Item*, void*); static void cb_menuRenderSmooth(fltk::Item*, void*); inline void cb_menuRenderTextures_i(fltk::Item*, void*); static void cb_menuRenderTextures(fltk::Item*, void*); inline void cb_menuStripify_i(fltk::Item*, void*); static void cb_menuStripify(fltk::Item*, void*); inline void cb_menuSimplify_i(fltk::ItemGroup*, void*); static void cb_menuSimplify(fltk::ItemGroup*, void*); inline void cb_menuSimplifyEdgeCollapse_i(fltk::Item*, void*); static void cb_menuSimplifyEdgeCollapse(fltk::Item*, void*); inline void cb_menuSimplifyLeavesCollapse_i(fltk::Item*, void*); static void cb_menuSimplifyLeavesCollapse(fltk::Item*, void*); inline void cb_menuLodStripsGenerate_i(fltk::Item*, void*); static void cb_menuLodStripsGenerate(fltk::Item*, void*); inline void cb_menuLodStripsVisualize_i(fltk::Item*, void*); static void cb_menuLodStripsVisualize(fltk::Item*, void*); inline void cb_menuSelectLeaves_i(fltk::Item*, void*); static void cb_menuSelectLeaves(fltk::Item*, void*); inline void cb_menuLodTreesOpenLodStripTrunk_i(fltk::Item*, void*); static void cb_menuLodTreesOpenLodStripTrunk(fltk::Item*, void*); inline void cb_menuLodTreesOpenLeavesSimplification_i(fltk::Item*, void*); static void cb_menuLodTreesOpenLeavesSimplification(fltk::Item*, void*); inline void cb_menuLodTreesGenerate_i(fltk::Item*, void*); static void cb_menuLodTreesGenerate(fltk::Item*, void*); inline void cb_menuLodTreesVisualize_i(fltk::Item*, void*); static void cb_menuLodTreesVisualize(fltk::Item*, void*); inline void cb_menuHelpAbout_i(fltk::Item*, void*); static void cb_menuHelpAbout(fltk::Item*, void*); inline void cb_mButtonProcess_i(fltk::Button*, void*); static void cb_mButtonProcess(fltk::Button*, void*); inline void cb_mButtonSort_i(fltk::Button*, void*); static void cb_mButtonSort(fltk::Button*, void*); inline void cb_mButtonBuild_i(fltk::Button*, void*); static void cb_mButtonBuild(fltk::Button*, void*); inline void cb_mMeshInfo_i(fltk::Browser*, void*); static void cb_mMeshInfo(fltk::Browser*, void*); inline void cb_mLodStripSlider_i(fltk::Slider*, void*); static void cb_mLodStripSlider(fltk::Slider*, void*); inline void cb_mLodTreeSlider_i(fltk::Slider*, void*); static void cb_mLodTreeSlider(fltk::Slider*, void*); // Logo's callback. inline void cb_mLogo_i(fltk::InvisibleBox*, void*); static void cb_mLogo(fltk::InvisibleBox*, void*); // Shows build process. void activeBuildProcess(); // Shows the stripify panel. void showStripify(); // Shows the simplify panels. void showEdgeCollapse(); void showLeavesCollapse(); // Shows the LodStrips panels. void showOpenMeshSimplification(); void showAutoGenerateLodStrips(); void showAutoGenerateLodTrees(); // Shows the LodTrees panel. void showOpenLeavesSimplification(); // Show the mesh info browser. void showMeshInfo(); // Show the LodStrips visulization panel. void showLodStripSlider(); void showLodTreeSlider(); void hideStripify(); void hideEdgeCollapse(); void hideLeavesCollapse(); void hideOpenMeshSimplification(); void hideOpenLeavesSimplification(); void hideRightPanel(); // Hide the mesh info browser. void hideMeshInfo(); // Hide the LodStrips visualization panel. void hideLodStripSlider(); void hideLodTreeSlider(); // Get the number of vertices. size_t getVertexCount(Mesh *geoMesh); // Get the number of triangles. size_t getTriangleCount(Mesh *geoMesh); // Get the number of strips. size_t getStripCount(Mesh *geoMesh); int paintMesh(); // Simplify the mesh object. bool simplifyEdgeCollapse(); // Simplify the mesh object. void simplifyLeavesCollapse(); // Create a siplification sequence of the simplification method. void createSimplificationSequence(); // Create a siplification sequence of the leaves. void createLeavesSequence(const std::string &); // Stripify the mesh object. void stripify(); // Method that undo then mesh changes. void undo(); // Refresh number of vertices, triangles, strips, ... void refreshApplicationBar(); // Open a mesh file. void openMeshFile(void); // Check if file exists. bool fileExists(const char *fileNameMesh); // Set textures to mesh model. void setTextures(); public: GeoMeshView *geoMeshView; fltk::Window *mMainWindow; fltk::Group *MainView; fltk::InvisibleBox *cframe; fltk::MenuBar *menuBar; fltk::ItemGroup *menuFile; fltk::Item *menuFileOpen; fltk::Item *menuFileSave; fltk::Item *menuFileSaveAs; fltk::Item *menuMeshInfo; fltk::Item *menuMeshExportOBJ; fltk::Item *menuFileTransformSharedVertex; fltk::ItemGroup *menuLoadTextures; fltk::Item *menuFileLoadTexture; fltk::Item *menuFileQuit; fltk::ItemGroup *menuEdit; fltk::Item *menuEditUndo; fltk::Item *menuEditFit; fltk::Item *menuEditRotate; fltk::Item *menuEditPan; fltk::Item *menuEditZoom; fltk::ItemGroup *menuRender; fltk::Item *menuRenderWire; fltk::Item *menuRenderSolid; fltk::Item *menuRenderCW; fltk::Item *menuRenderCCW; fltk::Item *menuRenderFlat; fltk::Item *menuRenderSmooth; fltk::Item *menuRenderTextures; fltk::Item *menuStripify; fltk::ItemGroup *menuSimplify; fltk::Item *menuSimplifyEdgeCollapse; fltk::Item *menuSimplifyLeavesCollapse; fltk::Item *menuSimplifySaveSequence; fltk::ItemGroup *menuLodStrips; fltk::Item *menuLodStripsGenerate; fltk::Item *menuLodStripsVisualize; fltk::ItemGroup *menuLodTrees; fltk::Item *menuLodTreesGenerate; fltk::Item *menuLodTreesVisualize; fltk::Item *menuSelectLeaves; fltk::Item *menuLodTreesOpenLodStripTrunk; fltk::Item *menuLodTreesOpenLeavesSimplification; fltk::Item *menuHelpAbout; fltk::InvisibleBox *mLogo; fltk::Group *ApplicationBar; fltk::Widget *mFPS; fltk::Widget *mVertices; fltk::Widget *mTriangles; fltk::Widget *mStrips; fltk::Widget *mQuads; fltk::Widget *mMB; fltk::Button *mButtonProcess; fltk::ProgressBar *mProcessBar; fltk::Button *mButtonSort; fltk::ProgressBar *mSortBar; fltk::Button *mButtonBuild; fltk::ProgressBar *mBuildBar; fltk::Slider *mLodStripSlider; fltk::Slider *mLodTreeSlider; fltk::CheckButton *mGeometryBased; fltk::CheckButton *mViewPointDriven; fltk::CheckButton *mChangeVertices; fltk::CheckButton *mChangeTexture; fltk::CheckButton *mPercent; fltk::CheckButton *mVerticesNumber; fltk::CheckButton *mOneCacheStrip; fltk::CheckButton *mQualityStrips; fltk::FloatInput *mMeshReduction; fltk::Widget *mProcessTitle; fltk::Output *mMetricLabel; fltk::Output *mTypeLabel; fltk::Output *mMeshReductionLabel; fltk::Browser *mMeshInfo; fltk::ItemGroup *ogeometry; // Repaint the FPS label. void refreshFPS(int fps); // Initialize the lodstripslibrary for visualization. void setLodStripsLibrary(const Geometry::LodStripsLibraryData &, Mesh *geomesh); // Initialize the lodtreelibrary for visualization. void setLodTreesLibrary(const Geometry::LodStripsLibraryData &, const Geometry::TreeSimplificationSequence &, Mesh *geomesh, uint32 ileafSubMesh); // Indentify the mesh of leaves. unsigned short idMeshLeaves; GeoMeshViewUI(TIPOFUNC fun=NULL); ~GeoMeshViewUI(); void show(); TIPOFUNC progress_function; float updateProgressBar(float); void BuildLoadTextureSubMeshMenu(void); int numSubMeshNames; char **SubMeshNames; }; #endif