]> sigrok.org Git - pulseview.git/blobdiff - pv/view/trace.cpp
DeviceManager: Don't perform scans with DMM drivers
[pulseview.git] / pv / view / trace.cpp
index d9cccdb649e94a0669be4d30084323341cc5077d..e5733372378f399dace15e5ba2124802f60fc5c0 100644 (file)
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <extdef.h>
 
-#include <assert.h>
+#include <cassert>
 #include <cmath>
 
 #include <QApplication>
 #include "tracepalette.hpp"
 #include "view.hpp"
 
-#include <pv/widgets/colourbutton.hpp>
-#include <pv/widgets/popup.hpp>
+#include "pv/globalsettings.hpp"
+#include "pv/widgets/colourbutton.hpp"
+#include "pv/widgets/popup.hpp"
+
+using std::pair;
+using std::shared_ptr;
 
 namespace pv {
-namespace view {
+namespace views {
+namespace TraceView {
 
-const QPen Trace::AxisPen(QColor(0, 0, 0, 30*256/100));
+const QPen Trace::AxisPen(QColor(0, 0, 0, 30 * 256 / 100));
 const int Trace::LabelHitPadding = 2;
 
-const QColor Trace::BrightGrayBGColour = QColor(0, 0, 0, 10*255/100);
-const QColor Trace::DarkGrayBGColour = QColor(0, 0, 0, 15*255/100);
+const QColor Trace::BrightGrayBGColour = QColor(0, 0, 0, 10 * 255 / 100);
+const QColor Trace::DarkGrayBGColour = QColor(0, 0, 0, 15 * 255 / 100);
 
-Trace::Trace(std::shared_ptr<data::SignalBase> channel) :
+Trace::Trace(shared_ptr<data::SignalBase> channel) :
        base_(channel),
-       coloured_bg_(true), // Default setting is set in MainWindow::setup_ui()
        popup_(nullptr),
        popup_form_(nullptr)
 {
@@ -56,9 +59,9 @@ Trace::Trace(std::shared_ptr<data::SignalBase> channel) :
                this, SLOT(on_colour_changed(const QColor&)));
 }
 
-void Trace::set_coloured_bg(bool state)
+shared_ptr<data::SignalBase> Trace::base() const
 {
-       coloured_bg_ = state;
+       return base_;
 }
 
 void Trace::paint_label(QPainter &p, const QRect &rect, bool hover)
@@ -72,21 +75,24 @@ void Trace::paint_label(QPainter &p, const QRect &rect, bool hover)
 
        const QRectF r = label_rect(rect);
 
+       // When selected, move the arrow to the left so that the border can show
+       const QPointF offs = (selected()) ? QPointF(-2, 0) : QPointF(0, 0);
+
        // Paint the label
        const float label_arrow_length = r.height() / 2;
-       const QPointF points[] = {
-               r.topLeft(),
-               QPointF(r.right() - label_arrow_length, r.top()),
-               QPointF(r.right(), y),
-               QPointF(r.right() - label_arrow_length, r.bottom()),
-               r.bottomLeft()
+       QPointF points[] = {
+               offs + r.topLeft(),
+               offs + QPointF(r.right() - label_arrow_length, r.top()),
+               offs + QPointF(r.right(), y),
+               offs + QPointF(r.right() - label_arrow_length, r.bottom()),
+               offs + r.bottomLeft()
        };
-       const QPointF highlight_points[] = {
-               QPointF(r.left() + 1, r.top() + 1),
-               QPointF(r.right() - label_arrow_length, r.top() + 1),
-               QPointF(r.right() - 1, y),
-               QPointF(r.right() - label_arrow_length, r.bottom() - 1),
-               QPointF(r.left() + 1, r.bottom() - 1)
+       QPointF highlight_points[] = {
+               offs + QPointF(r.left() + 1, r.top() + 1),
+               offs + QPointF(r.right() - label_arrow_length, r.top() + 1),
+               offs + QPointF(r.right() - 1, y),
+               offs + QPointF(r.right() - label_arrow_length, r.bottom() - 1),
+               offs + QPointF(r.left() + 1, r.bottom() - 1)
        };
 
        if (selected()) {
@@ -132,16 +138,13 @@ pv::widgets::Popup* Trace::create_popup(QWidget *parent)
 
        create_popup_form();
 
-       connect(popup_, SIGNAL(closed()),
-               this, SLOT(on_popup_closed()));
+       connect(popup_, SIGNAL(closed()), this, SLOT(on_popup_closed()));
 
        return popup_;
 }
 
 QRectF Trace::label_rect(const QRectF &rect) const
 {
-       using pv::view::View;
-
        QFontMetrics m(QApplication::font());
        const QSize text_size(
                m.boundingRect(QRect(), 0, base_->name()).width(), m.height());
@@ -156,26 +159,24 @@ QRectF Trace::label_rect(const QRectF &rect) const
                label_size.height());
 }
 
-void Trace::paint_back(QPainter &p, const ViewItemPaintParams &pp)
+void Trace::paint_back(QPainter &p, ViewItemPaintParams &pp)
 {
-       if (coloured_bg_)
+       const View *view = owner_->view();
+       assert(view);
+
+       if (view->coloured_bg())
                p.setBrush(base_->bgcolour());
        else
-               p.setBrush(bgcolour_state_ ? BrightGrayBGColour : DarkGrayBGColour);
+               p.setBrush(pp.next_bg_colour_state() ? BrightGrayBGColour : DarkGrayBGColour);
 
        p.setPen(QPen(Qt::NoPen));
 
-       const std::pair<int, int> extents = v_extents();
-
-       const int x = 0;
-       const int y = get_visual_y() + extents.first;
-       const int w = pp.right() - pp.left();
-       const int h = extents.second - extents.first;
-
-       p.drawRect(x, y, w, h);
+       const pair<int, int> extents = v_extents();
+       p.drawRect(pp.left(), get_visual_y() + extents.first,
+               pp.width(), extents.second - extents.first);
 }
 
-void Trace::paint_axis(QPainter &p, const ViewItemPaintParams &pp, int y)
+void Trace::paint_axis(QPainter &p, ViewItemPaintParams &pp, int y)
 {
        p.setRenderHint(QPainter::Antialiasing, false);
 
@@ -278,5 +279,6 @@ void Trace::on_colouredit_changed(const QColor &colour)
        set_colour(colour);
 }
 
-} // namespace view
+} // namespace TraceView
+} // namespace views
 } // namespace pv