Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef rqt_image_view__ImageView_H
00034 #define rqt_image_view__ImageView_H
00035
00036 #include <rqt_gui_cpp/plugin.h>
00037
00038 #include <ui_image_view.h>
00039
00040 #include <image_transport/image_transport.h>
00041 #include <ros/package.h>
00042 #include <ros/macros.h>
00043 #include <sensor_msgs/Image.h>
00044 #include <geometry_msgs/Point.h>
00045
00046 #include <opencv2/core/core.hpp>
00047
00048 #include <QAction>
00049 #include <QImage>
00050 #include <QList>
00051 #include <QString>
00052 #include <QSize>
00053 #include <QWidget>
00054
00055 #include <vector>
00056
00057 namespace rqt_image_view {
00058
00059 class ImageView
00060 : public rqt_gui_cpp::Plugin
00061 {
00062
00063 Q_OBJECT
00064
00065 public:
00066
00067 ImageView();
00068
00069 virtual void initPlugin(qt_gui_cpp::PluginContext& context);
00070
00071 virtual void shutdownPlugin();
00072
00073 virtual void saveSettings(qt_gui_cpp::Settings& plugin_settings, qt_gui_cpp::Settings& instance_settings) const;
00074
00075 virtual void restoreSettings(const qt_gui_cpp::Settings& plugin_settings, const qt_gui_cpp::Settings& instance_settings);
00076
00077 protected slots:
00078
00079 virtual void updateTopicList();
00080
00081 protected:
00082
00083
00084 ROS_DEPRECATED virtual QList<QString> getTopicList(const QSet<QString>& message_types, const QList<QString>& transports);
00085
00086 virtual QSet<QString> getTopics(const QSet<QString>& message_types, const QSet<QString>& message_sub_types, const QList<QString>& transports);
00087
00088 virtual void selectTopic(const QString& topic);
00089
00090 protected slots:
00091
00092 virtual void onTopicChanged(int index);
00093
00094 virtual void onZoom1(bool checked);
00095
00096 virtual void onDynamicRange(bool checked);
00097
00098 virtual void saveImage();
00099
00100 virtual void updateNumGridlines();
00101
00102 virtual void onMousePublish(bool checked);
00103
00104 virtual void onMouseLeft(int x, int y);
00105
00106 virtual void onPubTopicChanged();
00107
00108 virtual void onHideToolbarChanged(bool hide);
00109
00110 virtual void onRotateLeft();
00111 virtual void onRotateRight();
00112
00113 protected:
00114
00115 virtual void callbackImage(const sensor_msgs::Image::ConstPtr& msg);
00116
00117 virtual void invertPixels(int x, int y);
00118
00119 QList<int> getGridIndices(int size) const;
00120
00121 virtual void overlayGrid();
00122
00123 Ui::ImageViewWidget ui_;
00124
00125 QWidget* widget_;
00126
00127 image_transport::Subscriber subscriber_;
00128
00129 cv::Mat conversion_mat_;
00130
00131 private:
00132
00133 enum RotateState {
00134 ROTATE_0 = 0,
00135 ROTATE_90 = 1,
00136 ROTATE_180 = 2,
00137 ROTATE_270 = 3,
00138
00139 ROTATE_STATE_COUNT
00140 };
00141
00142 void syncRotateLabel();
00143
00144 QString arg_topic_name;
00145 ros::Publisher pub_mouse_left_;
00146
00147 bool pub_topic_custom_;
00148
00149 QAction* hide_toolbar_action_;
00150
00151 int num_gridlines_;
00152
00153 RotateState rotate_state_;
00154 };
00155
00156 }
00157
00158 #endif // rqt_image_view__ImageView_H