Files
lmms/include/InstrumentSoundShapingView.h
Michael Gregorius d447cb0648 Use layouts for the instrument sound shaping tab / Extract classes for Envelope and LFO graphs (#7193)
Move the envelope and LFO graphs into their own classes.

Besides the improved code organization this step had to be done to be able to use layouts in `EnvelopeAndLfoView`. The class previously had fixed layouts mixed with custom rendering in the paint event. Mouse events are now also handled in both new classes instead of in `EnvelopeAndLfoView`.

## Layouts in EnvelopeAndLfoView
Use layouts to align the elements of the `EnvelopeAndLfoView`. This removes lots of hard-coded values. Add helper lambdas for the repeated creation of `Knob` and `PixmapButton` instances.

The spacing that is explicitly introduced between the envelope and LFO should be removed once there is a more open layout.

## Layouts for InstrumentSoundShapingView
Use layouts to align the elements of the `InstrumentSoundShapingView`.

## Info text improvements in LFO graph
Draw the info text at around 20% of the LFO graph's height. This prepares the dialog to be scaled later.

Write "1000 ms/LFO" instead of "ms/LFO: 1000" with a larger gap.

## Accessors for EnvelopeAndLfoParameters
Make the enum `LfoShape` in `EnvelopeAndLfoParameters` public so that it can be used without friend declarations. Add accessor methods for the model of the LFO.

## Other improvements
* Adjust include orders
* Variable initialization in headers
* Prevention of most vexing parses
2024-04-05 11:25:39 +02:00

77 lines
1.9 KiB
C++

/*
* InstrumentSoundShapingView.h - view for InstrumentSoundShaping class
*
* Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
*
* This file is part of LMMS - https://lmms.io
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program (see COPYING); if not, write to the
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
*/
#ifndef LMMS_GUI_INSTRUMENT_SOUND_SHAPING_VIEW_H
#define LMMS_GUI_INSTRUMENT_SOUND_SHAPING_VIEW_H
#include <QWidget>
#include "InstrumentSoundShaping.h"
#include "ModelView.h"
class QLabel;
namespace lmms::gui
{
class EnvelopeAndLfoView;
class ComboBox;
class GroupBox;
class Knob;
class TabWidget;
class InstrumentSoundShapingView : public QWidget, public ModelView
{
Q_OBJECT
public:
InstrumentSoundShapingView( QWidget * _parent );
~InstrumentSoundShapingView() override;
void setFunctionsHidden( bool hidden );
private:
void modelChanged() override;
InstrumentSoundShaping * m_ss = nullptr;
TabWidget * m_targetsTabWidget;
EnvelopeAndLfoView * m_envLfoViews[InstrumentSoundShaping::NumTargets];
// filter-stuff
GroupBox * m_filterGroupBox;
ComboBox * m_filterComboBox;
Knob * m_filterCutKnob;
Knob * m_filterResKnob;
QLabel* m_singleStreamInfoLabel;
} ;
} // namespace lmms::gui
#endif // LMMS_GUI_INSTRUMENT_SOUND_SHAPING_VIEW_H