mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-01 20:17:13 +02:00
Piano: Add a generic processor parameter widget
This automatically creates the correct collection of name label, value label and "editor" (knob, checkbox, dropdown) depending on the processor type and layouts them vertically.
This commit is contained in:
committed by
Andreas Kling
parent
6389384882
commit
196841fd3a
Notes:
sideshowbarker
2024-07-17 11:29:41 +09:00
Author: https://github.com/kleinesfilmroellchen Commit: https://github.com/SerenityOS/serenity/commit/196841fd3a Pull-request: https://github.com/SerenityOS/serenity/pull/14664
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2022, kleines Filmröllchen <filmroellchen@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include "ParameterWidget.h"
|
||||
#include "Dropdown.h"
|
||||
#include "Slider.h"
|
||||
#include "Toggle.h"
|
||||
#include <LibDSP/Synthesizers.h>
|
||||
#include <LibGUI/BoxLayout.h>
|
||||
|
||||
ProcessorParameterWidget::ProcessorParameterWidget(DSP::ProcessorParameter& raw_parameter)
|
||||
: m_parameter(raw_parameter)
|
||||
{
|
||||
set_layout<GUI::VerticalBoxLayout>();
|
||||
m_label = add<GUI::Label>(raw_parameter.name());
|
||||
switch (raw_parameter.type()) {
|
||||
case DSP::ParameterType::Range: {
|
||||
auto& parameter = static_cast<DSP::ProcessorRangeParameter&>(raw_parameter);
|
||||
m_value_label = add<GUI::Label>(String::number(static_cast<double>(parameter.value())));
|
||||
m_parameter_modifier = add<ProcessorParameterSlider>(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<DSP::ProcessorEnumParameter<DSP::Synthesizers::Waveform>&>(raw_parameter);
|
||||
auto enum_strings = Vector<String> { "Sine", "Triangle", "Square", "Saw", "Noise" };
|
||||
m_parameter_modifier = add<ProcessorParameterDropdown<DSP::Synthesizers::Waveform>>(parameter, move(enum_strings));
|
||||
break;
|
||||
}
|
||||
case DSP::ParameterType::Boolean: {
|
||||
auto& parameter = static_cast<DSP::ProcessorBooleanParameter&>(raw_parameter);
|
||||
m_parameter_modifier = add<ProcessorParameterToggle>(parameter);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user