mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-06-30 13:26:02 -04:00
--User changes
-Support 4k monitors, and in general, properly scale any monitor that is not HD. -Allow for a spatial filter of radius zero, which means do not use a spatial filter. -Add new variations: concentric, cpow3, helicoid, helix, rand_cubes, sphereblur. -Use a new method for computing elliptic which is more precise. Developed by Discord user Claude. -Remove the 8 variation per xform limitation on the GPU. -Allow for loading the last flame file on startup, rather than randoms. -Use two different default quality values in the interactive renderer, one each for CPU and GPU. -Creating linked xforms was using non-standard behavior. Make it match Apo and also support creating multiple linked xforms at once. --Bug fixes -No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes. -Prevent crashing the program when adjusting a value on the main window while a final render is in progress. -The xaos table was inverted. --Code changes -Convert projects to Visual Studio 2017. -Change bad vals from +- 1e10 to +-1e20. -Reintroduce the symmetry tag in xforms for legacy support in programs that do not use color_speed. -Compiler will not let us use default values in templated member functions anymore.
This commit is contained in:
@ -32,13 +32,13 @@ void Fractorium::InitXaosUI()
|
||||
template <typename T>
|
||||
void FractoriumEmberController<T>::FillXaos()
|
||||
{
|
||||
for (int i = 0, count = int(XformCount()); i < count; i++)
|
||||
for (int i = 0, count = int(XformCount()); i < count; i++)//Column.
|
||||
{
|
||||
if (auto xform = m_Ember.GetXform(i))
|
||||
{
|
||||
for (int j = 0; j < count; j++)
|
||||
for (int j = 0; j < count; j++)//Row.
|
||||
{
|
||||
QModelIndex index = m_Fractorium->m_XaosTableModel->index(i, j, QModelIndex());
|
||||
QModelIndex index = m_Fractorium->m_XaosTableModel->index(j, i, QModelIndex());//j and i are intentionally swapped here.
|
||||
m_Fractorium->m_XaosTableModel->setData(index, xform->Xaos(j));
|
||||
}
|
||||
}
|
||||
@ -57,7 +57,9 @@ void FractoriumEmberController<T>::FillXaos()
|
||||
/// xaos value.
|
||||
/// Resets the rendering process.
|
||||
/// </summary>
|
||||
/// <param name="sender">The DoubleSpinBox that triggered this event</param>
|
||||
/// <param name="x">The index of the xform whose xaos value was changed (column)</param>
|
||||
/// <param name="y">The index of the to value that was changed for the xform (row)</param>
|
||||
/// <param name="val">The changed value of the xaos element</param>
|
||||
template <typename T>
|
||||
void FractoriumEmberController<T>::XaosChanged(int x, int y, double val)
|
||||
{
|
||||
@ -73,13 +75,13 @@ void Fractorium::OnXaosChanged(double d)
|
||||
if (auto senderSpinBox = qobject_cast<DoubleSpinBox*>(sender()))
|
||||
{
|
||||
auto p = senderSpinBox->property("tableindex").toPoint();
|
||||
m_Controller->XaosChanged(p.x(), p.y(), d);
|
||||
m_Controller->XaosChanged(p.y(), p.x(), d);//Intentionally switched, column is the from xform, row is the to xform.
|
||||
}
|
||||
}
|
||||
|
||||
void Fractorium::OnXaosTableModelDataChanged(const QModelIndex& indexA, const QModelIndex& indexB)
|
||||
{
|
||||
m_Controller->XaosChanged(indexA.row(), indexA.column(), indexA.data().toDouble());
|
||||
m_Controller->XaosChanged(indexA.column(), indexA.row(), indexA.data().toDouble());//Intentionally switched, column is the from xform, row is the to xform.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -190,5 +192,5 @@ void Fractorium::OnXaosColDoubleClicked(int logicalIndex)
|
||||
template class FractoriumEmberController<float>;
|
||||
|
||||
#ifdef DO_DOUBLE
|
||||
template class FractoriumEmberController<double>;
|
||||
template class FractoriumEmberController<double>;
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user