#ifndef PULSEVIEW_PV_DATA_DECODE_ROW_HPP
#define PULSEVIEW_PV_DATA_DECODE_ROW_HPP
+#include <map>
#include <vector>
-#include <pv/data/decode/annotation.hpp>
-#include <pv/data/decode/decoder.hpp>
+#include <QObject>
+#include <QColor>
struct srd_decoder;
struct srd_decoder_annotation_row;
+using std::map;
+using std::vector;
+
namespace pv {
namespace data {
namespace decode {
-struct AnnotationClass;
+#define DECODE_COLOR_SATURATION (180) /* 0-255 */
+#define DECODE_COLOR_VALUE (170) /* 0-255 */
+
+class AnnotationClass;
class Decoder;
-class Row
+class Row: public QObject
{
+ Q_OBJECT
+
public:
Row();
bool visible() const;
void set_visible(bool visible);
+ void set_base_color(QColor base_color);
+ const QColor color() const;
+ const QColor get_class_color(uint32_t ann_class_id) const;
+ const QColor get_bright_class_color(uint32_t ann_class_id) const;
+ const QColor get_dark_class_color(uint32_t ann_class_id) const;
+
bool has_hidden_classes() const;
+ bool class_is_visible(uint32_t ann_class_id) const;
bool operator<(const Row& other) const;
bool operator==(const Row& other) const;
+Q_SIGNALS:
+ void visibility_changed();
+
private:
uint32_t index_;
Decoder* decoder_;
const srd_decoder_annotation_row* srd_row_;
bool visible_;
+
+ QColor color_;
+ map<uint32_t, QColor> ann_class_color_;
+ map<uint32_t, QColor> ann_bright_class_color_;
+ map<uint32_t, QColor> ann_dark_class_color_;
};
} // namespace decode