diff --git a/Source/Fractorium/Fractorium.h b/Source/Fractorium/Fractorium.h index eb6065d..0b05800 100644 --- a/Source/Fractorium/Fractorium.h +++ b/Source/Fractorium/Fractorium.h @@ -215,6 +215,7 @@ public slots: void OnXaosChanged(double d); void OnXaosFromToToggled(bool checked); void OnClearXaosButtonClicked(bool checked); + void OnRandomXaosButtonClicked(bool checked); //Palette. void OnPaletteAdjust(int d); diff --git a/Source/Fractorium/Fractorium.ui b/Source/Fractorium/Fractorium.ui index f295b6e..0be47d3 100644 --- a/Source/Fractorium/Fractorium.ui +++ b/Source/Fractorium/Fractorium.ui @@ -521,8 +521,8 @@ 0 0 - 98 - 847 + 252 + 852 @@ -2817,8 +2817,8 @@ SpinBox 0 0 - 118 - 597 + 238 + 747 @@ -4371,7 +4371,10 @@ SpinBox Xaos - + + + 4 + 6 @@ -4534,6 +4537,12 @@ SpinBox + + + 0 + 0 + + Direction @@ -4543,7 +4552,7 @@ SpinBox false - + 6 @@ -4577,14 +4586,28 @@ SpinBox - - - Set all xaos values in all xforms to 1 - - - Clear Xaos - - + + + + + Set all xaos values in all xforms to 1 + + + Clear Xaos + + + + + + + Randomize all xaos values in all xforms + + + Random Xaos + + + + @@ -4988,8 +5011,8 @@ SpinBox 0 0 - 105 - 684 + 256 + 856 @@ -5833,7 +5856,6 @@ SpinBox InfoRenderingTextEdit PreAffineGroupBox scrollArea_4 - ClearXaosButton InfoBoundsGroupBox XaosFromRadio XaosToRadio diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h index ae80d38..140a474 100644 --- a/Source/Fractorium/FractoriumEmberController.h +++ b/Source/Fractorium/FractoriumEmberController.h @@ -166,6 +166,7 @@ public: virtual QString MakeXaosNameString(unsigned int i) { return ""; } virtual void XaosChanged(DoubleSpinBox* sender) { } virtual void ClearXaos() { } + virtual void RandomXaos() { } //Palette. virtual bool InitPaletteTable(const string& s) { return false; } @@ -384,6 +385,7 @@ public: virtual QString MakeXaosNameString(unsigned int i) override; virtual void XaosChanged(DoubleSpinBox* sender) override; virtual void ClearXaos() override; + virtual void RandomXaos() override; //Palette. virtual bool InitPaletteTable(const string& s) override; diff --git a/Source/Fractorium/FractoriumXformsXaos.cpp b/Source/Fractorium/FractoriumXformsXaos.cpp index cf36cd9..9a389fd 100644 --- a/Source/Fractorium/FractoriumXformsXaos.cpp +++ b/Source/Fractorium/FractoriumXformsXaos.cpp @@ -8,6 +8,7 @@ void Fractorium::InitXformsXaosUI() { connect(ui.XaosToRadio, SIGNAL(toggled(bool)), this, SLOT(OnXaosFromToToggled(bool)), Qt::QueuedConnection); connect(ui.ClearXaosButton, SIGNAL(clicked(bool)), this, SLOT(OnClearXaosButtonClicked(bool)), Qt::QueuedConnection); + connect(ui.RandomXaosButton, SIGNAL(clicked(bool)), this, SLOT(OnRandomXaosButtonClicked(bool)), Qt::QueuedConnection); } /// @@ -160,6 +161,7 @@ void Fractorium::FillXaosTable() w = SetTabOrder(this, w, ui.XaosToRadio); w = SetTabOrder(this, w, ui.XaosFromRadio); w = SetTabOrder(this, w, ui.ClearXaosButton); + w = SetTabOrder(this, w, ui.RandomXaosButton); } /// @@ -181,4 +183,36 @@ void FractoriumEmberController::ClearXaos() spinBox->SetValueStealth(1.0); } -void Fractorium::OnClearXaosButtonClicked(bool checked) { m_Controller->ClearXaos(); } \ No newline at end of file +void Fractorium::OnClearXaosButtonClicked(bool checked) { m_Controller->ClearXaos(); } + +/// +/// Set all xaos values to random numbers. +/// There is a 50% chance they're set to 0 or 1, and +/// 50% that they're 0-3. +/// +/// Ignored +template +void FractoriumEmberController::RandomXaos() +{ + UpdateCurrentXform([&](Xform* xform) + { + for (size_t i = 0; i < m_Ember.XformCount(); i++) + { + if (Xform* xform = m_Ember.GetXform(i)) + { + for (size_t j = 0; j < m_Ember.XformCount(); j++) + { + if (m_Rand.RandBit()) + xform->SetXaos(j, (T)m_Rand.RandBit()); + else + xform->SetXaos(j, m_Rand.Frand(0, 3)); + } + } + } + }); + + //If current is final, it will update when they change to a non-final xform. + FillXaosWithCurrentXform(); +} + +void Fractorium::OnRandomXaosButtonClicked(bool checked) { m_Controller->RandomXaos(); } \ No newline at end of file diff --git a/Source/Fractorium/OptionsDialog.cpp b/Source/Fractorium/OptionsDialog.cpp index fcd011a..31b9f70 100644 --- a/Source/Fractorium/OptionsDialog.cpp +++ b/Source/Fractorium/OptionsDialog.cpp @@ -34,10 +34,6 @@ FractoriumOptionsDialog::FractoriumOptionsDialog(FractoriumSettings* settings, Q m_NickEdit = new QLineEdit(ui.OptionsIdentityTable); ui.OptionsIdentityTable->setCellWidget(2, 1, m_NickEdit); - //QWidget::setTabOrder(m_IdEdit, m_UrlEdit); - //QWidget::setTabOrder(m_UrlEdit, m_NickEdit); - //QWidget::setTabOrder(m_NickEdit, m_IdEdit); - m_IdEdit->setText(m_Settings->Id()); m_UrlEdit->setText(m_Settings->Url()); m_NickEdit->setText(m_Settings->Nick());