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());