]> sigrok.org Git - pulseview.git/blobdiff - pv/view/view.hpp
RowItem: Pass rect into label_rect
[pulseview.git] / pv / view / view.hpp
index e763da7e398a9b563b8fc5927088ad3ed391a2aa..5fc6e4e0a619c94442dea0e34e87dab8438af02c 100644 (file)
@@ -63,6 +63,8 @@ private:
 
        static const int MaxScrollValue;
 
+       static const int ScaleUnits[3];
+
 public:
        static const QColor CursorAreaColour;
 
@@ -88,6 +90,11 @@ public:
 
        const Viewport* viewport() const;
 
+       /**
+        * Gets a list of time markers.
+        */
+       std::vector< std::shared_ptr<TimeItem> > time_items() const;
+
        /**
         * Returns the view time scale in seconds per pixel.
         */
@@ -100,6 +107,16 @@ public:
        double offset() const;
        int owner_visual_v_offset() const;
 
+       /**
+        * Returns the SI prefix to apply to the graticule time markings.
+        */
+       unsigned int tick_prefix() const;
+
+       /**
+        * Returns period of the graticule time markings.
+        */
+       double tick_period() const;
+
        /**
         * Returns the number of nested parents that this row item owner has.
         */
@@ -142,12 +159,7 @@ public:
        /**
         * Returns a reference to the pair of cursors.
         */
-       CursorPair& cursors();
-
-       /**
-        * Returns a reference to the pair of cursors.
-        */
-       const CursorPair& cursors() const;
+       std::shared_ptr<CursorPair> cursors() const;
 
        const QPoint& hover_point() const;
 
@@ -175,6 +187,12 @@ private:
         */
        void set_zoom(double scale, int offset);
 
+       /**
+        * Find a tick spacing and number formatting that does not cause
+        * the values to collide.
+        */
+       void calculate_tick_spacing();
+
        void update_scroll();
 
        void update_layout();
@@ -182,19 +200,17 @@ private:
        /**
         * Satisifies RowItem functionality.
         * @param p the QPainter to paint into.
-        * @param right the x-coordinate of the right edge of the header
-        *      area.
+        * @param rect the rectangle of the header area.
         * @param hover true if the label is being hovered over by the mouse.
         */
-       void paint_label(QPainter &p, int right, bool hover);
+       void paint_label(QPainter &p, const QRect &rect, bool hover);
 
        /**
         * Computes the outline rectangle of a label.
-        * @param right the x-coordinate of the right edge of the header
-        *      area.
+        * @param rect the rectangle of the header area.
         * @return Returns the rectangle of the signal label.
         */
-       QRectF label_rect(int right);
+       QRectF label_rect(const QRectF &rect);
 
        static bool add_channels_to_owner(
                const std::vector< std::shared_ptr<sigrok::Channel> > &channels,
@@ -252,8 +268,11 @@ private:
        int v_offset_;
        bool updating_scroll_;
 
+       double tick_period_;
+       unsigned int tick_prefix_;
+
        bool show_cursors_;
-       CursorPair cursors_;
+       std::shared_ptr<CursorPair> cursors_;
 
        QPoint hover_point_;