17 #ifndef _LASERVIEW_HH_
18 #define _LASERVIEW_HH_
22 #include <boost/thread/mutex.hpp>
49 public:
virtual void SetTopic(
const std::string &_topicName);
52 private:
virtual void UpdateImpl();
56 protected:
virtual void resizeEvent(QResizeEvent *_event);
60 private:
void OnScan(ConstLaserScanStampedPtr &_msg);
63 private slots:
void OnFitInView();
66 private slots:
void OnDegree(
bool _toggled);
69 private:
class LaserItem :
public QGraphicsItem
79 public:
unsigned int GetRangeCount();
83 public:
void AddRange(
double _range);
88 public:
void SetRange(
unsigned int _index,
double _range);
91 public: QRectF GetBoundingRect()
const;
96 public:
double GetHoverRange()
const;
101 public:
double GetHoverAngle()
const;
109 public:
void Update(
double _angleMin,
double _angleMax,
110 double _angleStep,
double _rangeMax,
115 private:
virtual QRectF boundingRect()
const;
124 private:
virtual void paint(QPainter *_painter,
125 const QStyleOptionGraphicsItem *_option,
131 private:
virtual void hoverEnterEvent(
132 QGraphicsSceneHoverEvent *_event);
137 private:
virtual void hoverLeaveEvent(
138 QGraphicsSceneHoverEvent *_event);
143 private:
void hoverMoveEvent(QGraphicsSceneHoverEvent *_event);
146 private: std::vector<QPointF> points;
149 private: std::vector<QPointF> noHitPoints;
153 private: std::vector<double> ranges;
156 private:
double angleMin;
159 private:
double angleMax;
162 private:
double angleStep;
165 private:
double rangeMax;
168 private:
double rangeMin;
171 private:
double indexAngle;
174 private:
double scale;
177 public:
bool radians;
180 private:
mutable boost::mutex mutex;
185 private:
class CustomView :
public QGraphicsView
189 public: CustomView(QWidget *_parent)
190 : QGraphicsView(_parent), viewZoomed(
false) {}
194 private:
void wheelEvent(QWheelEvent *_event)
196 this->viewZoomed =
true;
197 _event->delta() > 0 ? this->scale(1.15, 1.15) :
198 this->scale(1.0 / 1.15, 1.0 / 1.15);
203 public:
bool viewZoomed;
207 private: LaserItem *laserItem;
210 private: CustomView *view;
213 private:
bool firstMsg;
216 private: QLineEdit *rangeEdit;
219 private: QLineEdit *angleEdit;
222 private: QSpinBox *vertScanSpin;
Forward declarations for transport.
Base class for widgets that display topic data.
Definition: TopicView.hh:78
#define NULL
Definition: CommonTypes.hh:31
Definition: LaserView.hh:37