diff --git a/build/depends.py b/build/depends.py index 8824db46c98a..002330f0edcb 100644 --- a/build/depends.py +++ b/build/depends.py @@ -670,11 +670,12 @@ def sources(self, build): "preferences/configobject.cpp", "preferences/dialog/dlgprefautodj.cpp", - "preferences/dialog/dlgprefcontrols.cpp", + "preferences/dialog/dlgprefdeck.cpp", "preferences/dialog/dlgprefcrossfader.cpp", "preferences/dialog/dlgprefeffects.cpp", "preferences/dialog/dlgprefeq.cpp", "preferences/dialog/dlgpreferences.cpp", + "preferences/dialog/dlgprefinterface.cpp", "preferences/dialog/dlgpreflibrary.cpp", "preferences/dialog/dlgprefnovinyl.cpp", "preferences/dialog/dlgprefrecord.cpp", @@ -1200,11 +1201,12 @@ def sources(self, build): 'library/recording/dlgrecording.ui', 'preferences/dialog/dlgprefautodjdlg.ui', 'preferences/dialog/dlgprefbeatsdlg.ui', - 'preferences/dialog/dlgprefcontrolsdlg.ui', + 'preferences/dialog/dlgprefdeckdlg.ui', 'preferences/dialog/dlgprefcrossfaderdlg.ui', 'preferences/dialog/dlgprefeffectsdlg.ui', 'preferences/dialog/dlgprefeqdlg.ui', 'preferences/dialog/dlgpreferencesdlg.ui', + 'preferences/dialog/dlgprefinterfacedlg.ui', 'preferences/dialog/dlgprefkeydlg.ui', 'preferences/dialog/dlgpreflibrarydlg.ui', 'preferences/dialog/dlgprefnovinyldlg.ui', diff --git a/res/images/preferences/ic_preferences_decks.png b/res/images/preferences/ic_preferences_decks.png new file mode 100644 index 000000000000..f34c97e65296 Binary files /dev/null and b/res/images/preferences/ic_preferences_decks.png differ diff --git a/res/mixxx.qrc b/res/mixxx.qrc index de5b498070aa..17bf11d233e1 100644 --- a/res/mixxx.qrc +++ b/res/mixxx.qrc @@ -31,6 +31,7 @@ images/preferences/ic_preferences_broadcast.png images/preferences/ic_preferences_controllers.png images/preferences/ic_preferences_crossfader.png + images/preferences/ic_preferences_decks.png images/preferences/ic_preferences_effects.png images/preferences/ic_preferences_equalizers.png images/preferences/ic_preferences_interface.png diff --git a/src/engine/ratecontrol.cpp b/src/engine/ratecontrol.cpp index c5ddefb466cf..6bb840b341ab 100644 --- a/src/engine/ratecontrol.cpp +++ b/src/engine/ratecontrol.cpp @@ -17,18 +17,16 @@ #include -// Static default values for rate buttons (percents). Note that these are not -// actually used -- the preferences code sets the values that are stored in the -// user's configuration. These are just fail safe defaults. -double RateControl::m_dTemp = 4.00; //(eg. 4.00%) -double RateControl::m_dTempSmall = 2.00; -double RateControl::m_dPerm = 0.50; -double RateControl::m_dPermSmall = 0.05; - -int RateControl::m_iRateRampSensitivity = 250; +// Static default values for rate buttons (percents) +double RateControl::m_dTemporaryRateChangeCoarse; +double RateControl::m_dTemporaryRateChangeFine; +double RateControl::m_dPermanentRateChangeCoarse; +double RateControl::m_dPermanentRateChangeFine; +int RateControl::m_iRateRampSensitivity; +enum RateControl::RampMode RateControl::m_eRateRampMode; + const double RateControl::kWheelMultiplier = 40.0; const double RateControl::kPausedJogMultiplier = 18.0; -enum RateControl::RATERAMP_MODE RateControl::m_eRateRampMode = RateControl::RATERAMP_STEP; RateControl::RateControl(QString group, UserSettingsPointer pConfig) @@ -44,7 +42,7 @@ RateControl::RateControl(QString group, m_pScratchController = new PositionScratchController(group); m_pRateDir = new ControlObject(ConfigKey(group, "rate_dir")); - m_pRateRange = new ControlObject(ConfigKey(group, "rateRange")); + m_pRateRange = new ControlPotmeter(ConfigKey(group, "rateRange"), 0.01, 0.90); // Allow rate slider to go out of bounds so that master sync rate // adjustments are not capped. m_pRateSlider = new ControlPotmeter(ConfigKey(group, "rate"), @@ -161,14 +159,15 @@ RateControl::RateControl(QString group, // FIXME: This should be dependent on sample rate/block size or something m_pJogFilter->setFilterLength(25); - // Update Internal Settings - // Set Pitchbend Mode - m_eRateRampMode = (RateControl::RATERAMP_MODE) - getConfig()->getValueString(ConfigKey("[Controls]","RateRamp")).toInt(); +// // Update Internal Settings +// // Set Pitchbend Mode +// m_eRateRampMode = static_cast( +// getConfig()->getValue(ConfigKey("[Controls]","RateRamp"), +// static_cast(RampMode::Stepping))); - // Set the Sensitivity - m_iRateRampSensitivity = - getConfig()->getValueString(ConfigKey("[Controls]","RateRampSensitivity")).toInt(); +// // Set the Sensitivity +// m_iRateRampSensitivity = +// getConfig()->getValueString(ConfigKey("[Controls]","RateRampSensitivity")).toInt(); m_pSyncMode = new ControlProxy(group, "sync_mode", this); } @@ -209,15 +208,17 @@ void RateControl::setBpmControl(BpmControl* bpmcontrol) { } //static -void RateControl::setRateRamp(bool linearMode) -{ - m_eRateRampMode = linearMode ? - RateControl::RATERAMP_LINEAR : RateControl::RATERAMP_STEP; +void RateControl::setRateRampMode(RampMode mode) { + m_eRateRampMode = mode; } //static -void RateControl::setRateRampSensitivity(int sense) -{ +RateControl::RampMode RateControl::getRateRampMode() { + return m_eRateRampMode; +} + +//static +void RateControl::setRateRampSensitivity(int sense) { // Reverse the actual sensitivity value passed. // That way the gui works in an intuitive manner. sense = RATE_SENSITIVITY_MAX - sense + RATE_SENSITIVITY_MIN; @@ -231,23 +232,43 @@ void RateControl::setRateRampSensitivity(int sense) } //static -void RateControl::setTemp(double v) { - m_dTemp = v; +void RateControl::setTemporaryRateChangeCoarseAmount(double v) { + m_dTemporaryRateChangeCoarse = v; } //static -void RateControl::setTempSmall(double v) { - m_dTempSmall = v; +void RateControl::setTemporaryRateChangeFineAmount(double v) { + m_dTemporaryRateChangeFine = v; } //static -void RateControl::setPerm(double v) { - m_dPerm = v; +void RateControl::setPermanentRateChangeCoarseAmount(double v) { + m_dPermanentRateChangeCoarse = v; } //static -void RateControl::setPermSmall(double v) { - m_dPermSmall = v; +void RateControl::setPermanentRateChangeFineAmount(double v) { + m_dPermanentRateChangeFine = v; +} + +//static +double RateControl::getTemporaryRateChangeCoarseAmount() { + return m_dTemporaryRateChangeCoarse; +} + +//static +double RateControl::getTemporaryRateChangeFineAmount() { + return m_dTemporaryRateChangeFine; +} + +//static +double RateControl::getPermanentRateChangeCoarseAmount() { + return m_dPermanentRateChangeCoarse; +} + +//static +double RateControl::getPermanentRateChangeFineAmount() { + return m_dPermanentRateChangeFine; } void RateControl::slotReverseRollActivate(double v) { @@ -283,7 +304,7 @@ void RateControl::slotControlRatePermDown(double) // Adjusts temp rate down if button pressed if (buttonRatePermDown->get()) { m_pRateSlider->set(m_pRateSlider->get() - - m_pRateDir->get() * m_dPerm / (100 * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeCoarse / (100 * m_pRateRange->get())); } } @@ -292,7 +313,7 @@ void RateControl::slotControlRatePermDownSmall(double) // Adjusts temp rate down if button pressed if (buttonRatePermDownSmall->get()) m_pRateSlider->set(m_pRateSlider->get() - - m_pRateDir->get() * m_dPermSmall / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeFine / (100. * m_pRateRange->get())); } void RateControl::slotControlRatePermUp(double) @@ -300,7 +321,7 @@ void RateControl::slotControlRatePermUp(double) // Adjusts temp rate up if button pressed if (buttonRatePermUp->get()) { m_pRateSlider->set(m_pRateSlider->get() + - m_pRateDir->get() * m_dPerm / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeCoarse / (100. * m_pRateRange->get())); } } @@ -309,7 +330,7 @@ void RateControl::slotControlRatePermUpSmall(double) // Adjusts temp rate up if button pressed if (buttonRatePermUpSmall->get()) m_pRateSlider->set(m_pRateSlider->get() + - m_pRateDir->get() * m_dPermSmall / (100. * m_pRateRange->get())); + m_pRateDir->get() * m_dPermanentRateChangeFine / (100. * m_pRateRange->get())); } void RateControl::slotControlRateTempDown(double) @@ -540,7 +561,7 @@ void RateControl::process(const double rate, if ((m_ePbPressed) && (!m_bTempStarted)) { m_bTempStarted = true; - if (m_eRateRampMode == RATERAMP_STEP) { + if (m_eRateRampMode == RampMode::Stepping) { // old temporary pitch shift behavior double range = m_pRateRange->get(); @@ -550,9 +571,9 @@ void RateControl::process(const double rate, return; } - double change = m_pRateDir->get() * m_dTemp / + double change = m_pRateDir->get() * m_dTemporaryRateChangeCoarse / (100. * range); - double csmall = m_pRateDir->get() * m_dTempSmall / + double csmall = m_pRateDir->get() * m_dTemporaryRateChangeFine / (100. * range); if (buttonRateTempUp->get()) @@ -563,9 +584,8 @@ void RateControl::process(const double rate, addRateTemp(csmall); else if (buttonRateTempDownSmall->get()) subRateTemp(csmall); - } else { - // m_eRateRampMode == RATERAMP_LINEAR - m_dTempRateChange = ((double)latrate / ((double)m_iRateRampSensitivity / 100.)); + } else if (m_eRateRampMode == RampMode::Linear) { + m_dTemporaryRateChangeCoarse = ((double)latrate / ((double)m_iRateRampSensitivity / 100.)); if (m_eRampBackMode == RATERAMP_RAMPBACK_PERIOD) m_dRateTempRampbackChange = 0.0; @@ -573,13 +593,13 @@ void RateControl::process(const double rate, } - if (m_eRateRampMode == RATERAMP_LINEAR) { + if (m_eRateRampMode == RampMode::Linear) { if (m_ePbCurrent) { // apply ramped pitchbending if (m_ePbCurrent == RateControl::RATERAMP_UP) { - addRateTemp(m_dTempRateChange); + addRateTemp(m_dTemporaryRateChangeCoarse); } else if (m_ePbCurrent == RateControl::RATERAMP_DOWN) { - subRateTemp(m_dTempRateChange); + subRateTemp(m_dTemporaryRateChangeCoarse); } } else if ((m_bTempStarted) || ((m_eRampBackMode != RATERAMP_RAMPBACK_NONE) @@ -605,7 +625,7 @@ void RateControl::process(const double rate, resetRateTemp(); } } - } else if ((m_eRateRampMode == RATERAMP_STEP) && (m_bTempStarted)) { + } else if ((m_eRateRampMode == RampMode::Stepping) && (m_bTempStarted)) { if (!m_ePbCurrent) { m_bTempStarted = false; resetRateTemp(); diff --git a/src/engine/ratecontrol.h b/src/engine/ratecontrol.h index 99f6d0d4a03c..c67d0cd531ce 100644 --- a/src/engine/ratecontrol.h +++ b/src/engine/ratecontrol.h @@ -34,6 +34,31 @@ class RateControl : public EngineControl { RateControl(QString group, UserSettingsPointer pConfig); ~RateControl() override; + // Enumerations which hold the state of the pitchbend buttons. + // These enumerations can be used like a bitmask. + enum RATERAMP_DIRECTION { + RATERAMP_NONE = 0, // No buttons are held down + RATERAMP_DOWN = 1, // Down button is being held + RATERAMP_UP = 2, // Up button is being held + RATERAMP_BOTH = 3 // Both buttons are being held down + }; + + enum class RampMode { + Stepping = 0, // pitch takes a temporary step up/down a certain amount + Linear = 1 // pitch moves up/down in a progresively linear fashion + }; + + // This defines how the rate returns to normal. Currently unused. + // Rate ramp back mode: + // RATERAMP_RAMPBACK_NONE: returns back to normal all at once. + // RATERAMP_RAMPBACK_SPEED: moves back in a linearly progresive manner. + // RATERAMP_RAMPBACK_PERIOD: returns to normal within a period of time. + enum RATERAMP_RAMPBACK_MODE { + RATERAMP_RAMPBACK_NONE, + RATERAMP_RAMPBACK_SPEED, + RATERAMP_RAMPBACK_PERIOD + }; + void setBpmControl(BpmControl* bpmcontrol); // Must be called during each callback of the audio thread so that // RateControl has a chance to update itself. @@ -50,17 +75,23 @@ class RateControl : public EngineControl { double calcRateRatio() const; // Set rate change when temp rate button is pressed - static void setTemp(double v); + static void setTemporaryRateChangeCoarseAmount(double v); + static double getTemporaryRateChangeCoarseAmount(); // Set rate change when temp rate small button is pressed - static void setTempSmall(double v); + static void setTemporaryRateChangeFineAmount(double v); + static double getTemporaryRateChangeFineAmount(); // Set rate change when perm rate button is pressed - static void setPerm(double v); + static void setPermanentRateChangeCoarseAmount(double v); + static double getPermanentRateChangeCoarseAmount(); // Set rate change when perm rate small button is pressed - static void setPermSmall(double v); + static void setPermanentRateChangeFineAmount(double v); + static double getPermanentRateChangeFineAmount(); // Set Rate Ramp Mode - static void setRateRamp(bool); + static void setRateRampMode(RampMode mode); + static RampMode getRateRampMode(); // Set Rate Ramp Sensitivity static void setRateRampSensitivity(int); + static int getRateRampSensitivity(); void notifySeek(double dNewPlaypos) override; public slots: @@ -94,13 +125,23 @@ class RateControl : public EngineControl { double getTempRate(void); // Values used when temp and perm rate buttons are pressed - static double m_dTemp, m_dTempSmall, m_dPerm, m_dPermSmall; - - ControlPushButton *buttonRateTempDown, *buttonRateTempDownSmall, - *buttonRateTempUp, *buttonRateTempUpSmall; - ControlPushButton *buttonRatePermDown, *buttonRatePermDownSmall, - *buttonRatePermUp, *buttonRatePermUpSmall; - ControlObject *m_pRateDir, *m_pRateRange; + static double m_dTemporaryRateChangeCoarse; + static double m_dTemporaryRateChangeFine; + static double m_dPermanentRateChangeCoarse; + static double m_dPermanentRateChangeFine; + + ControlPushButton *buttonRateTempDown; + ControlPushButton *buttonRateTempDownSmall; + ControlPushButton *buttonRateTempUp; + ControlPushButton *buttonRateTempUpSmall; + + ControlPushButton *buttonRatePermDown; + ControlPushButton *buttonRatePermDownSmall; + ControlPushButton *buttonRatePermUp; + ControlPushButton *buttonRatePermUpSmall; + + ControlObject *m_pRateDir; + ControlObject *m_pRateRange; ControlPotmeter* m_pRateSlider; ControlPotmeter* m_pRateSearch; ControlPushButton* m_pReverseButton; @@ -130,34 +171,6 @@ class RateControl : public EngineControl { ControlProxy* m_pSyncMode; ControlProxy* m_pSlipEnabled; - // Enumerations which hold the state of the pitchbend buttons. - // These enumerations can be used like a bitmask. - enum RATERAMP_DIRECTION { - RATERAMP_NONE = 0, // No buttons are held down - RATERAMP_DOWN = 1, // Down button is being held - RATERAMP_UP = 2, // Up button is being held - RATERAMP_BOTH = 3 // Both buttons are being held down - }; - - // Rate ramping mode: - // RATERAMP_STEP: pitch takes a temporary step up/down a certain amount. - // RATERAMP_LINEAR: pitch moves up/down in a progresively linear fashion. - enum RATERAMP_MODE { - RATERAMP_STEP = 0, - RATERAMP_LINEAR = 1 - }; - - // This defines how the rate returns to normal. Currently unused. - // Rate ramp back mode: - // RATERAMP_RAMPBACK_NONE: returns back to normal all at once. - // RATERAMP_RAMPBACK_SPEED: moves back in a linearly progresive manner. - // RATERAMP_RAMPBACK_PERIOD: returns to normal within a period of time. - enum RATERAMP_RAMPBACK_MODE { - RATERAMP_RAMPBACK_NONE, - RATERAMP_RAMPBACK_SPEED, - RATERAMP_RAMPBACK_PERIOD - }; - // The current rate ramping direction. Only holds the last button pressed. int m_ePbCurrent; // The rate ramping buttons which are currently being pressed. @@ -168,7 +181,7 @@ class RateControl : public EngineControl { // Set to the rate change used for rate temp double m_dTempRateChange; // Set the Temporary Rate Change Mode - static enum RATERAMP_MODE m_eRateRampMode; + static RampMode m_eRateRampMode; // The Rate Temp Sensitivity, the higher it is the slower it gets static int m_iRateRampSensitivity; // Factor applied to the deprecated "wheel" rate value. diff --git a/src/mixxx.cpp b/src/mixxx.cpp index 7c41dfbfb95c..0f982ac79f0a 100644 --- a/src/mixxx.cpp +++ b/src/mixxx.cpp @@ -370,13 +370,13 @@ void MixxxMainWindow::initialize(QApplication* pApp, const CmdlineArgs& args) { // Load skin to a QWidget that we set as the central widget. Assignment // intentional in next line. - if (!(m_pWidgetParent = m_pSkinLoader->loadDefaultSkin(this, m_pKeyboard, - m_pPlayerManager, - m_pControllerManager, - m_pLibrary, - m_pVCManager, - m_pEffectsManager, - m_pRecordingManager))) { + if (!(m_pWidgetParent = m_pSkinLoader->loadConfiguredSkin(this, m_pKeyboard, + m_pPlayerManager, + m_pControllerManager, + m_pLibrary, + m_pVCManager, + m_pEffectsManager, + m_pRecordingManager))) { reportCriticalErrorAndQuit( "default skin cannot be loaded see mixxx trace for more information."); @@ -1223,14 +1223,14 @@ void MixxxMainWindow::rebootMixxxView() { // Load skin to a QWidget that we set as the central widget. Assignment // intentional in next line. - if (!(m_pWidgetParent = m_pSkinLoader->loadDefaultSkin(this, - m_pKeyboard, - m_pPlayerManager, - m_pControllerManager, - m_pLibrary, - m_pVCManager, - m_pEffectsManager, - m_pRecordingManager))) { + if (!(m_pWidgetParent = m_pSkinLoader->loadConfiguredSkin(this, + m_pKeyboard, + m_pPlayerManager, + m_pControllerManager, + m_pLibrary, + m_pVCManager, + m_pEffectsManager, + m_pRecordingManager))) { QMessageBox::critical(this, tr("Error in skin file"), diff --git a/src/preferences/dialog/dlgprefcontrols.cpp b/src/preferences/dialog/dlgprefcontrols.cpp deleted file mode 100644 index 9a4f8c0fb739..000000000000 --- a/src/preferences/dialog/dlgprefcontrols.cpp +++ /dev/null @@ -1,982 +0,0 @@ -/*************************************************************************** - dlgprefcontrols.cpp - description - ------------------- - begin : Sat Jul 5 2003 - copyright : (C) 2003 by Tue & Ken Haste Andersen - email : haste@diku.dk -***************************************************************************/ - -/*************************************************************************** -* * -* 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. * -* * -***************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include - -#include "mixer/basetrackplayer.h" -#include "preferences/dialog/dlgprefcontrols.h" -#include "preferences/constants.h" -#include "preferences/usersettings.h" -#include "control/controlobject.h" -#include "control/controlproxy.h" -#include "widget/wnumberpos.h" -#include "engine/enginebuffer.h" -#include "engine/ratecontrol.h" -#include "skin/skinloader.h" -#include "skin/legacyskinparser.h" -#include "mixer/playermanager.h" -#include "mixer/playerinfo.h" -#include "control/controlobject.h" -#include "mixxx.h" -#include "util/screensaver.h" -#include "defs_urls.h" -#include "util/autohidpi.h" - -DlgPrefControls::DlgPrefControls(QWidget * parent, MixxxMainWindow * mixxx, - SkinLoader* pSkinLoader, - PlayerManager* pPlayerManager, - UserSettingsPointer pConfig) - : DlgPreferencePage(parent), - m_pConfig(pConfig), - m_mixxx(mixxx), - m_pSkinLoader(pSkinLoader), - m_pPlayerManager(pPlayerManager), - m_iNumConfiguredDecks(0), - m_iNumConfiguredSamplers(0), - m_autoScaleFactor(0) { - setupUi(this); - - m_pNumDecks = new ControlProxy("[Master]", "num_decks", this); - m_pNumDecks->connectValueChanged(SLOT(slotNumDecksChanged(double))); - slotNumDecksChanged(m_pNumDecks->get()); - - m_pNumSamplers = new ControlProxy("[Master]", "num_samplers", this); - m_pNumSamplers->connectValueChanged(SLOT(slotNumSamplersChanged(double))); - slotNumSamplersChanged(m_pNumSamplers->get()); - - // Track time display configuration - m_pControlTrackTimeDisplay = new ControlObject( - ConfigKey("[Controls]", "ShowDurationRemaining")); - connect(m_pControlTrackTimeDisplay, SIGNAL(valueChanged(double)), - this, SLOT(slotSetTrackTimeDisplay(double))); - - // If not present in the config, set the default value - if (!m_pConfig->exists(ConfigKey("[Controls]","PositionDisplay"))) { - m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), - QString::number(static_cast(TrackTime::DisplayMode::Remaining))); - } - - double positionDisplayType = m_pConfig->getValue( - ConfigKey("[Controls]", "PositionDisplay"), - static_cast(TrackTime::DisplayMode::Elapsed)); - if (positionDisplayType == - static_cast(TrackTime::DisplayMode::Remaining)) { - radioButtonRemaining->setChecked(true); - m_pControlTrackTimeDisplay->set( - static_cast(TrackTime::DisplayMode::Remaining)); - } else if (positionDisplayType == - static_cast(TrackTime::DisplayMode::ElapsedAndRemaining)) { - radioButtonElapsedAndRemaining->setChecked(true); - m_pControlTrackTimeDisplay->set( - static_cast(TrackTime::DisplayMode::ElapsedAndRemaining)); - } else { - radioButtonElapsed->setChecked(true); - m_pControlTrackTimeDisplay->set( - static_cast(TrackTime::DisplayMode::Elapsed)); - } - connect(buttonGroupTrackTime, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotSetTrackTimeDisplay(QAbstractButton *))); - - // Set default direction as stored in config file - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateDir"),ConfigValue(0)); - - connect(checkBoxInvertSpeedSlider, SIGNAL(toggled(bool)), - this, SLOT(slotSetRateDir(bool))); - - ComboBoxRateRange->clear(); - ComboBoxRateRange->addItem(tr("4%"), 4); - ComboBoxRateRange->addItem(tr("6% (semitone)"), 6); - ComboBoxRateRange->addItem(tr("8% (Technics SL-1210)"), 8); - ComboBoxRateRange->addItem(tr("10%"), 10); - ComboBoxRateRange->addItem(tr("16%"), 16); - ComboBoxRateRange->addItem(tr("24%"), 24); - ComboBoxRateRange->addItem(tr("50%"), 50); - ComboBoxRateRange->addItem(tr("90%"), 90); - connect(ComboBoxRateRange, SIGNAL(activated(int)), - this, SLOT(slotSetRateRange(int))); - - // Set default range as stored in config file - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).length() == 0) { - // Fall back to old [Controls]RateRange - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).length() == 0) { - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), ConfigValue(8)); - } else { - int oldIdx = m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).toInt(); - double oldRange = static_cast(oldIdx-1) / 10.0; - if (oldIdx == 0) { - oldRange = 0.06; - } - if (oldIdx == 1) { - oldRange = 0.08; - } - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), - ConfigValue(static_cast(oldRange * 100.))); - slotSetRateRangePercent(oldRange * 100.); - } - } - - // - // Key lock mode - // - connect(buttonGroupKeyLockMode, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotKeyLockMode(QAbstractButton *))); - - // 0 Lock original key, 1 Lock current key - m_keylockMode = m_pConfig->getValue( - ConfigKey("[Controls]", "keylockMode"), 0); - foreach (ControlProxy* pControl, m_keylockModeControls) { - pControl->set(m_keylockMode); - } - - // - // Key unlock mode - // - connect(buttonGroupKeyUnlockMode, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotKeyUnlockMode(QAbstractButton *))); - - // 0 Reset locked key (default), 1 Keep locked key - m_keyunlockMode = m_pConfig->getValue( - ConfigKey("[Controls]", "keyunlockMode"), 0); - foreach (ControlProxy* pControl, m_keyunlockModeControls) { - pControl->set(m_keyunlockMode); - } - - // - // Rate buttons configuration - // - //NOTE: THESE DEFAULTS ARE A LIE! You'll need to hack the same values into the static variables - // at the top of enginebuffer.cpp - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateTempLeft")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateTempLeft"), ConfigValue(QString("4.0"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RateTempRight")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RateTempRight"), ConfigValue(QString("2.0"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RatePermLeft")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RatePermLeft"), ConfigValue(QString("0.50"))); - if (m_pConfig->getValueString(ConfigKey("[Controls]", "RatePermRight")).length() == 0) - m_pConfig->set(ConfigKey("[Controls]", "RatePermRight"), ConfigValue(QString("0.05"))); - - connect(spinBoxTempRateLeft, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRateTempLeft(double))); - connect(spinBoxTempRateRight, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRateTempRight(double))); - connect(spinBoxPermRateLeft, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRatePermLeft(double))); - connect(spinBoxPermRateRight, SIGNAL(valueChanged(double)), - this, SLOT(slotSetRatePermRight(double))); - - spinBoxTempRateLeft->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateTempLeft")).toDouble()); - spinBoxTempRateRight->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateTempRight")).toDouble()); - spinBoxPermRateLeft->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RatePermLeft")).toDouble()); - spinBoxPermRateRight->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RatePermRight")).toDouble()); - -// labelSpeedRampSensitivity->setEnabled(true); -// SliderRateRampSensitivity->setEnabled(true); -// SpinBoxRateRampSensitivity->setEnabled(true); - - // - // Override Playing Track on Track Load - // - // The check box reflects the opposite of the config value - checkBoxDisallowLoadToPlayingDeck->setChecked( - m_pConfig->getValueString(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck")).toInt()==0); - connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), - this, SLOT(slotSetAllowTrackLoadToPlayingDeck(bool))); - - // - // Locale setting - // - - // Iterate through the available locales and add them to the combobox - // Borrowed following snippet from http://qt-project.org/wiki/How_to_create_a_multi_language_application - QString translationsFolder = m_pConfig->getResourcePath() + "translations/"; - QString currentLocale = pConfig->getValueString(ConfigKey("[Config]", "Locale")); - - QDir translationsDir(translationsFolder); - QStringList fileNames = translationsDir.entryList(QStringList("mixxx_*.qm")); - fileNames.push_back("mixxx_en_US.qm"); // add source language as a fake value - - bool indexFlag = false; // it'll indicate if the selected index changed. - for (int i = 0; i < fileNames.size(); ++i) { - // Extract locale from filename - QString locale = fileNames[i]; - locale.truncate(locale.lastIndexOf('.')); - locale.remove(0, locale.indexOf('_') + 1); - QLocale qlocale = QLocale(locale); - - QString lang = QLocale::languageToString(qlocale.language()); - QString country = QLocale::countryToString(qlocale.country()); - if (lang == "C") { // Ugly hack to remove the non-resolving locales - continue; - } - lang = QString("%1 (%2)").arg(lang).arg(country); - ComboBoxLocale->addItem(lang, locale); // locale as userdata (for storing to config) - if (locale == currentLocale) { // Set the currently selected locale - ComboBoxLocale->setCurrentIndex(ComboBoxLocale->count() - 1); - indexFlag = true; - } - } - ComboBoxLocale->model()->sort(0); // Sort languages list - - ComboBoxLocale->insertItem(0, "System", ""); // System default locale - insert at the top - if (!indexFlag) { // if selectedIndex didn't change - select system default - ComboBoxLocale->setCurrentIndex(0); - } - connect(ComboBoxLocale, SIGNAL(activated(int)), - this, SLOT(slotSetLocale(int))); - - // - // Cue Mode - // - - // Add "(?)" with a manual link to the label - labelCueMode->setText( - labelCueMode->text() + - " (?)"); - - // Set default value in config file and control objects, if not present - // Default is "0" = Mixxx Mode - int cueDefaultValue = m_pConfig->getValue( - ConfigKey("[Controls]", "CueDefault"), 0); - - // Update combo box - // The itemData values are out of order to avoid breaking configurations - // when Mixxx mode (no blinking) was introduced. - ComboBoxCueDefault->addItem(tr("Mixxx mode"), 0); - ComboBoxCueDefault->addItem(tr("Mixxx mode (no blinking)"), 4); - ComboBoxCueDefault->addItem(tr("Pioneer mode"), 1); - ComboBoxCueDefault->addItem(tr("Denon mode"), 2); - ComboBoxCueDefault->addItem(tr("Numark mode"), 3); - ComboBoxCueDefault->addItem(tr("CUP mode"), 5); - const int cueDefaultIndex = cueDefaultIndexByData(cueDefaultValue); - ComboBoxCueDefault->setCurrentIndex(cueDefaultIndex); - slotSetCueDefault(cueDefaultIndex); - connect(ComboBoxCueDefault, SIGNAL(activated(int)), this, SLOT(slotSetCueDefault(int))); - - // Cue recall - checkBoxSeekToCue->setChecked(m_pConfig->getValueString( - ConfigKey("[Controls]", "CueRecall")).toInt()==0); - //NOTE: for CueRecall, 0 means ON... - connect(checkBoxSeekToCue, SIGNAL(toggled(bool)), - this, SLOT(slotSetCueRecall(bool))); - - // - // Skin configurations - // - QString warningString = "" - + tr("The minimum size of the selected skin is bigger than your screen resolution."); - warningLabel->setText(warningString); - - ComboBoxSkinconf->clear(); - - QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); - QList skins; - foreach (QDir dir, skinSearchPaths) { - dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); - skins.append(dir.entryInfoList()); - } - - QString configuredSkinPath = m_pSkinLoader->getSkinPath(); - QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); - int index = 0; - foreach (QFileInfo skinInfo, skins) { - bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); - if (size_ok) { - ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); - } else { - ComboBoxSkinconf->insertItem(index, sizeWarningIcon, skinInfo.fileName()); - } - - if (skinInfo.absoluteFilePath() == configuredSkinPath) { - ComboBoxSkinconf->setCurrentIndex(index); - if (size_ok) { - warningLabel->hide(); - } else { - warningLabel->show(); - } - } - index++; - } - - connect(ComboBoxSkinconf, SIGNAL(activated(int)), this, SLOT(slotSetSkin(int))); - connect(ComboBoxSchemeconf, SIGNAL(activated(int)), this, SLOT(slotSetScheme(int))); - - slotUpdateSchemes(); - - -#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) - AutoHiDpi autoHiDpi; - m_autoScaleFactor = autoHiDpi.getScaleFactor(); - double scaleFactor = m_autoScaleFactor; - if (scaleFactor > 0) { - // we got a valid auto scale factor - bool scaleFactorAuto = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactorAuto"), true); - checkBoxScaleFactorAuto->setChecked(scaleFactorAuto); - if (scaleFactorAuto) { - comboBoxScaleFactor->setEnabled(false); - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_autoScaleFactor); - } else { - scaleFactor = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactor"), 1.0); - } - connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), - this, SLOT(slotSetScaleFactorAuto(bool))); - } else { - checkBoxScaleFactorAuto->setEnabled(false); - scaleFactor = m_pConfig->getValue( - ConfigKey("[Config]", "ScaleFactor"), 1.0); - } - connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), - this, SLOT(slotSetScaleFactorAuto(bool))); - - //: Entry of the HiDPI scale combo box. %1 is the scale factor in percent - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(50), 0.5); - comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(100), 1); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(200), 2); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(300), 3); - comboBoxScaleFactor->addItem(QString(tr("%1 % (Experimental)")).arg(400), 4); - int i; - for (i = 0; i < comboBoxScaleFactor->count(); ++i) { - if (scaleFactor == comboBoxScaleFactor->itemData(i)) { - comboBoxScaleFactor->setCurrentIndex(i); - break; - } - } - if (i == comboBoxScaleFactor->count()) { - // no default scale, add custom scale - comboBoxScaleFactor->addItem( - QString(tr("%1 % (Experimental)")).arg(scaleFactor * 100), scaleFactor); - comboBoxScaleFactor->setCurrentIndex(i); - } - connect(comboBoxScaleFactor, SIGNAL(activated(int)), - this, SLOT(slotSetScaleFactor(int))); -#else - checkBoxScaleFactorAuto->hide(); - comboBoxScaleFactor->hide(); - labelScaleFactor->hide(); -#endif - - - // - // Start in fullscreen mode - // - checkBoxStartFullScreen->setChecked(m_pConfig->getValueString( - ConfigKey("[Config]", "StartInFullscreen")).toInt()==1); - connect(checkBoxStartFullScreen, SIGNAL(toggled(bool)), - this, SLOT(slotSetStartInFullScreen(bool))); - - // - // Screensaver mode - // - comboBoxScreensaver->clear(); - comboBoxScreensaver->addItem(tr("Allow screensaver to run"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_OFF)); - comboBoxScreensaver->addItem(tr("Prevent screensaver from running"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON)); - comboBoxScreensaver->addItem(tr("Prevent screensaver while playing"), - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON_PLAY)); - - int inhibitsettings = static_cast(mixxx->getInhibitScreensaver()); - comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); - - // - // Tooltip configuration - // - - // Initialize checkboxes to match config - mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); - switch (configTooltips) { - case mixxx::TooltipsPreference::TOOLTIPS_OFF: - radioButtonTooltipsOff->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ON: - radioButtonTooltipsLibraryAndSkin->setChecked(true); - break; - case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: - radioButtonTooltipsLibrary->setChecked(true); - break; - } - - slotSetTooltips(); // Update disabled status of "only library" checkbox - connect(buttonGroupTooltips, SIGNAL(buttonClicked(QAbstractButton*)), - this, SLOT(slotSetTooltips())); - - // - // Ramping Temporary Rate Change configuration - // - - // Set Ramp Rate On or Off - connect(radioButtonSpeedBendRamping, SIGNAL(toggled(bool)), - this, SLOT(slotSetRateRamp(bool))); - if ((bool) - m_pConfig->getValueString(ConfigKey("[Controls]", "RateRamp")).toInt()) { - radioButtonSpeedBendRamping->setChecked(true); - } else { - radioButtonSpeedBendStatic->setChecked(true); - } - - // Update Ramp Rate Sensitivity - connect(SliderRateRampSensitivity, SIGNAL(valueChanged(int)), - this, SLOT(slotSetRateRampSensitivity(int))); - SliderRateRampSensitivity->setValue(m_pConfig->getValueString( - ConfigKey("[Controls]", "RateRampSensitivity")).toInt()); - - - // Update "reset speed" and "reset pitch" check boxes - // TODO: All defaults should only be set in slotResetToDefaults. - int configSPAutoReset = m_pConfig->getValue( - ConfigKey("[Controls]", "SpeedAutoReset"), - BaseTrackPlayer::RESET_PITCH); - - m_speedAutoReset = (configSPAutoReset==BaseTrackPlayer::RESET_SPEED || - configSPAutoReset==BaseTrackPlayer::RESET_PITCH_AND_SPEED); - m_pitchAutoReset = (configSPAutoReset==BaseTrackPlayer::RESET_PITCH || - configSPAutoReset==BaseTrackPlayer::RESET_PITCH_AND_SPEED); - - // Do these need to be here when slotUpdate() has them as well? - checkBoxResetSpeed->setChecked(m_speedAutoReset); - checkBoxResetPitch->setChecked(m_pitchAutoReset); - - connect(checkBoxResetSpeed, SIGNAL(toggled(bool)), - this, SLOT(slotUpdateSpeedAutoReset(bool))); - connect(checkBoxResetPitch, SIGNAL(toggled(bool)), - this, SLOT(slotUpdatePitchAutoReset(bool))); - - slotUpdate(); -} - -DlgPrefControls::~DlgPrefControls() { - delete m_pControlTrackTimeDisplay; - qDeleteAll(m_rateControls); - qDeleteAll(m_rateDirControls); - qDeleteAll(m_cueControls); - qDeleteAll(m_rateRangeControls); - qDeleteAll(m_keylockModeControls); - qDeleteAll(m_keyunlockModeControls); -} - -void DlgPrefControls::slotUpdateSchemes() { - // Since this involves opening a file we won't do this as part of regular slotUpdate - QList schlist = LegacySkinParser::getSchemeList( - m_pSkinLoader->getSkinPath()); - - ComboBoxSchemeconf->clear(); - - if (schlist.size() == 0) { - ComboBoxSchemeconf->setEnabled(false); - ComboBoxSchemeconf->addItem(tr("This skin does not support color schemes", 0)); - ComboBoxSchemeconf->setCurrentIndex(0); - } else { - ComboBoxSchemeconf->setEnabled(true); - QString selectedScheme = m_pConfig->getValueString(ConfigKey("[Config]", "Scheme")); - for (int i = 0; i < schlist.size(); i++) { - ComboBoxSchemeconf->addItem(schlist[i]); - - if (schlist[i] == selectedScheme) { - ComboBoxSchemeconf->setCurrentIndex(i); - } - } - } -} - -void DlgPrefControls::slotUpdate() { - double deck1RateRange = m_rateRangeControls[0]->get(); - double deck1RateDir = m_rateDirControls[0]->get(); - - int idx = ComboBoxRateRange->findData(static_cast(deck1RateRange * 100)); - if (idx == -1) { - ComboBoxRateRange->addItem(QString::number(deck1RateRange * 100.).append("%"), - deck1RateRange * 100.); - } - - ComboBoxRateRange->setCurrentIndex(idx); - - if (deck1RateDir == 1) { - checkBoxInvertSpeedSlider->setChecked(false); - } else { - checkBoxInvertSpeedSlider->setChecked(true); - } - - if (m_keylockMode == 1) - radioButtonCurrentKey->setChecked(true); - else - radioButtonOriginalKey->setChecked(true); - - if (m_keyunlockMode == 1) - radioButtonKeepUnlockedKey->setChecked(true); - else - radioButtonResetUnlockedKey->setChecked(true); - - checkBoxResetSpeed->setChecked(m_speedAutoReset); - checkBoxResetPitch->setChecked(m_pitchAutoReset); -} - -void DlgPrefControls::slotResetToDefaults() { - // Track time display mode - radioButtonRemaining->setChecked(true); - - // Up increases speed. - checkBoxInvertSpeedSlider->setChecked(false); - - // 8% Rate Range - ComboBoxRateRange->setCurrentIndex(ComboBoxRateRange->findData(8)); - - // Don't load tracks into playing decks. - checkBoxDisallowLoadToPlayingDeck->setChecked(true); - - // Use System locale - ComboBoxLocale->setCurrentIndex(0); - - // Mixxx cue mode - ComboBoxCueDefault->setCurrentIndex(0); - - // Cue recall on. - checkBoxSeekToCue->setChecked(true); - - // Default to normal size widgets - comboBoxScaleFactor->setCurrentIndex(1); // 100 % - checkBoxScaleFactorAuto->setChecked(true); - - // Don't start in full screen. - checkBoxStartFullScreen->setChecked(false); - - // Inhibit the screensaver - comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData( - static_cast(mixxx::ScreenSaverPreference::PREVENT_ON))); - - // Tooltips on everywhere. - radioButtonTooltipsLibraryAndSkin->setChecked(true); - - // Rate-ramping default off. - radioButtonSpeedBendStatic->setChecked(true); - - // 0 rate-ramp sensitivity - SliderRateRampSensitivity->setValue(0); - - // Permanent and temporary pitch adjust fine/coarse. - spinBoxTempRateLeft->setValue(4.0); - spinBoxTempRateRight->setValue(2.0); - spinBoxPermRateLeft->setValue(0.50); - spinBoxPermRateRight->setValue(0.05); - - // Automatically reset the pitch/key but not speed/tempo slider on track load - m_speedAutoReset = false; - m_pitchAutoReset = true; - - checkBoxResetSpeed->setChecked(m_speedAutoReset); - checkBoxResetPitch->setChecked(m_pitchAutoReset); - - // Lock to original key - m_keylockMode = 0; - radioButtonOriginalKey->setChecked(true); - - // Reset key on unlock - m_keyunlockMode = 0; - radioButtonResetUnlockedKey->setChecked(true); -} - -void DlgPrefControls::slotSetLocale(int pos) { - QString newLocale = ComboBoxLocale->itemData(pos).toString(); - m_pConfig->set(ConfigKey("[Config]", "Locale"), ConfigValue(newLocale)); - notifyRebootNecessary(); -} - -void DlgPrefControls::slotSetRateRange(int pos) { - slotSetRateRangePercent(ComboBoxRateRange->itemData(pos).toInt()); -} - -void DlgPrefControls::slotSetRateRangePercent (int rateRangePercent) { - double rateRange = rateRangePercent / 100.; - - // Set rate range for every group - foreach (ControlProxy* pControl, m_rateRangeControls) { - pControl->set(rateRange); - } - - // Reset rate for every group - foreach (ControlProxy* pControl, m_rateControls) { - pControl->set(0); - } -} - -void DlgPrefControls::slotSetRateDir(bool invert) { - int index = 0; - if (invert) index = 1; - slotSetRateDir(index); -} - -void DlgPrefControls::slotSetRateDir(int index) { - float dir = 1.; - if (index == 1) - dir = -1.; - float oldDir = m_rateDirControls[0]->get(); - - // Set rate direction for every group - foreach (ControlProxy* pControl, m_rateDirControls) { - pControl->set(dir); - } - - // If the setting was changed, ie the old direction is not equal to the new one, - // multiply the rate by -1 so the current sound does not change. - if(fabs(dir - oldDir) > 0.1) { - foreach (ControlProxy* pControl, m_rateControls) { - pControl->set(-1 * pControl->get()); - } - } - -} - -void DlgPrefControls::slotKeyLockMode(QAbstractButton* b) { - if (b == radioButtonCurrentKey) { - m_keylockMode = 1; - } - else { m_keylockMode = 0; } -} - -void DlgPrefControls::slotKeyUnlockMode(QAbstractButton* b) { - if (b == radioButtonResetUnlockedKey) { - m_keyunlockMode = 0; - } - else { m_keyunlockMode = 1; } -} - -void DlgPrefControls::slotSetAllowTrackLoadToPlayingDeck(bool b) { - // If b is true, it means NOT to allow track loading - m_pConfig->set(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), - ConfigValue(b?0:1)); -} - -void DlgPrefControls::slotSetCueDefault(int index) -{ - int cueMode = ComboBoxCueDefault->itemData(index).toInt(); - m_pConfig->set(ConfigKey("[Controls]", "CueDefault"), ConfigValue(cueMode)); - - // Set cue behavior for every group - foreach (ControlProxy* pControl, m_cueControls) { - pControl->set(cueMode); - } -} - -void DlgPrefControls::slotSetCueRecall(bool b) -{ - m_pConfig->set(ConfigKey("[Controls]", "CueRecall"), ConfigValue(b?0:1)); -} - - -void DlgPrefControls::slotSetScaleFactor(int index) { - double scaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); - m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), scaleFactor); - // reload the skin when the button is toggled - repaint(); - m_mixxx->rebootMixxxView(); -} - -void DlgPrefControls::slotSetScaleFactorAuto(bool checked) { - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactorAuto"), checked); - comboBoxScaleFactor->setEnabled(!checked); - if (checked) { - m_pConfig->setValue( - ConfigKey("[Config]", "ScaleFactor"), m_autoScaleFactor); - // reload the skin when the button is toggled - repaint(); - m_mixxx->rebootMixxxView(); - } else { - slotSetScaleFactor(comboBoxScaleFactor->currentIndex()); - } -} - -void DlgPrefControls::slotSetStartInFullScreen(bool b) { - m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), ConfigValue(b?1:0)); -} - -void DlgPrefControls::slotSetTooltips() { - //0=OFF, 1=ON, 2=ON (only in Library) - mixxx::TooltipsPreference valueToSet = mixxx::TooltipsPreference::TOOLTIPS_ON; - if (radioButtonTooltipsOff->isChecked()) { - valueToSet = mixxx::TooltipsPreference::TOOLTIPS_OFF; - } else if (radioButtonTooltipsLibrary->isChecked()) { - valueToSet = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; - } - m_mixxx->setToolTipsCfg(valueToSet); -} - -void DlgPrefControls::notifyRebootNecessary() { - // make the fact that you have to restart mixxx more obvious - QMessageBox::information( - this, tr("Information"), - tr("Mixxx must be restarted before the changes will take effect.")); -} - -void DlgPrefControls::slotSetScheme(int) { - m_pConfig->set(ConfigKey("[Config]", "Scheme"), ComboBoxSchemeconf->currentText()); - repaint(); - m_mixxx->rebootMixxxView(); -} - -void DlgPrefControls::slotSetSkin(int) { - ComboBoxSkinconf->repaint(); // without it the combobox sticks to the old value until - // the new Skin is fully loaded - m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), ComboBoxSkinconf->currentText()); - repaint(); - m_mixxx->rebootMixxxView(); - checkSkinResolution(ComboBoxSkinconf->currentText()) - ? warningLabel->hide() : warningLabel->show(); - slotUpdateSchemes(); -} - -void DlgPrefControls::slotSetTrackTimeDisplay(QAbstractButton* b) { - double timeDisplay; - if (b == radioButtonRemaining) { - timeDisplay = static_cast(TrackTime::DisplayMode::Remaining); - } else if (b == radioButtonElapsedAndRemaining) { - timeDisplay = static_cast(TrackTime::DisplayMode::ElapsedAndRemaining); - } else { - timeDisplay = static_cast(TrackTime::DisplayMode::Elapsed); - } - m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(timeDisplay)); - m_pControlTrackTimeDisplay->set(timeDisplay); -} - -void DlgPrefControls::slotSetTrackTimeDisplay(double v) { - if (v == 1.0) { - // Remaining - radioButtonRemaining->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(1)); - } else if (v == 2.0) { - // Elapsed and remaining - radioButtonElapsedAndRemaining->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(2)); - } else { - // Elapsed - radioButtonElapsed->setChecked(true); - m_pConfig->set(ConfigKey("[Controls]", "PositionDisplay"), ConfigValue(0)); - } -} - -void DlgPrefControls::slotSetRateTempLeft(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RateTempLeft"),ConfigValue(str)); - RateControl::setTemp(v); -} - -void DlgPrefControls::slotSetRateTempRight(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RateTempRight"),ConfigValue(str)); - RateControl::setTempSmall(v); -} - -void DlgPrefControls::slotSetRatePermLeft(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RatePermLeft"),ConfigValue(str)); - RateControl::setPerm(v); -} - -void DlgPrefControls::slotSetRatePermRight(double v) { - QString str; - str = str.setNum(v, 'f'); - m_pConfig->set(ConfigKey("[Controls]", "RatePermRight"),ConfigValue(str)); - RateControl::setPermSmall(v); -} - -void DlgPrefControls::slotSetRateRampSensitivity(int sense) { - m_pConfig->set(ConfigKey("[Controls]", "RateRampSensitivity"), - ConfigValue(SliderRateRampSensitivity->value())); - RateControl::setRateRampSensitivity(sense); -} - -void DlgPrefControls::slotSetRateRamp(bool mode) { - m_pConfig->set(ConfigKey("[Controls]", "RateRamp"), - ConfigValue(radioButtonSpeedBendRamping->isChecked())); - RateControl::setRateRamp(mode); -} - -void DlgPrefControls::slotApply() { - double deck1RateRange = m_rateRangeControls[0]->get(); - double deck1RateDir = m_rateDirControls[0]->get(); - - m_pConfig->set(ConfigKey("[Controls]", "RateRangePercent"), - ConfigValue(static_cast(deck1RateRange * 100))); - - // Write rate direction to config file - if (deck1RateDir == 1) { - m_pConfig->set(ConfigKey("[Controls]", "RateDir"), ConfigValue(0)); - } else { - m_pConfig->set(ConfigKey("[Controls]", "RateDir"), ConfigValue(1)); - } - - int configSPAutoReset = BaseTrackPlayer::RESET_NONE; - - // screensaver mode update - int inhibitcombo = comboBoxScreensaver->itemData( - comboBoxScreensaver->currentIndex()).toInt(); - int inhibitsettings = static_cast(m_mixxx->getInhibitScreensaver()); - if (inhibitcombo != inhibitsettings) { - m_mixxx->setInhibitScreensaver(static_cast(inhibitcombo)); - } - - - if (m_speedAutoReset && m_pitchAutoReset) { - configSPAutoReset = BaseTrackPlayer::RESET_PITCH_AND_SPEED; - } - else if (m_speedAutoReset) configSPAutoReset = BaseTrackPlayer::RESET_SPEED; - else if (m_pitchAutoReset) configSPAutoReset = BaseTrackPlayer::RESET_PITCH; - - m_pConfig->set(ConfigKey("[Controls]", "SpeedAutoReset"), - ConfigValue(configSPAutoReset)); - - m_pConfig->set(ConfigKey("[Controls]", "keylockMode"), - ConfigValue(m_keylockMode)); - // Set key lock behavior for every group - foreach (ControlProxy* pControl, m_keylockModeControls) { - pControl->set(m_keylockMode); - } - - m_pConfig->set(ConfigKey("[Controls]", "keyunlockMode"), - ConfigValue(m_keyunlockMode)); - // Set key un-lock behavior for every group - foreach (ControlProxy* pControl, m_keyunlockModeControls) { - pControl->set(m_keyunlockMode); - } -} - -//Returns TRUE if skin fits to screen resolution, FALSE otherwise -bool DlgPrefControls::checkSkinResolution(QString skin) -{ - int screenWidth = QApplication::desktop()->width(); - int screenHeight = QApplication::desktop()->height(); - - const QRegExp min_size_regex("(\\d+), *(\\d+)<"); - QFile skinfile(skin + "/skin.xml"); - if (skinfile.open(QFile::ReadOnly | QFile::Text)) { - QTextStream in(&skinfile); - bool found_size = false; - while (!in.atEnd()) { - if (min_size_regex.indexIn(in.readLine()) != -1) { - found_size = true; - break; - } - } - if (found_size) { - return !(min_size_regex.cap(1).toInt() > screenWidth || - min_size_regex.cap(2).toInt() > screenHeight); - } - } - - // If regex failed, fall back to skin name parsing. - QString skinName = skin.left(skin.indexOf(QRegExp("\\d"))); - QString resName = skin.right(skin.count()-skinName.count()); - QString res = resName.left(resName.lastIndexOf(QRegExp("\\d"))+1); - QString skinWidth = res.left(res.indexOf("x")); - QString skinHeight = res.right(res.count()-skinWidth.count()-1); - return !(skinWidth.toInt() > screenWidth || skinHeight.toInt() > screenHeight); -} - -void DlgPrefControls::slotNumDecksChanged(double new_count) { - int numdecks = static_cast(new_count); - if (numdecks <= m_iNumConfiguredDecks) { - // TODO(owilliams): If we implement deck deletion, shrink the size of configured decks. - return; - } - - for (int i = m_iNumConfiguredDecks; i < numdecks; ++i) { - QString group = PlayerManager::groupForDeck(i); - m_rateControls.push_back(new ControlProxy( - group, "rate")); - m_rateRangeControls.push_back(new ControlProxy( - group, "rateRange")); - m_rateDirControls.push_back(new ControlProxy( - group, "rate_dir")); - m_cueControls.push_back(new ControlProxy( - group, "cue_mode")); - m_keylockModeControls.push_back(new ControlProxy( - group, "keylockMode")); - m_keylockModeControls.last()->set(m_keylockMode); - m_keyunlockModeControls.push_back(new ControlProxy( - group, "keyunlockMode")); - m_keyunlockModeControls.last()->set(m_keyunlockMode); - } - - m_iNumConfiguredDecks = numdecks; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); - slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); -} - -void DlgPrefControls::slotNumSamplersChanged(double new_count) { - int numsamplers = static_cast(new_count); - if (numsamplers <= m_iNumConfiguredSamplers) { - return; - } - - for (int i = m_iNumConfiguredSamplers; i < numsamplers; ++i) { - QString group = PlayerManager::groupForSampler(i); - m_rateControls.push_back(new ControlProxy( - group, "rate")); - m_rateRangeControls.push_back(new ControlProxy( - group, "rateRange")); - m_rateDirControls.push_back(new ControlProxy( - group, "rate_dir")); - m_cueControls.push_back(new ControlProxy( - group, "cue_mode")); - m_keylockModeControls.push_back(new ControlProxy( - group, "keylockMode")); - m_keylockModeControls.last()->set(m_keylockMode); - m_keyunlockModeControls.push_back(new ControlProxy( - group, "keyunlockMode")); - m_keyunlockModeControls.last()->set(m_keyunlockMode); - } - - m_iNumConfiguredSamplers = numsamplers; - slotSetRateDir(m_pConfig->getValueString(ConfigKey("[Controls]", "RateDir")).toInt()); - slotSetRateRangePercent(m_pConfig->getValueString(ConfigKey("[Controls]", "RateRangePercent")).toInt()); -} - -void DlgPrefControls::slotUpdateSpeedAutoReset(bool b) { - m_speedAutoReset = b; -} - -void DlgPrefControls::slotUpdatePitchAutoReset(bool b) { - m_pitchAutoReset = b; -} - -int DlgPrefControls::cueDefaultIndexByData(int userData) const { - for (int i = 0; i < ComboBoxCueDefault->count(); ++i) { - if (ComboBoxCueDefault->itemData(i).toInt() == userData) { - return i; - } - } - qWarning() << "No default cue behavior found for value" << userData - << "returning default"; - return 0; -} diff --git a/src/preferences/dialog/dlgprefdeck.cpp b/src/preferences/dialog/dlgprefdeck.cpp new file mode 100644 index 000000000000..b5ef06a99b47 --- /dev/null +++ b/src/preferences/dialog/dlgprefdeck.cpp @@ -0,0 +1,651 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "mixer/basetrackplayer.h" +#include "preferences/dialog/dlgprefdeck.h" +#include "preferences/usersettings.h" +#include "control/controlobject.h" +#include "control/controlproxy.h" +#include "widget/wnumberpos.h" +#include "engine/enginebuffer.h" +#include "engine/ratecontrol.h" +#include "mixer/playermanager.h" +#include "mixer/playerinfo.h" +#include "control/controlobject.h" +#include "mixxx.h" +#include "defs_urls.h" + +namespace { +constexpr int kDefaultRateRangePercent = 8; +constexpr double kRateDirectionInverted = -1; +constexpr RateControl::RampMode kDefaultRampingMode = RateControl::RampMode::Stepping; +constexpr double kDefaultTemporaryRateChangeCoarse = 4.00; // percent +constexpr double kDefaultTemporaryRateChangeFine = 2.00; +constexpr double kDefaultPermanentRateChangeCoarse = 0.50; +constexpr double kDefaultPermanentRateChangeFine = 0.05; +constexpr int kDefaultRateRampSensitivity = 250; +} + +DlgPrefDeck::DlgPrefDeck(QWidget * parent, MixxxMainWindow * mixxx, + PlayerManager* pPlayerManager, + UserSettingsPointer pConfig) + : DlgPreferencePage(parent), + m_pConfig(pConfig), + m_mixxx(mixxx), + m_pPlayerManager(pPlayerManager), + m_iNumConfiguredDecks(0), + m_iNumConfiguredSamplers(0) { + setupUi(this); + + m_pNumDecks = new ControlProxy("[Master]", "num_decks", this); + m_pNumDecks->connectValueChanged(SLOT(slotNumDecksChanged(double))); + slotNumDecksChanged(m_pNumDecks->get(), true); + + m_pNumSamplers = new ControlProxy("[Master]", "num_samplers", this); + m_pNumSamplers->connectValueChanged(SLOT(slotNumSamplersChanged(double))); + slotNumSamplersChanged(m_pNumSamplers->get(), true); + + // Set default value in config file and control objects, if not present + // Default is "0" = Mixxx Mode + int cueDefaultValue = m_pConfig->getValue( + ConfigKey("[Controls]", "CueDefault"), 0); + + // Update combo box + // The itemData values are out of order to avoid breaking configurations + // when Mixxx mode (no blinking) was introduced. + // TODO: replace magic numbers with an enum class + ComboBoxCueMode->addItem(tr("Mixxx mode"), 0); + ComboBoxCueMode->addItem(tr("Mixxx mode (no blinking)"), 4); + ComboBoxCueMode->addItem(tr("Pioneer mode"), 1); + ComboBoxCueMode->addItem(tr("Denon mode"), 2); + ComboBoxCueMode->addItem(tr("Numark mode"), 3); + ComboBoxCueMode->addItem(tr("CUP mode"), 5); + const int cueModeIndex = cueDefaultIndexByData(cueDefaultValue); + ComboBoxCueMode->setCurrentIndex(cueModeIndex); + slotCueModeCombobox(cueModeIndex); + for (ControlProxy* pControl : m_cueControls) { + pControl->set(m_iCueMode); + } + connect(ComboBoxCueMode, SIGNAL(activated(int)), this, SLOT(slotCueModeCombobox(int))); + + // Track time display configuration + m_pControlTrackTimeDisplay = new ControlObject( + ConfigKey("[Controls]", "ShowDurationRemaining")); + connect(m_pControlTrackTimeDisplay, SIGNAL(valueChanged(double)), + this, SLOT(slotSetTrackTimeDisplay(double))); + + // If not present in the config, set the default value + if (!m_pConfig->exists(ConfigKey("[Controls]","PositionDisplay"))) { + m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), + QString::number(static_cast(TrackTime::DisplayMode::Remaining))); + } + + double positionDisplayType = m_pConfig->getValue( + ConfigKey("[Controls]", "PositionDisplay"), + static_cast(TrackTime::DisplayMode::Elapsed)); + if (positionDisplayType == + static_cast(TrackTime::DisplayMode::Remaining)) { + radioButtonRemaining->setChecked(true); + m_pControlTrackTimeDisplay->set( + static_cast(TrackTime::DisplayMode::Remaining)); + } else if (positionDisplayType == + static_cast(TrackTime::DisplayMode::ElapsedAndRemaining)) { + radioButtonElapsedAndRemaining->setChecked(true); + m_pControlTrackTimeDisplay->set( + static_cast(TrackTime::DisplayMode::ElapsedAndRemaining)); + } else { + radioButtonElapsed->setChecked(true); + m_pControlTrackTimeDisplay->set( + static_cast(TrackTime::DisplayMode::Elapsed)); + } + connect(buttonGroupTrackTime, SIGNAL(buttonClicked(QAbstractButton*)), + this, SLOT(slotSetTrackTimeDisplay(QAbstractButton *))); + + // Override Playing Track on Track Load + // The check box reflects the opposite of the config value + m_bDisallowTrackLoadToPlayingDeck = !m_pConfig->getValue( + ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false); + checkBoxDisallowLoadToPlayingDeck->setChecked(m_bDisallowTrackLoadToPlayingDeck); + connect(checkBoxDisallowLoadToPlayingDeck, SIGNAL(toggled(bool)), + this, SLOT(slotDisallowTrackLoadToPlayingDeckCheckbox(bool))); + + // Jump to cue on track load + // The check box reflects the opposite of the config value + m_bJumpToCueOnTrackLoad = !m_pConfig->getValue(ConfigKey("[Controls]", "CueRecall"), false); + checkBoxSeekToCue->setChecked(m_bJumpToCueOnTrackLoad); + connect(checkBoxSeekToCue, SIGNAL(toggled(bool)), + this, SLOT(slotJumpToCueOnTrackLoadCheckbox(bool))); + + m_bRateInverted = m_pConfig->getValue(ConfigKey("[Controls]", "RateDir"), false); + setRateDirectionForAllDecks(m_bRateInverted); + checkBoxInvertSpeedSlider->setChecked(m_bRateInverted); + connect(checkBoxInvertSpeedSlider, SIGNAL(toggled(bool)), + this, SLOT(slotRateInversionCheckbox(bool))); + + ComboBoxRateRange->clear(); + ComboBoxRateRange->addItem(tr("4%"), 4); + ComboBoxRateRange->addItem(tr("6% (semitone)"), 6); + ComboBoxRateRange->addItem(tr("8% (Technics SL-1210)"), 8); + ComboBoxRateRange->addItem(tr("10%"), 10); + ComboBoxRateRange->addItem(tr("16%"), 16); + ComboBoxRateRange->addItem(tr("24%"), 24); + ComboBoxRateRange->addItem(tr("50%"), 50); + ComboBoxRateRange->addItem(tr("90%"), 90); + connect(ComboBoxRateRange, SIGNAL(activated(int)), + this, SLOT(slotRateRangeComboBox(int))); + + // RateRange is the legacy ConfigKey. RateRangePercent is used now. + if (m_pConfig->exists(ConfigKey("[Controls]", "RateRange")) && + !m_pConfig->exists(ConfigKey("[Controls]", "RateRangePercent"))) { + int legacyIndex = m_pConfig->getValueString(ConfigKey("[Controls]", "RateRange")).toInt(); + if (legacyIndex == 0) { + m_iRateRangePercent = 6; + } else if (legacyIndex == 1) { + m_iRateRangePercent = 8; + } else { + m_iRateRangePercent = (legacyIndex-1) * 10; + } + } else { + m_iRateRangePercent = m_pConfig->getValue(ConfigKey("[Controls]", "RateRangePercent"), + kDefaultRateRangePercent); + } + if (!(m_iRateRangePercent > 0 && m_iRateRangePercent <= 90)) { + m_iRateRangePercent = kDefaultRateRangePercent; + } + setRateRangeForAllDecks(m_iRateRangePercent); + + // + // Key lock mode + // + connect(buttonGroupKeyLockMode, SIGNAL(buttonClicked(QAbstractButton*)), + this, SLOT(slotKeyLockModeSelected(QAbstractButton *))); + + m_keylockMode = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "keylockMode"), + static_cast(KeylockMode::LockOriginalKey))); + for (ControlProxy* pControl : m_keylockModeControls) { + pControl->set(static_cast(m_keylockMode)); + } + + // + // Key unlock mode + // + connect(buttonGroupKeyUnlockMode, SIGNAL(buttonClicked(QAbstractButton*)), + this, SLOT(slotKeyUnlockModeSelected(QAbstractButton *))); + + m_keyunlockMode = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "keyunlockMode"), + static_cast(KeyunlockMode::ResetLockedKey))); + for (ControlProxy* pControl : m_keyunlockModeControls) { + pControl->set(static_cast(m_keyunlockMode)); + } + + // + // Rate buttons configuration + // + connect(spinBoxTemporaryRateCoarse, SIGNAL(valueChanged(double)), + this, SLOT(slotRateTempCoarseSpinbox(double))); + connect(spinBoxTemporaryRateFine, SIGNAL(valueChanged(double)), + this, SLOT(slotRateTempFineSpinbox(double))); + connect(spinBoxPermanentRateCoarse, SIGNAL(valueChanged(double)), + this, SLOT(slotRatePermCoarseSpinbox(double))); + connect(spinBoxPermanentRateFine, SIGNAL(valueChanged(double)), + this, SLOT(slotRatePermFineSpinbox(double))); + + m_dRateTempCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempLeft"), + kDefaultPermanentRateChangeCoarse); + m_dRateTempFine = m_pConfig->getValue(ConfigKey("[Controls]", "RateTempRight"), + kDefaultPermanentRateChangeFine); + m_dRatePermCoarse = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermLeft"), + kDefaultTemporaryRateChangeCoarse); + m_dRatePermFine = m_pConfig->getValue(ConfigKey("[Controls]", "RatePermRight"), + kDefaultTemporaryRateChangeFine); + + spinBoxTemporaryRateCoarse->setValue(m_dRateTempCoarse); + spinBoxTemporaryRateFine->setValue(m_dRateTempFine); + spinBoxPermanentRateCoarse->setValue(m_dRatePermCoarse); + spinBoxPermanentRateFine->setValue(m_dRatePermFine); + + RateControl::setTemporaryRateChangeCoarseAmount(m_dRateTempCoarse); + RateControl::setTemporaryRateChangeFineAmount(m_dRateTempFine); + RateControl::setPermanentRateChangeCoarseAmount(m_dRatePermCoarse); + RateControl::setPermanentRateChangeFineAmount(m_dRatePermFine); + + // Rate Ramp Sensitivity + m_iRateRampSensitivity = m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), kDefaultRateRampSensitivity); + SliderRateRampSensitivity->setValue(m_iRateRampSensitivity); + connect(SliderRateRampSensitivity, SIGNAL(valueChanged(int)), + this, SLOT(slotRateRampSensitivitySlider(int))); + + // + // Cue Mode + // + + // Add "(?)" with a manual link to the label + labelCueMode->setText( + labelCueMode->text() + + " (?)"); + + // + // Ramping Temporary Rate Change configuration + // + + // Set Ramp Rate On or Off + connect(radioButtonRateRampModeLinear, SIGNAL(toggled(bool)), + this, SLOT(slotRateRampingModeLinearButton(bool))); + m_bRateRamping = static_cast( + m_pConfig->getValue(ConfigKey("[Controls]", "RateRamp"), + static_cast(kDefaultRampingMode))); + if (m_bRateRamping == RateControl::RampMode::Linear) { + radioButtonRateRampModeLinear->setChecked(true); + } else { + radioButtonRateRampModeStepping->setChecked(true); + } + + // Update "reset speed" and "reset pitch" check boxes + // TODO: All defaults should only be set in slotResetToDefaults. + int configSPAutoReset = m_pConfig->getValue( + ConfigKey("[Controls]", "SpeedAutoReset"), + BaseTrackPlayer::RESET_PITCH); + + m_speedAutoReset = (configSPAutoReset==BaseTrackPlayer::RESET_SPEED || + configSPAutoReset==BaseTrackPlayer::RESET_PITCH_AND_SPEED); + m_pitchAutoReset = (configSPAutoReset==BaseTrackPlayer::RESET_PITCH || + configSPAutoReset==BaseTrackPlayer::RESET_PITCH_AND_SPEED); + + checkBoxResetSpeed->setChecked(m_speedAutoReset); + checkBoxResetPitch->setChecked(m_pitchAutoReset); + + connect(checkBoxResetSpeed, SIGNAL(toggled(bool)), + this, SLOT(slotUpdateSpeedAutoReset(bool))); + connect(checkBoxResetPitch, SIGNAL(toggled(bool)), + this, SLOT(slotUpdatePitchAutoReset(bool))); + + slotUpdate(); +} + +DlgPrefDeck::~DlgPrefDeck() { + delete m_pControlTrackTimeDisplay; + qDeleteAll(m_rateControls); + qDeleteAll(m_rateDirectionControls); + qDeleteAll(m_cueControls); + qDeleteAll(m_rateRangeControls); + qDeleteAll(m_keylockModeControls); + qDeleteAll(m_keyunlockModeControls); +} + +void DlgPrefDeck::slotUpdate() { + slotSetTrackTimeDisplay(m_pControlTrackTimeDisplay->get()); + + checkBoxDisallowLoadToPlayingDeck->setChecked(!m_pConfig->getValue( + ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), false)); + + checkBoxSeekToCue->setChecked(!m_pConfig->getValue( + ConfigKey("[Controls]", "CueRecall"), false)); + + double deck1RateRange = m_rateRangeControls[0]->get(); + int index = ComboBoxRateRange->findData(static_cast(deck1RateRange * 100)); + if (index == -1) { + ComboBoxRateRange->addItem(QString::number(deck1RateRange * 100.).append("%"), + deck1RateRange * 100.); + } + ComboBoxRateRange->setCurrentIndex(index); + + double deck1RateDirection = m_rateDirectionControls[0]->get(); + checkBoxInvertSpeedSlider->setChecked(deck1RateDirection == kRateDirectionInverted); + + double deck1CueMode = m_cueControls[0]->get(); + index = ComboBoxCueMode->findData(static_cast(deck1CueMode)); + ComboBoxCueMode->setCurrentIndex(index); + + KeylockMode deck1KeylockMode = + static_cast(static_cast(m_keylockModeControls[0]->get())); + if (deck1KeylockMode == KeylockMode::LockCurrentKey) { + radioButtonCurrentKey->setChecked(true); + } else { + radioButtonOriginalKey->setChecked(true); + } + + KeyunlockMode deck1KeyunlockMode = + static_cast(static_cast(m_keyunlockModeControls[0]->get())); + if (deck1KeyunlockMode == KeyunlockMode::KeepLockedKey) { + radioButtonKeepUnlockedKey->setChecked(true); + } else { + radioButtonResetUnlockedKey->setChecked(true); + } + + int reset = m_pConfig->getValue(ConfigKey("[Controls]", "SpeedAutoReset"), + static_cast(BaseTrackPlayer::RESET_PITCH)); + if (reset == BaseTrackPlayer::RESET_PITCH) { + checkBoxResetPitch->setChecked(true); + checkBoxResetSpeed->setChecked(false); + } else if (reset == BaseTrackPlayer::RESET_SPEED) { + checkBoxResetPitch->setChecked(false); + checkBoxResetSpeed->setChecked(true); + } else if (reset == BaseTrackPlayer::RESET_PITCH_AND_SPEED) { + checkBoxResetPitch->setChecked(true); + checkBoxResetSpeed->setChecked(true); + } else if (reset == BaseTrackPlayer::RESET_NONE) { + checkBoxResetPitch->setChecked(false); + checkBoxResetSpeed->setChecked(false); + } + + SliderRateRampSensitivity->setValue( + m_pConfig->getValue(ConfigKey("[Controls]", "RateRampSensitivity"), + kDefaultRateRampSensitivity)); + + spinBoxTemporaryRateCoarse->setValue(RateControl::getTemporaryRateChangeCoarseAmount()); + spinBoxTemporaryRateFine->setValue(RateControl::getTemporaryRateChangeFineAmount()); + spinBoxPermanentRateCoarse->setValue(RateControl::getPermanentRateChangeCoarseAmount()); + spinBoxPermanentRateFine->setValue(RateControl::getPermanentRateChangeFineAmount()); +} + +void DlgPrefDeck::slotResetToDefaults() { + // Track time display mode + radioButtonRemaining->setChecked(true); + + // Up increases speed. + checkBoxInvertSpeedSlider->setChecked(false); + + // 8% Rate Range + ComboBoxRateRange->setCurrentIndex(ComboBoxRateRange->findData(kDefaultRateRangePercent)); + + // Don't load tracks into playing decks. + checkBoxDisallowLoadToPlayingDeck->setChecked(true); + + // Mixxx cue mode + ComboBoxCueMode->setCurrentIndex(0); + + // Cue recall on. + checkBoxSeekToCue->setChecked(true); + + // Rate-ramping default off. + radioButtonRateRampModeStepping->setChecked(true); + + SliderRateRampSensitivity->setValue(kDefaultRateRampSensitivity); + + // Permanent and temporary pitch adjust fine/coarse. + spinBoxTemporaryRateCoarse->setValue(4.0); + spinBoxTemporaryRateFine->setValue(2.0); + spinBoxPermanentRateCoarse->setValue(0.50); + spinBoxPermanentRateFine->setValue(0.05); + + checkBoxResetSpeed->setChecked(false); + checkBoxResetPitch->setChecked(true); + + radioButtonOriginalKey->setChecked(true); + radioButtonResetUnlockedKey->setChecked(true); +} + +void DlgPrefDeck::slotRateRangeComboBox(int index) { + m_iRateRangePercent = ComboBoxRateRange->itemData(index).toInt(); +} + +void DlgPrefDeck::setRateRangeForAllDecks(int rangePercent) { + for (ControlProxy* pControl : m_rateRangeControls) { + pControl->set(rangePercent / 100.0); + } +} + +void DlgPrefDeck::slotRateInversionCheckbox(bool inverted) { + m_bRateInverted = inverted; +} + +void DlgPrefDeck::setRateDirectionForAllDecks(bool inverted) { + double oldRateDirectionMultiplier = m_rateDirectionControls[0]->get(); + double rateDirectionMultiplier = 1.0; + if (inverted) { + rateDirectionMultiplier = kRateDirectionInverted; + } + for (ControlProxy* pControl : m_rateDirectionControls) { + pControl->set(rateDirectionMultiplier); + } + + // If the rate slider direction setting has changed, + // multiply the rate by -1 so the current sound does not change. + if (rateDirectionMultiplier != oldRateDirectionMultiplier) { + for (ControlProxy* pControl : m_rateControls) { + pControl->set(-1 * pControl->get()); + } + } +} + +void DlgPrefDeck::slotKeyLockModeSelected(QAbstractButton* pressedButton) { + if (pressedButton == radioButtonCurrentKey) { + m_keylockMode = KeylockMode::LockCurrentKey; + } else { + m_keylockMode = KeylockMode::LockOriginalKey; + } +} + +void DlgPrefDeck::slotKeyUnlockModeSelected(QAbstractButton* pressedButton) { + if (pressedButton == radioButtonResetUnlockedKey) { + m_keyunlockMode = KeyunlockMode::ResetLockedKey; + } else { + m_keyunlockMode = KeyunlockMode::KeepLockedKey; + } +} + +void DlgPrefDeck::slotDisallowTrackLoadToPlayingDeckCheckbox(bool checked) { + m_bDisallowTrackLoadToPlayingDeck = checked; +} + +void DlgPrefDeck::slotCueModeCombobox(int index) { + m_iCueMode = ComboBoxCueMode->itemData(index).toInt(); +} + +void DlgPrefDeck::slotJumpToCueOnTrackLoadCheckbox(bool checked) { + m_bJumpToCueOnTrackLoad = checked; +} + +void DlgPrefDeck::slotSetTrackTimeDisplay(QAbstractButton* b) { + if (b == radioButtonRemaining) { + m_timeDisplayMode = TrackTime::DisplayMode::Remaining; + } else if (b == radioButtonElapsedAndRemaining) { + m_timeDisplayMode = TrackTime::DisplayMode::ElapsedAndRemaining; + } else { + m_timeDisplayMode = TrackTime::DisplayMode::Elapsed; + } +} + +void DlgPrefDeck::slotSetTrackTimeDisplay(double v) { + m_timeDisplayMode = static_cast(v); + m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(v)); + if (m_timeDisplayMode == TrackTime::DisplayMode::Remaining) { + radioButtonRemaining->setChecked(true); + } else if (m_timeDisplayMode == TrackTime::DisplayMode::ElapsedAndRemaining) { + radioButtonElapsedAndRemaining->setChecked(true); + } else { // Elapsed + radioButtonElapsed->setChecked(true); + } +} + +void DlgPrefDeck::slotRateTempCoarseSpinbox(double value) { + m_dRateTempCoarse = value; +} + +void DlgPrefDeck::slotRateTempFineSpinbox(double value) { + m_dRateTempFine = value; +} + +void DlgPrefDeck::slotRatePermCoarseSpinbox(double value) { + m_dRatePermCoarse = value; +} + +void DlgPrefDeck::slotRatePermFineSpinbox(double value) { + m_dRatePermFine = value; +} + +void DlgPrefDeck::slotRateRampSensitivitySlider(int value) { + m_iRateRampSensitivity = value; +} + +void DlgPrefDeck::slotRateRampingModeLinearButton(bool checked) { + if (checked) { + m_bRateRamping = RateControl::RampMode::Linear; + } else { + m_bRateRamping = RateControl::RampMode::Stepping; + } +} + +void DlgPrefDeck::slotApply() { + double timeDisplay = static_cast(m_timeDisplayMode); + m_pConfig->set(ConfigKey("[Controls]","PositionDisplay"), ConfigValue(timeDisplay)); + m_pControlTrackTimeDisplay->set(timeDisplay); + + // Set cue mode for every deck + for (ControlProxy* pControl : m_cueControls) { + pControl->set(m_iCueMode); + } + m_pConfig->setValue(ConfigKey("[Controls]", "CueDefault"), m_iCueMode); + + m_pConfig->setValue(ConfigKey("[Controls]", "AllowTrackLoadToPlayingDeck"), + !m_bDisallowTrackLoadToPlayingDeck); + + m_pConfig->setValue(ConfigKey("[Controls]", "CueRecall"), !m_bJumpToCueOnTrackLoad); + + // Set rate range + setRateRangeForAllDecks(m_iRateRangePercent); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRangePercent"), + m_iRateRangePercent); + + setRateDirectionForAllDecks(m_bRateInverted); + m_pConfig->setValue(ConfigKey("[Controls]", "RateDir"), + static_cast(m_bRateInverted)); + + int configSPAutoReset = BaseTrackPlayer::RESET_NONE; + + if (m_speedAutoReset && m_pitchAutoReset) { + configSPAutoReset = BaseTrackPlayer::RESET_PITCH_AND_SPEED; + } else if (m_speedAutoReset) { + configSPAutoReset = BaseTrackPlayer::RESET_SPEED; + } else if (m_pitchAutoReset) { + configSPAutoReset = BaseTrackPlayer::RESET_PITCH; + } + + m_pConfig->set(ConfigKey("[Controls]", "SpeedAutoReset"), + ConfigValue(configSPAutoReset)); + + m_pConfig->setValue(ConfigKey("[Controls]", "keylockMode"), + static_cast(m_keylockMode)); + // Set key lock behavior for every group + for (ControlProxy* pControl : m_keylockModeControls) { + pControl->set(static_cast(m_keylockMode)); + } + + m_pConfig->setValue(ConfigKey("[Controls]", "keyunlockMode"), + static_cast(m_keyunlockMode)); + // Set key un-lock behavior for every group + for (ControlProxy* pControl : m_keyunlockModeControls) { + pControl->set(static_cast(m_keyunlockMode)); + } + + RateControl::setRateRampMode(m_bRateRamping); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRamp"), static_cast(m_bRateRamping)); + + RateControl::setRateRampSensitivity(m_iRateRampSensitivity); + m_pConfig->setValue(ConfigKey("[Controls]", "RateRampSensitivity"), m_iRateRampSensitivity); + + RateControl::setTemporaryRateChangeCoarseAmount(m_dRateTempCoarse); + RateControl::setTemporaryRateChangeFineAmount(m_dRateTempFine); + RateControl::setPermanentRateChangeCoarseAmount(m_dRatePermCoarse); + RateControl::setPermanentRateChangeFineAmount(m_dRatePermFine); + + m_pConfig->setValue(ConfigKey("[Controls]", "RateTempLeft"), m_dRateTempCoarse); + m_pConfig->setValue(ConfigKey("[Controls]", "RateTempRight"), m_dRateTempFine); + m_pConfig->setValue(ConfigKey("[Controls]", "RatePermLeft"), m_dRatePermCoarse); + m_pConfig->setValue(ConfigKey("[Controls]", "RatePermRight"), m_dRatePermFine); +} + +void DlgPrefDeck::slotNumDecksChanged(double new_count, bool initializing) { + int numdecks = static_cast(new_count); + if (numdecks <= m_iNumConfiguredDecks) { + // TODO(owilliams): If we implement deck deletion, shrink the size of configured decks. + return; + } + + for (int i = m_iNumConfiguredDecks; i < numdecks; ++i) { + QString group = PlayerManager::groupForDeck(i); + m_rateControls.push_back(new ControlProxy( + group, "rate")); + m_rateRangeControls.push_back(new ControlProxy( + group, "rateRange")); + m_rateDirectionControls.push_back(new ControlProxy( + group, "rate_dir")); + m_cueControls.push_back(new ControlProxy( + group, "cue_mode")); + m_keylockModeControls.push_back(new ControlProxy( + group, "keylockMode")); + m_keylockModeControls.last()->set(static_cast(m_keylockMode)); + m_keyunlockModeControls.push_back(new ControlProxy( + group, "keyunlockMode")); + m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); + } + + m_iNumConfiguredDecks = numdecks; + + // The rate range hasn't been read from the config file when this is first called. + if (!initializing) { + setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); + setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); + } +} + +void DlgPrefDeck::slotNumSamplersChanged(double new_count, bool initializing) { + int numsamplers = static_cast(new_count); + if (numsamplers <= m_iNumConfiguredSamplers) { + return; + } + + for (int i = m_iNumConfiguredSamplers; i < numsamplers; ++i) { + QString group = PlayerManager::groupForSampler(i); + m_rateControls.push_back(new ControlProxy( + group, "rate")); + m_rateRangeControls.push_back(new ControlProxy( + group, "rateRange")); + m_rateDirectionControls.push_back(new ControlProxy( + group, "rate_dir")); + m_cueControls.push_back(new ControlProxy( + group, "cue_mode")); + m_keylockModeControls.push_back(new ControlProxy( + group, "keylockMode")); + m_keylockModeControls.last()->set(static_cast(m_keylockMode)); + m_keyunlockModeControls.push_back(new ControlProxy( + group, "keyunlockMode")); + m_keyunlockModeControls.last()->set(static_cast(m_keyunlockMode)); + } + + m_iNumConfiguredSamplers = numsamplers; + + // The rate range hasn't been read from the config file when this is first called. + if (!initializing) { + setRateDirectionForAllDecks(m_rateDirectionControls[0]->get() == kRateDirectionInverted); + setRateRangeForAllDecks(m_rateRangeControls[0]->get() * 100); + } +} + +void DlgPrefDeck::slotUpdateSpeedAutoReset(bool b) { + m_speedAutoReset = b; +} + +void DlgPrefDeck::slotUpdatePitchAutoReset(bool b) { + m_pitchAutoReset = b; +} + +int DlgPrefDeck::cueDefaultIndexByData(int userData) const { + for (int i = 0; i < ComboBoxCueMode->count(); ++i) { + if (ComboBoxCueMode->itemData(i).toInt() == userData) { + return i; + } + } + qWarning() << "No default cue behavior found for value" << userData + << "returning default"; + return 0; +} diff --git a/src/preferences/dialog/dlgprefdeck.h b/src/preferences/dialog/dlgprefdeck.h new file mode 100644 index 000000000000..bd7e0bd79f0a --- /dev/null +++ b/src/preferences/dialog/dlgprefdeck.h @@ -0,0 +1,125 @@ +#ifndef DLGPREFDECK_H +#define DLGPREFDECK_H + +#include + +#include "engine/ratecontrol.h" +#include "preferences/constants.h" +#include "preferences/dialog/ui_dlgprefdeckdlg.h" +#include "preferences/usersettings.h" +#include "preferences/dlgpreferencepage.h" + +class ControlProxy; +class ControlPotmeter; +class SkinLoader; +class PlayerManager; +class MixxxMainWindow; +class ControlObject; + +namespace TrackTime { + enum class DisplayMode { + Elapsed, + Remaining, + ElapsedAndRemaining, + }; +} + +enum class KeylockMode { + LockOriginalKey, + LockCurrentKey +}; + +enum class KeyunlockMode { + ResetLockedKey, + KeepLockedKey +}; + +/** + *@author Tue & Ken Haste Andersen + */ + +class DlgPrefDeck : public DlgPreferencePage, public Ui::DlgPrefDeckDlg { + Q_OBJECT + public: + DlgPrefDeck(QWidget *parent, MixxxMainWindow *mixxx, + PlayerManager* pPlayerManager, + UserSettingsPointer pConfig); + virtual ~DlgPrefDeck(); + + public slots: + void slotUpdate(); + void slotApply(); + void slotResetToDefaults(); + + void slotRateRangeComboBox(int index); + void slotRateInversionCheckbox(bool invert); + void slotKeyLockModeSelected(QAbstractButton*); + void slotKeyUnlockModeSelected(QAbstractButton*); + void slotRateTempCoarseSpinbox(double); + void slotRateTempFineSpinbox(double); + void slotRatePermCoarseSpinbox(double); + void slotRatePermFineSpinbox(double); + void slotSetTrackTimeDisplay(QAbstractButton*); + void slotSetTrackTimeDisplay(double); + void slotDisallowTrackLoadToPlayingDeckCheckbox(bool); + void slotCueModeCombobox(int); + void slotJumpToCueOnTrackLoadCheckbox(bool); + void slotRateRampingModeLinearButton(bool); + void slotRateRampSensitivitySlider(int); + + void slotNumDecksChanged(double, bool initializing=false); + void slotNumSamplersChanged(double, bool initializing=false); + + void slotUpdateSpeedAutoReset(bool); + void slotUpdatePitchAutoReset(bool); + + private: + // Because the CueDefault list is out of order, we have to set the combo + // box using the user data, not the index. Returns the index of the item + // that has the corresponding userData. If the userdata is not in the list, + // returns zero. + int cueDefaultIndexByData(int userData) const; + + void setRateRangeForAllDecks(int rangePercent); + void setRateDirectionForAllDecks(bool inverted); + + UserSettingsPointer m_pConfig; + ControlObject* m_pControlTrackTimeDisplay; + ControlProxy* m_pNumDecks; + ControlProxy* m_pNumSamplers; + QList m_cueControls; + QList m_rateControls; + QList m_rateDirectionControls; + QList m_rateRangeControls; + QList m_keylockModeControls; + QList m_keyunlockModeControls; + MixxxMainWindow *m_mixxx; + PlayerManager* m_pPlayerManager; + + int m_iNumConfiguredDecks; + int m_iNumConfiguredSamplers; + + TrackTime::DisplayMode m_timeDisplayMode; + + int m_iCueMode; + + bool m_bDisallowTrackLoadToPlayingDeck; + bool m_bJumpToCueOnTrackLoad; + + int m_iRateRangePercent; + bool m_bRateInverted; + + bool m_speedAutoReset; + bool m_pitchAutoReset; + KeylockMode m_keylockMode; + KeyunlockMode m_keyunlockMode; + + RateControl::RampMode m_bRateRamping; + int m_iRateRampSensitivity; + double m_dRateTempCoarse; + double m_dRateTempFine; + double m_dRatePermCoarse; + double m_dRatePermFine; +}; + +#endif diff --git a/src/preferences/dialog/dlgprefcontrolsdlg.ui b/src/preferences/dialog/dlgprefdeckdlg.ui similarity index 72% rename from src/preferences/dialog/dlgprefcontrolsdlg.ui rename to src/preferences/dialog/dlgprefdeckdlg.ui index e22094056ec9..35712d80e95d 100644 --- a/src/preferences/dialog/dlgprefcontrolsdlg.ui +++ b/src/preferences/dialog/dlgprefdeckdlg.ui @@ -1,7 +1,7 @@ - DlgPrefControlsDlg - + DlgPrefDeckDlg + 0 @@ -11,220 +11,10 @@ - Interface Preferences + Deck Preferences - - - Skin options - - - - - - true - - - - - - Skin - - - false - - - ComboBoxSkinconf - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Qt::AlignJustify|Qt::AlignVCenter - - - - - - - true - - - - - - Color scheme - - - false - - - ComboBoxSchemeconf - - - - - - - - 0 - 0 - - - - - - - Select from different color schemes of a skin if available. - - - - - - - Locale - - - ComboBoxLocale - - - - - - - Locales determine country and language specific settings. - - - - - - - Full-screen mode - - - checkBoxStartFullScreen - - - - - - - Start in full-screen mode - - - - - - - true - - - - - - Tool tips - - - false - - - radioButtonTooltipsOff - - - - - - - - - Off - - - buttonGroupTooltips - - - - - - - Library only - - - buttonGroupTooltips - - - - - - - Library and Skin - - - buttonGroupTooltips - - - - - - - - - HiDPI / Retina scaling - - - checkBoxScaleFactorAuto - - - - - - - Change the size of text, buttons, and other items. - - - - - - - Adopt scale factor from the operating system - - - Auto Scaling - - - - - - - Screen saver - - - - - - - - - - Deck options @@ -239,12 +29,12 @@ true - ComboBoxCueDefault + ComboBoxCueMode - + Mixxx mode: - Cue button while pause at cue point = preview @@ -362,7 +152,7 @@ CUP mode: - + Speed (Tempo) and Key (Pitch) options @@ -371,7 +161,7 @@ CUP mode: - + Permanent rate change when left-clicking @@ -399,7 +189,7 @@ CUP mode: - + Permanent rate change when right-clicking @@ -447,7 +237,7 @@ CUP mode: - + false @@ -577,7 +367,7 @@ CUP mode: Pitch bend behavior - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping @@ -592,7 +382,7 @@ CUP mode: - + false @@ -670,7 +460,7 @@ CUP mode: false - spinBoxPermRateLeft + spinBoxPermanentRateCoarse @@ -695,7 +485,7 @@ CUP mode: false - spinBoxPermRateRight + spinBoxPermanentRateFine @@ -739,7 +529,7 @@ CUP mode: - + Abrupt jump @@ -749,7 +539,7 @@ CUP mode: - + Smoothly adjusts deck speed when temporary change buttons are held down @@ -793,7 +583,7 @@ CUP mode: - + Qt::Vertical @@ -810,14 +600,7 @@ CUP mode: - ComboBoxSkinconf - ComboBoxSchemeconf - ComboBoxLocale - checkBoxStartFullScreen - radioButtonTooltipsOff - radioButtonTooltipsLibrary - radioButtonTooltipsLibraryAndSkin - ComboBoxCueDefault + ComboBoxCueMode radioButtonElapsed radioButtonRemaining radioButtonElapsedAndRemaining @@ -831,14 +614,14 @@ CUP mode: radioButtonCurrentKey radioButtonResetUnlockedKey radioButtonKeepUnlockedKey - radioButtonSpeedBendRamping - radioButtonSpeedBendStatic + radioButtonRateRampModeLinear + radioButtonRateRampModeStepping SliderRateRampSensitivity SpinBoxRateRampSensitivity - spinBoxPermRateLeft - spinBoxPermRateRight - spinBoxTempRateLeft - spinBoxTempRateRight + spinBoxPermanentRateCoarse + spinBoxPermanentRateFine + spinBoxTemporaryRateCoarse + spinBoxTemporaryRateFine @@ -875,7 +658,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) labelSpeedRampSensitivity setEnabled(bool) @@ -891,7 +674,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) SliderRateRampSensitivity setEnabled(bool) @@ -907,7 +690,7 @@ CUP mode: - radioButtonSpeedBendRamping + radioButtonRateRampModeLinear toggled(bool) SpinBoxRateRampSensitivity setEnabled(bool) @@ -923,7 +706,7 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) labelSpeedTemporary setEnabled(bool) @@ -939,9 +722,9 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) - spinBoxTempRateLeft + spinBoxTemporaryRateCoarse setEnabled(bool) @@ -955,9 +738,9 @@ CUP mode: - radioButtonSpeedBendStatic + radioButtonRateRampModeStepping toggled(bool) - spinBoxTempRateRight + spinBoxTemporaryRateFine setEnabled(bool) @@ -974,7 +757,6 @@ CUP mode: - false diff --git a/src/preferences/dialog/dlgpreferences.cpp b/src/preferences/dialog/dlgpreferences.cpp index 4f6ff1cf19ee..3d2339fe0cef 100644 --- a/src/preferences/dialog/dlgpreferences.cpp +++ b/src/preferences/dialog/dlgpreferences.cpp @@ -24,35 +24,39 @@ #include #include +#include "preferences/dialog/dlgpreferences.h" + +#include "preferences/dialog/dlgprefsound.h" +#include "preferences/dialog/dlgpreflibrary.h" +#include "controllers/dlgprefcontrollers.h" + #ifdef __VINYLCONTROL__ #include "preferences/dialog/dlgprefvinyl.h" #else #include "preferences/dialog/dlgprefnovinyl.h" #endif +#include "preferences/dialog/dlgprefinterface.h" +#include "preferences/dialog/dlgprefwaveform.h" +#include "preferences/dialog/dlgprefdeck.h" +#include "preferences/dialog/dlgprefeq.h" +#include "preferences/dialog/dlgprefcrossfader.h" +#include "preferences/dialog/dlgprefeffects.h" +#include "preferences/dialog/dlgprefautodj.h" + #ifdef __BROADCAST__ #include "preferences/dialog/dlgprefbroadcast.h" #endif +#include "preferences/dialog/dlgprefrecord.h" #include "preferences/dialog/dlgprefbeats.h" #include "preferences/dialog/dlgprefkey.h" +#include "preferences/dialog/dlgprefreplaygain.h" #ifdef __MODPLUG__ #include "preferences/dialog/dlgprefmodplug.h" #endif -#include "preferences/dialog/dlgpreferences.h" -#include "preferences/dialog/dlgprefsound.h" -#include "controllers/dlgprefcontrollers.h" -#include "preferences/dialog/dlgpreflibrary.h" -#include "preferences/dialog/dlgprefcontrols.h" -#include "preferences/dialog/dlgprefwaveform.h" -#include "preferences/dialog/dlgprefautodj.h" -#include "preferences/dialog/dlgprefeq.h" -#include "preferences/dialog/dlgprefcrossfader.h" -#include "preferences/dialog/dlgprefrecord.h" -#include "preferences/dialog/dlgprefreplaygain.h" -#include "preferences/dialog/dlgprefeffects.h" #include "mixxx.h" #include "controllers/controllermanager.h" #include "skin/skinloader.h" @@ -75,7 +79,6 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, connect(buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(slotButtonPressed(QAbstractButton*))); - createIcons(); while (pagesWidget->count() > 0) { @@ -83,59 +86,65 @@ DlgPreferences::DlgPreferences(MixxxMainWindow * mixxx, SkinLoader* pSkinLoader, } // Construct widgets for use in tabs. + m_soundPage = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); + addPageWidget(m_soundPage); + m_libraryPage = new DlgPrefLibrary(this, m_pConfig, pLibrary); + addPageWidget(m_libraryPage); + connect(m_libraryPage, SIGNAL(scanLibrary()), + pLibrary, SLOT(scan())); + m_controllersPage = new DlgPrefControllers(this, m_pConfig, controllers, + m_pControllerTreeItem); + addPageWidget(m_controllersPage); #ifdef __VINYLCONTROL__ // It's important for this to be before the connect for wsound. // TODO(rryan) determine why/if this is still true - m_wvinylcontrol = new DlgPrefVinyl(this, pVCManager, m_pConfig); - addPageWidget(m_wvinylcontrol); + m_vinylControlPage = new DlgPrefVinyl(this, pVCManager, m_pConfig); + addPageWidget(m_vinylControlPage); #else m_wnovinylcontrol = new DlgPrefNoVinyl(this, soundman, m_pConfig); addPageWidget(m_wnovinylcontrol); #endif - m_wsound = new DlgPrefSound(this, soundman, pPlayerManager, m_pConfig); - addPageWidget(m_wsound); - m_wlibrary = new DlgPrefLibrary(this, m_pConfig, pLibrary); - addPageWidget(m_wlibrary); - connect(m_wlibrary, SIGNAL(scanLibrary()), - pLibrary, SLOT(scan())); - m_wcontrols = new DlgPrefControls(this, mixxx, pSkinLoader, pPlayerManager, m_pConfig); - addPageWidget(m_wcontrols); - m_wwaveform = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); - addPageWidget(m_wwaveform); - m_wautodj = new DlgPrefAutoDJ(this, m_pConfig); - addPageWidget(m_wautodj); - m_weq = new DlgPrefEQ(this, pEffectsManager, m_pConfig); - addPageWidget(m_weq); + + m_interfacePage = new DlgPrefInterface(this, mixxx, pSkinLoader, m_pConfig); + addPageWidget(m_interfacePage); + m_waveformPage = new DlgPrefWaveform(this, mixxx, m_pConfig, pLibrary); + addPageWidget(m_waveformPage); + m_deckPage = new DlgPrefDeck(this, mixxx, pPlayerManager, m_pConfig); + addPageWidget(m_deckPage); + m_equalizerPage = new DlgPrefEQ(this, pEffectsManager, m_pConfig); + addPageWidget(m_equalizerPage); + m_crossfaderPage = new DlgPrefCrossfader(this, m_pConfig); + addPageWidget(m_crossfaderPage); // TODO: Re-enable the effects preferences pane when it does something useful. - //m_weffects = new DlgPrefEffects(this, m_pConfig, pEffectsManager); - //addPageWidget(m_weffects); - m_wcrossfader = new DlgPrefCrossfader(this, m_pConfig); - addPageWidget(m_wcrossfader); + //m_effectsPage = new DlgPrefEffects(this, m_pConfig, pEffectsManager); + //addPageWidget(m_effectsPage); + m_autoDjPage = new DlgPrefAutoDJ(this, m_pConfig); + addPageWidget(m_autoDjPage); -#ifdef __VAMP__ - m_wbeats = new DlgPrefBeats(this, m_pConfig); - addPageWidget (m_wbeats); - m_wkey = new DlgPrefKey(this, m_pConfig); - addPageWidget(m_wkey); +#ifdef __BROADCAST__ + m_broadcastingPage = new DlgPrefBroadcast(this, + pSettingsManager->broadcastSettings()); + addPageWidget(m_broadcastingPage); #endif - m_wreplaygain = new DlgPrefReplayGain(this, m_pConfig); - addPageWidget(m_wreplaygain); - m_wrecord = new DlgPrefRecord(this, m_pConfig); - addPageWidget(m_wrecord); -#ifdef __BROADCAST__ - m_wbroadcast = new DlgPrefBroadcast(this, - pSettingsManager->broadcastSettings()); - addPageWidget(m_wbroadcast); + m_recordingPage = new DlgPrefRecord(this, m_pConfig); + addPageWidget(m_recordingPage); + +#ifdef __VAMP__ + m_beatgridPage = new DlgPrefBeats(this, m_pConfig); + addPageWidget (m_beatgridPage); + m_musicalKeyPage = new DlgPrefKey(this, m_pConfig); + addPageWidget(m_musicalKeyPage); #endif + + m_replayGainPage = new DlgPrefReplayGain(this, m_pConfig); + addPageWidget(m_replayGainPage); + #ifdef __MODPLUG__ - m_wmodplug = new DlgPrefModplug(this, m_pConfig); - addPageWidget(m_wmodplug); + m_modplugPage = new DlgPrefModplug(this, m_pConfig); + addPageWidget(m_modplugPage); #endif - m_wcontrollers = new DlgPrefControllers(this, m_pConfig, controllers, - m_pControllerTreeItem); - addPageWidget(m_wcontrollers); // Install event handler to generate closeDlg signal installEventFilter(this); @@ -156,7 +165,7 @@ DlgPreferences::~DlgPreferences() { // because otherwise the QStackedWidget will delete the controller // preference pages (and DlgPrefControllers dynamically generates and // deletes them). - delete m_wcontrollers; + delete m_controllersPage; } void DlgPreferences::createIcons() { @@ -166,18 +175,6 @@ void DlgPreferences::createIcons() { m_pSoundButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pSoundButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pControlsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pControlsButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); - m_pControlsButton->setText(0, tr("Interface")); - m_pControlsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pControlsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - - m_pWaveformButton = new QTreeWidgetItem(m_pControlsButton, QTreeWidgetItem::Type); - m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); - m_pWaveformButton->setText(0, tr("Waveforms")); - m_pWaveformButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pWaveformButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pLibraryButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pLibraryButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_library.png")); m_pLibraryButton->setText(0, tr("Library")); @@ -190,11 +187,41 @@ void DlgPreferences::createIcons() { m_pControllerTreeItem->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pControllerTreeItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pAutoDJButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_autodj.png")); - m_pAutoDJButton->setText(0, tr("Auto DJ")); - m_pAutoDJButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pAutoDJButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#ifdef __VINYLCONTROL__ + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version + //instead... + m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); + m_pVinylControlButton->setText(0, tr("Vinyl Control")); + m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#else + m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version + //instead... + m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); + m_pVinylControlButton->setText(0, tr("Vinyl Control")); + m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#endif + + m_pInterfaceButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pInterfaceButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_interface.png")); + m_pInterfaceButton->setText(0, tr("Interface")); + m_pInterfaceButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pInterfaceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + m_pWaveformButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pWaveformButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_waveforms.png")); + m_pWaveformButton->setText(0, tr("Waveforms")); + m_pWaveformButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pWaveformButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + + m_pDecksButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pDecksButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_decks.png")); + m_pDecksButton->setText(0, tr("Decks")); + m_pDecksButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pDecksButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); m_pEqButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pEqButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_equalizers.png")); @@ -202,6 +229,12 @@ void DlgPreferences::createIcons() { m_pEqButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pEqButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pCrossfaderButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pCrossfaderButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_crossfader.png")); + m_pCrossfaderButton->setText(0, tr("Crossfader")); + m_pCrossfaderButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pCrossfaderButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + // TODO: Re-enable the effects pane when it does something useful. //m_pEffectsButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); //m_pEffectsButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_effects.png")); @@ -209,11 +242,19 @@ void DlgPreferences::createIcons() { //m_pEffectsButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); //m_pEffectsButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - m_pCrossfaderButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pCrossfaderButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_crossfader.png")); - m_pCrossfaderButton->setText(0, tr("Crossfader")); - m_pCrossfaderButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pCrossfaderButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + m_pAutoDJButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pAutoDJButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_autodj.png")); + m_pAutoDJButton->setText(0, tr("Auto DJ")); + m_pAutoDJButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pAutoDJButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + +#ifdef __BROADCAST__ + m_pBroadcastButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); + m_pBroadcastButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_broadcast.png")); + m_pBroadcastButton->setText(0, tr("Live Broadcasting")); + m_pBroadcastButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); + m_pBroadcastButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); +#endif m_pRecordingButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pRecordingButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_recording.png")); @@ -241,32 +282,6 @@ void DlgPreferences::createIcons() { m_pReplayGainButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); m_pReplayGainButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#ifdef __VINYLCONTROL__ - m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version - //instead... - m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); - m_pVinylControlButton->setText(0, tr("Vinyl Control")); - m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#else - m_pVinylControlButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - //QT screws up my nice vinyl svg for some reason, so we'll use a PNG version - //instead... - m_pVinylControlButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_vinyl.png")); - m_pVinylControlButton->setText(0, tr("Vinyl Control")); - m_pVinylControlButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pVinylControlButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif - -#ifdef __BROADCAST__ - m_pBroadcastButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); - m_pBroadcastButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_broadcast.png")); - m_pBroadcastButton->setText(0, tr("Live Broadcasting")); - m_pBroadcastButton->setTextAlignment(0, Qt::AlignLeft | Qt::AlignVCenter); - m_pBroadcastButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); -#endif - #ifdef __MODPLUG__ m_pModplugButton = new QTreeWidgetItem(contentsTreeWidget, QTreeWidgetItem::Type); m_pModplugButton->setIcon(0, QIcon(":/images/preferences/ic_preferences_modplug.png")); @@ -285,52 +300,54 @@ void DlgPreferences::changePage(QTreeWidgetItem* current, QTreeWidgetItem* previ current = previous; if (current == m_pSoundButton) { - switchToPage(m_wsound); + switchToPage(m_soundPage); } else if (current == m_pLibraryButton) { - switchToPage(m_wlibrary); - } else if (current == m_pControlsButton) { - switchToPage(m_wcontrols); - } else if (current == m_pWaveformButton) { - switchToPage(m_wwaveform); - } else if (current == m_pAutoDJButton) { - switchToPage(m_wautodj); - } else if (current == m_pEqButton) { - switchToPage(m_weq); - // TODO: Re-enable the effects preferences pane when it does something useful. - //} else if (current == m_pEffectsButton) { - // switchToPage(m_weffects); - } else if (current == m_pCrossfaderButton) { - switchToPage(m_wcrossfader); - } else if (current == m_pRecordingButton) { - switchToPage(m_wrecord); - } else if (current == m_pBeatDetectionButton) { - switchToPage(m_wbeats); - } else if (current == m_pKeyDetectionButton) { - switchToPage(m_wkey); - } else if (current == m_pReplayGainButton) { - switchToPage(m_wreplaygain); + switchToPage(m_libraryPage); + } else if (m_controllersPage->handleTreeItemClick(current)) { + // Do nothing. m_controllersPage handled this click. #ifdef __VINYLCONTROL__ } else if (current == m_pVinylControlButton) { - switchToPage(m_wvinylcontrol); + switchToPage(m_vinylControlPage); #else } else if (current == m_pVinylControlButton) { switchToPage(m_wnovinylcontrol); #endif + } else if (current == m_pInterfaceButton) { + switchToPage(m_interfacePage); + } else if (current == m_pWaveformButton) { + switchToPage(m_waveformPage); + } else if (current == m_pDecksButton) { + switchToPage(m_deckPage); + } else if (current == m_pEqButton) { + switchToPage(m_equalizerPage); + } else if (current == m_pCrossfaderButton) { + switchToPage(m_crossfaderPage); + // TODO: Re-enable the effects preferences pane when it does something useful. + //} else if (current == m_pEffectsButton) { + // switchToPage(m_effectsPage); + } else if (current == m_pAutoDJButton) { + switchToPage(m_autoDjPage); #ifdef __BROADCAST__ } else if (current == m_pBroadcastButton) { - switchToPage(m_wbroadcast); + switchToPage(m_broadcastingPage); #endif + } else if (current == m_pRecordingButton) { + switchToPage(m_recordingPage); + } else if (current == m_pBeatDetectionButton) { + switchToPage(m_beatgridPage); + } else if (current == m_pKeyDetectionButton) { + switchToPage(m_musicalKeyPage); + } else if (current == m_pReplayGainButton) { + switchToPage(m_replayGainPage); #ifdef __MODPLUG__ } else if (current == m_pModplugButton) { - switchToPage(m_wmodplug); + switchToPage(m_modplugPage); #endif - } else if (m_wcontrollers->handleTreeItemClick(current)) { - // Do nothing. m_wcontrollers handled this click. } } void DlgPreferences::showSoundHardwarePage() { - switchToPage(m_wsound); + switchToPage(m_soundPage); contentsTreeWidget->setCurrentItem(m_pSoundButton); } diff --git a/src/preferences/dialog/dlgpreferences.h b/src/preferences/dialog/dlgpreferences.h index 5b9c00974408..94306a34ea2f 100644 --- a/src/preferences/dialog/dlgpreferences.h +++ b/src/preferences/dialog/dlgpreferences.h @@ -32,21 +32,22 @@ class MixxxMainWindow; class SoundManager; class DlgPrefSound; +class DlgPrefLibrary; class DlgPrefController; class DlgPrefControllers; -class DlgPrefLibrary; -class DlgPrefControls; +class DlgPrefVinyl; +class DlgPrefNoVinyl; +class DlgPrefInterface; class DlgPrefWaveform; -class DlgPrefAutoDJ; +class DlgPrefDeck; class DlgPrefEQ; class DlgPrefEffects; class DlgPrefCrossfader; +class DlgPrefAutoDJ; +class DlgPrefBroadcast; class DlgPrefRecord; -class DlgPrefKey; class DlgPrefBeats; -class DlgPrefVinyl; -class DlgPrefNoVinyl; -class DlgPrefBroadcast; +class DlgPrefKey; class DlgPrefReplayGain; class ControllerManager; class EffectsManager; @@ -101,45 +102,47 @@ class DlgPreferences : public QDialog, public Ui::DlgPreferencesDlg { QStringList m_geometry; UserSettingsPointer m_pConfig; - DlgPrefSound* m_wsound; - DlgPrefLibrary* m_wlibrary; - DlgPrefControllers *m_wcontrollers; - DlgPrefControls* m_wcontrols; - DlgPrefWaveform* m_wwaveform; - DlgPrefAutoDJ* m_wautodj; - DlgPrefEQ* m_weq; + DlgPrefSound* m_soundPage; + DlgPrefLibrary* m_libraryPage; + DlgPrefControllers *m_controllersPage; + DlgPrefVinyl* m_vinylControlPage; + DlgPrefNoVinyl* m_noVinylControlPage; + DlgPrefInterface* m_interfacePage; + DlgPrefWaveform* m_waveformPage; + DlgPrefDeck* m_deckPage; + DlgPrefEQ* m_equalizerPage; + DlgPrefCrossfader* m_crossfaderPage; //TODO: Re-enable the effects pane when it does something useful. - //DlgPrefEffects* m_weffects; - DlgPrefCrossfader* m_wcrossfader; - DlgPrefRecord* m_wrecord; - DlgPrefKey* m_wkey; - DlgPrefBeats* m_wbeats; - DlgPrefVinyl* m_wvinylcontrol; - DlgPrefNoVinyl* m_wnovinylcontrol; - DlgPrefBroadcast* m_wbroadcast; - DlgPrefReplayGain* m_wreplaygain; + //DlgPrefEffects* m_effectsPage; + DlgPrefAutoDJ* m_autoDjPage; + DlgPrefBroadcast* m_broadcastingPage; + DlgPrefRecord* m_recordingPage; + DlgPrefBeats* m_beatgridPage; + DlgPrefKey* m_musicalKeyPage; + DlgPrefReplayGain* m_replayGainPage; #ifdef __MODPLUG__ - DlgPrefModplug* m_wmodplug; + DlgPrefModplug* m_modplugPage; #endif QTreeWidgetItem* m_pSoundButton; QTreeWidgetItem* m_pLibraryButton; - QTreeWidgetItem* m_pControlsButton; + QTreeWidgetItem* m_pControllerTreeItem; + QTreeWidgetItem* m_pVinylControlButton; + QTreeWidgetItem* m_pInterfaceButton; QTreeWidgetItem* m_pWaveformButton; - QTreeWidgetItem* m_pAutoDJButton; + QTreeWidgetItem* m_pDecksButton; QTreeWidgetItem* m_pEqButton; - //QTreeWidgetItem* m_pEffectsButton; QTreeWidgetItem* m_pCrossfaderButton; + //QTreeWidgetItem* m_pEffectsButton; + QTreeWidgetItem* m_pAutoDJButton; + QTreeWidgetItem* m_pBroadcastButton; QTreeWidgetItem* m_pRecordingButton; QTreeWidgetItem* m_pBeatDetectionButton; QTreeWidgetItem* m_pKeyDetectionButton; - QTreeWidgetItem* m_pVinylControlButton; - QTreeWidgetItem* m_pBroadcastButton; QTreeWidgetItem* m_pReplayGainButton; #ifdef __MODPLUG__ QTreeWidgetItem* m_pModplugButton; #endif - QTreeWidgetItem* m_pControllerTreeItem; QSize m_pageSizeHint; diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp new file mode 100644 index 000000000000..0ff6c729d163 --- /dev/null +++ b/src/preferences/dialog/dlgprefinterface.cpp @@ -0,0 +1,434 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "preferences/dialog/dlgprefinterface.h" +#include "preferences/usersettings.h" +#include "control/controlobject.h" +#include "control/controlproxy.h" +#include "skin/skinloader.h" +#include "skin/legacyskinparser.h" +#include "control/controlobject.h" +#include "mixxx.h" +#include "util/screensaver.h" +#include "defs_urls.h" +#include "util/autohidpi.h" + +DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx, + SkinLoader* pSkinLoader, + UserSettingsPointer pConfig) + : DlgPreferencePage(parent), + m_pConfig(pConfig), + m_mixxx(mixxx), + m_pSkinLoader(pSkinLoader), + m_dScaleFactorAuto(1.0), + m_bUseAutoScaleFactor(false), + m_dScaleFactor(1.0), + m_bStartWithFullScreen(false), + m_bRebootMixxxView(false) { + setupUi(this); + + // + // Locale setting + // + + // Iterate through the available locales and add them to the combobox + // Borrowed following snippet from http://qt-project.org/wiki/How_to_create_a_multi_language_application + QString translationsFolder = m_pConfig->getResourcePath() + "translations/"; + QString currentLocale = pConfig->getValueString(ConfigKey("[Config]", "Locale")); + + QDir translationsDir(translationsFolder); + QStringList fileNames = translationsDir.entryList(QStringList("mixxx_*.qm")); + fileNames.push_back("mixxx_en_US.qm"); // add source language as a fake value + + bool indexFlag = false; // it'll indicate if the selected index changed. + for (int i = 0; i < fileNames.size(); ++i) { + // Extract locale from filename + QString locale = fileNames[i]; + locale.truncate(locale.lastIndexOf('.')); + locale.remove(0, locale.indexOf('_') + 1); + QLocale qlocale = QLocale(locale); + + QString lang = QLocale::languageToString(qlocale.language()); + QString country = QLocale::countryToString(qlocale.country()); + if (lang == "C") { // Ugly hack to remove the non-resolving locales + continue; + } + lang = QString("%1 (%2)").arg(lang).arg(country); + ComboBoxLocale->addItem(lang, locale); // locale as userdata (for storing to config) + if (locale == currentLocale) { // Set the currently selected locale + ComboBoxLocale->setCurrentIndex(ComboBoxLocale->count() - 1); + indexFlag = true; + } + } + ComboBoxLocale->model()->sort(0); // Sort languages list + + ComboBoxLocale->insertItem(0, "System", ""); // System default locale - insert at the top + if (!indexFlag) { // if selectedIndex didn't change - select system default + ComboBoxLocale->setCurrentIndex(0); + } + connect(ComboBoxLocale, SIGNAL(activated(int)), + this, SLOT(slotSetLocale(int))); + + // + // Skin configurations + // + QString warningString = "" + + tr("The minimum size of the selected skin is bigger than your screen resolution."); + warningLabel->setText(warningString); + + ComboBoxSkinconf->clear(); + + QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths(); + QList skins; + for (QDir& dir : skinSearchPaths) { + dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); + skins.append(dir.entryInfoList()); + } + + QString configuredSkinPath = m_pSkinLoader->getConfiguredSkinPath(); + QIcon sizeWarningIcon(":/images/preferences/ic_preferences_warning.png"); + int index = 0; + for (const QFileInfo& skinInfo : skins) { + bool size_ok = checkSkinResolution(skinInfo.absoluteFilePath()); + if (size_ok) { + ComboBoxSkinconf->insertItem(index, skinInfo.fileName()); + } else { + ComboBoxSkinconf->insertItem(index, sizeWarningIcon, skinInfo.fileName()); + } + + if (skinInfo.absoluteFilePath() == configuredSkinPath) { + m_skin = skinInfo.fileName(); + ComboBoxSkinconf->setCurrentIndex(index); + if (size_ok) { + warningLabel->hide(); + } else { + warningLabel->show(); + } + } + index++; + } + + connect(ComboBoxSkinconf, SIGNAL(activated(int)), this, SLOT(slotSetSkin(int))); + connect(ComboBoxSchemeconf, SIGNAL(activated(int)), this, SLOT(slotSetScheme(int))); + + slotUpdateSchemes(); + + +#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) + AutoHiDpi autoHiDpi; + m_dScaleFactorAuto = autoHiDpi.getScaleFactor(); + double scaleFactor = m_dScaleFactorAuto; + if (scaleFactor > 0) { + // we got a valid auto scale factor + bool scaleFactorAuto = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactorAuto"), true); + checkBoxScaleFactorAuto->setChecked(scaleFactorAuto); + if (scaleFactorAuto) { + comboBoxScaleFactor->setEnabled(false); + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); + } else { + scaleFactor = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), 1.0); + } + } else { + checkBoxScaleFactorAuto->setEnabled(false); + scaleFactor = m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), 1.0); + } + connect(checkBoxScaleFactorAuto, SIGNAL(toggled(bool)), + this, SLOT(slotSetScaleFactorAuto(bool))); + + //: Entry of the HiDPI scale combo box. %1 is the scale factor in percent + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(50), 0.5); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(100), 1); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(200), 2); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(300), 3); + comboBoxScaleFactor->addItem(QString(tr("%1 %")).arg(400), 4); + int i; + for (i = 0; i < comboBoxScaleFactor->count(); ++i) { + if (scaleFactor == comboBoxScaleFactor->itemData(i)) { + comboBoxScaleFactor->setCurrentIndex(i); + break; + } + } + if (i == comboBoxScaleFactor->count()) { + // no default scale, add custom scale + comboBoxScaleFactor->addItem( + QString(tr("%1 % (Experimental)")).arg(scaleFactor * 100), scaleFactor); + comboBoxScaleFactor->setCurrentIndex(i); + } + connect(comboBoxScaleFactor, SIGNAL(activated(int)), + this, SLOT(slotSetScaleFactor(int))); +#else + checkBoxScaleFactorAuto->hide(); + comboBoxScaleFactor->hide(); + labelScaleFactor->hide(); +#endif + + + // + // Start in fullscreen mode + // + checkBoxStartFullScreen->setChecked(m_pConfig->getValueString( + ConfigKey("[Config]", "StartInFullscreen")).toInt()==1); + + // + // Screensaver mode + // + comboBoxScreensaver->clear(); + comboBoxScreensaver->addItem(tr("Allow screensaver to run"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_OFF)); + comboBoxScreensaver->addItem(tr("Prevent screensaver from running"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON)); + comboBoxScreensaver->addItem(tr("Prevent screensaver while playing"), + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON_PLAY)); + + int inhibitsettings = static_cast(mixxx->getInhibitScreensaver()); + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); + + // + // Tooltip configuration + // + + // Initialize checkboxes to match config + loadTooltipPreferenceFromConfig(); + slotSetTooltips(); // Update disabled status of "only library" checkbox + connect(buttonGroupTooltips, SIGNAL(buttonClicked(QAbstractButton*)), + this, SLOT(slotSetTooltips())); + + slotUpdate(); +} + +DlgPrefInterface::~DlgPrefInterface() { +} + +void DlgPrefInterface::slotUpdateSchemes() { + // Since this involves opening a file we won't do this as part of regular slotUpdate + QList schlist = LegacySkinParser::getSchemeList( + m_pSkinLoader->getSkinPath(m_skin)); + + ComboBoxSchemeconf->clear(); + + if (schlist.size() == 0) { + ComboBoxSchemeconf->setEnabled(false); + ComboBoxSchemeconf->addItem(tr("This skin does not support color schemes", 0)); + ComboBoxSchemeconf->setCurrentIndex(0); + } else { + ComboBoxSchemeconf->setEnabled(true); + QString selectedScheme = m_pConfig->getValueString(ConfigKey("[Config]", "Scheme")); + for (int i = 0; i < schlist.size(); i++) { + ComboBoxSchemeconf->addItem(schlist[i]); + + if (schlist[i] == selectedScheme) { + ComboBoxSchemeconf->setCurrentIndex(i); + } + } + } +} + +void DlgPrefInterface::slotUpdate() { + m_skinOnUpdate = m_pConfig->getValueString(ConfigKey("[Config]", "ResizableSkin")); + ComboBoxSkinconf->setCurrentIndex(ComboBoxSkinconf->findText(m_skinOnUpdate)); + slotUpdateSchemes(); + m_bRebootMixxxView = false; + + m_localeOnUpdate = m_pConfig->getValueString(ConfigKey("[Config]", "Locale")); + ComboBoxLocale->setCurrentIndex(ComboBoxLocale->findData(m_localeOnUpdate)); + + checkBoxScaleFactorAuto->setChecked(m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor)); + + comboBoxScaleFactor->setCurrentIndex(comboBoxScaleFactor->findData( + m_pConfig->getValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto))); + + checkBoxStartFullScreen->setChecked(m_pConfig->getValue( + ConfigKey("[Config]", "StartInFullscreen"), m_bStartWithFullScreen)); + + loadTooltipPreferenceFromConfig(); + + int inhibitsettings = static_cast(m_mixxx->getInhibitScreensaver()); + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData(inhibitsettings)); +} + +void DlgPrefInterface::slotResetToDefaults() { + int index = ComboBoxSkinconf->findText(m_pSkinLoader->getDefaultSkinName()); + ComboBoxSkinconf->setCurrentIndex(index); + slotSetSkin(index); + + // Use System locale + ComboBoxLocale->setCurrentIndex(0); + + // Default to normal size widgets + comboBoxScaleFactor->setCurrentIndex(1); // 100 % + if (m_dScaleFactorAuto > 0) { + checkBoxScaleFactorAuto->setChecked(true); + } + + // Don't start in full screen. + checkBoxStartFullScreen->setChecked(false); + + // Inhibit the screensaver + comboBoxScreensaver->setCurrentIndex(comboBoxScreensaver->findData( + static_cast(mixxx::ScreenSaverPreference::PREVENT_ON))); + + // Tooltips on everywhere. + radioButtonTooltipsLibraryAndSkin->setChecked(true); +} + +void DlgPrefInterface::slotSetLocale(int pos) { + m_locale = ComboBoxLocale->itemData(pos).toString(); +} + +void DlgPrefInterface::slotSetScaleFactor(int index) { + double newScaleFactor = comboBoxScaleFactor->itemData(index).toDouble(); + if (m_dScaleFactor != newScaleFactor) { + m_dScaleFactor = newScaleFactor; + m_bRebootMixxxView = true; + } +} + +void DlgPrefInterface::slotSetScaleFactorAuto(bool newValue) { + if (newValue) { + if (!m_bUseAutoScaleFactor) { + m_bRebootMixxxView = true; + } + } else { + slotSetScaleFactor(comboBoxScaleFactor->currentIndex()); + } + + m_bUseAutoScaleFactor = newValue; + comboBoxScaleFactor->setEnabled(!newValue); +} + +void DlgPrefInterface::slotSetTooltips() { + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ON; + if (radioButtonTooltipsOff->isChecked()) { + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_OFF; + } else if (radioButtonTooltipsLibrary->isChecked()) { + m_tooltipMode = mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY; + } +} + +void DlgPrefInterface::notifyRebootNecessary() { + // make the fact that you have to restart mixxx more obvious + QMessageBox::information( + this, tr("Information"), + tr("Mixxx must be restarted before the new locale setting will take effect.")); +} + +void DlgPrefInterface::slotSetScheme(int) { + QString newScheme = ComboBoxSchemeconf->currentText(); + if (m_colorScheme != newScheme) { + m_colorScheme = newScheme; + m_bRebootMixxxView = true; + } +} + +void DlgPrefInterface::slotSetSkin(int) { + QString newSkin = ComboBoxSkinconf->currentText(); + if (newSkin != m_skin) { + m_skin = newSkin; + m_bRebootMixxxView = newSkin != m_skinOnUpdate; + checkSkinResolution(ComboBoxSkinconf->currentText()) + ? warningLabel->hide() : warningLabel->show(); + slotUpdateSchemes(); + } +} + +void DlgPrefInterface::slotApply() { + m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), m_skin); + m_pConfig->set(ConfigKey("[Config]", "Scheme"), m_colorScheme); + + m_pConfig->set(ConfigKey("[Config]", "Locale"), m_locale); + + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactorAuto"), m_bUseAutoScaleFactor); + if (m_bUseAutoScaleFactor) { + m_pConfig->setValue( + ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactorAuto); + } else { + m_pConfig->setValue(ConfigKey("[Config]", "ScaleFactor"), m_dScaleFactor); + } + + m_pConfig->set(ConfigKey("[Config]", "StartInFullscreen"), + ConfigValue(checkBoxStartFullScreen->isChecked())); + + m_mixxx->setToolTipsCfg(m_tooltipMode); + + // screensaver mode update + int screensaverComboBoxState = comboBoxScreensaver->itemData( + comboBoxScreensaver->currentIndex()).toInt(); + int screensaverConfiguredState = static_cast(m_mixxx->getInhibitScreensaver()); + if (screensaverComboBoxState != screensaverConfiguredState) { + m_mixxx->setInhibitScreensaver( + static_cast(screensaverComboBoxState)); + } + + if (m_locale != m_localeOnUpdate) { + notifyRebootNecessary(); + // hack to prevent showing the notification when pressing "Okay" after "Apply" + m_localeOnUpdate = m_locale; + } + + if (m_bRebootMixxxView) { + m_mixxx->rebootMixxxView(); + // Allow switching skins multiple times without closing the dialog + m_skinOnUpdate = m_skin; + } + m_bRebootMixxxView = false; +} + +//Returns TRUE if skin fits to screen resolution, FALSE otherwise +bool DlgPrefInterface::checkSkinResolution(QString skin) +{ + int screenWidth = QApplication::desktop()->width(); + int screenHeight = QApplication::desktop()->height(); + + const QRegExp min_size_regex("(\\d+), *(\\d+)<"); + QFile skinfile(skin + "/skin.xml"); + if (skinfile.open(QFile::ReadOnly | QFile::Text)) { + QTextStream in(&skinfile); + bool found_size = false; + while (!in.atEnd()) { + if (min_size_regex.indexIn(in.readLine()) != -1) { + found_size = true; + break; + } + } + if (found_size) { + return !(min_size_regex.cap(1).toInt() > screenWidth || + min_size_regex.cap(2).toInt() > screenHeight); + } + } + + // If regex failed, fall back to skin name parsing. + QString skinName = skin.left(skin.indexOf(QRegExp("\\d"))); + QString resName = skin.right(skin.count()-skinName.count()); + QString res = resName.left(resName.lastIndexOf(QRegExp("\\d"))+1); + QString skinWidth = res.left(res.indexOf("x")); + QString skinHeight = res.right(res.count()-skinWidth.count()-1); + return !(skinWidth.toInt() > screenWidth || skinHeight.toInt() > screenHeight); +} + +void DlgPrefInterface::loadTooltipPreferenceFromConfig() { + mixxx::TooltipsPreference configTooltips = m_mixxx->getToolTipsCfg(); + switch (configTooltips) { + case mixxx::TooltipsPreference::TOOLTIPS_OFF: + radioButtonTooltipsOff->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ON: + radioButtonTooltipsLibraryAndSkin->setChecked(true); + break; + case mixxx::TooltipsPreference::TOOLTIPS_ONLY_IN_LIBRARY: + radioButtonTooltipsLibrary->setChecked(true); + break; + } + m_tooltipMode = configTooltips; +} diff --git a/src/preferences/dialog/dlgprefcontrols.h b/src/preferences/dialog/dlgprefinterface.h similarity index 54% rename from src/preferences/dialog/dlgprefcontrols.h rename to src/preferences/dialog/dlgprefinterface.h index 1b9292723be1..21e53f99a53a 100644 --- a/src/preferences/dialog/dlgprefcontrols.h +++ b/src/preferences/dialog/dlgprefinterface.h @@ -20,7 +20,8 @@ #include -#include "preferences/dialog/ui_dlgprefcontrolsdlg.h" +#include "preferences/constants.h" +#include "preferences/dialog/ui_dlgprefinterfacedlg.h" #include "preferences/usersettings.h" #include "preferences/dlgpreferencepage.h" @@ -31,65 +32,33 @@ class PlayerManager; class MixxxMainWindow; class ControlObject; -namespace TrackTime { - enum class DisplayMode { - Elapsed, - Remaining, - ElapsedAndRemaining, - }; -} - /** *@author Tue & Ken Haste Andersen */ -class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg { +class DlgPrefInterface : public DlgPreferencePage, public Ui::DlgPrefControlsDlg { Q_OBJECT public: - DlgPrefControls(QWidget *parent, MixxxMainWindow *mixxx, - SkinLoader* pSkinLoader, PlayerManager* pPlayerManager, - UserSettingsPointer pConfig); - virtual ~DlgPrefControls(); + DlgPrefInterface(QWidget *parent, MixxxMainWindow *mixxx, + SkinLoader* pSkinLoader, UserSettingsPointer pConfig); + virtual ~DlgPrefInterface(); public slots: void slotUpdate(); void slotApply(); void slotResetToDefaults(); - void slotSetRateRange(int pos); - void slotSetRateRangePercent(int rateRangePercent); - void slotSetRateDir(bool invert); - void slotSetRateDir(int pos); - void slotKeyLockMode(QAbstractButton*); - void slotKeyUnlockMode(QAbstractButton*); - void slotSetRateTempLeft(double); - void slotSetRateTempRight(double); - void slotSetRatePermLeft(double); - void slotSetRatePermRight(double); void slotSetTooltips(); void slotSetSkin(int); void slotSetScheme(int); void slotUpdateSchemes(); - void slotSetTrackTimeDisplay(QAbstractButton*); - void slotSetTrackTimeDisplay(double); - void slotSetAllowTrackLoadToPlayingDeck(bool); - void slotSetCueDefault(int); - void slotSetCueRecall(bool); - void slotSetRateRamp(bool); - void slotSetRateRampSensitivity(int); void slotSetLocale(int); void slotSetScaleFactor(int index); void slotSetScaleFactorAuto(bool checked); - void slotSetStartInFullScreen(bool b); - - void slotNumDecksChanged(double); - void slotNumSamplersChanged(double); - - void slotUpdateSpeedAutoReset(bool); - void slotUpdatePitchAutoReset(bool); private: void notifyRebootNecessary(); + void loadTooltipPreferenceFromConfig(); bool checkSkinResolution(QString skin); // Because the CueDefault list is out of order, we have to set the combo @@ -100,26 +69,23 @@ class DlgPrefControls : public DlgPreferencePage, public Ui::DlgPrefControlsDlg UserSettingsPointer m_pConfig; ControlObject* m_pControlTrackTimeDisplay; - ControlProxy* m_pNumDecks; - ControlProxy* m_pNumSamplers; - QList m_cueControls; - QList m_rateControls; - QList m_rateDirControls; - QList m_rateRangeControls; - QList m_keylockModeControls; - QList m_keyunlockModeControls; MixxxMainWindow *m_mixxx; SkinLoader* m_pSkinLoader; PlayerManager* m_pPlayerManager; - int m_iNumConfiguredDecks; - int m_iNumConfiguredSamplers; - - bool m_speedAutoReset; - bool m_pitchAutoReset; - int m_keylockMode; - int m_keyunlockMode; - double m_autoScaleFactor; + QString m_skin; + QString m_skinOnUpdate; + QString m_colorScheme; + QString m_locale; + QString m_localeOnUpdate; + mixxx::TooltipsPreference m_tooltipMode; + double m_dScaleFactorAuto; + bool m_bUseAutoScaleFactor; + double m_dScaleFactor; + bool m_bStartWithFullScreen; + mixxx::ScreenSaverPreference m_screensaverMode; + + bool m_bRebootMixxxView; }; #endif diff --git a/src/preferences/dialog/dlgprefinterfacedlg.ui b/src/preferences/dialog/dlgprefinterfacedlg.ui new file mode 100644 index 000000000000..ebc2f23977fe --- /dev/null +++ b/src/preferences/dialog/dlgprefinterfacedlg.ui @@ -0,0 +1,255 @@ + + + DlgPrefControlsDlg + + + + 0 + 0 + 562 + 723 + + + + Interface Preferences + + + + + + Interface options + + + + + + true + + + + + + Skin + + + false + + + ComboBoxSkinconf + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Qt::AlignJustify|Qt::AlignVCenter + + + + + + + true + + + + + + Color scheme + + + false + + + ComboBoxSchemeconf + + + + + + + + 0 + 0 + + + + + + + Select from different color schemes of a skin if available. + + + + + + + Locale + + + ComboBoxLocale + + + + + + + Locales determine country and language specific settings. + + + + + + + Full-screen mode + + + checkBoxStartFullScreen + + + + + + + Start in full-screen mode + + + + + + + true + + + + + + Tool tips + + + false + + + radioButtonTooltipsOff + + + + + + + + + Off + + + buttonGroupTooltips + + + + + + + Library only + + + buttonGroupTooltips + + + + + + + Library and Skin + + + buttonGroupTooltips + + + + + + + + + HiDPI / Retina scaling + + + checkBoxScaleFactorAuto + + + + + + + Change the size of text, buttons, and other items. + + + + + + + Adopt scale factor from the operating system + + + Auto Scaling + + + + + + + Screen saver + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + ComboBoxSkinconf + ComboBoxSchemeconf + ComboBoxLocale + checkBoxStartFullScreen + radioButtonTooltipsOff + radioButtonTooltipsLibrary + radioButtonTooltipsLibraryAndSkin + + + + + diff --git a/src/skin/skinloader.cpp b/src/skin/skinloader.cpp index efed15edeb3c..560d85d5e07c 100644 --- a/src/skin/skinloader.cpp +++ b/src/skin/skinloader.cpp @@ -28,7 +28,7 @@ SkinLoader::~SkinLoader() { LegacySkinParser::freeChannelStrings(); } -QList SkinLoader::getSkinSearchPaths() { +QList SkinLoader::getSkinSearchPaths() const { QList searchPaths; // If we can't find the skins folder then we can't load a skin at all. This // is a critical error in the user's Mixxx installation. @@ -47,7 +47,16 @@ QList SkinLoader::getSkinSearchPaths() { return searchPaths; } -QString SkinLoader::getConfiguredSkinPath() { +QString SkinLoader::getSkinPath(const QString& skinName) const { + for (QDir dir : getSkinSearchPaths()) { + if (dir.cd(skinName)) { + return dir.absolutePath(); + } + } + return QString(); +} + +QString SkinLoader::getConfiguredSkinPath() const { QString configSkin = m_pConfig->getValueString(ConfigKey("[Config]", "ResizableSkin")); // If we don't have a skin defined, we might be migrating from 1.11 and @@ -62,18 +71,16 @@ QString SkinLoader::getConfiguredSkinPath() { if (configSkin.isEmpty()) { configSkin = getDefaultSkinName(); } - m_pConfig->set(ConfigKey("[Config]", "ResizableSkin"), - ConfigValue(configSkin)); } - QList skinSearchPaths = getSkinSearchPaths(); - foreach (QDir dir, skinSearchPaths) { - if (dir.cd(configSkin)) { - return dir.absolutePath(); - } - } + QString skinPath = getSkinPath(configSkin); - return QString(); + if (skinPath.isEmpty()) { + skinPath = getSkinPath(getDefaultSkinName()); + qDebug() << "Could not find the user's configured skin." + << "Falling back on the default skin:" << skinPath; + } + return skinPath; } QString SkinLoader::getDefaultSkinName() const { @@ -85,42 +92,17 @@ QString SkinLoader::getDefaultSkinName() const { } } -QString SkinLoader::getDefaultSkinPath() { - // Fall back to default skin. - QString defaultSkin = getDefaultSkinName(); - - QList skinSearchPaths = getSkinSearchPaths(); - foreach (QDir dir, skinSearchPaths) { - if (dir.cd(defaultSkin)) { - return dir.absolutePath(); - } - } - - return QString(); -} - -QString SkinLoader::getSkinPath() { +QWidget* SkinLoader::loadConfiguredSkin(QWidget* pParent, + KeyboardEventFilter* pKeyboard, + PlayerManager* pPlayerManager, + ControllerManager* pControllerManager, + Library* pLibrary, + VinylControlManager* pVCMan, + EffectsManager* pEffectsManager, + RecordingManager* pRecordingManager) { + ScopedTimer timer("SkinLoader::loadConfiguredSkin"); QString skinPath = getConfiguredSkinPath(); - if (skinPath.isEmpty()) { - skinPath = getDefaultSkinPath(); - qDebug() << "Could not find the user's configured skin." - << "Falling back on the default skin:" << skinPath; - } - return skinPath; -} - -QWidget* SkinLoader::loadDefaultSkin(QWidget* pParent, - KeyboardEventFilter* pKeyboard, - PlayerManager* pPlayerManager, - ControllerManager* pControllerManager, - Library* pLibrary, - VinylControlManager* pVCMan, - EffectsManager* pEffectsManager, - RecordingManager* pRecordingManager) { - ScopedTimer timer("SkinLoader::loadDefaultSkin"); - QString skinPath = getSkinPath(); - // If we don't have a skin path then fail. if (skinPath.isEmpty()) { return NULL; @@ -133,7 +115,7 @@ QWidget* SkinLoader::loadDefaultSkin(QWidget* pParent, } LaunchImage* SkinLoader::loadLaunchImage(QWidget* pParent) { - QString skinPath = getSkinPath(); + QString skinPath = getConfiguredSkinPath(); LegacySkinParser parser(m_pConfig); LaunchImage* pLaunchImage = parser.parseLaunchImage(skinPath, pParent); if (pLaunchImage == nullptr) { @@ -143,7 +125,7 @@ LaunchImage* SkinLoader::loadLaunchImage(QWidget* pParent) { return pLaunchImage; } -QString SkinLoader::pickResizableSkin(QString oldSkin) { +QString SkinLoader::pickResizableSkin(QString oldSkin) const { if (oldSkin.contains("latenight", Qt::CaseInsensitive)) { return "LateNight"; } diff --git a/src/skin/skinloader.h b/src/skin/skinloader.h index b6a20438b3c9..aa2aac4eeb19 100644 --- a/src/skin/skinloader.h +++ b/src/skin/skinloader.h @@ -21,25 +21,24 @@ class SkinLoader { SkinLoader(UserSettingsPointer pConfig); virtual ~SkinLoader(); - QWidget* loadDefaultSkin(QWidget* pParent, - KeyboardEventFilter* pKeyboard, - PlayerManager* pPlayerManager, - ControllerManager* pControllerManager, - Library* pLibrary, - VinylControlManager* pVCMan, - EffectsManager* pEffectsManager, - RecordingManager* pRecordingManager); + QWidget* loadConfiguredSkin(QWidget* pParent, + KeyboardEventFilter* pKeyboard, + PlayerManager* pPlayerManager, + ControllerManager* pControllerManager, + Library* pLibrary, + VinylControlManager* pVCMan, + EffectsManager* pEffectsManager, + RecordingManager* pRecordingManager); LaunchImage* loadLaunchImage(QWidget* pParent); - QString getSkinPath(); - QList getSkinSearchPaths(); + QString getSkinPath(const QString& skinName) const; + QString getConfiguredSkinPath() const; + QString getDefaultSkinName() const; + QList getSkinSearchPaths() const; private: - QString getConfiguredSkinPath(); - QString getDefaultSkinName() const; - QString getDefaultSkinPath(); - QString pickResizableSkin(QString oldSkin); + QString pickResizableSkin(QString oldSkin) const; UserSettingsPointer m_pConfig; }; diff --git a/src/test/golden_buffers/BasicProcessingTestPause b/src/test/golden_buffers/BasicProcessingTestPause index a320e637f831..87e8bc3013fc 100644 --- a/src/test/golden_buffers/BasicProcessingTestPause +++ b/src/test/golden_buffers/BasicProcessingTestPause @@ -1,512 +1,512 @@ -0.870045,0.870045 -0.861948,0.861948 -0.84856,0.84856 -0.830516,0.830516 -0.807968,0.807968 -0.781128,0.781128 -0.750002,0.750002 -0.714361,0.714361 -0.674919,0.674919 -0.631909,0.631909 -0.585666,0.585666 -0.53627,0.53627 -0.48376,0.48376 -0.428829,0.428829 -0.371728,0.371728 -0.312858,0.312858 -0.252449,0.252449 -0.190694,0.190694 -0.128185,0.128185 -0.0651973,0.0651973 -0.00217104,0.00217104 --0.0607714,-0.0607714 --0.122884,-0.122884 --0.184202,-0.184202 --0.244202,-0.244202 --0.302562,-0.302562 --0.35919,-0.35919 --0.413136,-0.413136 --0.464718,-0.464718 --0.513441,-0.513441 --0.559221,-0.559221 --0.601631,-0.601631 --0.640249,-0.640249 --0.675047,-0.675047 --0.706017,-0.706017 --0.733083,-0.733083 --0.755762,-0.755762 --0.773895,-0.773895 --0.787486,-0.787486 --0.796809,-0.796809 --0.801671,-0.801671 --0.802055,-0.802055 --0.797472,-0.797472 --0.788508,-0.788508 --0.77524,-0.77524 --0.757792,-0.757792 --0.736156,-0.736156 --0.710123,-0.710123 --0.680235,-0.680235 --0.646716,-0.646716 --0.609878,-0.609878 --0.569642,-0.569642 --0.526265,-0.526265 --0.480012,-0.480012 --0.431392,-0.431392 --0.380587,-0.380587 --0.327903,-0.327903 --0.273414,-0.273414 --0.21764,-0.21764 --0.16091,-0.16091 --0.103676,-0.103676 --0.0458157,-0.0458157 -0.011718,0.011718 -0.0691946,0.0691946 -0.125873,0.125873 -0.181664,0.181664 -0.236224,0.236224 -0.289052,0.289052 -0.340047,0.340047 -0.388933,0.388933 -0.435401,0.435401 -0.479455,0.479455 -0.520074,0.520074 -0.557805,0.557805 -0.592224,0.592224 -0.623193,0.623193 -0.650745,0.650745 -0.673931,0.673931 -0.693374,0.693374 -0.708899,0.708899 -0.720468,0.720468 -0.728001,0.728001 -0.730944,0.730944 -0.729875,0.729875 -0.724734,0.724734 -0.715748,0.715748 -0.702685,0.702685 -0.685463,0.685463 -0.664438,0.664438 -0.639922,0.639922 -0.611962,0.611962 -0.580754,0.580754 -0.546109,0.546109 -0.50857,0.50857 -0.468456,0.468456 -0.425962,0.425962 -0.381235,0.381235 -0.334466,0.334466 -0.285972,0.285972 -0.236228,0.236228 -0.185352,0.185352 -0.133802,0.133802 -0.0815226,0.0815226 -0.029146,0.029146 --0.0231653,-0.0231653 --0.0750298,-0.0750298 --0.126348,-0.126348 --0.176534,-0.176534 --0.225515,-0.225515 --0.27302,-0.27302 --0.318767,-0.318767 --0.362564,-0.362564 --0.403878,-0.403878 --0.442737,-0.442737 --0.478934,-0.478934 --0.512428,-0.512428 --0.542691,-0.542691 --0.569773,-0.569773 --0.593267,-0.593267 --0.6135,-0.6135 --0.630252,-0.630252 --0.643447,-0.643447 --0.652524,-0.652524 --0.65798,-0.65798 --0.659776,-0.659776 --0.65796,-0.65796 --0.652491,-0.652491 --0.642991,-0.642991 --0.629987,-0.629987 --0.613629,-0.613629 --0.593867,-0.593867 --0.571161,-0.571161 --0.544703,-0.544703 --0.515606,-0.515606 --0.48373,-0.48373 --0.449411,-0.449411 --0.412773,-0.412773 --0.373699,-0.373699 --0.332857,-0.332857 --0.290378,-0.290378 --0.246509,-0.246509 --0.201562,-0.201562 --0.15548,-0.15548 --0.108936,-0.108936 --0.0619791,-0.0619791 --0.0149186,-0.0149186 -0.0319385,0.0319385 -0.0783346,0.0783346 -0.124088,0.124088 -0.168852,0.168852 -0.212465,0.212465 -0.254686,0.254686 -0.295051,0.295051 -0.333589,0.333589 -0.370043,0.370043 -0.404261,0.404261 -0.436128,0.436128 -0.465016,0.465016 -0.491197,0.491197 -0.514512,0.514512 -0.534914,0.534914 -0.552138,0.552138 -0.566006,0.566006 -0.576491,0.576491 -0.58382,0.58382 -0.587931,0.587931 -0.588675,0.588675 -0.585818,0.585818 -0.579729,0.579729 -0.570478,0.570478 -0.558145,0.558145 -0.54278,0.54278 -0.524168,0.524168 -0.502721,0.502721 -0.478671,0.478671 -0.452113,0.452113 -0.423223,0.423223 -0.391835,0.391835 -0.358517,0.358517 -0.323399,0.323399 -0.28674,0.28674 -0.248626,0.248626 -0.209349,0.209349 -0.168996,0.168996 -0.12808,0.12808 -0.0866259,0.0866259 -0.0450219,0.0450219 -0.00329269,0.00329269 --0.0381167,-0.0381167 --0.0790644,-0.0790644 --0.119385,-0.119385 --0.158703,-0.158703 --0.196893,-0.196893 --0.23368,-0.23368 --0.268977,-0.268977 --0.302534,-0.302534 --0.334305,-0.334305 --0.363682,-0.363682 --0.390928,-0.390928 --0.415796,-0.415796 --0.438306,-0.438306 --0.458099,-0.458099 --0.475091,-0.475091 --0.489218,-0.489218 --0.500628,-0.500628 --0.509125,-0.509125 --0.514903,-0.514903 --0.517284,-0.517284 --0.516853,-0.516853 --0.513566,-0.513566 --0.507484,-0.507484 --0.498688,-0.498688 --0.486702,-0.486702 --0.472239,-0.472239 --0.455224,-0.455224 --0.435809,-0.435809 --0.414133,-0.414133 --0.390002,-0.390002 --0.363902,-0.363902 --0.335959,-0.335959 --0.306376,-0.306376 --0.275279,-0.275279 --0.242695,-0.242695 --0.208977,-0.208977 --0.174362,-0.174362 --0.139026,-0.139026 --0.103139,-0.103139 --0.066916,-0.066916 --0.0305043,-0.0305043 -0.00577764,0.00577764 -0.0417215,0.0417215 -0.0772901,0.0772901 -0.112062,0.112062 -0.14596,0.14596 -0.178803,0.178803 -0.210471,0.210471 -0.24067,0.24067 -0.269273,0.269273 -0.296051,0.296051 -0.321061,0.321061 -0.344135,0.344135 -0.3651,0.3651 -0.383649,0.383649 -0.399956,0.399956 -0.413888,0.413888 -0.425526,0.425526 -0.434574,0.434574 -0.441019,0.441019 -0.444862,0.444862 -0.446261,0.446261 -0.445176,0.445176 -0.441676,0.441676 -0.435384,0.435384 -0.426783,0.426783 -0.415873,0.415873 -0.402775,0.402775 -0.387512,0.387512 -0.370012,0.370012 -0.350537,0.350537 -0.329327,0.329327 -0.306483,0.306483 -0.282034,0.282034 -0.256133,0.256133 -0.228956,0.228956 -0.200777,0.200777 -0.17165,0.17165 -0.14192,0.14192 -0.111417,0.111417 -0.0806375,0.0806375 -0.0496218,0.0496218 -0.0186409,0.0186409 --0.0122979,-0.0122979 --0.042771,-0.042771 --0.0728361,-0.0728361 --0.10221,-0.10221 --0.130797,-0.130797 --0.158405,-0.158405 --0.184814,-0.184814 --0.209932,-0.209932 --0.233707,-0.233707 --0.255985,-0.255985 --0.276663,-0.276663 --0.295422,-0.295422 --0.312371,-0.312371 --0.327466,-0.327466 --0.340625,-0.340625 --0.351782,-0.351782 --0.360628,-0.360628 --0.367403,-0.367403 --0.372103,-0.372103 --0.374685,-0.374685 --0.37523,-0.37523 --0.373324,-0.373324 --0.369445,-0.369445 --0.363546,-0.363546 --0.355667,-0.355667 --0.345972,-0.345972 --0.334075,-0.334075 --0.320545,-0.320545 --0.305326,-0.305326 --0.28859,-0.28859 --0.270376,-0.270376 --0.250676,-0.250676 --0.229761,-0.229761 --0.207779,-0.207779 --0.1849,-0.1849 --0.161122,-0.161122 --0.136662,-0.136662 --0.111633,-0.111633 --0.0862683,-0.0862683 --0.0606391,-0.0606391 --0.0349581,-0.0349581 --0.00928729,-0.00928729 -0.0161679,0.0161679 -0.041249,0.041249 -0.0659159,0.0659159 -0.0898674,0.0898674 -0.11312,0.11312 -0.135449,0.135449 -0.156797,0.156797 -0.177063,0.177063 -0.196152,0.196152 -0.21381,0.21381 -0.230078,0.230078 -0.244916,0.244916 -0.25821,0.25821 -0.270021,0.270021 -0.279896,0.279896 -0.288186,0.288186 -0.294759,0.294759 -0.299648,0.299648 -0.302811,0.302811 -0.304058,0.304058 -0.303574,0.303574 -0.301419,0.301419 -0.297686,0.297686 -0.292212,0.292212 -0.285109,0.285109 -0.276407,0.276407 -0.266317,0.266317 -0.254874,0.254874 -0.242117,0.242117 -0.228009,0.228009 -0.212805,0.212805 -0.196587,0.196587 -0.179507,0.179507 -0.161576,0.161576 -0.142895,0.142895 -0.123623,0.123623 -0.103932,0.103932 -0.0838408,0.0838408 -0.0636524,0.0636524 -0.0431463,0.0431463 -0.0227929,0.0227929 -0.0025214,0.0025214 --0.0175262,-0.0175262 --0.037165,-0.037165 --0.0563932,-0.0563932 --0.0749994,-0.0749994 --0.0929801,-0.0929801 --0.110169,-0.110169 --0.126597,-0.126597 --0.141923,-0.141923 --0.156313,-0.156313 --0.169606,-0.169606 --0.181789,-0.181789 --0.192835,-0.192835 --0.202426,-0.202426 --0.21084,-0.21084 --0.217924,-0.217924 --0.223689,-0.223689 --0.228174,-0.228174 --0.231097,-0.231097 --0.232726,-0.232726 --0.233025,-0.233025 --0.232022,-0.232022 --0.229745,-0.229745 --0.226043,-0.226043 --0.221139,-0.221139 --0.215073,-0.215073 --0.207907,-0.207907 --0.199671,-0.199671 --0.190316,-0.190316 --0.180035,-0.180035 --0.16891,-0.16891 --0.157005,-0.157005 --0.144427,-0.144427 --0.131128,-0.131128 --0.117297,-0.117297 --0.103048,-0.103048 --0.0884465,-0.0884465 --0.0736054,-0.0736054 --0.0585049,-0.0585049 --0.0433655,-0.0433655 --0.0282226,-0.0282226 --0.0131919,-0.0131919 -0.00169273,0.00169273 -0.016266,0.016266 -0.030524,0.030524 -0.0443365,0.0443365 -0.0576851,0.0576851 -0.0704305,0.0704305 -0.0825504,0.0825504 -0.0939423,0.0939423 -0.104621,0.104621 -0.114488,0.114488 -0.123568,0.123568 -0.131648,0.131648 -0.138852,0.138852 -0.145126,0.145126 -0.150455,0.150455 -0.154863,0.154863 -0.158151,0.158151 -0.160501,0.160501 -0.161883,0.161883 -0.162349,0.162349 -0.161839,0.161839 -0.160353,0.160353 -0.157953,0.157953 -0.15473,0.15473 -0.150667,0.150667 -0.145892,0.145892 -0.140218,0.140218 -0.133909,0.133909 -0.126973,0.126973 -0.11946,0.11946 -0.111469,0.111469 -0.102896,0.102896 -0.0939701,0.0939701 -0.0847054,0.0847054 -0.0751977,0.0751977 -0.065455,0.065455 -0.0555593,0.0555593 -0.0455735,0.0455735 -0.0355961,0.0355961 -0.0256485,0.0256485 -0.0158289,0.0158289 -0.00614847,0.00614847 --0.00330073,-0.00330073 --0.0124718,-0.0124718 --0.0213244,-0.0213244 --0.0298084,-0.0298084 --0.0378563,-0.0378563 --0.0454532,-0.0454532 --0.0525575,-0.0525575 --0.0591528,-0.0591528 --0.0652048,-0.0652048 --0.0706331,-0.0706331 --0.0754847,-0.0754847 --0.0797379,-0.0797379 --0.083368,-0.083368 --0.0864183,-0.0864183 --0.0887583,-0.0887583 --0.0905011,-0.0905011 --0.0916437,-0.0916437 --0.0921941,-0.0921941 --0.0921711,-0.0921711 --0.0915155,-0.0915155 --0.0903369,-0.0903369 --0.0886466,-0.0886466 --0.086473,-0.086473 --0.0838602,-0.0838602 --0.0807634,-0.0807634 --0.0772889,-0.0772889 --0.0734738,-0.0734738 --0.069364,-0.069364 --0.0649775,-0.0649775 --0.0603327,-0.0603327 --0.0555037,-0.0555037 --0.0505413,-0.0505413 --0.0454774,-0.0454774 --0.0403574,-0.0403574 --0.0351972,-0.0351972 --0.0300535,-0.0300535 --0.0249789,-0.0249789 --0.0199991,-0.0199991 --0.0151521,-0.0151521 --0.0104547,-0.0104547 --0.00595534,-0.00595534 --0.00167876,-0.00167876 -0.00234928,0.00234928 -0.0061132,0.0061132 -0.00958225,0.00958225 -0.0127459,0.0127459 -0.0155928,0.0155928 -0.01811,0.01811 -0.0202987,0.0202987 -0.0221317,0.0221317 -0.0236268,0.0236268 -0.0247875,0.0247875 -0.0256184,0.0256184 -0.0261317,0.0261317 -0.0263139,0.0263139 -0.026202,0.026202 -0.0258115,0.0258115 -0.0251664,0.0251664 -0.0242734,0.0242734 -0.0231596,0.0231596 -0.0218462,0.0218462 -0.0203738,0.0203738 -0.018761,0.018761 -0.0170429,0.0170429 -0.0152272,0.0152272 -0.0133636,0.0133636 -0.0114783,0.0114783 -0.00960039,0.00960039 -0.00775741,0.00775741 -0.00597345,0.00597345 -0.00428025,0.00428025 -0.00270506,0.00270506 -0.00127072,0.00127072 +0.798902,0.798902 +0.793413,0.793413 +0.78475,0.78475 +0.772937,0.772937 +0.758237,0.758237 +0.74048,0.74048 +0.719909,0.719909 +0.696612,0.696612 +0.67056,0.67056 +0.642006,0.642006 +0.611,0.611 +0.577752,0.577752 +0.542263,0.542263 +0.504898,0.504898 +0.465533,0.465533 +0.424574,0.424574 +0.382102,0.382102 +0.338191,0.338191 +0.293272,0.293272 +0.247275,0.247275 +0.200485,0.200485 +0.153154,0.153154 +0.105293,0.105293 +0.0573502,0.0573502 +0.00930888,0.00930888 +-0.0386088,-0.0386088 +-0.0860659,-0.0860659 +-0.133196,-0.133196 +-0.179293,-0.179293 +-0.224771,-0.224771 +-0.269016,-0.269016 +-0.312049,-0.312049 +-0.353758,-0.353758 +-0.393691,-0.393691 +-0.432071,-0.432071 +-0.468511,-0.468511 +-0.502965,-0.502965 +-0.53526,-0.53526 +-0.565314,-0.565314 +-0.592978,-0.592978 +-0.618208,-0.618208 +-0.64089,-0.64089 +-0.660869,-0.660869 +-0.67824,-0.67824 +-0.692751,-0.692751 +-0.704579,-0.704579 +-0.713388,-0.713388 +-0.71957,-0.71957 +-0.722633,-0.722633 +-0.723012,-0.723012 +-0.720403,-0.720403 +-0.715001,-0.715001 +-0.706801,-0.706801 +-0.695804,-0.695804 +-0.682124,-0.682124 +-0.665806,-0.665806 +-0.646897,-0.646897 +-0.6255,-0.6255 +-0.601786,-0.601786 +-0.5757,-0.5757 +-0.54756,-0.54756 +-0.517249,-0.517249 +-0.48512,-0.48512 +-0.451178,-0.451178 +-0.415578,-0.415578 +-0.378554,-0.378554 +-0.34012,-0.34012 +-0.300565,-0.300565 +-0.25999,-0.25999 +-0.218543,-0.218543 +-0.176427,-0.176427 +-0.133835,-0.133835 +-0.0908513,-0.0908513 +-0.0477436,-0.0477436 +-0.00463628,-0.00463628 +0.0383024,0.0383024 +0.080882,0.080882 +0.122952,0.122952 +0.164347,0.164347 +0.204897,0.204897 +0.244428,0.244428 +0.282829,0.282829 +0.319932,0.319932 +0.355596,0.355596 +0.389654,0.389654 +0.422072,0.422072 +0.452575,0.452575 +0.481223,0.481223 +0.507816,0.507816 +0.532228,0.532228 +0.554458,0.554458 +0.574363,0.574363 +0.591901,0.591901 +0.607045,0.607045 +0.619649,0.619649 +0.629792,0.629792 +0.637364,0.637364 +0.642379,0.642379 +0.644824,0.644824 +0.644709,0.644709 +0.642014,0.642014 +0.636843,0.636843 +0.629141,0.629141 +0.618941,0.618941 +0.606418,0.606418 +0.591491,0.591491 +0.574334,0.574334 +0.554985,0.554985 +0.533478,0.533478 +0.510038,0.510038 +0.484629,0.484629 +0.457492,0.457492 +0.428616,0.428616 +0.398199,0.398199 +0.366394,0.366394 +0.333262,0.333262 +0.298972,0.298972 +0.263709,0.263709 +0.22752,0.22752 +0.190681,0.190681 +0.153219,0.153219 +0.115352,0.115352 +0.0772514,0.0772514 +0.0390077,0.0390077 +0.000832788,0.000832788 +-0.0371738,-0.0371738 +-0.0748318,-0.0748318 +-0.111998,-0.111998 +-0.148508,-0.148508 +-0.184259,-0.184259 +-0.219094,-0.219094 +-0.252849,-0.252849 +-0.285489,-0.285489 +-0.31675,-0.31675 +-0.346651,-0.346651 +-0.374974,-0.374974 +-0.401696,-0.401696 +-0.42666,-0.42666 +-0.449806,-0.449806 +-0.471086,-0.471086 +-0.490283,-0.490283 +-0.507555,-0.507555 +-0.522627,-0.522627 +-0.5356,-0.5356 +-0.54636,-0.54636 +-0.554916,-0.554916 +-0.561159,-0.561159 +-0.565268,-0.565268 +-0.566962,-0.566962 +-0.566529,-0.566529 +-0.563765,-0.563765 +-0.558839,-0.558839 +-0.551711,-0.551711 +-0.542369,-0.542369 +-0.531053,-0.531053 +-0.517575,-0.517575 +-0.502201,-0.502201 +-0.484895,-0.484895 +-0.465734,-0.465734 +-0.444896,-0.444896 +-0.422343,-0.422343 +-0.39832,-0.39832 +-0.372766,-0.372766 +-0.345991,-0.345991 +-0.317851,-0.317851 +-0.288779,-0.288779 +-0.25858,-0.25858 +-0.22763,-0.22763 +-0.195933,-0.195933 +-0.163576,-0.163576 +-0.130874,-0.130874 +-0.0977513,-0.0977513 +-0.06447,-0.06447 +-0.0311506,-0.0311506 +0.00216399,0.00216399 +0.0351765,0.0351765 +0.0679545,0.0679545 +0.100199,0.100199 +0.131877,0.131877 +0.162858,0.162858 +0.192951,0.192951 +0.222189,0.222189 +0.250253,0.250253 +0.277318,0.277318 +0.302894,0.302894 +0.327364,0.327364 +0.350152,0.350152 +0.371593,0.371593 +0.391328,0.391328 +0.409435,0.409435 +0.425755,0.425755 +0.440353,0.440353 +0.453043,0.453043 +0.463923,0.463923 +0.472829,0.472829 +0.47988,0.47988 +0.484882,0.484882 +0.488052,0.488052 +0.489141,0.489141 +0.488361,0.488361 +0.485643,0.485643 +0.480975,0.480975 +0.474474,0.474474 +0.466102,0.466102 +0.455955,0.455955 +0.444026,0.444026 +0.430479,0.430479 +0.415246,0.415246 +0.398502,0.398502 +0.380278,0.380278 +0.360656,0.360656 +0.339725,0.339725 +0.317639,0.317639 +0.294368,0.294368 +0.270109,0.270109 +0.244986,0.244986 +0.218963,0.218963 +0.192336,0.192336 +0.165094,0.165094 +0.137377,0.137377 +0.109301,0.109301 +0.080991,0.080991 +0.0525584,0.0525584 +0.0240765,0.0240765 +-0.00423005,-0.00423005 +-0.0324248,-0.0324248 +-0.0601677,-0.0601677 +-0.0876269,-0.0876269 +-0.114382,-0.114382 +-0.140669,-0.140669 +-0.166042,-0.166042 +-0.190719,-0.190719 +-0.214344,-0.214344 +-0.237021,-0.237021 +-0.258605,-0.258605 +-0.278919,-0.278919 +-0.29809,-0.29809 +-0.315834,-0.315834 +-0.332293,-0.332293 +-0.347207,-0.347207 +-0.360745,-0.360745 +-0.372628,-0.372628 +-0.383091,-0.383091 +-0.39178,-0.39178 +-0.399013,-0.399013 +-0.404448,-0.404448 +-0.40841,-0.40841 +-0.410573,-0.410573 +-0.411172,-0.411172 +-0.410078,-0.410078 +-0.407401,-0.407401 +-0.4031,-0.4031 +-0.397278,-0.397278 +-0.389848,-0.389848 +-0.380994,-0.380994 +-0.370633,-0.370633 +-0.358944,-0.358944 +-0.345855,-0.345855 +-0.331587,-0.331587 +-0.315966,-0.315966 +-0.299371,-0.299371 +-0.281585,-0.281585 +-0.26294,-0.26294 +-0.243301,-0.243301 +-0.22292,-0.22292 +-0.201764,-0.201764 +-0.18001,-0.18001 +-0.157711,-0.157711 +-0.134976,-0.134976 +-0.111854,-0.111854 +-0.088541,-0.088541 +-0.0649771,-0.0649771 +-0.0414742,-0.0414742 +-0.0178634,-0.0178634 +0.00548459,0.00548459 +0.0287467,0.0287467 +0.0515877,0.0515877 +0.0740919,0.0740919 +0.0960852,0.0960852 +0.117514,0.117514 +0.138292,0.138292 +0.158358,0.158358 +0.17756,0.17756 +0.195976,0.195976 +0.213362,0.213362 +0.229823,0.229823 +0.245157,0.245157 +0.259451,0.259451 +0.272493,0.272493 +0.284435,0.284435 +0.295045,0.295045 +0.30446,0.30446 +0.312522,0.312522 +0.319292,0.319292 +0.32472,0.32472 +0.328813,0.328813 +0.331552,0.331552 +0.332938,0.332938 +0.332995,0.332995 +0.331732,0.331732 +0.329124,0.329124 +0.325265,0.325265 +0.320144,0.320144 +0.313758,0.313758 +0.306234,0.306234 +0.297522,0.297522 +0.287718,0.287718 +0.276884,0.276884 +0.265013,0.265013 +0.252228,0.252228 +0.23856,0.23856 +0.224061,0.224061 +0.20884,0.20884 +0.192905,0.192905 +0.176384,0.176384 +0.159313,0.159313 +0.141794,0.141794 +0.123862,0.123862 +0.105654,0.105654 +0.0871762,0.0871762 +0.068567,0.068567 +0.0498827,0.0498827 +0.0311637,0.0311637 +0.0125435,0.0125435 +-0.00593612,-0.00593612 +-0.0242072,-0.0242072 +-0.0421586,-0.0421586 +-0.0597792,-0.0597792 +-0.076948,-0.076948 +-0.0936314,-0.0936314 +-0.109762,-0.109762 +-0.125272,-0.125272 +-0.140104,-0.140104 +-0.15422,-0.15422 +-0.167553,-0.167553 +-0.180077,-0.180077 +-0.191729,-0.191729 +-0.202482,-0.202482 +-0.212304,-0.212304 +-0.221161,-0.221161 +-0.229045,-0.229045 +-0.235892,-0.235892 +-0.24174,-0.24174 +-0.246524,-0.246524 +-0.250294,-0.250294 +-0.252997,-0.252997 +-0.254651,-0.254651 +-0.255278,-0.255278 +-0.254866,-0.254866 +-0.253433,-0.253433 +-0.251011,-0.251011 +-0.247602,-0.247602 +-0.243245,-0.243245 +-0.237967,-0.237967 +-0.231811,-0.231811 +-0.224774,-0.224774 +-0.216953,-0.216953 +-0.208349,-0.208349 +-0.19901,-0.19901 +-0.189013,-0.189013 +-0.178364,-0.178364 +-0.167152,-0.167152 +-0.155419,-0.155419 +-0.143202,-0.143202 +-0.130583,-0.130583 +-0.117612,-0.117612 +-0.10434,-0.10434 +-0.0908255,-0.0908255 +-0.0771412,-0.0771412 +-0.0633172,-0.0633172 +-0.0494608,-0.0494608 +-0.0355725,-0.0355725 +-0.021753,-0.021753 +-0.00803805,-0.00803805 +0.00551747,0.00551747 +0.018835,0.018835 +0.031901,0.031901 +0.0446443,0.0446443 +0.0570109,0.0570109 +0.0689669,0.0689669 +0.0804649,0.0804649 +0.0914562,0.0914562 +0.101922,0.101922 +0.111801,0.111801 +0.121082,0.121082 +0.129723,0.129723 +0.13771,0.13771 +0.145007,0.145007 +0.151594,0.151594 +0.157468,0.157468 +0.162597,0.162597 +0.166996,0.166996 +0.17062,0.17062 +0.173524,0.173524 +0.175636,0.175636 +0.177029,0.177029 +0.177651,0.177651 +0.177562,0.177562 +0.176732,0.176732 +0.175198,0.175198 +0.172994,0.172994 +0.170092,0.170092 +0.166575,0.166575 +0.162428,0.162428 +0.157686,0.157686 +0.152403,0.152403 +0.146577,0.146577 +0.140273,0.140273 +0.133503,0.133503 +0.126319,0.126319 +0.118755,0.118755 +0.110847,0.110847 +0.10265,0.10265 +0.0941806,0.0941806 +0.0855003,0.0855003 +0.0766468,0.0766468 +0.067642,0.067642 +0.0585803,0.0585803 +0.0494222,0.0494222 +0.0402898,0.0402898 +0.03117,0.03117 +0.0221145,0.0221145 +0.013183,0.013183 +0.00437603,0.00437603 +-0.00422933,-0.00422933 +-0.012653,-0.012653 +-0.0207915,-0.0207915 +-0.0286914,-0.0286914 +-0.0362562,-0.0362562 +-0.0435064,-0.0435064 +-0.0503898,-0.0503898 +-0.0568976,-0.0568976 +-0.0630058,-0.0630058 +-0.0686851,-0.0686851 +-0.0739465,-0.0739465 +-0.0787443,-0.0787443 +-0.0830865,-0.0830865 +-0.0869757,-0.0869757 +-0.0903592,-0.0903592 +-0.0933031,-0.0933031 +-0.0957264,-0.0957264 +-0.0977068,-0.0977068 +-0.0991869,-0.0991869 +-0.100209,-0.100209 +-0.100768,-0.100768 +-0.100856,-0.100856 +-0.100529,-0.100529 +-0.0997542,-0.0997542 +-0.0985717,-0.0985717 +-0.096994,-0.096994 +-0.0950353,-0.0950353 +-0.0927235,-0.0927235 +-0.0900813,-0.0900813 +-0.0871051,-0.0871051 +-0.0838645,-0.0838645 +-0.0803416,-0.0803416 +-0.0765903,-0.0765903 +-0.0726158,-0.0726158 +-0.0684602,-0.0684602 +-0.0641443,-0.0641443 +-0.0596952,-0.0596952 +-0.0551424,-0.0551424 +-0.0505035,-0.0505035 +-0.045822,-0.045822 +-0.0411089,-0.0411089 +-0.0364021,-0.0364021 +-0.0317128,-0.0317128 +-0.0270815,-0.0270815 +-0.0225174,-0.0225174 +-0.018055,-0.018055 +-0.013706,-0.013706 +-0.00950638,-0.00950638 +-0.00543947,-0.00543947 +-0.00157895,-0.00157895 +0.002125,0.002125 +0.00559077,0.00559077 +0.00886257,0.00886257 +0.0118956,0.0118956 +0.0146876,0.0146876 +0.0172387,0.0172387 +0.0195281,0.0195281 +0.0215711,0.0215711 +0.0233403,0.0233403 +0.0248642,0.0248642 +0.0261075,0.0261075 +0.0271143,0.0271143 +0.0278471,0.0278471 +0.0283469,0.0283469 +0.0285948,0.0285948 +0.0286136,0.0286136 +0.028411,0.028411 +0.0279951,0.0279951 +0.0273775,0.0273775 +0.0265826,0.0265826 +0.0256051,0.0256051 +0.0244844,0.0244844 +0.0232185,0.0232185 +0.0218323,0.0218323 +0.0203444,0.0203444 +0.0187692,0.0187692 +0.0171292,0.0171292 +0.0154398,0.0154398 +0.013724,0.013724 +0.0119949,0.0119949 +0.0102784,0.0102784 +0.00858733,0.00858733 +0.00694226,0.00694226 +0.00536166,0.00536166 +0.00385998,0.00385998 +0.00245661,0.00245661 +0.0011646,0.0011646 0,0 diff --git a/src/test/golden_buffers/BasicProcessingTestPlay b/src/test/golden_buffers/BasicProcessingTestPlay index 082a17c721fb..914179cecec1 100644 --- a/src/test/golden_buffers/BasicProcessingTestPlay +++ b/src/test/golden_buffers/BasicProcessingTestPlay @@ -1,512 +1,512 @@ 0,0 -0.000256421,0.000256421 -0.000766958,0.000766958 -0.00152728,0.00152728 -0.0025273,0.0025273 -0.00376272,0.00376272 -0.00520848,0.00520848 -0.00685897,0.00685897 -0.00869118,0.00869118 -0.0106886,0.0106886 -0.0128263,0.0128263 -0.0150737,0.0150737 -0.0174074,0.0174074 -0.0198062,0.0198062 -0.0222377,0.0222377 -0.0246781,0.0246781 -0.0270689,0.0270689 -0.029405,0.029405 -0.0316524,0.0316524 -0.0337798,0.0337798 -0.0357613,0.0357613 -0.0375304,0.0375304 -0.0390944,0.0390944 -0.0404192,0.0404192 -0.0414855,0.0414855 -0.0422532,0.0422532 -0.0426922,0.0426922 -0.0427889,0.0427889 -0.042542,0.042542 -0.0419271,0.0419271 -0.040936,0.040936 -0.0395249,0.0395249 -0.0377189,0.0377189 -0.0355191,0.0355191 -0.0329127,0.0329127 -0.029926,0.029926 -0.0265049,0.0265049 -0.0227277,0.0227277 -0.0185729,0.0185729 -0.0140733,0.0140733 -0.00924328,0.00924328 -0.00410357,0.00410357 --0.00131682,-0.00131682 --0.00698298,-0.00698298 --0.0128731,-0.0128731 --0.0189293,-0.0189293 --0.0251402,-0.0251402 --0.0314361,-0.0314361 --0.0378062,-0.0378062 --0.0441856,-0.0441856 --0.0505595,-0.0505595 --0.0568082,-0.0568082 --0.0629506,-0.0629506 --0.0689264,-0.0689264 --0.07469,-0.07469 --0.0802084,-0.0802084 --0.0853575,-0.0853575 --0.0901566,-0.0901566 --0.0945664,-0.0945664 --0.0985457,-0.0985457 --0.102055,-0.102055 --0.104967,-0.104967 --0.107341,-0.107341 --0.109129,-0.109129 --0.110318,-0.110318 --0.110863,-0.110863 --0.110677,-0.110677 --0.109818,-0.109818 --0.108269,-0.108269 --0.106017,-0.106017 --0.103084,-0.103084 --0.0993378,-0.0993378 --0.0949253,-0.0949253 --0.0898058,-0.0898058 --0.0840236,-0.0840236 --0.077575,-0.077575 --0.0704368,-0.0704368 --0.0626968,-0.0626968 --0.0543913,-0.0543913 --0.0455448,-0.0455448 --0.0362058,-0.0362058 --0.0263893,-0.0263893 --0.0161832,-0.0161832 --0.00563579,-0.00563579 -0.00521158,0.00521158 -0.0162755,0.0162755 -0.0274967,0.0274967 -0.0388214,0.0388214 -0.0501751,0.0501751 -0.0614891,0.0614891 -0.0727139,0.0727139 -0.0837068,0.0837068 -0.0944441,0.0944441 -0.104878,0.104878 -0.114926,0.114926 -0.12452,0.12452 -0.133504,0.133504 -0.141906,0.141906 -0.149654,0.149654 -0.156712,0.156712 -0.16298,0.16298 -0.168355,0.168355 -0.172827,0.172827 -0.176414,0.176414 -0.179057,0.179057 -0.18071,0.18071 -0.181241,0.181241 -0.180716,0.180716 -0.179167,0.179167 -0.176559,0.176559 -0.172888,0.172888 -0.168038,0.168038 -0.16212,0.16212 -0.155196,0.155196 -0.147244,0.147244 -0.138348,0.138348 -0.128336,0.128336 -0.11748,0.11748 -0.105739,0.105739 -0.0932349,0.0932349 -0.0799069,0.0799069 -0.0659421,0.0659421 -0.0513037,0.0513037 -0.0361585,0.0361585 -0.0205915,0.0205915 -0.00456074,0.00456074 --0.0116496,-0.0116496 --0.0281072,-0.0281072 --0.0446526,-0.0446526 --0.0611803,-0.0611803 --0.077667,-0.077667 --0.0938793,-0.0938793 --0.109805,-0.109805 --0.125344,-0.125344 --0.14044,-0.14044 --0.154906,-0.154906 --0.168681,-0.168681 --0.181627,-0.181627 --0.193764,-0.193764 --0.204991,-0.204991 --0.215217,-0.215217 --0.224193,-0.224193 --0.232061,-0.232061 --0.238701,-0.238701 --0.244108,-0.244108 --0.248199,-0.248199 --0.250775,-0.250775 --0.251957,-0.251957 --0.25175,-0.25175 --0.250096,-0.250096 --0.247075,-0.247075 --0.242332,-0.242332 --0.236249,-0.236249 --0.228722,-0.228722 --0.219814,-0.219814 --0.209575,-0.209575 --0.197805,-0.197805 --0.184837,-0.184837 --0.170642,-0.170642 --0.155299,-0.155299 --0.138909,-0.138909 --0.121408,-0.121408 --0.103014,-0.103014 --0.0838263,-0.0838263 --0.0639282,-0.0639282 --0.0434323,-0.0434323 --0.022372,-0.022372 --0.000986354,-0.000986354 -0.0206863,0.0206863 -0.0424871,0.0424871 -0.0643451,0.0643451 -0.0859987,0.0859987 -0.107469,0.107469 -0.128548,0.128548 -0.14917,0.14917 -0.169198,0.169198 -0.188382,0.188382 -0.206707,0.206707 -0.22409,0.22409 -0.240425,0.240425 -0.255592,0.255592 -0.269296,0.269296 -0.28165,0.28165 -0.292562,0.292562 -0.301956,0.301956 -0.309756,0.309756 -0.315695,0.315695 -0.319904,0.319904 -0.322396,0.322396 -0.323082,0.323082 -0.322025,0.322025 -0.318823,0.318823 -0.313885,0.313885 -0.307108,0.307108 -0.298555,0.298555 -0.288219,0.288219 -0.276006,0.276006 -0.262057,0.262057 -0.246544,0.246544 -0.229529,0.229529 -0.210962,0.210962 -0.190971,0.190971 -0.169667,0.169667 -0.147211,0.147211 -0.12375,0.12375 -0.0992535,0.0992535 -0.0740583,0.0740583 -0.0480598,0.0480598 -0.0216201,0.0216201 --0.00519789,-0.00519789 --0.0322946,-0.0322946 --0.059388,-0.059388 --0.0864472,-0.0864472 --0.113251,-0.113251 --0.13968,-0.13968 --0.165593,-0.165593 --0.1907,-0.1907 --0.214957,-0.214957 --0.238243,-0.238243 --0.260431,-0.260431 --0.281331,-0.281331 --0.300716,-0.300716 --0.318534,-0.318534 --0.33474,-0.33474 --0.3493,-0.3493 --0.361878,-0.361878 --0.372524,-0.372524 --0.380975,-0.380975 --0.387485,-0.387485 --0.391872,-0.391872 --0.394096,-0.394096 --0.393899,-0.393899 --0.391435,-0.391435 --0.386826,-0.386826 --0.379998,-0.379998 --0.371054,-0.371054 --0.359573,-0.359573 --0.346098,-0.346098 --0.330534,-0.330534 --0.313005,-0.313005 --0.293643,-0.293643 --0.272156,-0.272156 --0.249064,-0.249064 --0.224365,-0.224365 --0.198208,-0.198208 --0.170767,-0.170767 --0.141996,-0.141996 --0.112179,-0.112179 --0.0815567,-0.0815567 --0.0501861,-0.0501861 --0.018334,-0.018334 -0.0139844,0.0139844 -0.046382,0.046382 -0.0788293,0.0788293 -0.11106,0.11106 -0.142994,0.142994 -0.174204,0.174204 -0.204732,0.204732 -0.234317,0.234317 -0.262907,0.262907 -0.290129,0.290129 -0.315891,0.315891 -0.339964,0.339964 -0.362396,0.362396 -0.38296,0.38296 -0.40158,0.40158 -0.417774,0.417774 -0.431789,0.431789 -0.443508,0.443508 -0.452807,0.452807 -0.459798,0.459798 -0.463757,0.463757 -0.465292,0.465292 -0.464192,0.464192 -0.460572,0.460572 -0.454284,0.454284 -0.445171,0.445171 -0.433443,0.433443 -0.419288,0.419288 -0.402664,0.402664 -0.383724,0.383724 -0.362167,0.362167 -0.33849,0.33849 -0.312774,0.312774 -0.285087,0.285087 -0.255769,0.255769 -0.224384,0.224384 -0.191747,0.191747 -0.157724,0.157724 -0.122647,0.122647 -0.0865573,0.0865573 -0.0497553,0.0497553 -0.0123863,0.0123863 --0.0252838,-0.0252838 --0.0630886,-0.0630886 --0.100763,-0.100763 --0.138169,-0.138169 --0.174936,-0.174936 --0.211016,-0.211016 --0.246212,-0.246212 --0.280196,-0.280196 --0.312757,-0.312757 --0.343697,-0.343697 --0.372962,-0.372962 --0.400375,-0.400375 --0.425752,-0.425752 --0.448568,-0.448568 --0.469086,-0.469086 --0.487132,-0.487132 --0.502537,-0.502537 --0.515415,-0.515415 --0.524901,-0.524901 --0.531726,-0.531726 --0.535522,-0.535522 --0.536522,-0.536522 --0.534296,-0.534296 --0.529012,-0.529012 --0.52052,-0.52052 --0.50921,-0.50921 --0.494957,-0.494957 --0.477926,-0.477926 --0.457668,-0.457668 --0.434857,-0.434857 --0.409449,-0.409449 --0.381625,-0.381625 --0.351516,-0.351516 --0.31896,-0.31896 --0.284514,-0.284514 --0.24823,-0.24823 --0.210417,-0.210417 --0.171051,-0.171051 --0.130537,-0.130537 --0.0889773,-0.0889773 --0.0467012,-0.0467012 --0.00392931,-0.00392931 -0.0392431,0.0392431 -0.0822503,0.0822503 -0.125192,0.125192 -0.16759,0.16759 -0.209423,0.209423 -0.250168,0.250168 -0.289837,0.289837 -0.327922,0.327922 -0.364485,0.364485 -0.399226,0.399226 -0.432031,0.432031 -0.462172,0.462172 -0.490056,0.490056 -0.51532,0.51532 -0.537833,0.537833 -0.557668,0.557668 -0.573895,0.573895 -0.587172,0.587172 -0.597229,0.597229 -0.603982,0.603982 -0.60763,0.60763 -0.607203,0.607203 -0.603581,0.603581 -0.596573,0.596573 -0.586151,0.586151 -0.572615,0.572615 -0.555099,0.555099 -0.534673,0.534673 -0.51108,0.51108 -0.484482,0.484482 -0.455192,0.455192 -0.42271,0.42271 -0.3878,0.3878 -0.350558,0.350558 -0.311195,0.311195 -0.269783,0.269783 -0.226575,0.226575 -0.181804,0.181804 -0.135866,0.135866 -0.0887893,0.0887893 -0.0411954,0.0411954 --0.0071671,-0.0071671 --0.055596,-0.055596 --0.104018,-0.104018 --0.152058,-0.152058 --0.199645,-0.199645 --0.246081,-0.246081 --0.291507,-0.291507 --0.335465,-0.335465 --0.377886,-0.377886 --0.41835,-0.41835 --0.456464,-0.456464 --0.492239,-0.492239 --0.525446,-0.525446 --0.555904,-0.555904 --0.583471,-0.583471 --0.607579,-0.607579 --0.628307,-0.628307 --0.645757,-0.645757 --0.659698,-0.659698 --0.670103,-0.670103 --0.67624,-0.67624 --0.678783,-0.678783 --0.677543,-0.677543 --0.67247,-0.67247 --0.663839,-0.663839 --0.650782,-0.650782 --0.634182,-0.634182 --0.613963,-0.613963 --0.590224,-0.590224 --0.563194,-0.563194 --0.532341,-0.532341 --0.498502,-0.498502 --0.461686,-0.461686 --0.422211,-0.422211 --0.38013,-0.38013 --0.335438,-0.335438 --0.288758,-0.288758 --0.240201,-0.240201 --0.190118,-0.190118 --0.138659,-0.138659 --0.0861594,-0.0861594 --0.0329095,-0.0329095 -0.0207748,0.0207748 -0.0745913,0.0745913 -0.128324,0.128324 -0.181403,0.181403 -0.233803,0.233803 -0.285133,0.285133 -0.335055,0.335055 -0.383578,0.383578 -0.42965,0.42965 -0.473745,0.473745 -0.515371,0.515371 -0.554263,0.554263 -0.590466,0.590466 -0.622942,0.622942 -0.652201,0.652201 -0.677949,0.677949 -0.700184,0.700184 -0.718432,0.718432 -0.7325,0.7325 -0.7424,0.7424 -0.748348,0.748348 -0.750064,0.750064 -0.747858,0.747858 -0.740691,0.740691 -0.72955,0.72955 -0.71427,0.71427 -0.695009,0.695009 -0.671787,0.671787 -0.644233,0.644233 -0.613021,0.613021 -0.578312,0.578312 -0.540109,0.540109 -0.499044,0.499044 -0.454263,0.454263 -0.407079,0.407079 -0.357313,0.357313 -0.305397,0.305397 -0.251501,0.251501 -0.195864,0.195864 -0.138806,0.138806 -0.0808575,0.0808575 -0.0221341,0.0221341 --0.0369444,-0.0369444 --0.0961682,-0.0961682 --0.154925,-0.154925 --0.213167,-0.213167 --0.270478,-0.270478 --0.32661,-0.32661 --0.38082,-0.38082 --0.433223,-0.433223 --0.48341,-0.48341 --0.531195,-0.531195 --0.576183,-0.576183 --0.617838,-0.617838 --0.656173,-0.656173 --0.691072,-0.691072 --0.722291,-0.722291 --0.749636,-0.749636 --0.772464,-0.772464 --0.791037,-0.791037 --0.80534,-0.80534 --0.815221,-0.815221 --0.820795,-0.820795 --0.820989,-0.820989 --0.816831,-0.816831 --0.808068,-0.808068 --0.794796,-0.794796 --0.777218,-0.777218 --0.75443,-0.75443 --0.727576,-0.727576 --0.696519,-0.696519 --0.661565,-0.661565 --0.622641,-0.622641 --0.579848,-0.579848 --0.533526,-0.533526 --0.484168,-0.484168 --0.431911,-0.431911 --0.376989,-0.376989 --0.319554,-0.319554 --0.260089,-0.260089 --0.198959,-0.198959 --0.136521,-0.136521 --0.0729288,-0.0729288 --0.00884278,-0.00884278 -0.0557284,0.0557284 -0.120136,0.120136 -0.184168,0.184168 -0.247488,0.247488 -0.309435,0.309435 -0.369972,0.369972 -0.428656,0.428656 -0.485211,0.485211 -0.539321,0.539321 -0.590322,0.590322 +0.000196912,0.000196912 +0.000589817,0.000589817 +0.00117495,0.00117495 +0.00195118,0.00195118 +0.0029058,0.0029058 +0.00404226,0.00404226 +0.00534023,0.00534023 +0.00679857,0.00679857 +0.00840231,0.00840231 +0.0101355,0.0101355 +0.0119923,0.0119923 +0.0139496,0.0139496 +0.0159987,0.0159987 +0.0181145,0.0181145 +0.0202873,0.0202873 +0.0224944,0.0224944 +0.0247158,0.0247158 +0.0269376,0.0269376 +0.0291314,0.0291314 +0.0312867,0.0312867 +0.0333742,0.0333742 +0.0353831,0.0353831 +0.0372828,0.0372828 +0.0390637,0.0390637 +0.0406966,0.0406966 +0.0421731,0.0421731 +0.0434664,0.0434664 +0.0445633,0.0445633 +0.0454498,0.0454498 +0.0460957,0.0460957 +0.0465123,0.0465123 +0.0466591,0.0466591 +0.0465441,0.0465441 +0.046148,0.046148 +0.0454602,0.0454602 +0.0444789,0.0444789 +0.0431947,0.0431947 +0.0416029,0.0416029 +0.0397033,0.0397033 +0.0374978,0.0374978 +0.0349735,0.0349735 +0.0321594,0.0321594 +0.0290255,0.0290255 +0.0256222,0.0256222 +0.0219117,0.0219117 +0.0179401,0.0179401 +0.0137007,0.0137007 +0.00921612,0.00921612 +0.00450122,0.00450122 +-0.000430062,-0.000430062 +-0.00556252,-0.00556252 +-0.0108565,-0.0108565 +-0.0163168,-0.0163168 +-0.0218882,-0.0218882 +-0.0275831,-0.0275831 +-0.0333386,-0.0333386 +-0.0391576,-0.0391576 +-0.0449935,-0.0449935 +-0.050817,-0.050817 +-0.0566173,-0.0566173 +-0.0623399,-0.0623399 +-0.0679776,-0.0679776 +-0.0734772,-0.0734772 +-0.078832,-0.078832 +-0.0839856,-0.0839856 +-0.0889336,-0.0889336 +-0.0936266,-0.0936266 +-0.0980409,-0.0980409 +-0.102157,-0.102157 +-0.105929,-0.105929 +-0.109352,-0.109352 +-0.112383,-0.112383 +-0.115003,-0.115003 +-0.117198,-0.117198 +-0.11893,-0.11893 +-0.120198,-0.120198 +-0.120973,-0.120973 +-0.121236,-0.121236 +-0.120991,-0.120991 +-0.120214,-0.120214 +-0.118894,-0.118894 +-0.117031,-0.117031 +-0.114618,-0.114618 +-0.111659,-0.111659 +-0.108143,-0.108143 +-0.104097,-0.104097 +-0.0994884,-0.0994884 +-0.0943735,-0.0943735 +-0.0887272,-0.0887272 +-0.0825767,-0.0825767 +-0.0759414,-0.0759414 +-0.0688368,-0.0688368 +-0.0612883,-0.0612883 +-0.0533211,-0.0533211 +-0.04495,-0.04495 +-0.0362186,-0.0362186 +-0.0271527,-0.0271527 +-0.0177855,-0.0177855 +-0.00815196,-0.00815196 +0.00170941,0.00170941 +0.0117688,0.0117688 +0.0219607,0.0219607 +0.0322793,0.0322793 +0.0426523,0.0426523 +0.0530409,0.0530409 +0.0634312,0.0634312 +0.0737189,0.0737189 +0.0839171,0.0839171 +0.0939397,0.0939397 +0.10376,0.10376 +0.113336,0.113336 +0.1226,0.1226 +0.131528,0.131528 +0.14006,0.14006 +0.14817,0.14817 +0.155806,0.155806 +0.162922,0.162922 +0.169495,0.169495 +0.175468,0.175468 +0.180822,0.180822 +0.18552,0.18552 +0.189521,0.189521 +0.192817,0.192817 +0.195366,0.195366 +0.19715,0.19715 +0.198157,0.198157 +0.198354,0.198354 +0.197742,0.197742 +0.196313,0.196313 +0.194047,0.194047 +0.190956,0.190956 +0.187037,0.187037 +0.182273,0.182273 +0.176703,0.176703 +0.17033,0.17033 +0.163148,0.163148 +0.155218,0.155218 +0.146511,0.146511 +0.137083,0.137083 +0.126976,0.126976 +0.11618,0.11618 +0.104785,0.104785 +0.0927682,0.0927682 +0.0802337,0.0802337 +0.0671699,0.0671699 +0.0536884,0.0536884 +0.0397644,0.0397644 +0.0255196,0.0255196 +0.0109527,0.0109527 +-0.003838,-0.003838 +-0.0188236,-0.0188236 +-0.0339,-0.0339 +-0.049081,-0.049081 +-0.064228,-0.064228 +-0.0793178,-0.0793178 +-0.0942969,-0.0942969 +-0.109056,-0.109056 +-0.123591,-0.123591 +-0.137772,-0.137772 +-0.151608,-0.151608 +-0.164967,-0.164967 +-0.177859,-0.177859 +-0.190152,-0.190152 +-0.201851,-0.201851 +-0.21285,-0.21285 +-0.223139,-0.223139 +-0.232646,-0.232646 +-0.241298,-0.241298 +-0.249121,-0.249121 +-0.255978,-0.255978 +-0.261907,-0.261907 +-0.266843,-0.266843 +-0.27074,-0.27074 +-0.273604,-0.273604 +-0.27538,-0.27538 +-0.276073,-0.276073 +-0.275655,-0.275655 +-0.274093,-0.274093 +-0.271455,-0.271455 +-0.267624,-0.267624 +-0.262727,-0.262727 +-0.256679,-0.256679 +-0.249545,-0.249545 +-0.241312,-0.241312 +-0.232036,-0.232036 +-0.221676,-0.221676 +-0.210372,-0.210372 +-0.198037,-0.198037 +-0.184825,-0.184825 +-0.170683,-0.170683 +-0.155729,-0.155729 +-0.139987,-0.139987 +-0.123497,-0.123497 +-0.106366,-0.106366 +-0.0886068,-0.0886068 +-0.0703205,-0.0703205 +-0.0515716,-0.0515716 +-0.0323849,-0.0323849 +-0.0129331,-0.0129331 +0.00682541,0.00682541 +0.0267113,0.0267113 +0.0467009,0.0467009 +0.0667213,0.0667213 +0.0866205,0.0866205 +0.106434,0.106434 +0.12595,0.12595 +0.145183,0.145183 +0.164007,0.164007 +0.182354,0.182354 +0.200155,0.200155 +0.217282,0.217282 +0.233756,0.233756 +0.24938,0.24938 +0.264204,0.264204 +0.278076,0.278076 +0.290955,0.290955 +0.302803,0.302803 +0.31352,0.31352 +0.3231,0.3231 +0.33145,0.33145 +0.338538,0.338538 +0.34436,0.34436 +0.348815,0.348815 +0.351934,0.351934 +0.353669,0.353669 +0.353962,0.353962 +0.352901,0.352901 +0.350316,0.350316 +0.346437,0.346437 +0.340969,0.340969 +0.334246,0.334246 +0.326017,0.326017 +0.316422,0.316422 +0.305552,0.305552 +0.293213,0.293213 +0.279776,0.279776 +0.264918,0.264918 +0.24905,0.24905 +0.231885,0.231885 +0.213767,0.213767 +0.194593,0.194593 +0.174458,0.174458 +0.153485,0.153485 +0.131756,0.131756 +0.109195,0.109195 +0.0862275,0.0862275 +0.0624663,0.0624663 +0.038501,0.038501 +0.0139991,0.0139991 +-0.0106129,-0.0106129 +-0.0354806,-0.0354806 +-0.0603177,-0.0603177 +-0.0852237,-0.0852237 +-0.109836,-0.109836 +-0.134353,-0.134353 +-0.158411,-0.158411 +-0.182074,-0.182074 +-0.205193,-0.205193 +-0.227627,-0.227627 +-0.249399,-0.249399 +-0.270248,-0.270248 +-0.290255,-0.290255 +-0.309173,-0.309173 +-0.327094,-0.327094 +-0.343741,-0.343741 +-0.359231,-0.359231 +-0.373282,-0.373282 +-0.386112,-0.386112 +-0.397265,-0.397265 +-0.407193,-0.407193 +-0.415269,-0.415269 +-0.421987,-0.421987 +-0.426904,-0.426904 +-0.430239,-0.430239 +-0.431826,-0.431826 +-0.431766,-0.431766 +-0.429837,-0.429837 +-0.426382,-0.426382 +-0.420986,-0.420986 +-0.414004,-0.414004 +-0.405305,-0.405305 +-0.394835,-0.394835 +-0.382822,-0.382822 +-0.369123,-0.369123 +-0.353862,-0.353862 +-0.337088,-0.337088 +-0.318888,-0.318888 +-0.299199,-0.299199 +-0.278281,-0.278281 +-0.255984,-0.255984 +-0.232632,-0.232632 +-0.208094,-0.208094 +-0.182636,-0.182636 +-0.156241,-0.156241 +-0.128983,-0.128983 +-0.101144,-0.101144 +-0.0726128,-0.0726128 +-0.0436413,-0.0436413 +-0.0143194,-0.0143194 +0.0153227,0.0153227 +0.0450098,0.0450098 +0.0747964,0.0747964 +0.104434,0.104434 +0.133853,0.133853 +0.162964,0.162964 +0.191561,0.191561 +0.219619,0.219619 +0.246997,0.246997 +0.273493,0.273493 +0.299178,0.299178 +0.323706,0.323706 +0.347222,0.347222 +0.369394,0.369394 +0.39032,0.39032 +0.409772,0.409772 +0.427722,0.427722 +0.444081,0.444081 +0.458764,0.458764 +0.471728,0.471728 +0.482844,0.482844 +0.492166,0.492166 +0.499508,0.499508 +0.504995,0.504995 +0.508397,0.508397 +0.50988,0.50988 +0.509254,0.509254 +0.506662,0.506662 +0.502014,0.502014 +0.495303,0.495303 +0.486625,0.486625 +0.475892,0.475892 +0.463241,0.463241 +0.448669,0.448669 +0.432186,0.432186 +0.41391,0.41391 +0.39385,0.39385 +0.372116,0.372116 +0.348754,0.348754 +0.323881,0.323881 +0.297553,0.297553 +0.269921,0.269921 +0.240961,0.240961 +0.210986,0.210986 +0.179899,0.179899 +0.147973,0.147973 +0.115254,0.115254 +0.0818653,0.0818653 +0.0480013,0.0480013 +0.013712,0.013712 +-0.0208158,-0.0208158 +-0.0554474,-0.0554474 +-0.0900573,-0.0900573 +-0.124522,-0.124522 +-0.158674,-0.158674 +-0.192376,-0.192376 +-0.225538,-0.225538 +-0.257911,-0.257911 +-0.289528,-0.289528 +-0.320105,-0.320105 +-0.349615,-0.349615 +-0.377859,-0.377859 +-0.404773,-0.404773 +-0.430216,-0.430216 +-0.45411,-0.45411 +-0.476282,-0.476282 +-0.496709,-0.496709 +-0.515248,-0.515248 +-0.531848,-0.531848 +-0.546419,-0.546419 +-0.558883,-0.558883 +-0.56919,-0.56919 +-0.577267,-0.577267 +-0.583145,-0.583145 +-0.586641,-0.586641 +-0.587916,-0.587916 +-0.586773,-0.586773 +-0.58332,-0.58332 +-0.577542,-0.577542 +-0.569389,-0.569389 +-0.558976,-0.558976 +-0.546229,-0.546229 +-0.531288,-0.531288 +-0.514109,-0.514109 +-0.494804,-0.494804 +-0.47346,-0.47346 +-0.450081,-0.450081 +-0.424795,-0.424795 +-0.397702,-0.397702 +-0.36886,-0.36886 +-0.338404,-0.338404 +-0.306499,-0.306499 +-0.273128,-0.273128 +-0.238556,-0.238556 +-0.202816,-0.202816 +-0.166105,-0.166105 +-0.128568,-0.128568 +-0.090304,-0.090304 +-0.0514938,-0.0514938 +-0.0123029,-0.0123029 +0.0271954,0.0271954 +0.0667074,0.0667074 +0.106188,0.106188 +0.145462,0.145462 +0.184285,0.184285 +0.222658,0.222658 +0.260227,0.260227 +0.297055,0.297055 +0.332797,0.332797 +0.367457,0.367457 +0.400763,0.400763 +0.432647,0.432647 +0.463023,0.463023 +0.491593,0.491593 +0.518491,0.518491 +0.543294,0.543294 +0.566197,0.566197 +0.586841,0.586841 +0.60534,0.60534 +0.621441,0.621441 +0.635225,0.635225 +0.646452,0.646452 +0.655254,0.655254 +0.661383,0.661383 +0.665048,0.665048 +0.665952,0.665952 +0.664283,0.664283 +0.659914,0.659914 +0.652976,0.652976 +0.643289,0.643289 +0.631149,0.631149 +0.616241,0.616241 +0.599042,0.599042 +0.579152,0.579152 +0.557074,0.557074 +0.5325,0.5325 +0.505824,0.505824 +0.47694,0.47694 +0.446022,0.446022 +0.413236,0.413236 +0.378618,0.378618 +0.342383,0.342383 +0.304533,0.304533 +0.265387,0.265387 +0.224981,0.224981 +0.183436,0.183436 +0.141122,0.141122 +0.0978361,0.0978361 +0.0542114,0.0542114 +0.00999775,0.00999775 +-0.0343686,-0.0343686 +-0.0788498,-0.0788498 +-0.123189,-0.123189 +-0.167181,-0.167181 +-0.210812,-0.210812 +-0.253683,-0.253683 +-0.295806,-0.295806 +-0.336976,-0.336976 +-0.376837,-0.376837 +-0.415548,-0.415548 +-0.452638,-0.452638 +-0.488134,-0.488134 +-0.521934,-0.521934 +-0.553627,-0.553627 +-0.583436,-0.583436 +-0.610902,-0.610902 +-0.636115,-0.636115 +-0.659019,-0.659019 +-0.679123,-0.679123 +-0.696975,-0.696975 +-0.71179,-0.71179 +-0.724046,-0.724046 +-0.733437,-0.733437 +-0.739842,-0.739842 +-0.743543,-0.743543 +-0.744047,-0.744047 +-0.741865,-0.741865 +-0.736426,-0.736426 +-0.728321,-0.728321 +-0.717079,-0.717079 +-0.703049,-0.703049 +-0.686124,-0.686124 +-0.666407,-0.666407 +-0.643919,-0.643919 +-0.618891,-0.618891 +-0.591162,-0.591162 +-0.561006,-0.561006 +-0.528624,-0.528624 +-0.493736,-0.493736 +-0.457038,-0.457038 +-0.418195,-0.418195 +-0.377515,-0.377515 +-0.335347,-0.335347 +-0.29141,-0.29141 +-0.246375,-0.246375 +-0.200057,-0.200057 +-0.152735,-0.152735 +-0.104706,-0.104706 +-0.0559716,-0.0559716 +-0.00694585,-0.00694585 +0.0424866,0.0424866 +0.0917853,0.0917853 +0.141034,0.141034 +0.189782,0.189782 +0.238135,0.238135 +0.285557,0.285557 +0.332232,0.332232 +0.37751,0.37751 +0.421773,0.421773 +0.4642,0.4642 +0.505306,0.505306 +0.544168,0.544168 diff --git a/src/test/golden_buffers/BasicProcessingTestPlaying b/src/test/golden_buffers/BasicProcessingTestPlaying index c9183e5790dd..fecc993b05e6 100644 --- a/src/test/golden_buffers/BasicProcessingTestPlaying +++ b/src/test/golden_buffers/BasicProcessingTestPlaying @@ -1,512 +1,512 @@ -0.63688,0.63688 -0.680038,0.680038 -0.719396,0.719396 -0.754834,0.754834 -0.785533,0.785533 -0.811891,0.811891 -0.83379,0.83379 -0.851123,0.851123 -0.863662,0.863662 -0.870995,0.870995 -0.873342,0.873342 -0.870982,0.870982 -0.863835,0.863835 -0.851795,0.851795 -0.834596,0.834596 -0.81273,0.81273 -0.786391,0.786391 -0.755713,0.755713 -0.720901,0.720901 -0.681516,0.681516 -0.638451,0.638451 -0.591853,0.591853 -0.541962,0.541962 -0.489177,0.489177 -0.433153,0.433153 -0.374916,0.374916 -0.314518,0.314518 -0.252548,0.252548 -0.188824,0.188824 -0.124373,0.124373 -0.0588961,0.0588961 --0.00672108,-0.00672108 --0.0723182,-0.0723182 --0.137662,-0.137662 --0.201993,-0.201993 --0.26527,-0.26527 --0.327027,-0.327027 --0.387104,-0.387104 --0.444915,-0.444915 --0.500046,-0.500046 --0.552377,-0.552377 --0.601654,-0.601654 --0.647666,-0.647666 --0.690037,-0.690037 --0.728182,-0.728182 --0.762247,-0.762247 --0.792166,-0.792166 --0.817644,-0.817644 --0.83873,-0.83873 --0.854476,-0.854476 --0.865582,-0.865582 --0.871862,-0.871862 --0.873368,-0.873368 --0.870095,-0.870095 --0.861322,-0.861322 --0.847869,-0.847869 --0.82967,-0.82967 --0.806964,-0.806964 --0.779865,-0.779865 --0.74768,-0.74768 --0.711615,-0.711615 --0.671516,-0.671516 --0.627678,-0.627678 --0.580606,-0.580606 --0.529529,-0.529529 --0.475851,-0.475851 --0.419453,-0.419453 --0.360656,-0.360656 --0.300119,-0.300119 --0.237361,-0.237361 --0.173564,-0.173564 --0.108727,-0.108727 --0.04325,-0.04325 -0.0224007,0.0224007 -0.0879443,0.0879443 -0.153008,0.153008 -0.217205,0.217205 -0.280189,0.280189 -0.341753,0.341753 -0.400984,0.400984 -0.458194,0.458194 -0.512752,0.512752 -0.564496,0.564496 -0.613274,0.613274 -0.657992,0.657992 -0.699297,0.699297 -0.736595,0.736595 -0.769913,0.769913 -0.798999,0.798999 -0.823044,0.823044 -0.842577,0.842577 -0.857496,0.857496 -0.867615,0.867615 -0.873095,0.873095 -0.872948,0.872948 -0.868108,0.868108 -0.858469,0.858469 -0.844002,0.844002 -0.825163,0.825163 -0.800771,0.800771 -0.772278,0.772278 -0.73938,0.73938 -0.702475,0.702475 -0.661736,0.661736 -0.616692,0.616692 -0.568427,0.568427 -0.516969,0.516969 -0.462692,0.462692 -0.405714,0.405714 -0.346463,0.346463 -0.285079,0.285079 -0.222262,0.222262 -0.158171,0.158171 -0.0931609,0.0931609 -0.0276506,0.0276506 --0.0380663,-0.0380663 --0.103584,-0.103584 --0.168341,-0.168341 --0.232591,-0.232591 --0.294968,-0.294968 --0.355912,-0.355912 --0.41485,-0.41485 --0.471487,-0.471487 --0.525678,-0.525678 --0.576342,-0.576342 --0.624007,-0.624007 --0.668165,-0.668165 --0.70863,-0.70863 --0.745268,-0.745268 --0.77722,-0.77722 --0.804792,-0.804792 --0.828071,-0.828071 --0.846657,-0.846657 --0.860796,-0.860796 --0.869288,-0.869288 --0.873142,-0.873142 --0.872141,-0.872141 --0.866395,-0.866395 --0.855829,-0.855829 --0.839889,-0.839889 --0.81937,-0.81937 --0.794311,-0.794311 --0.764925,-0.764925 --0.7313,-0.7313 --0.693009,-0.693009 --0.65105,-0.65105 --0.605432,-0.605432 --0.556474,-0.556474 --0.50451,-0.50451 --0.449292,-0.449292 --0.391682,-0.391682 --0.331884,-0.331884 --0.270246,-0.270246 --0.207223,-0.207223 --0.142686,-0.142686 --0.0775552,-0.0775552 --0.0119775,-0.0119775 -0.0538328,0.0538328 -0.118963,0.118963 -0.18392,0.18392 -0.247357,0.247357 -0.309695,0.309695 -0.370239,0.370239 -0.428749,0.428749 -0.48464,0.48464 -0.537785,0.537785 -0.588022,0.588022 -0.634927,0.634927 -0.678504,0.678504 -0.717683,0.717683 -0.752988,0.752988 -0.784086,0.784086 -0.810952,0.810952 -0.833264,0.833264 -0.850416,0.850416 -0.862882,0.862882 -0.870582,0.870582 -0.873462,0.873462 -0.871661,0.871661 -0.864195,0.864195 -0.852155,0.852155 -0.835316,0.835316 -0.813944,0.813944 -0.788031,0.788031 -0.757219,0.757219 -0.72226,0.72226 -0.683282,0.683282 -0.640551,0.640551 -0.594306,0.594306 -0.544375,0.544375 -0.491337,0.491337 -0.435699,0.435699 -0.377675,0.377675 -0.317451,0.317451 -0.255354,0.255354 -0.191796,0.191796 -0.127159,0.127159 -0.0620021,0.0620021 --0.00383483,-0.00383483 --0.0693184,-0.0693184 --0.13461,-0.13461 --0.199087,-0.199087 --0.262457,-0.262457 --0.324421,-0.324421 --0.384384,-0.384384 --0.442169,-0.442169 --0.497506,-0.497506 --0.550184,-0.550184 --0.599708,-0.599708 --0.645659,-0.645659 --0.687911,-0.687911 --0.726409,-0.726409 --0.760887,-0.760887 --0.791299,-0.791299 --0.816598,-0.816598 --0.837477,-0.837477 --0.853736,-0.853736 --0.865296,-0.865296 --0.872095,-0.872095 --0.873435,-0.873435 --0.869942,-0.869942 --0.861682,-0.861682 --0.848709,-0.848709 --0.830929,-0.830929 --0.80817,-0.80817 --0.780758,-0.780758 --0.749159,-0.749159 --0.713427,-0.713427 --0.673703,-0.673703 --0.629811,-0.629811 --0.582453,-0.582453 --0.531915,-0.531915 --0.47833,-0.47833 --0.42238,-0.42238 --0.363355,-0.363355 --0.302719,-0.302719 --0.240261,-0.240261 --0.176463,-0.176463 --0.111793,-0.111793 --0.0462223,-0.0462223 -0.0193872,0.0193872 -0.0849849,0.0849849 -0.150089,0.150089 -0.214425,0.214425 -0.277337,0.277337 -0.338826,0.338826 -0.398284,0.398284 -0.455789,0.455789 -0.510346,0.510346 -0.562397,0.562397 -0.610714,0.610714 -0.656012,0.656012 -0.697571,0.697571 -0.735302,0.735302 -0.768541,0.768541 -0.797379,0.797379 -0.821918,0.821918 -0.841917,0.841917 -0.857329,0.857329 -0.867295,0.867295 -0.872522,0.872522 -0.872921,0.872921 -0.868548,0.868548 -0.859462,0.859462 -0.844789,0.844789 -0.825657,0.825657 -0.801917,0.801917 -0.773731,0.773731 -0.7413,0.7413 -0.704307,0.704307 -0.663297,0.663297 -0.618738,0.618738 -0.570793,0.570793 -0.519542,0.519542 -0.465251,0.465251 -0.408241,0.408241 -0.349103,0.349103 -0.287918,0.287918 -0.225288,0.225288 -0.161111,0.161111 -0.0961011,0.0961011 -0.0306033,0.0306033 --0.0350611,-0.0350611 --0.100664,-0.100664 --0.165488,-0.165488 --0.229498,-0.229498 --0.292096,-0.292096 --0.353334,-0.353334 --0.412283,-0.412283 --0.469068,-0.469068 --0.522918,-0.522918 --0.574076,-0.574076 --0.621981,-0.621981 --0.666605,-0.666605 --0.706857,-0.706857 --0.743348,-0.743348 --0.775707,-0.775707 --0.803799,-0.803799 --0.827464,-0.827464 --0.845977,-0.845977 --0.859776,-0.859776 --0.868895,-0.868895 --0.873202,-0.873202 --0.872695,-0.872695 --0.866775,-0.866775 --0.856015,-0.856015 --0.840556,-0.840556 --0.820583,-0.820583 --0.795864,-0.795864 --0.766378,-0.766378 --0.732554,-0.732554 --0.694775,-0.694775 --0.653096,-0.653096 --0.607872,-0.607872 --0.558807,-0.558807 --0.50669,-0.50669 --0.451752,-0.451752 --0.394474,-0.394474 --0.334684,-0.334684 --0.273172,-0.273172 --0.209936,-0.209936 --0.145698,-0.145698 --0.0804338,-0.0804338 --0.0150643,-0.0150643 -0.0508201,0.0508201 -0.116085,0.116085 -0.180861,0.180861 -0.244592,0.244592 -0.307021,0.307021 -0.367559,0.367559 -0.425931,0.425931 -0.482067,0.482067 -0.535545,0.535545 -0.586075,0.586075 -0.63288,0.63288 -0.676252,0.676252 -0.71591,0.71591 -0.751535,0.751535 -0.783233,0.783233 -0.809738,0.809738 -0.832018,0.832018 -0.849576,0.849576 -0.862602,0.862602 -0.870628,0.870628 -0.873541,0.873541 -0.871355,0.871355 -0.864555,0.864555 -0.852875,0.852875 -0.836629,0.836629 -0.814996,0.814996 -0.788971,0.788971 -0.758592,0.758592 -0.72402,0.72402 -0.685435,0.685435 -0.642617,0.642617 -0.596218,0.596218 -0.546581,0.546581 -0.493889,0.493889 -0.438546,0.438546 -0.380288,0.380288 -0.320143,0.320143 -0.258127,0.258127 -0.194769,0.194769 -0.130159,0.130159 -0.0649281,0.0649281 --0.000749648,-0.000749648 --0.0663457,-0.0663457 --0.131784,-0.131784 --0.196126,-0.196126 --0.259644,-0.259644 --0.321482,-0.321482 --0.381678,-0.381678 --0.439623,-0.439623 --0.495313,-0.495313 --0.547818,-0.547818 --0.597323,-0.597323 --0.64352,-0.64352 --0.686171,-0.686171 --0.725069,-0.725069 --0.759474,-0.759474 --0.789593,-0.789593 --0.815391,-0.815391 --0.836844,-0.836844 --0.853329,-0.853329 --0.864975,-0.864975 --0.871455,-0.871455 --0.873335,-0.873335 --0.870321,-0.870321 --0.862595,-0.862595 --0.849375,-0.849375 --0.831536,-0.831536 --0.809137,-0.809137 --0.782178,-0.782178 --0.751133,-0.751133 --0.71508,-0.71508 --0.675348,-0.675348 --0.631751,-0.631751 --0.584792,-0.584792 --0.534442,-0.534442 --0.480937,-0.480937 --0.424645,-0.424645 --0.366109,-0.366109 --0.305537,-0.305537 --0.243188,-0.243188 --0.17945,-0.17945 --0.114625,-0.114625 --0.0492492,-0.0492492 -0.016442,0.016442 -0.0820314,0.0820314 -0.147149,0.147149 -0.211414,0.211414 -0.27449,0.27449 -0.336114,0.336114 -0.395784,0.395784 -0.453195,0.453195 -0.507873,0.507873 -0.55987,0.55987 -0.608735,0.608735 -0.654339,0.654339 -0.695777,0.695777 -0.733376,0.733376 -0.766914,0.766914 -0.796366,0.796366 -0.821231,0.821231 -0.841144,0.841144 -0.856316,0.856316 -0.866795,0.866795 -0.872528,0.872528 -0.873428,0.873428 -0.868855,0.868855 -0.859562,0.859562 -0.845422,0.845422 -0.826783,0.826783 -0.803363,0.803363 -0.775204,0.775204 -0.742527,0.742527 -0.705928,0.705928 -0.665302,0.665302 -0.62127,0.62127 -0.572938,0.572938 -0.521796,0.521796 -0.467658,0.467658 -0.410926,0.410926 -0.352048,0.352048 -0.29073,0.29073 -0.228055,0.228055 -0.163997,0.163997 -0.099093,0.099093 -0.0335952,0.0335952 --0.0320826,-0.0320826 --0.0976104,-0.0976104 --0.162568,-0.162568 --0.226606,-0.226606 --0.28949,-0.28949 --0.350495,-0.350495 --0.409583,-0.409583 --0.466381,-0.466381 --0.520699,-0.520699 --0.572011,-0.572011 --0.619929,-0.619929 --0.664272,-0.664272 --0.70507,-0.70507 --0.741815,-0.741815 --0.774801,-0.774801 --0.802559,-0.802559 --0.826144,-0.826144 --0.845103,-0.845103 --0.859329,-0.859329 --0.869129,-0.869129 --0.873028,-0.873028 --0.872481,-0.872481 --0.866982,-0.866982 --0.856768,-0.856768 --0.841695,-0.841695 --0.821609,-0.821609 --0.796758,-0.796758 --0.767678,-0.767678 --0.734266,-0.734266 --0.696934,-0.696934 --0.655062,-0.655062 --0.609732,-0.609732 --0.561034,-0.561034 --0.509102,-0.509102 --0.454677,-0.454677 --0.396992,-0.396992 --0.337451,-0.337451 --0.275873,-0.275873 --0.212928,-0.212928 --0.148623,-0.148623 --0.0835123,-0.0835123 --0.0179179,-0.0179179 -0.0477399,0.0477399 -0.113218,0.113218 -0.177995,0.177995 -0.241733,0.241733 -0.304075,0.304075 -0.364772,0.364772 -0.42337,0.42337 -0.479948,0.479948 -0.53306,0.53306 -0.583602,0.583602 -0.63074,0.63074 -0.674472,0.674472 -0.714537,0.714537 -0.750022,0.750022 -0.78146,0.78146 -0.808558,0.808558 -0.831184,0.831184 -0.849363,0.849363 -0.862023,0.862023 -0.870102,0.870102 -0.873282,0.873282 +0.580324,0.580324 +0.613744,0.613744 +0.645089,0.645089 +0.673667,0.673667 +0.6996,0.6996 +0.722931,0.722931 +0.743105,0.743105 +0.760684,0.760684 +0.774898,0.774898 +0.786346,0.786346 +0.794463,0.794463 +0.799549,0.799549 +0.80147,0.80147 +0.800081,0.800081 +0.795764,0.795764 +0.788055,0.788055 +0.777407,0.777407 +0.763535,0.763535 +0.746751,0.746751 +0.726961,0.726961 +0.704286,0.704286 +0.67883,0.67883 +0.650733,0.650733 +0.619944,0.619944 +0.586887,0.586887 +0.551236,0.551236 +0.513733,0.513733 +0.473853,0.473853 +0.432445,0.432445 +0.388951,0.388951 +0.344276,0.344276 +0.298,0.298 +0.250621,0.250621 +0.20229,0.20229 +0.153015,0.153015 +0.103344,0.103344 +0.0531135,0.0531135 +0.00272798,0.00272798 +-0.0476821,-0.0476821 +-0.0979676,-0.0979676 +-0.1477,-0.1477 +-0.197001,-0.197001 +-0.245422,-0.245422 +-0.29295,-0.29295 +-0.339299,-0.339299 +-0.384245,-0.384245 +-0.427742,-0.427742 +-0.469483,-0.469483 +-0.509415,-0.509415 +-0.547315,-0.547315 +-0.583011,-0.583011 +-0.616464,-0.616464 +-0.647421,-0.647421 +-0.675841,-0.675841 +-0.701579,-0.701579 +-0.724517,-0.724517 +-0.744598,-0.744598 +-0.761775,-0.761775 +-0.775879,-0.775879 +-0.786922,-0.786922 +-0.794848,-0.794848 +-0.799631,-0.799631 +-0.801288,-0.801288 +-0.799686,-0.799686 +-0.795028,-0.795028 +-0.787044,-0.787044 +-0.776172,-0.776172 +-0.76205,-0.76205 +-0.745018,-0.745018 +-0.724937,-0.724937 +-0.702085,-0.702085 +-0.676334,-0.676334 +-0.648066,-0.648066 +-0.617106,-0.617106 +-0.583715,-0.583715 +-0.54808,-0.54808 +-0.510184,-0.510184 +-0.470353,-0.470353 +-0.428609,-0.428609 +-0.385181,-0.385181 +-0.340212,-0.340212 +-0.293941,-0.293941 +-0.246463,-0.246463 +-0.198004,-0.198004 +-0.148809,-0.148809 +-0.0989714,-0.0989714 +-0.0487642,-0.0487642 +0.00159481,0.00159481 +0.0520365,0.0520365 +0.102194,0.102194 +0.151981,0.151981 +0.201162,0.201162 +0.249538,0.249538 +0.296928,0.296928 +0.343162,0.343162 +0.38801,0.38801 +0.431339,0.431339 +0.472932,0.472932 +0.512698,0.512698 +0.550407,0.550407 +0.585903,0.585903 +0.619148,0.619148 +0.649905,0.649905 +0.678073,0.678073 +0.703582,0.703582 +0.726289,0.726289 +0.74613,0.74613 +0.763018,0.763018 +0.776883,0.776883 +0.78764,0.78764 +0.795325,0.795325 +0.799841,0.799841 +0.801179,0.801179 +0.799374,0.799374 +0.79438,0.79438 +0.786224,0.786224 +0.774959,0.774959 +0.760671,0.760671 +0.743349,0.743349 +0.723068,0.723068 +0.69991,0.69991 +0.67401,0.67401 +0.645414,0.645414 +0.614319,0.614319 +0.580714,0.580714 +0.544861,0.544861 +0.506844,0.506844 +0.46681,0.46681 +0.424913,0.424913 +0.381354,0.381354 +0.33629,0.33629 +0.289847,0.289847 +0.242364,0.242364 +0.193775,0.193775 +0.144547,0.144547 +0.0946672,0.0946672 +0.0444343,0.0444343 +-0.00596134,-0.00596134 +-0.0563291,-0.0563291 +-0.106513,-0.106513 +-0.156256,-0.156256 +-0.205333,-0.205333 +-0.253695,-0.253695 +-0.300938,-0.300938 +-0.347091,-0.347091 +-0.391821,-0.391821 +-0.43498,-0.43498 +-0.476464,-0.476464 +-0.516024,-0.516024 +-0.55356,-0.55356 +-0.588923,-0.588923 +-0.621897,-0.621897 +-0.652445,-0.652445 +-0.680428,-0.680428 +-0.705658,-0.705658 +-0.728186,-0.728186 +-0.747734,-0.747734 +-0.764365,-0.764365 +-0.777963,-0.777963 +-0.7885,-0.7885 +-0.795912,-0.795912 +-0.800128,-0.800128 +-0.801202,-0.801202 +-0.79912,-0.79912 +-0.793842,-0.793842 +-0.785489,-0.785489 +-0.77394,-0.77394 +-0.759344,-0.759344 +-0.741765,-0.741765 +-0.721286,-0.721286 +-0.697807,-0.697807 +-0.671792,-0.671792 +-0.642871,-0.642871 +-0.611606,-0.611606 +-0.577753,-0.577753 +-0.541789,-0.541789 +-0.503462,-0.503462 +-0.463393,-0.463393 +-0.421218,-0.421218 +-0.377642,-0.377642 +-0.332323,-0.332323 +-0.285911,-0.285911 +-0.238168,-0.238168 +-0.189662,-0.189662 +-0.140241,-0.140241 +-0.0904061,-0.0904061 +-0.0400821,-0.0400821 +0.01031,0.01031 +0.0606649,0.0606649 +0.110818,0.110818 +0.160525,0.160525 +0.209591,0.209591 +0.257804,0.257804 +0.305073,0.305073 +0.350983,0.350983 +0.395698,0.395698 +0.438713,0.438713 +0.480037,0.480037 +0.519414,0.519414 +0.556839,0.556839 +0.591881,0.591881 +0.624823,0.624823 +0.655076,0.655076 +0.682839,0.682839 +0.707877,0.707877 +0.730114,0.730114 +0.74944,0.74944 +0.765838,0.765838 +0.779146,0.779146 +0.789476,0.789476 +0.796521,0.796521 +0.800565,0.800565 +0.80132,0.80132 +0.798968,0.798968 +0.793477,0.793477 +0.784787,0.784787 +0.77292,0.77292 +0.758242,0.758242 +0.740227,0.740227 +0.719584,0.719584 +0.695901,0.695901 +0.669506,0.669506 +0.640487,0.640487 +0.608963,0.608963 +0.574884,0.574884 +0.538711,0.538711 +0.500269,0.500269 +0.459926,0.459926 +0.417732,0.417732 +0.373778,0.373778 +0.328629,0.328629 +0.281773,0.281773 +0.234265,0.234265 +0.185393,0.185393 +0.136066,0.136066 +0.0860656,0.0860656 +0.0358424,0.0358424 +-0.0147185,-0.0147185 +-0.0649151,-0.0649151 +-0.115291,-0.115291 +-0.164657,-0.164657 +-0.213947,-0.213947 +-0.261949,-0.261949 +-0.309111,-0.309111 +-0.355035,-0.355035 +-0.399507,-0.399507 +-0.442406,-0.442406 +-0.483651,-0.483651 +-0.522757,-0.522757 +-0.560097,-0.560097 +-0.594851,-0.594851 +-0.627646,-0.627646 +-0.65763,-0.65763 +-0.685191,-0.685191 +-0.710023,-0.710023 +-0.731887,-0.731887 +-0.751069,-0.751069 +-0.767167,-0.767167 +-0.780172,-0.780172 +-0.790269,-0.790269 +-0.79703,-0.79703 +-0.800715,-0.800715 +-0.801338,-0.801338 +-0.798564,-0.798564 +-0.792851,-0.792851 +-0.783864,-0.783864 +-0.771797,-0.771797 +-0.75669,-0.75669 +-0.738612,-0.738612 +-0.717525,-0.717525 +-0.69371,-0.69371 +-0.667072,-0.667072 +-0.637752,-0.637752 +-0.606083,-0.606083 +-0.571759,-0.571759 +-0.535425,-0.535425 +-0.496776,-0.496776 +-0.456289,-0.456289 +-0.413917,-0.413917 +-0.369969,-0.369969 +-0.324481,-0.324481 +-0.277765,-0.277765 +-0.229916,-0.229916 +-0.181234,-0.181234 +-0.131694,-0.131694 +-0.0818022,-0.0818022 +-0.0314026,-0.0314026 +0.0189072,0.0189072 +0.0694039,0.0694039 +0.119305,0.119305 +0.16911,0.16911 +0.217835,0.217835 +0.266059,0.266059 +0.31301,0.31301 +0.3588,0.3588 +0.403135,0.403135 +0.445919,0.445919 +0.486894,0.486894 +0.525966,0.525966 +0.562969,0.562969 +0.597659,0.597659 +0.630099,0.630099 +0.659951,0.659951 +0.68725,0.68725 +0.711797,0.711797 +0.733509,0.733509 +0.75238,0.75238 +0.768179,0.768179 +0.78101,0.78101 +0.790747,0.790747 +0.797266,0.797266 +0.800757,0.800757 +0.800963,0.800963 +0.798081,0.798081 +0.791957,0.791957 +0.782805,0.782805 +0.770438,0.770438 +0.755093,0.755093 +0.736737,0.736737 +0.71544,0.71544 +0.691368,0.691368 +0.664543,0.664543 +0.634996,0.634996 +0.603064,0.603064 +0.568639,0.568639 +0.532058,0.532058 +0.493315,0.493315 +0.452575,0.452575 +0.410158,0.410158 +0.365995,0.365995 +0.320487,0.320487 +0.273643,0.273643 +0.225732,0.225732 +0.176932,0.176932 +0.127458,0.127458 +0.0773677,0.0773677 +0.0271611,0.0271611 +-0.0233371,-0.0233371 +-0.0736059,-0.0736059 +-0.123683,-0.123683 +-0.173224,-0.173224 +-0.222084,-0.222084 +-0.270043,-0.270043 +-0.316969,-0.316969 +-0.362625,-0.362625 +-0.406846,-0.406846 +-0.449451,-0.449451 +-0.490268,-0.490268 +-0.529166,-0.529166 +-0.565937,-0.565937 +-0.600529,-0.600529 +-0.632672,-0.632672 +-0.662335,-0.662335 +-0.689375,-0.689375 +-0.713698,-0.713698 +-0.735198,-0.735198 +-0.75375,-0.75375 +-0.769348,-0.769348 +-0.781894,-0.781894 +-0.791345,-0.791345 +-0.797651,-0.797651 +-0.800814,-0.800814 +-0.800788,-0.800788 +-0.797601,-0.797601 +-0.791255,-0.791255 +-0.781781,-0.781781 +-0.769177,-0.769177 +-0.75359,-0.75359 +-0.734957,-0.734957 +-0.713459,-0.713459 +-0.689124,-0.689124 +-0.662021,-0.662021 +-0.632349,-0.632349 +-0.600132,-0.600132 +-0.565591,-0.565591 +-0.528753,-0.528753 +-0.489873,-0.489873 +-0.448986,-0.448986 +-0.406405,-0.406405 +-0.362119,-0.362119 +-0.316472,-0.316472 +-0.269561,-0.269561 +-0.22157,-0.22157 +-0.172693,-0.172693 +-0.123156,-0.123156 +-0.0730744,-0.0730744 +-0.0227982,-0.0227982 +0.0276646,0.0276646 +0.0779593,0.0779593 +0.127939,0.127939 +0.177468,0.177468 +0.226218,0.226218 +0.274163,0.274163 +0.320976,0.320976 +0.366452,0.366452 +0.410641,0.410641 +0.452967,0.452967 +0.493793,0.493793 +0.532386,0.532386 +0.569046,0.569046 +0.603409,0.603409 +0.635345,0.635345 +0.664781,0.664781 +0.691667,0.691667 +0.71563,0.71563 +0.737,0.737 +0.755238,0.755238 +0.770571,0.770571 +0.782899,0.782899 +0.792064,0.792064 +0.798106,0.798106 +0.800992,0.800992 +0.800682,0.800682 +0.797231,0.797231 +0.790667,0.790667 +0.780838,0.780838 +0.768094,0.768094 +0.752103,0.752103 +0.733342,0.733342 +0.711532,0.711532 +0.686921,0.686921 +0.659713,0.659713 +0.629668,0.629668 +0.597397,0.597397 +0.562516,0.562516 +0.525577,0.525577 +0.486436,0.486436 +0.445485,0.445485 +0.402691,0.402691 +0.358289,0.358289 +0.312565,0.312565 +0.26546,0.26546 +0.217434,0.217434 +0.168495,0.168495 +0.118839,0.118839 +0.0688022,0.0688022 +0.0184327,0.0184327 +-0.0319594,-0.0319594 +-0.0823143,-0.0823143 +-0.132245,-0.132245 +-0.181726,-0.181726 +-0.230477,-0.230477 +-0.278178,-0.278178 +-0.32507,-0.32507 +-0.37034,-0.37034 +-0.41445,-0.41445 +-0.456652,-0.456652 +-0.497219,-0.497219 +-0.535783,-0.535783 +-0.572173,-0.572173 +-0.6064,-0.6064 +-0.638079,-0.638079 +-0.667373,-0.667373 +-0.693905,-0.693905 +-0.717812,-0.717812 +-0.738784,-0.738784 +-0.756847,-0.756847 +-0.771959,-0.771959 +-0.783924,-0.783924 +-0.792903,-0.792903 +-0.798652,-0.798652 +-0.80127,-0.80127 +-0.800693,-0.800693 +-0.79702,-0.79702 +-0.790043,-0.790043 +-0.780155,-0.780155 +-0.766898,-0.766898 +-0.750919,-0.750919 +-0.731671,-0.731671 +-0.709745,-0.709745 +-0.684857,-0.684857 +-0.657379,-0.657379 +-0.627228,-0.627228 +-0.594568,-0.594568 +-0.559613,-0.559613 +-0.522436,-0.522436 +-0.483097,-0.483097 +-0.442067,-0.442067 +-0.398934,-0.398934 +-0.354647,-0.354647 +-0.30851,-0.30851 +-0.261533,-0.261533 +-0.213307,-0.213307 +-0.164237,-0.164237 +-0.114726,-0.114726 +-0.0643603,-0.0643603 +-0.0142236,-0.0142236 +0.0364279,0.0364279 +0.0865637,0.0865637 +0.136572,0.136572 +0.185994,0.185994 +0.234645,0.234645 +0.282398,0.282398 +0.329093,0.329093 +0.374228,0.374228 +0.418258,0.418258 +0.460298,0.460298 +0.500748,0.500748 +0.5391,0.5391 +0.575292,0.575292 +0.609283,0.609283 +0.64081,0.64081 +0.669879,0.669879 +0.696133,0.696133 +0.719849,0.719849 +0.740455,0.740455 +0.758375,0.758375 +0.773155,0.773155 +0.784865,0.784865 +0.793603,0.793603 +0.798949,0.798949 +0.80145,0.80145 diff --git a/src/test/golden_buffers/KeylockReverseTest b/src/test/golden_buffers/KeylockReverseTest index 7d0acbfff16a..2fbdc06eff7b 100644 --- a/src/test/golden_buffers/KeylockReverseTest +++ b/src/test/golden_buffers/KeylockReverseTest @@ -1,512 +1,512 @@ -1.1353,1.1353 -1.00751,1.00751 -0.844492,0.844492 -0.652814,0.652814 -0.438762,0.438762 -0.209594,0.209594 --0.026582,-0.026582 --0.261159,-0.261159 --0.486578,-0.486578 --0.694821,-0.694821 --0.878613,-0.878613 --1.03171,-1.03171 --1.14881,-1.14881 --1.22592,-1.22592 --1.26053,-1.26053 --1.25106,-1.25106 --1.19874,-1.19874 --1.10454,-1.10454 --0.972258,-0.972258 --0.806569,-0.806569 --0.612944,-0.612944 --0.398471,-0.398471 --0.170617,-0.170617 -0.0632482,0.0632482 -0.293999,0.293999 -0.514741,0.514741 -0.717191,0.717191 -0.894452,0.894452 -1.04077,1.04077 -1.15036,1.15036 -1.22028,1.22028 -1.24795,1.24795 -1.23172,1.23172 -1.17344,1.17344 -1.07427,1.07427 -0.938115,0.938115 -0.769522,0.769522 -0.574346,0.574346 -0.360208,0.360208 -0.133007,0.133007 --0.0979073,-0.0979073 --0.325521,-0.325521 --0.541484,-0.541484 --0.738189,-0.738189 --0.909389,-0.909389 --1.04838,-1.04838 --1.15149,-1.15149 --1.21414,-1.21414 --1.23486,-1.23486 --1.21272,-1.21272 --1.14851,-1.14851 --1.04463,-1.04463 --0.904816,-0.904816 --0.733762,-0.733762 --0.537507,-0.537507 --0.32276,-0.32276 --0.097117,-0.097117 -0.131465,0.131465 -0.355255,0.355255 -0.566599,0.566599 -0.758118,0.758118 -0.922889,0.922889 -1.05579,1.05579 -1.15182,1.15182 -1.20766,1.20766 -1.22186,1.22186 -1.19386,1.19386 -1.1242,1.1242 -1.01598,1.01598 -0.872483,0.872483 -0.698898,0.698898 -0.50141,0.50141 -0.286921,0.286921 -0.0626452,0.0626452 --0.163641,-0.163641 --0.383873,-0.383873 --0.590702,-0.590702 --0.776532,-0.776532 --0.93586,-0.93586 --1.06219,-1.06219 --1.15163,-1.15163 --1.20107,-1.20107 --1.20904,-1.20904 --1.17503,-1.17503 --1.10033,-1.10033 --0.987663,-0.987663 --0.84097,-0.84097 --0.665364,-0.665364 --0.46683,-0.46683 --0.25234,-0.25234 --0.0293049,-0.0293049 -0.194415,0.194415 -0.411332,0.411332 -0.613686,0.613686 -0.794587,0.794587 -0.947822,0.947822 -1.06785,1.06785 -1.15119,1.15119 -1.1945,1.1945 -1.19623,1.19623 -1.15668,1.15668 -1.07713,1.07713 -0.960455,0.960455 -0.810482,0.810482 -0.63272,0.63272 -0.433199,0.433199 -0.218928,0.218928 --0.00279968,-0.00279968 --0.22424,-0.22424 --0.437695,-0.437695 --0.635654,-0.635654 --0.811467,-0.811467 --0.95923,-0.95923 --1.07358,-1.07358 --1.15042,-1.15042 --1.1879,-1.1879 --1.18384,-1.18384 --1.13862,-1.13862 --1.05453,-1.05453 --0.933813,-0.933813 --0.780992,-0.780992 --0.601051,-0.601051 --0.400641,-0.400641 --0.186584,-0.186584 -0.033899,0.033899 -0.252933,0.252933 -0.463058,0.463058 -0.656946,0.656946 -0.827924,0.827924 -0.97006,0.97006 -1.07887,1.07887 -1.14977,1.14977 -1.18123,1.18123 -1.17143,1.17143 -1.12144,1.12144 -1.03267,1.03267 -0.907929,0.907929 -0.752252,0.752252 -0.570389,0.570389 -0.369159,0.369159 -0.155217,0.155217 --0.0641559,-0.0641559 --0.2807,-0.2807 --0.487821,-0.487821 --0.677511,-0.677511 --0.843983,-0.843983 --0.980868,-0.980868 --1.0838,-1.0838 --1.1492,-1.1492 --1.17496,-1.17496 --1.1597,-1.1597 --1.1046,-1.1046 --1.01111,-1.01111 --0.882971,-0.882971 --0.724439,-0.724439 --0.540625,-0.540625 --0.338473,-0.338473 --0.124659,-0.124659 -0.0934068,0.0934068 -0.307856,0.307856 -0.511489,0.511489 -0.697672,0.697672 -0.859644,0.859644 -0.991289,0.991289 -1.08903,1.08903 -1.14851,1.14851 -1.16881,1.16881 -1.14842,1.14842 -1.08832,1.08832 -0.990483,0.990483 -0.858899,0.858899 -0.697056,0.697056 -0.511655,0.511655 -0.308632,0.308632 -0.0948792,0.0948792 --0.121858,-0.121858 --0.334435,-0.334435 --0.535255,-0.535255 --0.717452,-0.717452 --0.874801,-0.874801 --1.00184,-1.00184 --1.09389,-1.09389 --1.14845,-1.14845 --1.16299,-1.16299 --1.13759,-1.13759 --1.07246,-1.07246 --0.970677,-0.970677 --0.835157,-0.835157 --0.670895,-0.670895 --0.483406,-0.483406 --0.279452,-0.279452 --0.0657176,-0.0657176 -0.149828,0.149828 -0.36055,0.36055 -0.558566,0.558566 -0.737033,0.737033 -0.890046,0.890046 -1.01223,1.01223 -1.09931,1.09931 -1.14834,1.14834 -1.15761,1.15761 -1.12717,1.12717 -1.05736,1.05736 -0.951215,0.951215 -0.812251,0.812251 -0.645043,0.645043 -0.455761,0.455761 -0.250648,0.250648 -0.0372199,0.0372199 --0.177629,-0.177629 --0.386356,-0.386356 --0.581418,-0.581418 --0.756443,-0.756443 --0.905483,-0.905483 --1.02274,-1.02274 --1.10478,-1.10478 --1.14885,-1.14885 --1.1528,-1.1528 --1.11717,-1.11717 --1.04271,-1.04271 --0.932489,-0.932489 --0.789801,-0.789801 --0.619938,-0.619938 --0.428628,-0.428628 --0.222751,-0.222751 --0.00881796,-0.00881796 -0.204979,0.204979 -0.411906,0.411906 -0.604468,0.604468 -0.775916,0.775916 -0.92076,0.92076 -1.03358,1.03358 -1.11077,1.11077 -1.14956,1.14956 -1.14842,1.14842 -1.10781,1.10781 -1.02865,1.02865 -0.914163,0.914163 -0.767934,0.767934 -0.595273,0.595273 -0.401802,0.401802 -0.194845,0.194845 --0.0190576,-0.0190576 --0.232381,-0.232381 --0.437292,-0.437292 --0.627477,-0.627477 --0.795624,-0.795624 --0.93647,-0.93647 --1.04475,-1.04475 --1.1172,-1.1172 --1.15061,-1.15061 --1.14449,-1.14449 --1.09876,-1.09876 --1.01505,-1.01505 --0.896124,-0.896124 --0.746399,-0.746399 --0.570764,-0.570764 --0.375582,-0.375582 --0.167065,-0.167065 -0.0470556,0.0470556 -0.259545,0.259545 -0.46297,0.46297 -0.650558,0.650558 -0.81552,0.81552 -0.952441,0.952441 -1.05638,1.05638 -1.12367,1.12367 -1.15237,1.15237 -1.14095,1.14095 -1.09027,1.09027 -1.00169,1.00169 -0.87874,0.87874 -0.725253,0.725253 -0.546693,0.546693 -0.349094,0.349094 -0.139622,0.139622 --0.07506,-0.07506 --0.286831,-0.286831 --0.488798,-0.488798 --0.674077,-0.674077 --0.835769,-0.835769 --0.96893,-0.96893 --1.06823,-1.06823 --1.13104,-1.13104 --1.15441,-1.15441 --1.13795,-1.13795 --1.08217,-1.08217 --0.988906,-0.988906 --0.861468,-0.861468 --0.704181,-0.704181 --0.522558,-0.522558 --0.322828,-0.322828 --0.111857,-0.111857 -0.103174,0.103174 -0.314608,0.314608 -0.514901,0.514901 -0.69794,0.69794 -0.856532,0.856532 -0.98572,0.98572 -1.08085,1.08085 -1.13857,1.13857 -1.1569,1.1569 -1.13536,1.13536 -1.07436,1.07436 -0.976319,0.976319 -0.844411,0.844411 -0.683243,0.683243 -0.498408,0.498408 -0.296293,0.296293 -0.0838893,0.0838893 --0.131549,-0.131549 --0.342477,-0.342477 --0.541713,-0.541713 --0.722225,-0.722225 --0.877874,-0.877874 --1.0031,-1.0031 --1.09385,-1.09385 --1.14668,-1.14668 --1.15983,-1.15983 --1.1331,-1.1331 --1.06683,-1.06683 --0.963814,-0.963814 --0.827386,-0.827386 --0.662377,-0.662377 --0.47412,-0.47412 --0.269702,-0.269702 --0.0555911,-0.0555911 -0.160512,0.160512 -0.371044,0.371044 -0.568807,0.568807 -0.747138,0.747138 -0.899788,0.899788 -1.02097,1.02097 -1.10735,1.10735 -1.15525,1.15525 -1.1633,1.1633 -1.13086,1.13086 -1.05952,1.05952 -0.951536,0.951536 -0.810325,0.810325 -0.641034,0.641034 -0.449759,0.449759 -0.242372,0.242372 -0.0269037,0.0269037 --0.189947,-0.189947 --0.400109,-0.400109 --0.596745,-0.596745 --0.772844,-0.772844 --0.922171,-0.922171 --1.03968,-1.03968 --1.12137,-1.12137 --1.1643,-1.1643 --1.16681,-1.16681 --1.12927,-1.12927 --1.05225,-1.05225 --0.938926,-0.938926 --0.793061,-0.793061 --0.619725,-0.619725 --0.42477,-0.42477 --0.214859,-0.214859 -0.00264836,0.00264836 -0.220079,0.220079 -0.429892,0.429892 -0.625366,0.625366 -0.799158,0.799158 -0.945246,0.945246 -1.05884,1.05884 -1.13606,1.13606 -1.17364,1.17364 -1.17092,1.17092 -1.12741,1.12741 -1.04514,1.04514 -0.926273,0.926273 -0.775711,0.775711 -0.597743,0.597743 -0.398967,0.398967 -0.186625,0.186625 --0.032729,-0.032729 --0.251058,-0.251058 --0.460721,-0.460721 --0.654847,-0.654847 --0.826156,-0.826156 --0.969208,-0.969208 --1.07877,-1.07877 --1.15097,-1.15097 --1.18337,-1.18337 --1.17529,-1.17529 --1.12596,-1.12596 --1.03757,-1.03757 --0.913565,-0.913565 --0.75757,-0.75757 --0.575168,-0.575168 --0.372949,-0.372949 --0.1572,-0.1572 -0.0637186,0.0637186 -0.282935,0.282935 -0.492464,0.492464 -0.685136,0.685136 -0.853994,0.853994 -0.993856,0.993856 -1.09916,1.09916 -1.16653,1.16653 -1.19367,1.19367 -1.17941,1.17941 -1.12408,1.12408 -1.03016,1.03016 -0.900157,0.900157 -0.738857,0.738857 -0.552119,0.552119 -0.345653,0.345653 -0.127213,0.127213 --0.0959141,-0.0959141 --0.315723,-0.315723 --0.5249,-0.5249 --0.716222,-0.716222 --0.883048,-0.883048 --1.0191,-1.0191 --1.12024,-1.12024 --1.1825,-1.1825 --1.20375,-1.20375 --1.18368,-1.18368 --1.12215,-1.12215 --1.02223,-1.02223 --0.886213,-0.886213 --0.71964,-0.71964 --0.527802,-0.527802 --0.317545,-0.317545 --0.0962029,-0.0962029 -0.129054,0.129054 -0.349614,0.349614 -0.558807,0.558807 -0.74857,0.74857 -0.91275,0.91275 -1.04503,1.04503 -1.14173,1.14173 -1.19896,1.19896 -1.21429,1.21429 -1.18784,1.18784 -1.12013,1.12013 -1.01353,1.01353 -0.871687,0.871687 -0.699314,0.699314 -0.502638,0.502638 -0.288436,0.288436 -0.0636963,0.0636963 --0.163424,-0.163424 --0.385015,-0.385015 --0.593512,-0.593512 --0.781769,-0.781769 --0.943255,-0.943255 --1.07194,-1.07194 --1.16388,-1.16388 --1.21526,-1.21526 --1.2248,-1.2248 --1.19187,-1.19187 --1.11763,-1.11763 --1.00436,-1.00436 --0.856019,-0.856019 --0.678236,-0.678236 --0.476274,-0.476274 --0.257653,-0.257653 --0.0302052,-0.0302052 -0.199223,0.199223 -0.421241,0.421241 -0.629716,0.629716 -0.816138,0.816138 -0.974517,0.974517 -1.09925,1.09925 -1.18629,1.18629 -1.23197,1.23197 -1.23525,1.23525 -1.19543,1.19543 -1.11435,1.11435 -0.994309,0.994309 -0.839666,0.839666 -0.655548,0.655548 -0.448617,0.448617 -0.226064,0.226064 --0.00497451,-0.00497451 --0.236125,-0.236125 --0.459236,-0.459236 --0.66678,-0.66678 --0.851452,-0.851452 --1.00693,-1.00693 --1.12732,-1.12732 --1.2091,-1.2091 --1.2489,-1.2489 --1.24543,-1.24543 --1.1987,-1.1987 --1.11024,-1.11024 --0.983206,-0.983206 --0.822,-0.822 --0.631765,-0.631765 --0.419523,-0.419523 --0.19258,-0.19258 -0.0417103,0.0417103 -0.274618,0.274618 -0.498576,0.498576 -0.705083,0.705083 -0.887779,0.887779 -1.03979,1.03979 -1.15589,1.15589 -1.23222,1.23222 -1.26562,1.26562 -1.25516,1.25516 -1.20124,1.20124 -1.10536,1.10536 -0.971059,0.971059 -0.802952,0.802952 -0.606589,0.606589 -0.388663,0.388663 -0.157456,0.157456 +-0.524209,-0.524209 +-0.48325,-0.48325 +-0.44034,-0.44034 +-0.395863,-0.395863 +-0.350198,-0.350198 +-0.303047,-0.303047 +-0.255155,-0.255155 +-0.206316,-0.206316 +-0.15684,-0.15684 +-0.10704,-0.10704 +-0.0569178,-0.0569178 +-0.006903,-0.006903 +0.0431255,0.0431255 +0.0926204,0.0926204 +0.141675,0.141675 +0.189836,0.189836 +0.237231,0.237231 +0.283319,0.283319 +0.328319,0.328319 +0.371577,0.371577 +0.41352,0.41352 +0.453321,0.453321 +0.493648,0.493648 +0.52961,0.52961 +0.563827,0.563827 +0.59524,0.59524 +0.624572,0.624572 +0.651126,0.651126 +0.675032,0.675032 +0.696391,0.696391 +0.714601,0.714601 +0.730318,0.730318 +0.742712,0.742712 +0.752464,0.752464 +0.758983,0.758983 +0.762597,0.762597 +0.763212,0.763212 +0.760636,0.760636 +0.755348,0.755348 +0.746818,0.746818 +0.735573,0.735573 +0.721293,0.721293 +0.704328,0.704328 +0.684587,0.684587 +0.662192,0.662192 +0.63725,0.63725 +0.60994,0.60994 +0.580139,0.580139 +0.548396,0.548396 +0.514218,0.514218 +0.478547,0.478547 +0.440637,0.440637 +0.401565,0.401565 +0.360535,0.360535 +0.318644,0.318644 +0.275347,0.275347 +0.231153,0.231153 +0.186267,0.186267 +0.140563,0.140563 +0.0947039,0.0947039 +0.0484321,0.0484321 +0.00215811,0.00215811 +-0.043971,-0.043971 +-0.0899174,-0.0899174 +-0.135143,-0.135143 +-0.179901,-0.179901 +-0.223682,-0.223682 +-0.266536,-0.266536 +-0.308213,-0.308213 +-0.348448,-0.348448 +-0.387293,-0.387293 +-0.424399,-0.424399 +-0.459766,-0.459766 +-0.493216,-0.493216 +-0.524527,-0.524527 +-0.553774,-0.553774 +-0.580649,-0.580649 +-0.60518,-0.60518 +-0.62722,-0.62722 +-0.646691,-0.646691 +-0.66351,-0.66351 +-0.677713,-0.677713 +-0.689116,-0.689116 +-0.697727,-0.697727 +-0.703568,-0.703568 +-0.706516,-0.706516 +-0.706783,-0.706783 +-0.703996,-0.703996 +-0.698698,-0.698698 +-0.69023,-0.69023 +-0.679434,-0.679434 +-0.665624,-0.665624 +-0.649432,-0.649432 +-0.630425,-0.630425 +-0.609208,-0.609208 +-0.585318,-0.585318 +-0.559393,-0.559393 +-0.531182,-0.531182 +-0.500813,-0.500813 +-0.468703,-0.468703 +-0.434583,-0.434583 +-0.39895,-0.39895 +-0.361709,-0.361709 +-0.323136,-0.323136 +-0.283312,-0.283312 +-0.242478,-0.242478 +-0.200756,-0.200756 +-0.15825,-0.15825 +-0.11527,-0.11527 +-0.0719108,-0.0719108 +-0.0282457,-0.0282457 +0.015244,0.015244 +0.0588027,0.0588027 +0.101891,0.101891 +0.144549,0.144549 +0.186524,0.186524 +0.22768,0.22768 +0.267809,0.267809 +0.306835,0.306835 +0.344515,0.344515 +0.380749,0.380749 +0.415381,0.415381 +0.44825,0.44825 +0.479347,0.479347 +0.508305,0.508305 +0.535281,0.535281 +0.560025,0.560025 +0.582441,0.582441 +0.602466,0.602466 +0.62006,0.62006 +0.635066,0.635066 +0.647551,0.647551 +0.657323,0.657323 +0.664499,0.664499 +0.668841,0.668841 +0.670689,0.670689 +0.669554,0.669554 +0.665969,0.665969 +0.659476,0.659476 +0.650485,0.650485 +0.638704,0.638704 +0.624493,0.624493 +0.607719,0.607719 +0.588503,0.588503 +0.566907,0.566907 +0.543023,0.543023 +0.517025,0.517025 +0.48887,0.48887 +0.458903,0.458903 +0.426901,0.426901 +0.393417,0.393417 +0.358201,0.358201 +0.321682,0.321682 +0.283776,0.283776 +0.24488,0.24488 +0.204932,0.204932 +0.164195,0.164195 +0.122971,0.122971 +0.0809752,0.0809752 +0.0390817,0.0390817 +-0.00332461,-0.00332461 +-0.0453799,-0.0453799 +-0.0873974,-0.0873974 +-0.128916,-0.128916 +-0.169993,-0.169993 +-0.210246,-0.210246 +-0.249633,-0.249633 +-0.288071,-0.288071 +-0.32511,-0.32511 +-0.361054,-0.361054 +-0.395287,-0.395287 +-0.427988,-0.427988 +-0.458934,-0.458934 +-0.487913,-0.487913 +-0.514993,-0.514993 +-0.539863,-0.539863 +-0.562559,-0.562559 +-0.582927,-0.582927 +-0.600934,-0.600934 +-0.616427,-0.616427 +-0.629466,-0.629466 +-0.639842,-0.639842 +-0.647641,-0.647641 +-0.652793,-0.652793 +-0.655252,-0.655252 +-0.655061,-0.655061 +-0.652109,-0.652109 +-0.646556,-0.646556 +-0.63834,-0.63834 +-0.627467,-0.627467 +-0.614118,-0.614118 +-0.598122,-0.598122 +-0.579758,-0.579758 +-0.558973,-0.558973 +-0.535976,-0.535976 +-0.510566,-0.510566 +-0.483408,-0.483408 +-0.453841,-0.453841 +-0.422791,-0.422791 +-0.389676,-0.389676 +-0.355234,-0.355234 +-0.319038,-0.319038 +-0.28183,-0.28183 +-0.243117,-0.243117 +-0.203711,-0.203711 +-0.163174,-0.163174 +-0.122179,-0.122179 +-0.0804619,-0.0804619 +-0.0385906,-0.0385906 +0.00367346,0.00367346 +0.045715,0.045715 +0.0878443,0.0878443 +0.129416,0.129416 +0.170599,0.170599 +0.211068,0.211068 +0.250729,0.250729 +0.289352,0.289352 +0.326823,0.326823 +0.363005,0.363005 +0.397635,0.397635 +0.43078,0.43078 +0.462071,0.462071 +0.491561,0.491561 +0.518961,0.518961 +0.544381,0.544381 +0.567401,0.567401 +0.588299,0.588299 +0.606656,0.606656 +0.622558,0.622558 +0.635966,0.635966 +0.646666,0.646666 +0.654799,0.654799 +0.660175,0.660175 +0.66287,0.66287 +0.662843,0.662843 +0.660006,0.660006 +0.65453,0.65453 +0.646266,0.646266 +0.635374,0.635374 +0.621818,0.621818 +0.60571,0.60571 +0.586937,0.586937 +0.565982,0.565982 +0.542317,0.542317 +0.516688,0.516688 +0.488667,0.488667 +0.458654,0.458654 +0.426726,0.426726 +0.392952,0.392952 +0.357454,0.357454 +0.320515,0.320515 +0.282071,0.282071 +0.242512,0.242512 +0.201773,0.201773 +0.160143,0.160143 +0.117894,0.117894 +0.0748354,0.0748354 +0.0317184,0.0317184 +-0.0119588,-0.0119588 +-0.0554527,-0.0554527 +-0.098862,-0.098862 +-0.141956,-0.141956 +-0.184558,-0.184558 +-0.226447,-0.226447 +-0.267584,-0.267584 +-0.307533,-0.307533 +-0.346492,-0.346492 +-0.38393,-0.38393 +-0.419959,-0.419959 +-0.454333,-0.454333 +-0.48682,-0.48682 +-0.517471,-0.517471 +-0.546014,-0.546014 +-0.572248,-0.572248 +-0.596452,-0.596452 +-0.617854,-0.617854 +-0.637161,-0.637161 +-0.653561,-0.653561 +-0.667463,-0.667463 +-0.678579,-0.678579 +-0.686915,-0.686915 +-0.692384,-0.692384 +-0.695184,-0.695184 +-0.694783,-0.694783 +-0.691888,-0.691888 +-0.685781,-0.685781 +-0.677023,-0.677023 +-0.665382,-0.665382 +-0.650926,-0.650926 +-0.63375,-0.63375 +-0.613931,-0.613931 +-0.591444,-0.591444 +-0.56653,-0.56653 +-0.539123,-0.539123 +-0.509434,-0.509434 +-0.477561,-0.477561 +-0.443589,-0.443589 +-0.407692,-0.407692 +-0.369994,-0.369994 +-0.330656,-0.330656 +-0.289817,-0.289817 +-0.247662,-0.247662 +-0.204332,-0.204332 +-0.160081,-0.160081 +-0.114914,-0.114914 +-0.0692885,-0.0692885 +-0.0229984,-0.0229984 +0.0232713,0.0232713 +0.0697828,0.0697828 +0.116108,0.116108 +0.16203,0.16203 +0.207594,0.207594 +0.252279,0.252279 +0.29619,0.29619 +0.33896,0.33896 +0.38051,0.38051 +0.420609,0.420609 +0.459065,0.459065 +0.495887,0.495887 +0.530628,0.530628 +0.563371,0.563371 +0.593962,0.593962 +0.622014,0.622014 +0.647847,0.647847 +0.670868,0.670868 +0.69134,0.69134 +0.708954,0.708954 +0.723744,0.723744 +0.735572,0.735572 +0.744394,0.744394 +0.750192,0.750192 +0.752899,0.752899 +0.752496,0.752496 +0.749003,0.749003 +0.742391,0.742391 +0.732651,0.732651 +0.719901,0.719901 +0.704072,0.704072 +0.685349,0.685349 +0.663573,0.663573 +0.639179,0.639179 +0.611833,0.611833 +0.582012,0.582012 +0.549587,0.549587 +0.514767,0.514767 +0.477701,0.477701 +0.438507,0.438507 +0.397354,0.397354 +0.354325,0.354325 +0.309753,0.309753 +0.263642,0.263642 +0.216299,0.216299 +0.167843,0.167843 +0.118515,0.118515 +0.0687554,0.0687554 +0.0186311,0.0186311 +-0.0315551,-0.0315551 +-0.0815779,-0.0815779 +-0.131406,-0.131406 +-0.180514,-0.180514 +-0.229155,-0.229155 +-0.276643,-0.276643 +-0.32314,-0.32314 +-0.36834,-0.36834 +-0.411943,-0.411943 +-0.454062,-0.454062 +-0.494125,-0.494125 +-0.532389,-0.532389 +-0.568351,-0.568351 +-0.602105,-0.602105 +-0.63331,-0.63331 +-0.662101,-0.662101 +-0.687959,-0.687959 +-0.711344,-0.711344 +-0.731523,-0.731523 +-0.74895,-0.74895 +-0.763246,-0.763246 +-0.774397,-0.774397 +-0.782484,-0.782484 +-0.78729,-0.78729 +-0.788986,-0.788986 +-0.787425,-0.787425 +-0.782577,-0.782577 +-0.774742,-0.774742 +-0.763501,-0.763501 +-0.749321,-0.749321 +-0.732041,-0.732041 +-0.711686,-0.711686 +-0.688588,-0.688588 +-0.662482,-0.662482 +-0.633901,-0.633901 +-0.602453,-0.602453 +-0.568804,-0.568804 +-0.5326,-0.5326 +-0.494401,-0.494401 +-0.454042,-0.454042 +-0.411877,-0.411877 +-0.368036,-0.368036 +-0.322537,-0.322537 +-0.276006,-0.276006 +-0.227938,-0.227938 +-0.179308,-0.179308 +-0.129626,-0.129626 +-0.0796584,-0.0796584 +-0.0290311,-0.0290311 +0.0213593,0.0213593 +0.0720967,0.0720967 +0.122112,0.122112 +0.172078,0.172078 +0.220984,0.220984 +0.269363,0.269363 +0.316383,0.316383 +0.362278,0.362278 +0.406717,0.406717 +0.449375,0.449375 +0.490473,0.490473 +0.529352,0.529352 +0.566186,0.566186 +0.600809,0.600809 +0.632797,0.632797 +0.662454,0.662454 +0.689297,0.689297 +0.713327,0.713327 +0.734535,0.734535 +0.752721,0.752721 +0.76781,0.76781 +0.779912,0.779912 +0.788684,0.788684 +0.794359,0.794359 +0.796752,0.796752 +0.795911,0.795911 +0.791811,0.791811 +0.784568,0.784568 +0.773966,0.773966 +0.760406,0.760406 +0.743584,0.743584 +0.723796,0.723796 +0.701061,0.701061 +0.675404,0.675404 +0.647028,0.647028 +0.616044,0.616044 +0.582425,0.582425 +0.546581,0.546581 +0.508257,0.508257 +0.468103,0.468103 +0.425859,0.425859 +0.381863,0.381863 +0.336504,0.336504 +0.289315,0.289315 +0.241457,0.241457 +0.192152,0.192152 +0.142275,0.142275 +0.0917689,0.0917689 +0.0407561,0.0407561 +-0.0103185,-0.0103185 +-0.0614803,-0.0614803 +-0.112332,-0.112332 +-0.162825,-0.162825 +-0.212626,-0.212626 +-0.261664,-0.261664 +-0.309558,-0.309558 +-0.356291,-0.356291 +-0.401577,-0.401577 +-0.445251,-0.445251 +-0.487167,-0.487167 +-0.527099,-0.527099 +-0.564818,-0.564818 +-0.600508,-0.600508 +-0.633424,-0.633424 +-0.664128,-0.664128 +-0.691865,-0.691865 +-0.717009,-0.717009 +-0.73912,-0.73912 +-0.758321,-0.758321 +-0.774363,-0.774363 +-0.787289,-0.787289 +-0.797097,-0.797097 +-0.803575,-0.803575 +-0.806798,-0.806798 +-0.806814,-0.806814 +-0.803433,-0.803433 +-0.796892,-0.796892 +-0.787047,-0.787047 +-0.773953,-0.773953 +-0.757832,-0.757832 +-0.738461,-0.738461 +-0.716209,-0.716209 +-0.690966,-0.690966 +-0.66285,-0.66285 +-0.632166,-0.632166 +-0.598699,-0.598699 +-0.562979,-0.562979 +-0.524749,-0.524749 +-0.484555,-0.484555 +-0.442168,-0.442168 +-0.398159,-0.398159 +-0.352373,-0.352373 +-0.305104,-0.305104 +-0.256717,-0.256717 +-0.207015,-0.207015 +-0.156741,-0.156741 +-0.105511,-0.105511 +-0.0540654,-0.0540654 +-0.00215057,-0.00215057 +0.049682,0.049682 +0.101343,0.101343 +0.152651,0.152651 +0.203394,0.203394 +0.253262,0.253262 +0.30233,0.30233 +0.349844,0.349844 +0.396383,0.396383 diff --git a/src/test/signalpathtest.cpp b/src/test/signalpathtest.cpp index 849d59c93a6a..a0840243e528 100644 --- a/src/test/signalpathtest.cpp +++ b/src/test/signalpathtest.cpp @@ -8,7 +8,7 @@ const char* BaseSignalPathTest::m_sGroup2 = "[Channel2]"; const char* BaseSignalPathTest::m_sGroup3 = "[Channel3]"; const char* BaseSignalPathTest::m_sPreviewGroup = "[PreviewDeck1]"; const char* BaseSignalPathTest::m_sSamplerGroup = "[Sampler1]"; -const double BaseSignalPathTest::kDefaultRateRange = 4.0; +const double BaseSignalPathTest::kDefaultRateRange = 0.08; const double BaseSignalPathTest::kDefaultRateDir = 1.0; const double BaseSignalPathTest::kRateRangeDivisor = kDefaultRateDir * kDefaultRateRange; const int BaseSignalPathTest::kProcessBufferSize = 1024; diff --git a/src/widget/wnumberpos.h b/src/widget/wnumberpos.h index 593a5c7b65ec..56569a3a3350 100644 --- a/src/widget/wnumberpos.h +++ b/src/widget/wnumberpos.h @@ -6,7 +6,7 @@ #include #include "wnumber.h" -#include "preferences/dialog/dlgprefcontrols.h" +#include "preferences/dialog/dlgprefdeck.h" class ControlProxy;