X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Frow.cpp;h=d127a2eadaf3045180452a148777f33cb30c9f08;hb=02078aa15a4747b8ab7a91d54e2e141c3acb5628;hp=f1895ae4ef7c71bb100c46d645fc356cc4d78b57;hpb=d5e790204dcc9a6aa8626294aa505634c179261f;p=pulseview.git diff --git a/pv/data/decode/row.cpp b/pv/data/decode/row.cpp index f1895ae4..d127a2ea 100644 --- a/pv/data/decode/row.cpp +++ b/pv/data/decode/row.cpp @@ -110,17 +110,72 @@ bool Row::visible() const void Row::set_visible(bool visible) { visible_ = visible; + + visibility_changed(); +} + +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()) - if (!c->visible) + if (!c->visible()) return true; 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_) ||