]> sigrok.org Git - pulseview.git/blobdiff - pv/logicsignal.cpp
Added a label colour chooser dialog
[pulseview.git] / pv / logicsignal.cpp
index 7543f1396e233003f58ff2c4a4f6131c3b3b6a1b..0c1933d5ae8ed50d408344631cd0def0f63dd5ac 100644 (file)
@@ -18,9 +18,9 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
-#include <math.h>
+#include <extdef.h>
 
-#include "extdef.h"
+#include <math.h>
 
 #include "logicdata.h"
 #include "logicdatasnapshot.h"
@@ -54,10 +54,12 @@ const QColor LogicSignal::LogicSignalColours[10] = {
 LogicSignal::LogicSignal(QString name, shared_ptr<LogicData> data,
        int probe_index) :
        Signal(name),
-       _data(data),
-       _probe_index(probe_index)
+       _probe_index(probe_index),
+       _data(data)
 {
        assert(_probe_index >= 0);
+       _colour = LogicSignalColours[
+               _probe_index % countof(LogicSignalColours)];
 }
 
 void LogicSignal::paint(QPainter &p, const QRect &rect, double scale,
@@ -70,8 +72,8 @@ void LogicSignal::paint(QPainter &p, const QRect &rect, double scale,
        assert(scale > 0);
        assert(_data);
 
-       const float high_offset = rect.top() + Margin;
-       const float low_offset = rect.bottom() - Margin;
+       const float high_offset = rect.top() + Margin + 0.5f;
+       const float low_offset = rect.bottom() - Margin + 0.5f;
 
        const deque< shared_ptr<LogicDataSnapshot> > &snapshots =
                _data->get_snapshots();
@@ -102,7 +104,7 @@ void LogicSignal::paint(QPainter &p, const QRect &rect, double scale,
        for(vector<LogicDataSnapshot::EdgePair>::const_iterator i =
                        edges.begin() + 1;
                i != edges.end() - 1; i++) {
-               const int x = (int)((*i).first / samples_per_pixel -
+               const float x = ((*i).first / samples_per_pixel -
                        pixels_offset) + rect.left();
                *line++ = QLineF(x, high_offset, x, low_offset);
        }
@@ -125,10 +127,10 @@ void LogicSignal::paint(QPainter &p, const QRect &rect, double scale,
        delete[] cap_lines;
 }
 
-int LogicSignal::paint_caps(QPainter &p, QLineF *const lines,
+void LogicSignal::paint_caps(QPainter &p, QLineF *const lines,
        vector< pair<int64_t, bool> > &edges, bool level,
-       double samples_per_pixel, double pixels_offset, int x_offset,
-       int y_offset)
+       double samples_per_pixel, double pixels_offset, float x_offset,
+       float y_offset)
 {
        QLineF *line = lines;
 
@@ -136,20 +138,15 @@ int LogicSignal::paint_caps(QPainter &p, QLineF *const lines,
            i != (edges.end() - 1); i++)
                if((*i).second == level) {
                        *line++ = QLineF(
-                               (int)((*i).first / samples_per_pixel -
+                               ((*i).first / samples_per_pixel -
                                        pixels_offset) + x_offset, y_offset,
-                               (int)((*(i+1)).first / samples_per_pixel -
+                               ((*(i+1)).first / samples_per_pixel -
                                        pixels_offset) + x_offset, y_offset);
                }
 
        p.drawLines(lines, line - lines);
 }
 
-QColor LogicSignal::get_colour() const
-{
-       return LogicSignalColours[_probe_index % countof(LogicSignalColours)];
-}
-
 int LogicSignal::get_nominal_offset(const QRect &rect) const
 {
        return rect.bottom() - Margin;