/* * Copyright (c) 2022, kleines Filmröllchen * * SPDX-License-Identifier: BSD-2-Clause */ #include "ParameterWidget.h" #include "Dropdown.h" #include "Slider.h" #include "Toggle.h" #include #include ProcessorParameterWidget::ProcessorParameterWidget(DSP::ProcessorParameter& raw_parameter) : m_parameter(raw_parameter) { set_layout(); m_label = add(raw_parameter.name()); switch (raw_parameter.type()) { case DSP::ParameterType::Range: { auto& parameter = static_cast(raw_parameter); m_value_label = add(String::number(static_cast(parameter.value())).release_value_but_fixme_should_propagate_errors()); m_parameter_modifier = add(Orientation::Vertical, parameter, m_value_label); break; } case DSP::ParameterType::Enum: { // FIXME: We shouldn't do that, but the only user is the synth right now. auto& parameter = static_cast&>(raw_parameter); auto enum_strings = Vector { "Sine", "Triangle", "Square", "Saw", "Noise" }; m_parameter_modifier = add>(parameter, move(enum_strings)); break; } case DSP::ParameterType::Boolean: { auto& parameter = static_cast(raw_parameter); m_parameter_modifier = add(parameter); break; } default: VERIFY_NOT_REACHED(); } }