working on todo.md features
This commit is contained in:
1 parent
210d124814
commit
8f54841c2c
110 files changed
+15932
-6576
No files matched your search
+21
-1
@@ -70,6 +70,23 @@ constexpr plot::f32 kRowGap = 6.0f;
|
||||
|
||||
} // namespace
|
||||
|
||||
std::string layer_base_name(const std::string& name) {
|
||||
const std::size_t a = name.rfind(" (");
|
||||
if (a != std::string::npos && a + 3 < name.size() && name[a + 3] == ')' &&
|
||||
name[a + 2] >= 'A' && name[a + 2] <= 'B') {
|
||||
return name.substr(0, a);
|
||||
}
|
||||
const std::size_t h = name.rfind(" #");
|
||||
if (h != std::string::npos && h + 2 < name.size()) {
|
||||
bool digits = true;
|
||||
for (std::size_t i = h + 2; i < name.size(); ++i) {
|
||||
if (name[i] < '0' || name[i] > '9') digits = false;
|
||||
}
|
||||
if (digits) return name.substr(0, h);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
plot::Color RowSet::palette_color(int index) {
|
||||
const std::size_t i = static_cast<std::size_t>(index < 0 ? 0 : index) % kPaletteSize;
|
||||
return plot::Color::hex(kPalette[i]);
|
||||
@@ -78,7 +95,10 @@ plot::Color RowSet::palette_color(int index) {
|
||||
plot::Color RowSet::unplotted_color() { return plot::Color::hex(kUnplottedColor); }
|
||||
|
||||
plot::Color RowSet::signal_color(const std::string& signal, int palette_index) const {
|
||||
const auto it = signal_colors_.find(signal);
|
||||
// The exact name first, then the signal's: a colour the user picked for `sine` is the colour of
|
||||
// every layer of it, so a comparison's `sine (B)` is not a signal of its own colour.
|
||||
auto it = signal_colors_.find(signal);
|
||||
if (it == signal_colors_.end()) it = signal_colors_.find(layer_base_name(signal));
|
||||
if (it != signal_colors_.end()) return plot::Color::hex(it->second);
|
||||
return palette_color(palette_index);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user