]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/ruler.hpp
Trace View: Move ruler time conversion from View to Ruler
[pulseview.git] / pv / views / trace / ruler.hpp
index 448204b2410410bb7e78c7f635c2392d49937603..bfab766619d135c7d251a2863c7e9078c102ee81 100644 (file)
@@ -46,6 +46,12 @@ namespace trace {
 class TimeItem;
 class ViewItem;
 
+struct TickPositions
+{
+       vector<pair<double, QString>> major;
+       vector<double> minor;
+};
+
 /**
  * The Ruler class manages and displays the time scale above the trace canvas.
  * It may also contain @ref TimeItem instances used to identify or highlight
@@ -69,7 +75,6 @@ private:
 public:
        Ruler(View &parent);
 
-public:
        QSize sizeHint() const override;
 
        /**
@@ -112,6 +117,16 @@ public:
                unsigned precision = 0,
                bool sign = true);
 
+       pv::util::Timestamp get_absolute_time_from_x_pos(uint32_t x) const;
+       pv::util::Timestamp get_ruler_time_from_x_pos(uint32_t x) const;
+
+       pv::util::Timestamp get_ruler_time_from_absolute_time(const pv::util::Timestamp& abs_time) const;
+       pv::util::Timestamp get_absolute_time_from_ruler_time(const pv::util::Timestamp& ruler_time) const;
+
+protected:
+       virtual void contextMenuEvent(QContextMenuEvent *event) override;
+       void resizeEvent(QResizeEvent*) override;
+
 private:
        /**
         * Gets the time items.
@@ -126,10 +141,10 @@ private:
         */
        shared_ptr<ViewItem> get_mouse_over_item(const QPoint &pt) override;
 
-       void paintEvent(QPaintEvent *event) override;
-
        void mouseDoubleClickEvent(QMouseEvent *event) override;
 
+       void paintEvent(QPaintEvent *event) override;
+
        /**
         * Draw a hover arrow under the cursor position.
         * @param p The painter to draw into.
@@ -139,18 +154,6 @@ private:
 
        int calculate_text_height() const;
 
-       struct TickPositions
-       {
-               vector<pair<double, QString>> major;
-               vector<double> minor;
-       };
-
-       /**
-        * Holds the tick positions so that they don't have to be recalculated on
-        * every redraw. Set by 'paintEvent()' when needed.
-        */
-       boost::optional<TickPositions> tick_position_cache_;
-
        /**
         * Calculates the major and minor tick positions.
         *
@@ -171,14 +174,23 @@ private:
                const unsigned int minor_tick_count,
                function<QString(const pv::util::Timestamp&)> format_function);
 
-protected:
-       void resizeEvent(QResizeEvent*) override;
-
 private Q_SLOTS:
-       void hover_point_changed(const QPoint &hp);
+       void on_hover_point_changed(const QWidget* widget, const QPoint &hp);
 
-       // Resets the 'tick_position_cache_'.
        void invalidate_tick_position_cache();
+
+       void on_createMarker();
+       void on_setZeroPosition();
+       void on_toggleHoverMarker();
+
+private:
+       /**
+        * Holds the tick positions so that they don't have to be recalculated on
+        * every redraw. Set by 'paintEvent()' when needed.
+        */
+       boost::optional<TickPositions> tick_position_cache_;
+
+       uint32_t context_menu_x_pos_;
 };
 
 } // namespace trace