00001 /* This file is part of RGBDSLAM. 00002 * 00003 * RGBDSLAM is free software: you can redistribute it and/or modify 00004 * it under the terms of the GNU General Public License as published by 00005 * the Free Software Foundation, either version 3 of the License, or 00006 * (at your option) any later version. 00007 * 00008 * RGBDSLAM is distributed in the hope that it will be useful, 00009 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00011 * GNU General Public License for more details. 00012 * 00013 * You should have received a copy of the GNU General Public License 00014 * along with RGBDSLAM. If not, see <http://www.gnu.org/licenses/>. 00015 */ 00016 00017 00018 /* This is the main widget of the application. 00019 * It sets up some not yet useful menus and 00020 * three qlabels in the layout of the central widget 00021 * that can be used to show qimages via the slots 00022 * setDepthImage and setVisualImage. 00023 * 00024 * there is an alternative: RosUI for headless use of the rgbdslam 00025 */ 00026 #ifndef QTCV_H 00027 #define QTCV_H 00028 00029 #include <QMainWindow> 00030 #include <QGridLayout> 00031 #include "parameter_server.h" 00032 #include <QMatrix4x4> 00033 00034 class QAction; 00035 class QActionGroup; 00036 class QLabel; 00037 class QMenu; 00038 class GLViewer; 00039 class QSplitter; 00040 00041 //TODO: 00042 //Choice between Binary and ASCII outputfiles 00043 //Buttons for start/stop 00044 //GUI/Commandline options for switching on/off the individual visualizations 00045 00047 00049 class Graphical_UI: public QMainWindow 00050 { 00051 Q_OBJECT 00052 00053 public: 00054 Graphical_UI(); 00055 GLViewer* getGLViewer(); 00056 Q_SIGNALS: 00058 void reset(); 00060 void togglePause(); 00062 void toggleBagRecording(); 00064 void getOneFrame(); 00066 void deleteLastFrame(); 00067 void sendAllClouds(); 00068 00069 void saveAllClouds(QString filename); 00070 void saveAllFeatures(QString filename); 00071 void saveTrajectory(QString filename); 00073 void saveIndividualClouds(QString file_basename); 00074 void setMaxDepth(float max_depth); 00075 void evaluation(); 00076 void optimizeGraph(); 00077 void printEdgeErrors(QString); 00078 void pruneEdgesWithErrorAbove(float); 00079 void toggleMapping(bool); 00080 00081 public Q_SLOTS: 00082 void setVisualImage(QImage); 00083 void setFeatureFlowImage(QImage); 00084 void setDepthImage(QImage); 00085 void sendFinished(); 00086 void showOptions(); 00087 00088 private Q_SLOTS: 00089 void saveVectorGraphic(); 00090 void resetCmd(); 00091 void reloadConfig(); 00092 void sendAll(); 00093 void setMax(); 00094 void setStereoShift(); 00095 void setRotationGrid(); 00096 void saveAll(); 00097 void saveIndividual(); 00098 void quickSaveAll(); 00099 void saveFeatures(); 00100 void pause(bool); 00101 void bagRecording(bool); 00102 void about(); 00103 void help(); 00104 void setInfo(QString); 00105 void setInfo2(QString); 00106 void setStatus(QString); 00107 void getOneFrameCmd(); 00108 void deleteLastFrameCmd(); 00109 // void set3DDisplay(bool is_on); 00110 void set2DStream(bool is_on); 00111 void saveTrajectoryDialog(); 00112 void optimizeGraphTrig(); 00113 void showEdgeErrors(); 00114 void pruneEdgesWithHighError(); 00115 void toggleFullscreen(bool); 00116 void toggleCloudStorage(bool); 00117 void toggleMappingPriv(bool); 00118 private: 00120 void createMenus(); 00121 00122 //QString *menuHelpText; 00123 QString *mouseHelpText; 00124 QString *infoText; 00125 QString *licenseText; 00126 QSplitter* vsplitter; 00127 QLabel *infoLabel; 00128 QLabel *infoLabel2; 00129 QLabel *tmpLabel; 00130 QLabel *visual_image_label; 00131 QLabel *feature_flow_image_label; 00132 QLabel *depth_image_label; 00133 QLabel *stats_image_label; 00134 //QLabel *transform_label; 00135 QGridLayout* gridlayout; 00136 QString filename; 00137 GLViewer* glviewer; 00138 bool pause_on; 00139 }; 00140 00141 #endif