]> sigrok.org Git - pulseview.git/blobdiff - pv/view/timemarker.hpp
Add a spin box widget for timestamp values
[pulseview.git] / pv / view / timemarker.hpp
index 9cab1fc6d0a96e666069e635c564a0d62ac80ab5..371b6e4a54ce607edbdfd7dc3ead53c55e9ae447 100644 (file)
@@ -18,8 +18,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#ifndef PULSEVIEW_PV_VIEW_MARKER_H
-#define PULSEVIEW_PV_VIEW_MARKER_H
+#ifndef PULSEVIEW_PV_VIEW_MARKER_HPP
+#define PULSEVIEW_PV_VIEW_MARKER_HPP
 
 #include <QColor>
 #include <QDoubleSpinBox>
 
 #include <QColor>
 #include <QDoubleSpinBox>
@@ -33,6 +33,10 @@ class QPainter;
 class QRect;
 
 namespace pv {
 class QRect;
 
 namespace pv {
+namespace widgets {
+       class TimestampSpinBox;
+}
+
 namespace view {
 
 class View;
 namespace view {
 
 class View;
@@ -43,7 +47,6 @@ class TimeMarker : public TimeItem
 
 public:
        static const int ArrowSize;
 
 public:
        static const int ArrowSize;
-       static const int Offset;
 
 protected:
        /**
 
 protected:
        /**
@@ -52,25 +55,26 @@ protected:
         * @param colour A reference to the colour of this cursor.
         * @param time The time to set the flag to.
         */
         * @param colour A reference to the colour of this cursor.
         * @param time The time to set the flag to.
         */
-       TimeMarker(View &view, const QColor &colour, double time);
+       TimeMarker(View &view, const QColor &colour, const pv::util::Timestamp& time);
 
 public:
        /**
         * Gets the time of the marker.
         */
 
 public:
        /**
         * Gets the time of the marker.
         */
-       double time() const;
+       const pv::util::Timestamp& time() const;
 
        /**
         * Sets the time of the marker.
         */
 
        /**
         * Sets the time of the marker.
         */
-       void set_time(double time);
+       void set_time(const pv::util::Timestamp& time) override;
 
        float get_x() const;
 
        /**
 
        float get_x() const;
 
        /**
-        * Gets the drag point of the row item.
+        * Gets the arrow-tip point of the time marker.
+        * @param rect the rectangle of the ruler area.
         */
         */
-       QPoint point() const;
+       QPoint point(const QRect &rect) const;
 
        /**
         * Computes the outline rectangle of a label.
 
        /**
         * Computes the outline rectangle of a label.
@@ -79,6 +83,13 @@ public:
         */
        QRectF label_rect(const QRectF &rect) const;
 
         */
        QRectF label_rect(const QRectF &rect) const;
 
+       /**
+        * Computes the outline rectangle of the viewport hit-box.
+        * @param rect the rectangle of the viewport area.
+        * @return Returns the rectangle of the hit-box.
+        */
+       QRectF hit_box_rect(const QRectF &rect) const;
+
        /**
         * Gets the text to show in the marker.
         */
        /**
         * Gets the text to show in the marker.
         */
@@ -88,8 +99,9 @@ public:
         * Paints the marker's label to the ruler.
         * @param p The painter to draw with.
         * @param rect The rectangle of the ruler client area.
         * Paints the marker's label to the ruler.
         * @param p The painter to draw with.
         * @param rect The rectangle of the ruler client area.
+        * @param hover true if the label is being hovered over by the mouse.
         */
         */
-       void paint_label(QPainter &p, const QRect &rect);
+       void paint_label(QPainter &p, const QRect &rect, bool hover);
 
        /**
         * Paints the foreground layer of the item with a QPainter
 
        /**
         * Paints the foreground layer of the item with a QPainter
@@ -101,21 +113,21 @@ public:
        virtual pv::widgets::Popup* create_popup(QWidget *parent);
 
 private Q_SLOTS:
        virtual pv::widgets::Popup* create_popup(QWidget *parent);
 
 private Q_SLOTS:
-       void on_value_changed(double value);
+       void on_value_changed(const pv::util::Timestamp& value);
 
 protected:
        const QColor &colour_;
 
 
 protected:
        const QColor &colour_;
 
-       double time_;
+       pv::util::Timestamp time_;
 
        QSizeF text_size_;
 
        QWidgetAction *value_action_;
 
        QSizeF text_size_;
 
        QWidgetAction *value_action_;
-       QDoubleSpinBox *value_widget_;
+       pv::widgets::TimestampSpinBox *value_widget_;
        bool updating_value_widget_;
 };
 
 } // namespace view
 } // namespace pv
 
        bool updating_value_widget_;
 };
 
 } // namespace view
 } // namespace pv
 
-#endif // PULSEVIEW_PV_VIEW_MARKER_H
+#endif // PULSEVIEW_PV_VIEW_MARKER_HPP