Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions src/preferences/dialog/dlgprefwaveform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -225,10 +225,10 @@ DlgPrefWaveform::~DlgPrefWaveform() {
}

void DlgPrefWaveform::slotSetWaveformOptions(
allshader::WaveformRendererSignalBase::Option option, bool enabled) {
allshader::WaveformRendererSignalBase::Options currentOption = m_pConfig->getValue(
WaveformRendererSignalBase::Option option, bool enabled) {
WaveformRendererSignalBase::Options currentOption = m_pConfig->getValue(
ConfigKey("[Waveform]", "waveform_options"),
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);
m_pConfig->setValue<int>(ConfigKey("[Waveform]", "waveform_options"),
enabled ? currentOption |
option
Expand Down Expand Up @@ -268,9 +268,9 @@ void DlgPrefWaveform::slotUpdate() {
bool useWaveform = factory->getType() != WaveformWidgetType::Empty;
useWaveformCheckBox->setChecked(useWaveform);

allshader::WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
ConfigKey("[Waveform]", "waveform_options"),
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);
WaveformWidgetBackend backend = m_pConfig->getValue(
ConfigKey("[Waveform]", "use_hardware_acceleration"),
factory->preferredBackend());
Expand Down Expand Up @@ -348,11 +348,11 @@ void DlgPrefWaveform::slotResetToDefaults() {
updateWaveformAcceleration(WaveformWidgetFactory::defaultType(), defaultBackend);
updateWaveformTypeOptions(true,
defaultBackend,
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);

// Restore waveform backend and option setting instantly
m_pConfig->setValue(ConfigKey("[Waveform]", "waveform_options"),
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);
m_pConfig->setValue(ConfigKey("[Waveform]", "use_hardware_acceleration"),
defaultBackend);
factory->setWidgetTypeFromHandle(
Expand Down Expand Up @@ -420,9 +420,9 @@ void DlgPrefWaveform::slotSetWaveformType(int index) {
useAccelerationCheckBox->setChecked(backend !=
WaveformWidgetBackend::None);

allshader::WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
ConfigKey("[Waveform]", "waveform_options"),
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);
updateWaveformAcceleration(type, backend);
updateWaveformTypeOptions(true, backend, currentOptions);
updateEnableUntilMark();
Expand Down Expand Up @@ -459,9 +459,9 @@ void DlgPrefWaveform::slotSetWaveformAcceleration(bool checked) {
auto type = static_cast<WaveformWidgetType::Type>(waveformTypeComboBox->currentData().toInt());
auto* factory = WaveformWidgetFactory::instance();
factory->setWidgetTypeFromHandle(factory->findHandleIndexFromType(type), true);
allshader::WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
WaveformRendererSignalBase::Options currentOptions = m_pConfig->getValue(
ConfigKey("[Waveform]", "waveform_options"),
allshader::WaveformRendererSignalBase::Option::None);
WaveformRendererSignalBase::Option::None);
updateWaveformTypeOptions(true, backend, currentOptions);
updateEnableUntilMark();
}
Expand Down Expand Up @@ -495,14 +495,14 @@ void DlgPrefWaveform::updateWaveformAcceleration(

void DlgPrefWaveform::updateWaveformTypeOptions(bool useWaveform,
WaveformWidgetBackend backend,
allshader::WaveformRendererSignalBase::Options currentOptions) {
WaveformRendererSignalBase::Options currentOptions) {
splitLeftRightCheckBox->blockSignals(true);
highDetailCheckBox->blockSignals(true);

#ifdef MIXXX_USE_QOPENGL
WaveformWidgetFactory* factory = WaveformWidgetFactory::instance();
allshader::WaveformRendererSignalBase::Options supportedOption =
allshader::WaveformRendererSignalBase::Option::None;
WaveformRendererSignalBase::Options supportedOption =
WaveformRendererSignalBase::Option::None;

auto type = static_cast<WaveformWidgetType::Type>(waveformTypeComboBox->currentData().toInt());
int handleIdx = factory->findHandleIndexFromType(type);
Expand All @@ -513,15 +513,15 @@ void DlgPrefWaveform::updateWaveformTypeOptions(bool useWaveform,

splitLeftRightCheckBox->setEnabled(useWaveform &&
supportedOption &
allshader::WaveformRendererSignalBase::Option::SplitStereoSignal);
WaveformRendererSignalBase::Option::SplitStereoSignal);
highDetailCheckBox->setEnabled(useWaveform &&
supportedOption &
allshader::WaveformRendererSignalBase::Option::HighDetail);
WaveformRendererSignalBase::Option::HighDetail);
splitLeftRightCheckBox->setChecked(splitLeftRightCheckBox->isEnabled() &&
currentOptions &
allshader::WaveformRendererSignalBase::Option::SplitStereoSignal);
WaveformRendererSignalBase::Option::SplitStereoSignal);
highDetailCheckBox->setChecked(highDetailCheckBox->isEnabled() &&
currentOptions & allshader::WaveformRendererSignalBase::Option::HighDetail);
currentOptions & WaveformRendererSignalBase::Option::HighDetail);
#else
splitLeftRightCheckBox->setVisible(false);
highDetailCheckBox->setVisible(false);
Expand Down
8 changes: 4 additions & 4 deletions src/preferences/dialog/dlgprefwaveform.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg
void slotSetWaveformEnabled(bool checked);
void slotSetWaveformAcceleration(bool checked);
#ifdef MIXXX_USE_QOPENGL
void slotSetWaveformOptions(allshader::WaveformRendererSignalBase::Option option, bool enabled);
void slotSetWaveformOptions(WaveformRendererSignalBase::Option option, bool enabled);
void slotSetWaveformOptionSplitStereoSignal(bool checked) {
slotSetWaveformOptions(allshader::WaveformRendererSignalBase::Option::
slotSetWaveformOptions(WaveformRendererSignalBase::Option::
SplitStereoSignal,
checked);
}
void slotSetWaveformOptionHighDetail(bool checked) {
slotSetWaveformOptions(allshader::WaveformRendererSignalBase::Option::HighDetail, checked);
slotSetWaveformOptions(WaveformRendererSignalBase::Option::HighDetail, checked);
}
#endif
void slotSetWaveformOverviewType();
Expand Down Expand Up @@ -71,7 +71,7 @@ class DlgPrefWaveform : public DlgPreferencePage, public Ui::DlgPrefWaveformDlg
void updateEnableUntilMark();
void updateWaveformTypeOptions(bool useWaveform,
WaveformWidgetBackend backend,
allshader::WaveformRendererSignalBase::Options currentOption);
WaveformRendererSignalBase::Options currentOption);
void updateWaveformAcceleration(
WaveformWidgetType::Type type, WaveformWidgetBackend backend);
void updateWaveformGeneralOptionsEnabled();
Expand Down
20 changes: 10 additions & 10 deletions src/preferences/upgrade.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,18 @@ namespace {
// mapping to proactively move users to the new all-shader waveform types
std::tuple<WaveformWidgetType::Type,
WaveformWidgetBackend,
allshader::WaveformRendererSignalBase::Options>
WaveformRendererSignalBase::Options>
upgradeToAllShaders(int unsafeWaveformType,
int unsafeWaveformBackend,
int unsafeWaveformOption) {
// TODO: convert `WaveformWidgetType::Type` to an enum class then shorten more `using enum ...`
using WWT = WaveformWidgetType;

if (static_cast<int>(WaveformWidgetBackend::AllShader) == unsafeWaveformBackend) {
allshader::WaveformRendererSignalBase::Options waveformOption =
static_cast<allshader::WaveformRendererSignalBase::Options>(
WaveformRendererSignalBase::Options waveformOption =
static_cast<WaveformRendererSignalBase::Options>(
unsafeWaveformOption) &
allshader::WaveformRendererSignalBase::Option::AllOptionsCombined;
WaveformRendererSignalBase::Option::AllOptionsCombined;
switch (unsafeWaveformType) {
case WWT::Simple:
case WWT::Filtered:
Expand All @@ -67,8 +67,8 @@ upgradeToAllShaders(int unsafeWaveformType,
}

// Reset the options
allshader::WaveformRendererSignalBase::Options waveformOption =
allshader::WaveformRendererSignalBase::Option::None;
WaveformRendererSignalBase::Options waveformOption =
WaveformRendererSignalBase::Option::None;
WaveformWidgetType::Type waveformType =
static_cast<WaveformWidgetType::Type>(unsafeWaveformType);
WaveformWidgetBackend waveformBackend = WaveformWidgetBackend::AllShader;
Expand Down Expand Up @@ -97,7 +97,7 @@ upgradeToAllShaders(int unsafeWaveformType,
// Filtered waveforms
case WWT::Filtered: // GLSLFilteredWaveform
case 22: // AllShaderTexturedFiltered
waveformOption = allshader::WaveformRendererSignalBase::Option::HighDetail;
waveformOption = WaveformRendererSignalBase::Option::HighDetail;
[[fallthrough]];
case 2: // SoftwareWaveform
case 4: // QtWaveform
Expand All @@ -116,7 +116,7 @@ upgradeToAllShaders(int unsafeWaveformType,
// Stacked waveform
case 24: // AllShaderTexturedStacked
case WWT::Stacked: // GLSLRGBStackedWaveform
waveformOption = allshader::WaveformRendererSignalBase::Option::HighDetail;
waveformOption = WaveformRendererSignalBase::Option::HighDetail;
[[fallthrough]];
case 26: // AllShaderRGBStackedWaveform
waveformType = WaveformWidgetType::Stacked;
Expand All @@ -127,8 +127,8 @@ upgradeToAllShaders(int unsafeWaveformType,
case 23: // AllShaderTexturedRGB
case 12: // GLSLRGBWaveform
waveformOption = unsafeWaveformType == 18
? allshader::WaveformRendererSignalBase::Option::SplitStereoSignal
: allshader::WaveformRendererSignalBase::Option::HighDetail;
? WaveformRendererSignalBase::Option::SplitStereoSignal
: WaveformRendererSignalBase::Option::HighDetail;
[[fallthrough]];
default:
waveformType = WaveformWidgetFactory::defaultType();
Expand Down
12 changes: 6 additions & 6 deletions src/qml/qmlwaveformrenderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ namespace mixxx {
namespace qml {

QmlWaveformRendererMark::QmlWaveformRendererMark()
: m_defaultMark(nullptr),
m_untilMark(std::make_unique<QmlWaveformUntilMark>()),
m_playMarkerPosition(0.5) {
: m_playMarkerPosition(0.5),
m_defaultMark(nullptr),
m_untilMark(std::make_unique<QmlWaveformUntilMark>()) {
}

QmlWaveformRendererFactory::Renderer QmlWaveformRendererEndOfTrack::create(
Expand Down Expand Up @@ -118,7 +118,7 @@ QmlWaveformRendererFactory::Renderer QmlWaveformRendererRGB::create(
QmlWaveformRendererFactory::Renderer QmlWaveformRendererFiltered::create(
WaveformWidgetRenderer* waveformWidget) const {
auto pRenderer = std::make_unique<allshader::WaveformRendererFiltered>(
waveformWidget, m_ignoreStem);
waveformWidget, m_ignoreStem, m_options);

setup(pRenderer.get());
return QmlWaveformRendererFactory::Renderer{pRenderer.get(), std::move(pRenderer)};
Expand All @@ -127,7 +127,7 @@ QmlWaveformRendererFactory::Renderer QmlWaveformRendererFiltered::create(
QmlWaveformRendererFactory::Renderer QmlWaveformRendererHSV::create(
WaveformWidgetRenderer* waveformWidget) const {
auto pRenderer = std::make_unique<allshader::WaveformRendererHSV>(
waveformWidget);
waveformWidget, m_options);

pRenderer->setAxesColor(m_axesColor);
pRenderer->setColor(m_color);
Expand Down Expand Up @@ -170,7 +170,7 @@ QmlWaveformRendererFactory::Renderer QmlWaveformRendererHSV::create(
QmlWaveformRendererFactory::Renderer QmlWaveformRendererSimple::create(
WaveformWidgetRenderer* waveformWidget) const {
auto pRenderer = std::make_unique<allshader::WaveformRendererSimple>(
waveformWidget);
waveformWidget, m_options);

pRenderer->setAxesColor(m_axesColor);
pRenderer->setColor(m_color);
Expand Down
22 changes: 20 additions & 2 deletions src/qml/qmlwaveformrenderer.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class QmlWaveformRendererPreroll
::WaveformRendererAbstract::PositionSource m_position{::WaveformRendererAbstract::Play};
};

typedef allshader::WaveformRendererSignalBase::Options WaveformRendererSignalBaseOptions;
typedef WaveformRendererSignalBase::Options WaveformRendererSignalBaseOptions;
class QmlWaveformRendererSignal
: public QmlWaveformRendererFactory {
Q_OBJECT
Expand Down Expand Up @@ -139,7 +139,7 @@ class QmlWaveformRendererSignal

::WaveformRendererAbstract::PositionSource m_position{::WaveformRendererAbstract::Play};
WaveformRendererSignalBaseOptions m_options{
allshader::WaveformRendererSignalBase::Option::None};
WaveformRendererSignalBase::Option::None};
};

class QmlWaveformRendererRGB
Expand Down Expand Up @@ -175,6 +175,8 @@ class QmlWaveformRendererHSV
Q_PROPERTY(double gainLow MEMBER m_gainLow NOTIFY gainLowChanged REQUIRED)
Q_PROPERTY(double gainMid MEMBER m_gainMid NOTIFY gainMidChanged REQUIRED)
Q_PROPERTY(double gainHigh MEMBER m_gainHigh NOTIFY gainHighChanged REQUIRED)
Q_PROPERTY(WaveformRendererSignalBaseOptions options MEMBER
m_options NOTIFY optionsChanged)
QML_NAMED_ELEMENT(WaveformRendererHSV)

public:
Expand All @@ -187,6 +189,11 @@ class QmlWaveformRendererHSV
void gainLowChanged(double);
void gainMidChanged(double);
void gainHighChanged(double);
#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
void optionsChanged(WaveformRendererSignalBaseOptions);
#else
void optionsChanged(mixxx::qml::WaveformRendererSignalBaseOptions);
#endif

private:
QColor m_axesColor;
Expand All @@ -198,6 +205,8 @@ class QmlWaveformRendererHSV
double m_gainHigh;

bool m_ignoreStem{false};
WaveformRendererSignalBaseOptions m_options{
WaveformRendererSignalBase::Option::None};
};

class QmlWaveformRendererSimple
Expand All @@ -207,6 +216,8 @@ class QmlWaveformRendererSimple
Q_PROPERTY(QColor axesColor MEMBER m_axesColor NOTIFY axesColorChanged REQUIRED)
Q_PROPERTY(QColor color MEMBER m_color NOTIFY colorChanged REQUIRED)
Q_PROPERTY(double gain MEMBER m_gain NOTIFY gainChanged REQUIRED)
Q_PROPERTY(WaveformRendererSignalBaseOptions options MEMBER
m_options NOTIFY optionsChanged)
QML_NAMED_ELEMENT(WaveformRendererSimple)

public:
Expand All @@ -216,12 +227,19 @@ class QmlWaveformRendererSimple
void colorChanged(const QColor&);
void ignoreStemChanged(bool);
void gainChanged(double);
#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
void optionsChanged(WaveformRendererSignalBaseOptions);
#else
void optionsChanged(mixxx::qml::WaveformRendererSignalBaseOptions);
#endif

private:
QColor m_axesColor;
QColor m_color;
double m_gain;
bool m_ignoreStem{false};
WaveformRendererSignalBaseOptions m_options{
WaveformRendererSignalBase::Option::None};
};

class QmlWaveformRendererBeat
Expand Down
Loading