+
+void MIDIMapper::refresh_highlights()
+{
+ receiver->clear_all_highlights();
+ update_highlights();
+}
+
+void MIDIMapper::update_highlights()
+{
+ // Global controllers.
+ bool highlight_locut = false;
+ bool highlight_limiter_threshold = false;
+ bool highlight_makeup_gain = false;
+ for (size_t bus_idx = 0; bus_idx < size_t(mapping_proto->bus_mapping_size()); ++bus_idx) {
+ if (has_active_controller(
+ bus_idx, MIDIMappingBusProto::kLocutFieldNumber, MIDIMappingProto::kLocutBankFieldNumber)) {
+ highlight_locut = true;
+ }
+ if (has_active_controller(
+ bus_idx, MIDIMappingBusProto::kLimiterThresholdFieldNumber, MIDIMappingProto::kLimiterThresholdBankFieldNumber)) {
+ highlight_limiter_threshold = true;
+ }
+ if (has_active_controller(
+ bus_idx, MIDIMappingBusProto::kMakeupGainFieldNumber, MIDIMappingProto::kMakeupGainBankFieldNumber)) {
+ highlight_makeup_gain = true;
+ }
+ }
+ receiver->highlight_locut(highlight_locut);
+ receiver->highlight_limiter_threshold(highlight_limiter_threshold);
+ receiver->highlight_makeup_gain(highlight_makeup_gain);
+
+ // Per-bus controllers.
+ for (size_t bus_idx = 0; bus_idx < size_t(mapping_proto->bus_mapping_size()); ++bus_idx) {
+ receiver->highlight_treble(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kTrebleFieldNumber, MIDIMappingProto::kTrebleBankFieldNumber));
+ receiver->highlight_mid(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kMidFieldNumber, MIDIMappingProto::kMidBankFieldNumber));
+ receiver->highlight_bass(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kBassFieldNumber, MIDIMappingProto::kBassBankFieldNumber));
+ receiver->highlight_gain(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kGainFieldNumber, MIDIMappingProto::kGainBankFieldNumber));
+ receiver->highlight_compressor_threshold(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kCompressorThresholdFieldNumber, MIDIMappingProto::kCompressorThresholdBankFieldNumber));
+ receiver->highlight_fader(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kFaderFieldNumber, MIDIMappingProto::kFaderBankFieldNumber));
+ receiver->highlight_toggle_locut(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kToggleLocutFieldNumber, MIDIMappingProto::kToggleLocutBankFieldNumber));
+ receiver->highlight_toggle_auto_gain_staging(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kToggleAutoGainStagingFieldNumber, MIDIMappingProto::kToggleAutoGainStagingBankFieldNumber));
+ receiver->highlight_toggle_compressor(bus_idx, has_active_controller(
+ bus_idx, MIDIMappingBusProto::kToggleCompressorFieldNumber, MIDIMappingProto::kToggleCompressorBankFieldNumber));
+ }
+}