X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Frow.cpp;h=4f0e245fc65c359528a7cf3e5a5d8c3760671740;hb=86d4b8e3e52a422fe3a6956d6bbef27f1859717b;hp=341c61dfd1fea3547bc3dab46fd1d965970e425b;hpb=41293691c797b8f5e3133c072aa869fc9cf91253;p=pulseview.git diff --git a/pv/data/decode/row.cpp b/pv/data/decode/row.cpp index 341c61df..4f0e245f 100644 --- a/pv/data/decode/row.cpp +++ b/pv/data/decode/row.cpp @@ -17,6 +17,8 @@ * along with this program; if not, see . */ +#include + #include "decoder.hpp" #include "row.hpp" @@ -110,6 +112,54 @@ void Row::set_visible(bool visible) visible_ = visible; } +void Row::set_base_color(QColor base_color) +{ + // For the row color, use the base color hue and add an offset that's + // not a dividend of 360 + + const int h = (base_color.toHsv().hue() + 20 * index_) % 360; + const int s = DECODE_COLOR_SATURATION; + const int v = DECODE_COLOR_VALUE; + color_.setHsl(h, s, v); + + vector classes = ann_classes(); + for (const AnnotationClass* ann_class : classes) { + + // For each class color, use the row color hue and add an offset that's + // not a dividend of 360 and not a multiple of the row offset + + QColor ann_color(color_); + const int h = (ann_color.toHsv().hue() + 55 * ann_class->id) % 360; + const int s = DECODE_COLOR_SATURATION; + const int v = DECODE_COLOR_VALUE; + ann_color.setHsl(h, s, v); + + ann_class_color_[ann_class->id] = ann_color; + ann_bright_class_color_[ann_class->id] = ann_color.lighter(); + ann_dark_class_color_[ann_class->id] = ann_color.darker(); + } +} + +const QColor Row::color() const +{ + return color_; +} + +const QColor Row::get_class_color(uint32_t ann_class_id) const +{ + return ann_class_color_.at(ann_class_id); +} + +const QColor Row::get_bright_class_color(uint32_t ann_class_id) const +{ + return ann_bright_class_color_.at(ann_class_id); +} + +const QColor Row::get_dark_class_color(uint32_t ann_class_id) const +{ + return ann_dark_class_color_.at(ann_class_id); +} + bool Row::has_hidden_classes() const { for (const AnnotationClass* c : ann_classes()) @@ -119,6 +169,11 @@ bool Row::has_hidden_classes() const return false; } +bool Row::class_is_visible(uint32_t ann_class_id) const +{ + return decoder_->get_ann_class_by_id(ann_class_id)->visible; +} + bool Row::operator<(const Row& other) const { return (decoder_ < other.decoder_) ||