mainwindow.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  1. //##########################################################################
  2. //# #
  3. //# CLOUDCOMPARE #
  4. //# #
  5. //# This program is free software; you can redistribute it and/or modify #
  6. //# it under the terms of the GNU General Public License as published by #
  7. //# the Free Software Foundation; version 2 or later of the License. #
  8. //# #
  9. //# This program is distributed in the hope that it will be useful, #
  10. //# but WITHOUT ANY WARRANTY; without even the implied warranty of #
  11. //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
  12. //# GNU General Public License for more details. #
  13. //# #
  14. //# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
  15. //# #
  16. //##########################################################################
  17. #ifndef CC_MAIN_WINDOW_HEADER
  18. #define CC_MAIN_WINDOW_HEADER
  19. //Qt
  20. #include <QMainWindow>
  21. //Local
  22. #include "ccEntityAction.h"
  23. #include "ccMainAppInterface.h"
  24. #include "ccPickingListener.h"
  25. //CCCoreLib
  26. #include <AutoSegmentationTools.h>
  27. class QAction;
  28. class QMdiArea;
  29. class QMdiSubWindow;
  30. class QToolBar;
  31. class QToolButton;
  32. class cc3DMouseManager;
  33. class ccCameraParamEditDlg;
  34. class ccClippingBoxTool;
  35. class ccComparisonDlg;
  36. class ccDBRoot;
  37. class ccDrawableObject;
  38. class ccGamepadManager;
  39. class ccGLWindowInterface;
  40. class ccGraphicalSegmentationTool;
  41. class ccGraphicalTransformationTool;
  42. class ccHObject;
  43. class ccOverlayDialog;
  44. class ccPluginUIManager;
  45. class ccPointListPickingDlg;
  46. class ccPointPairRegistrationDlg;
  47. class ccPointPropertiesDlg;
  48. class ccPrimitiveFactoryDlg;
  49. class ccRecentFiles;
  50. class ccSectionExtractionTool;
  51. class ccStdPluginInterface;
  52. class ccTracePolylineTool;
  53. struct dbTreeSelectionInfo;
  54. namespace Ui {
  55. class MainWindow;
  56. }
  57. //! Main window
  58. class MainWindow : public QMainWindow, public ccMainAppInterface, public ccPickingListener
  59. {
  60. Q_OBJECT
  61. protected:
  62. //! Default constructor
  63. MainWindow();
  64. //! Default desctructor
  65. ~MainWindow() override;
  66. public:
  67. //! Returns the unique instance of this object
  68. static MainWindow* TheInstance();
  69. //! Static shortcut to MainWindow::getActiveGLWindow
  70. static ccGLWindowInterface* GetActiveGLWindow();
  71. //! Returns a given GL sub-window (determined by its title)
  72. /** \param title window title
  73. **/
  74. static ccGLWindowInterface* GetGLWindow(const QString& title);
  75. //! Returns all GL sub-windows
  76. /** \param[in,out] glWindows vector to store all sub-windows
  77. **/
  78. static void GetGLWindows(std::vector<ccGLWindowInterface*>& glWindows);
  79. //! Static shortcut to MainWindow::refreshAll
  80. static void RefreshAllGLWindow(bool only2D = false);
  81. //! Static shortcut to MainWindow::updateUI
  82. static void UpdateUI();
  83. //! Deletes current main window instance
  84. static void DestroyInstance();
  85. //! Returns active GL sub-window (if any)
  86. ccGLWindowInterface* getActiveGLWindow() override;
  87. //! Returns MDI area subwindow corresponding to a given 3D view
  88. QMdiSubWindow* getMDISubWindow(ccGLWindowInterface* win);
  89. //! Returns a given views
  90. ccGLWindowInterface* getGLWindow(int index) const;
  91. //! Returns the number of 3D views
  92. int getGLWindowCount() const;
  93. //! Tries to load several files (and then pushes them into main DB)
  94. /** \param filenames list of all filenames
  95. \param fileFilter selected file filter (i.e. type)
  96. \param destWin destination window (0 = active one)
  97. **/
  98. virtual void addToDB( const QStringList& filenames,
  99. QString fileFilter = QString(),
  100. ccGLWindowInterface* destWin = nullptr );
  101. //inherited from ccMainAppInterface
  102. void addToDB( ccHObject* obj,
  103. bool updateZoom = false,
  104. bool autoExpandDBTree = true,
  105. bool checkDimensions = false,
  106. bool autoRedraw = true ) override;
  107. void registerOverlayDialog(ccOverlayDialog* dlg, Qt::Corner pos) override;
  108. void unregisterOverlayDialog(ccOverlayDialog* dlg) override;
  109. void updateOverlayDialogsPlacement() override;
  110. void removeFromDB(ccHObject* obj, bool autoDelete = true) override;
  111. void setSelectedInDB(ccHObject* obj, bool selected) override;
  112. void dispToConsole(QString message, ConsoleMessageLevel level = STD_CONSOLE_MESSAGE) override;
  113. void forceConsoleDisplay() override;
  114. ccHObject* dbRootObject() override;
  115. inline QMainWindow* getMainWindow() override { return this; }
  116. ccHObject* loadFile(QString filename, bool silent) override;
  117. inline const ccHObject::Container& getSelectedEntities() const override { return m_selectedEntities; }
  118. void createGLWindow(ccGLWindowInterface*& window, QWidget*& widget) const override;
  119. void destroyGLWindow(ccGLWindowInterface*) const override;
  120. ccUniqueIDGenerator::Shared getUniqueIDGenerator() override;
  121. ccColorScalesManager* getColorScalesManager() override;
  122. void spawnHistogramDialog( const std::vector<unsigned>& histoValues,
  123. double minVal, double maxVal,
  124. QString title, QString xAxisLabel) override;
  125. ccPickingHub* pickingHub() override { return m_pickingHub; }
  126. ccHObjectContext removeObjectTemporarilyFromDBTree(ccHObject* obj) override;
  127. void putObjectBackIntoDBTree(ccHObject* obj, const ccHObjectContext& context) override;
  128. //! Inherited from ccPickingListener
  129. void onItemPicked(const PickedItem& pi) override;
  130. //! Similar to getSelectedEntities, but makes sure no children of another selected entity is in the output selection
  131. ccHObject::Container getTopLevelSelectedEntities() const;
  132. //! Returns real 'dbRoot' object
  133. virtual ccDBRoot* db();
  134. //! Adds the "Edit Plane" action to the given menu.
  135. /**
  136. * This is the only MainWindow UI action used externally (by ccDBRoot).
  137. **/
  138. void addEditPlaneAction( QMenu &menu ) const;
  139. //! Sets up the UI (menus and toolbars) based on loaded plugins
  140. void initPlugins();
  141. //! Updates the 'Properties' view
  142. void updatePropertiesView();
  143. private:
  144. //! Creates a new 3D GL sub-window
  145. ccGLWindowInterface* new3DView() { return new3DViewInternal(true); }
  146. //! Creates a new 3D GL sub-window (choose whether entity selection is allowed or not)
  147. ccGLWindowInterface* new3DViewInternal(bool allowEntitySelection);
  148. //! Zooms in (current 3D view)
  149. void zoomIn();
  150. //! Zooms out (current 3D view)
  151. void zoomOut();
  152. //! Displays the 'help' dialog
  153. void doActionShowHelpDialog();
  154. //! Loads one or several files
  155. void doActionLoadFile();
  156. //! Save the currently selected entities
  157. void doActionSaveFile();
  158. //! Save all the entities at once, BIN format forced
  159. void doActionSaveProject();
  160. //! Displays the Global Shift settings dialog
  161. void doActionGlobalShiftSeetings();
  162. //! Toggles the 'show Qt warnings in Console' option
  163. void doEnableQtWarnings(bool);
  164. //! Clones currently selected entities
  165. void doActionClone();
  166. //! Updates entities display target when a gl sub-window is deleted
  167. /** \param glWindow the window that is going to be delete
  168. **/
  169. void prepareWindowDeletion(ccGLWindowInterface* glWindow);
  170. //! Slot called when the exclusive fullscreen mode is toggled on a window
  171. void onExclusiveFullScreenToggled(bool);
  172. //inherited from ccMainAppInterface
  173. void freezeUI(bool state) override;
  174. void redrawAll(bool only2D = false) override;
  175. void refreshAll(bool only2D = false) override;
  176. void enableAll() override;
  177. void disableAll() override;
  178. void disableAllBut(ccGLWindowInterface* win) override;
  179. void updateUI() override;
  180. virtual void toggleActiveWindowStereoVision(bool);
  181. void toggleActiveWindowCenteredPerspective() override;
  182. void toggleActiveWindowCustomLight() override;
  183. void toggleActiveWindowSunLight() override;
  184. void toggleActiveWindowViewerBasedPerspective() override;
  185. void zoomOnSelectedEntities() override;
  186. void setGlobalZoom() override;
  187. void increasePointSize() override;
  188. void decreasePointSize() override;
  189. void toggleLockRotationAxis();
  190. void doActionEnableBubbleViewMode();
  191. void setPivotAlwaysOn();
  192. void setPivotRotationOnly();
  193. void setPivotOff();
  194. void toggleActiveWindowAutoPickRotCenter(bool);
  195. void toggleActiveWindowShowCursorCoords(bool);
  196. //! Handles new label
  197. void handleNewLabel(ccHObject*);
  198. void setActiveSubWindow(QWidget* window);
  199. void showDisplaySettings();
  200. void showSelectedEntitiesHistogram();
  201. void testFrameRate();
  202. void toggleFullScreen(bool state);
  203. void toggleVisualDebugTraces();
  204. void toggleExclusiveFullScreen(bool state);
  205. void update3DViewsMenu();
  206. void updateMenus();
  207. void on3DViewActivated(QMdiSubWindow*);
  208. void updateUIWithSelection();
  209. void addToDBAuto(const QStringList& filenames);
  210. void echoMouseWheelRotate(float);
  211. void echoBaseViewMatRotation(const ccGLMatrixd& rotMat);
  212. void echoCameraPosChanged(const CCVector3d&);
  213. void echoPivotPointChanged(const CCVector3d&);
  214. void doActionRenderToFile();
  215. //menu action
  216. void doActionSetUniqueColor();
  217. void doActionColorize();
  218. void doActionRGBToGreyScale();
  219. void doActionSetColor(bool colorize);
  220. void doActionSetColorGradient();
  221. void doActionInterpolateColors();
  222. void doActionChangeColorLevels();
  223. void doActionEnhanceRGBWithIntensities();
  224. void doActionColorFromScalars();
  225. void doActionRGBGaussianFilter();
  226. void doActionRGBBilateralFilter();
  227. void doActionRGBMeanFilter();
  228. void doActionRGBMedianFilter();
  229. void doActionSFGaussianFilter();
  230. void doActionSFBilateralFilter();
  231. void doActionSFConvertToRGB();
  232. void doActionSFConvertToRandomRGB();
  233. void doActionRenameSF();
  234. void doActionOpenColorScalesManager();
  235. void doActionAddIdField();
  236. void doActionSplitCloudUsingSF();
  237. void doActionSetSFAsCoord();
  238. void doActionInterpolateScalarFields();
  239. void doComputeGeometricFeature();
  240. void doActionSFGradient();
  241. void doRemoveDuplicatePoints();
  242. void doSphericalNeighbourhoodExtractionTest(); //DGM TODO: remove after test
  243. void doCylindricalNeighbourhoodExtractionTest(); //DGM TODO: remove after test
  244. void doActionFitPlane();
  245. void doActionFitSphere();
  246. void doActionFitCircle();
  247. void doActionFitFacet();
  248. void doActionFitQuadric();
  249. void doShowPrimitiveFactory();
  250. void doActionComputeNormals();
  251. void doActionInvertNormals();
  252. void doActionConvertNormalsToHSV();
  253. void doActionConvertNormalsToDipDir();
  254. void doActionComputeOctree();
  255. void doActionComputeKdTree();
  256. void doActionApplyTransformation();
  257. void doActionMerge();
  258. void doActionRegister();
  259. void doAction4pcsRegister(); //Aurelien BEY le 13/11/2008
  260. void doActionSubsample(); //Aurelien BEY le 4/12/2008
  261. void doActionStatisticalTest();
  262. void doActionSamplePointsOnMesh();
  263. void doActionSamplePointsOnPolyline();
  264. void doActionSmoohPolyline();
  265. void doActionConvertTextureToColor();
  266. void doActionLabelConnectedComponents();
  267. void doActionComputeStatParams();
  268. void doActionFilterByValue();
  269. // Picking operations
  270. void enablePickingOperation(ccGLWindowInterface* win, QString message);
  271. void cancelPreviousPickingOperation(bool aborted);
  272. // For rotation center picking
  273. void doPickRotationCenter();
  274. // For leveling
  275. void doLevel();
  276. void doActionCreatePlane();
  277. void doActionEditPlane();
  278. void doActionFlipPlane();
  279. void doActionComparePlanes();
  280. void doActionDeleteScanGrids();
  281. void doActionSmoothMeshSF();
  282. void doActionEnhanceMeshSF();
  283. void doActionAddConstantSF();
  284. void doActionAddClassificationSF();
  285. void doActionScalarFieldArithmetic();
  286. void doActionScalarFieldFromColor();
  287. void doActionOrientNormalsFM();
  288. void doActionOrientNormalsMST();
  289. void doActionShiftPointsAlongNormals();
  290. void doActionResampleWithOctree();
  291. void doActionComputeMeshAA();
  292. void doActionComputeMeshLS();
  293. void doActionMeshScanGrids();
  294. void doActionComputeDistanceMap();
  295. void doActionComputeDistToBestFitQuadric3D();
  296. void doActionMeasureMeshSurface();
  297. void doActionMeasureMeshVolume();
  298. void doActionFlagMeshVertices();
  299. void doActionSmoothMeshLaplacian();
  300. void doActionSubdivideMesh();
  301. void doActionFlipMeshTriangles();
  302. void doActionComputeCPS();
  303. void doActionShowWaveDialog();
  304. void doActionCompressFWFData();
  305. void doActionKMeans();
  306. void doActionFrontPropagation();
  307. void doActionApplyScale();
  308. void doActionEditGlobalShiftAndScale();
  309. void doActionMatchBBCenters();
  310. void doActionMatchScales();
  311. void doActionSORFilter();
  312. void doActionFilterNoise();
  313. void doActionUnroll();
  314. void doActionCreateGBLSensor();
  315. void doActionCreateCameraSensor();
  316. void doActionModifySensor();
  317. void doActionProjectUncertainty();
  318. void doActionCheckPointsInsideFrustum();
  319. void doActionComputeDistancesFromSensor();
  320. void doActionComputeScatteringAngles();
  321. void doActionSetViewFromSensor();
  322. void doActionShowDepthBuffer();
  323. void doActionExportDepthBuffer();
  324. void doActionComputePointsVisibility();
  325. void doActionRasterize();
  326. void doCompute2HalfDimVolume();
  327. void doConvertPolylinesToMesh();
  328. void doMeshTwoPolylines();
  329. void doActionExportCoordToSF();
  330. void doActionExportNormalToSF();
  331. void doActionSetSFsAsNormal();
  332. void doComputeBestFitBB();
  333. void doActionCrop();
  334. void doActionEditCamera();
  335. void doActionAdjustZoom();
  336. void doActionSaveViewportAsCamera();
  337. void doActionResetGUIElementsPos();
  338. void doActionToggleRestoreWindowOnStartup(bool);
  339. void doActionResetAllVBOs();
  340. //Shaders & plugins
  341. void doActionLoadShader();
  342. void doActionDeleteShader();
  343. void doActionFindBiggestInnerRectangle();
  344. //Clipping box
  345. void activateClippingBoxMode();
  346. void deactivateClippingBoxMode(bool);
  347. //Graphical transformation
  348. void activateTranslateRotateMode();
  349. void deactivateTranslateRotateMode(bool);
  350. //Graphical segmentation
  351. void activateSegmentationMode();
  352. void deactivateSegmentationMode(bool);
  353. //Polyline tracing
  354. void activateTracePolylineMode();
  355. void deactivateTracePolylineMode(bool);
  356. //Section extraction
  357. void activateSectionExtractionMode();
  358. void deactivateSectionExtractionMode(bool);
  359. //Entities comparison
  360. void doActionCloudCloudDist();
  361. void doActionCloudMeshDist();
  362. void doActionCloudPrimitiveDist();
  363. void deactivateComparisonMode(int);
  364. //Point picking mechanism
  365. void activatePointPickingMode();
  366. void deactivatePointPickingMode(bool);
  367. //Point list picking mechanism
  368. void activatePointListPickingMode();
  369. void deactivatePointListPickingMode(bool);
  370. //Point-pair registration mechanism
  371. void activateRegisterPointPairTool();
  372. void deactivateRegisterPointPairTool(bool);
  373. //Current active scalar field
  374. void doActionToggleActiveSFColorScale();
  375. void doActionShowActiveSFPrevious();
  376. void doActionShowActiveSFNext();
  377. //! Removes all entities currently loaded in the DB tree
  378. void closeAll();
  379. //! Batch export some info from a set of selected clouds
  380. void doActionExportCloudInfo();
  381. //! Batch export some info from a set of selected planes
  382. void doActionExportPlaneInfo();
  383. //! Generates a matrix with the best (registration) RMS for all possible couple among the selected entities
  384. void doActionComputeBestICPRmsMatrix();
  385. //! Creates a cloud with the (bounding-box) centers of all selected entities
  386. void doActionCreateCloudFromEntCenters();
  387. //! Creates a cloud with a single point
  388. void createSinglePointCloud();
  389. //! Creates a cloud from the clipboard (ASCII) data
  390. void createPointCloudFromClipboard();
  391. inline void doActionMoveBBCenterToOrigin() { doActionFastRegistration(MoveBBCenterToOrigin); }
  392. inline void doActionMoveBBMinCornerToOrigin() { doActionFastRegistration(MoveBBMinCornerToOrigin); }
  393. inline void doActionMoveBBMaxCornerToOrigin() { doActionFastRegistration(MoveBBMaxCornerToOrigin); }
  394. //! Restores position and state of all GUI elements
  395. void restoreGUIElementsPos();
  396. private:
  397. //! Shortcut: asks the user to select one cloud
  398. /** \param defaultCloudEntity a cloud to select by default (optional)
  399. \param inviteMessage invite message (default is something like 'Please select an entity:') (optional)
  400. \return the selected cloud (or null if the user cancelled the operation)
  401. **/
  402. ccPointCloud* askUserToSelectACloud(ccHObject* defaultCloudEntity = nullptr, QString inviteMessage = QString());
  403. enum FastRegistrationMode
  404. {
  405. MoveBBCenterToOrigin,
  406. MoveBBMinCornerToOrigin,
  407. MoveBBMaxCornerToOrigin
  408. };
  409. void doActionFastRegistration(FastRegistrationMode mode);
  410. void toggleSelectedEntitiesProperty( ccEntityAction::TOGGLE_PROPERTY property );
  411. void clearSelectedEntitiesProperty( ccEntityAction::CLEAR_PROPERTY property );
  412. void setView( CC_VIEW_ORIENTATION view ) override;
  413. //! Apply transformation to the selected entities
  414. void applyTransformation(const ccGLMatrixd& transMat, bool applyToGlobal);
  415. //! Creates point clouds from multiple 'components'
  416. void createComponentsClouds(ccGenericPointCloud* cloud,
  417. CCCoreLib::ReferenceCloudContainer& components,
  418. unsigned minPointPerComponent,
  419. bool randomColors,
  420. bool selectComponents,
  421. bool sortBysize = true);
  422. //! Saves position and state of all GUI elements
  423. void saveGUIElementsPos();
  424. void setOrthoView(ccGLWindowInterface* win);
  425. void setCenteredPerspectiveView(ccGLWindowInterface* win, bool autoRedraw = true);
  426. void setViewerPerspectiveView(ccGLWindowInterface* win);
  427. void showEvent(QShowEvent* event) override;
  428. void closeEvent(QCloseEvent* event) override;
  429. void moveEvent(QMoveEvent* event) override;
  430. void resizeEvent(QResizeEvent* event) override;
  431. bool eventFilter(QObject *obj, QEvent *event) override;
  432. void keyPressEvent(QKeyEvent *event) override;
  433. //! Makes the window including an entity zoom on it (helper)
  434. void zoomOn(ccHObject* object);
  435. //! Active SF action fork
  436. /** - action=0 : toggle SF color scale
  437. - action=1 : activate previous SF
  438. - action=2 : activate next SF
  439. \param action action id
  440. **/
  441. void doApplyActiveSFAction(int action);
  442. //! Mesh computation fork
  443. /** \param type triangulation type
  444. **/
  445. void doActionComputeMesh(CCCoreLib::TRIANGULATION_TYPES type);
  446. //! Computes the orientation of an entity
  447. /** Either fit a plane or a 'facet' (2D polygon)
  448. **/
  449. void doComputePlaneOrientation(bool fitFacet);
  450. //! Sets up any input devices (3D mouse, gamepad) and adds their menus
  451. void setupInputDevices();
  452. //! Stops input and destroys any input device handling
  453. void destroyInputDevices();
  454. //! Connects all QT actions to slots
  455. void connectActions();
  456. //! Enables menu entires based on the current selection
  457. void enableUIItems(dbTreeSelectionInfo& selInfo);
  458. //! Updates the view mode pop-menu based for a given window (or an absence of!)
  459. void updateViewModePopUpMenu(ccGLWindowInterface* win);
  460. //! Updates the pivot visibility pop-menu based for a given window (or an absence of!)
  461. void updatePivotVisibilityPopUpMenu(ccGLWindowInterface* win);
  462. //! Checks whether stereo mode can be stopped (if necessary) or not
  463. bool checkStereoMode(ccGLWindowInterface* win);
  464. //! Adds a single value SF to the active point cloud
  465. void addConstantSF(ccPointCloud* cloud, QString sfName, bool integerValue);
  466. private: //members
  467. //! Main UI
  468. Ui::MainWindow* m_UI;
  469. //! DB tree
  470. ccDBRoot* m_ccRoot;
  471. //! Currently selected entities;
  472. ccHObject::Container m_selectedEntities;
  473. //! UI frozen state (see freezeUI)
  474. bool m_uiFrozen;
  475. //! Recent files menu
  476. ccRecentFiles* m_recentFiles;
  477. //! 3D mouse
  478. cc3DMouseManager* m_3DMouseManager;
  479. //! Gamepad handler
  480. ccGamepadManager* m_gamepadManager;
  481. //! View mode pop-up menu button
  482. QToolButton* m_viewModePopupButton;
  483. //! Pivot visibility pop-up menu button
  484. QToolButton* m_pivotVisibilityPopupButton;
  485. //! Flag: first time the window is made visible
  486. bool m_firstShow;
  487. //! Point picking hub
  488. ccPickingHub* m_pickingHub;
  489. /******************************/
  490. /*** MDI AREA ***/
  491. /******************************/
  492. QMdiArea* m_mdiArea;
  493. //! CloudCompare MDI area overlay dialogs
  494. struct ccMDIDialogs
  495. {
  496. ccOverlayDialog* dialog;
  497. Qt::Corner position;
  498. //! Constructor with dialog and position
  499. ccMDIDialogs(ccOverlayDialog* dlg, Qt::Corner pos)
  500. : dialog(dlg)
  501. , position(pos)
  502. {}
  503. };
  504. //! Repositions an MDI dialog at its right position
  505. void repositionOverlayDialog(ccMDIDialogs& mdiDlg);
  506. //! Registered MDI area 'overlay' dialogs
  507. std::vector<ccMDIDialogs> m_mdiDialogs;
  508. /*** dialogs ***/
  509. //! Camera params dialog
  510. ccCameraParamEditDlg* m_cpeDlg;
  511. //! Graphical segmentation dialog
  512. ccGraphicalSegmentationTool* m_gsTool;
  513. //! Polyline tracing tool
  514. ccTracePolylineTool * m_tplTool;
  515. //! Section extraction dialog
  516. ccSectionExtractionTool* m_seTool;
  517. //! Graphical transformation dialog
  518. ccGraphicalTransformationTool* m_transTool;
  519. //! Clipping box dialog
  520. ccClippingBoxTool* m_clipTool;
  521. //! Cloud comparison dialog
  522. ccComparisonDlg* m_compDlg;
  523. //! Point properties mode dialog
  524. ccPointPropertiesDlg* m_ppDlg;
  525. //! Point list picking
  526. ccPointListPickingDlg* m_plpDlg;
  527. //! Point-pair registration
  528. ccPointPairRegistrationDlg* m_pprDlg;
  529. //! Primitive factory dialog
  530. ccPrimitiveFactoryDlg* m_pfDlg;
  531. /*** plugins ***/
  532. //! Manages plugins - menus, toolbars, and the about dialog
  533. ccPluginUIManager *m_pluginUIManager;
  534. };
  535. #endif