X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fview%2Fdecodesignal.cpp;h=f6611a0f05205c8e2f88c392a2b1f944ecc6abe1;hp=44144d1b8b8e31a37648e6d44fb03221e20e94bb;hb=1ae79b11b6b409aae986e379f9280115395c8cf5;hpb=e0fc58100fbcd6c3bfd5aecb213d7541a3436622 diff --git a/pv/view/decodesignal.cpp b/pv/view/decodesignal.cpp index 44144d1b..f6611a0f 100644 --- a/pv/view/decodesignal.cpp +++ b/pv/view/decodesignal.cpp @@ -26,6 +26,7 @@ extern "C" { #include #include +#include using namespace boost; using namespace std; @@ -59,11 +60,39 @@ void DecodeSignal::set_view(pv::view::View *view) Trace::set_view(view); } -void DecodeSignal::paint(QPainter &p, int left, int right) +void DecodeSignal::paint_back(QPainter &p, int left, int right) { - (void)p; - (void)left; - (void)right; + paint_axis(p, get_y(), left, right); +} + +void DecodeSignal::paint_mid(QPainter &p, int left, int right) +{ + using namespace pv::view::decode; + + assert(_view); + const int y = get_y(); + + const double scale = _view->scale(); + assert(scale > 0); + + double samplerate = _decoder->get_samplerate(); + + // Show sample rate as 1Hz when it is unknown + if (samplerate == 0.0) + samplerate = 1.0; + + const double pixels_offset = (_view->offset() - + _decoder->get_start_time()) / scale; + const double samples_per_pixel = samplerate * scale; + + assert(_decoder); + vector< shared_ptr > annotations(_decoder->annotations()); + BOOST_FOREACH(shared_ptr a, annotations) { + assert(a); + a->paint(p, _colour, _colour.darker(), get_text_colour(), + _text_size.height(), left, right, samples_per_pixel, + pixels_offset, y); + } } const list DecodeSignal::get_context_bar_actions()