]> sigrok.org Git - pulseview.git/blobdiff - pv/view/decodetrace.cpp
pv::view::DecodeTrace: Draw annotation rows according to PD metadata.
[pulseview.git] / pv / view / decodetrace.cpp
index e275a112ba82d889c0f5b0a51613e2f6b4c91d5d..8c230ad42384cc093ba094ac9bd401377997061d 100644 (file)
@@ -47,8 +47,13 @@ extern "C" {
 #include <pv/widgets/decodergroupbox.h>
 #include <pv/widgets/decodermenu.h>
 
-using namespace boost;
-using namespace std;
+using boost::dynamic_pointer_cast;
+using boost::shared_ptr;
+using std::list;
+using std::max;
+using std::map;
+using std::min;
+using std::vector;
 
 namespace pv {
 namespace view {
@@ -78,7 +83,8 @@ const QColor DecodeTrace::Colours[7] = {
 
 DecodeTrace::DecodeTrace(pv::SigSession &session,
        boost::shared_ptr<pv::data::DecoderStack> decoder_stack, int index) :
-       Trace(session, QString(decoder_stack->stack().front()->decoder()->name)),
+       Trace(session, QString::fromUtf8(
+               decoder_stack->stack().front()->decoder()->name)),
        _decoder_stack(decoder_stack),
        _delete_mapper(this)
 {
@@ -149,9 +155,15 @@ void DecodeTrace::paint_mid(QPainter &p, int left, int right)
 
        assert(_decoder_stack);
        vector<Annotation> annotations(_decoder_stack->annotations());
-       BOOST_FOREACH(const Annotation &a, annotations)
+
+       BOOST_FOREACH(const Annotation &a, annotations) {
+               // Every annotation row is 20 pixels further down.
+               int y_ann_row_offset = a.row() * 20;
+
                draw_annotation(a, p, get_text_colour(), h, left, right,
-                       samples_per_pixel, pixels_offset, y);
+                       samples_per_pixel, pixels_offset,
+                       y + y_ann_row_offset);
+       }
 
        draw_unresolved_period(p, h, left, right,
                samples_per_pixel, pixels_offset);
@@ -403,7 +415,8 @@ void DecodeTrace::create_decoder_form(int index,
        assert(decoder);
 
        pv::widgets::DecoderGroupBox *const group =
-               new pv::widgets::DecoderGroupBox(decoder->name);
+               new pv::widgets::DecoderGroupBox(
+                       QString::fromUtf8(decoder->name));
 
        _delete_mapper.setMapping(group, index);
        connect(group, SIGNAL(delete_decoder()), &_delete_mapper, SLOT(map()));