From f9abdc014adda6771828db4c8caa8f66e066b7a3 Mon Sep 17 00:00:00 2001 From: Joel Holdsworth Date: Sun, 29 Sep 2013 13:03:46 +0900 Subject: [PATCH 1/1] Added palette of colours for different decode annotation types Kudos to Uwe Hermann for providing the idea for this very nice usability improvement. --- pv/view/decode/annotation.cpp | 22 ++++++++++++++++++---- pv/view/decode/annotation.h | 9 ++++++--- pv/view/decodesignal.cpp | 5 ++--- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/pv/view/decode/annotation.cpp b/pv/view/decode/annotation.cpp index f2b2f37f..94f1fff5 100644 --- a/pv/view/decode/annotation.cpp +++ b/pv/view/decode/annotation.cpp @@ -40,9 +40,20 @@ namespace decode { const double Annotation::EndCapWidth = 5; const int Annotation::DrawPadding = 100; +const QColor Annotation::Colours[7] = { + QColor(0xFC, 0xE9, 0x4F), // Light Butter + QColor(0xFC, 0xAF, 0x3E), // Light Orange + QColor(0xE9, 0xB9, 0x6E), // Light Chocolate + QColor(0x8A, 0xE2, 0x34), // Light Green + QColor(0x72, 0x9F, 0xCF), // Light Blue + QColor(0xAD, 0x7F, 0xA8), // Light Plum + QColor(0xEF, 0x29, 0x29) // Light Red +}; + Annotation::Annotation(const srd_proto_data *const pdata) : _start_sample(pdata->start_sample), - _end_sample(pdata->end_sample) + _end_sample(pdata->end_sample), + _format(pdata->ann_format) { const char *const *annotations = (char**)pdata->data; while(*annotations) { @@ -51,15 +62,18 @@ Annotation::Annotation(const srd_proto_data *const pdata) : } } -void Annotation::paint(QPainter &p, QColor fill, QColor outline, - QColor text_color, int text_height, int left, int right, - double samples_per_pixel, double pixels_offset, int y) +void Annotation::paint(QPainter &p, QColor text_color, int text_height, + int left, int right, double samples_per_pixel, double pixels_offset, + int y) { const int h = (text_height * 3) / 2; const double start = _start_sample / samples_per_pixel - pixels_offset; const double end = _end_sample / samples_per_pixel - pixels_offset; + const QColor fill = Colours[(_format * (countof(Colours) / 2 + 1)) % + countof(Colours)]; + const QColor outline(fill.darker()); if (start > right + DrawPadding || end < left - DrawPadding) return; diff --git a/pv/view/decode/annotation.h b/pv/view/decode/annotation.h index 091cd260..078c12a1 100644 --- a/pv/view/decode/annotation.h +++ b/pv/view/decode/annotation.h @@ -37,12 +37,14 @@ private: static const double EndCapWidth; static const int DrawPadding; + static const QColor Colours[7]; + public: Annotation(const srd_proto_data *const pdata); - void paint(QPainter &p, QColor fill, QColor outline, - QColor text_colour, int text_height, int left, int right, - double samples_per_pixel, double pixels_offset, int y); + void paint(QPainter &p, QColor text_colour, int text_height, int left, + int right, double samples_per_pixel, double pixels_offset, + int y); private: void draw_instant(QPainter &p, QColor fill, QColor outline, @@ -55,6 +57,7 @@ private: private: uint64_t _start_sample; uint64_t _end_sample; + int _format; std::vector _annotations; }; diff --git a/pv/view/decodesignal.cpp b/pv/view/decodesignal.cpp index afc465b9..b151b391 100644 --- a/pv/view/decodesignal.cpp +++ b/pv/view/decodesignal.cpp @@ -104,9 +104,8 @@ void DecodeSignal::paint_mid(QPainter &p, int left, int right) 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); + a->paint(p, get_text_colour(), _text_size.height(), + left, right, samples_per_pixel, pixels_offset, y); } } -- 2.30.2