diff --git a/Source/Fractorium/Fractorium.cpp b/Source/Fractorium/Fractorium.cpp
index 10b8fa9..ebf0c73 100644
--- a/Source/Fractorium/Fractorium.cpp
+++ b/Source/Fractorium/Fractorium.cpp
@@ -911,7 +911,6 @@ void Fractorium::SetTabOrders()
w = SetTabOrder(this, w, ui.PreScaleCombo);
w = SetTabOrder(this, w, ui.PreScaleUpButton);
w = SetTabOrder(this, w, ui.PreRandomButton);
- w = SetTabOrder(this, w, ui.ShowPreAffineCurrentRadio);
w = SetTabOrder(this, w, ui.ShowPreAffineSelectedRadio);
w = SetTabOrder(this, w, ui.ShowPreAffineAllRadio);
w = SetTabOrder(this, w, ui.SwapAffinesButton);
@@ -941,7 +940,6 @@ void Fractorium::SetTabOrders()
w = SetTabOrder(this, w, ui.PostScaleCombo);
w = SetTabOrder(this, w, ui.PostScaleUpButton);
w = SetTabOrder(this, w, ui.PostRandomButton);
- w = SetTabOrder(this, w, ui.ShowPostAffineCurrentRadio);
w = SetTabOrder(this, w, ui.ShowPostAffineSelectedRadio);
w = SetTabOrder(this, w, ui.ShowPostAffineAllRadio);
w = SetTabOrder(this, w, ui.PolarAffineCheckBox);
diff --git a/Source/Fractorium/Fractorium.h b/Source/Fractorium/Fractorium.h
index 7589722..9fcfa81 100644
--- a/Source/Fractorium/Fractorium.h
+++ b/Source/Fractorium/Fractorium.h
@@ -116,10 +116,8 @@ public:
void CurrentXform(uint i);
//Xforms Affine.
- bool DrawCurrentPre();
bool DrawSelectedPre();
bool DrawAllPre();
- bool DrawCurrentPost();
bool DrawSelectedPost();
bool DrawAllPost();
bool LocalPivot();
diff --git a/Source/Fractorium/Fractorium.ui b/Source/Fractorium/Fractorium.ui
index 5773efd..68dc39f 100644
--- a/Source/Fractorium/Fractorium.ui
+++ b/Source/Fractorium/Fractorium.ui
@@ -3481,7 +3481,7 @@
QTabWidget::Triangular
- 2
+ 1
@@ -4902,13 +4902,6 @@
6
- -
-
-
- Current
-
-
-
-
@@ -5784,24 +5777,14 @@
6
-
-
-
-
- true
-
-
- Current
-
-
- true
-
-
-
-
Selected
+
+ true
+
-
diff --git a/Source/Fractorium/FractoriumXformsAffine.cpp b/Source/Fractorium/FractoriumXformsAffine.cpp
index e2fb48d..07b95f5 100644
--- a/Source/Fractorium/FractoriumXformsAffine.cpp
+++ b/Source/Fractorium/FractoriumXformsAffine.cpp
@@ -97,10 +97,8 @@ void Fractorium::InitXformsAffineUI()
connect(ui.PostAffineGroupBox, SIGNAL(toggled(bool)), this, SLOT(OnAffineGroupBoxToggled(bool)), Qt::QueuedConnection);
connect(ui.SwapAffinesButton, SIGNAL(clicked(bool)), this, SLOT(OnSwapAffinesButtonClicked(bool)), Qt::QueuedConnection);
connect(ui.ShowPreAffineAllRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
- connect(ui.ShowPreAffineCurrentRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.ShowPreAffineSelectedRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.ShowPostAffineAllRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
- connect(ui.ShowPostAffineCurrentRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.ShowPostAffineSelectedRadio, SIGNAL(toggled(bool)), this, SLOT(OnAffineDrawAllCurrentRadioButtonToggled(bool)), Qt::QueuedConnection);
connect(ui.PolarAffineCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnPolarAffineCheckBoxStateChanged(int)), Qt::QueuedConnection);
#ifndef _WIN32
@@ -796,10 +794,8 @@ void Fractorium::SetupAffineSpinner(QTableWidget* table, const QObject* receiver
/// GUI wrapper functions, getters only.
///
-bool Fractorium::DrawCurrentPre() { return !DrawAllPre() && !DrawSelectedPre(); }
bool Fractorium::DrawSelectedPre() { return ui.ShowPreAffineSelectedRadio->isChecked(); }
bool Fractorium::DrawAllPre() { return ui.ShowPreAffineAllRadio->isChecked(); }
-bool Fractorium::DrawCurrentPost() { return !DrawAllPost() && !DrawSelectedPost(); }
bool Fractorium::DrawSelectedPost() { return ui.ShowPostAffineSelectedRadio->isChecked(); }
bool Fractorium::DrawAllPost() { return ui.ShowPostAffineAllRadio->isChecked(); }
bool Fractorium::LocalPivot() { return ui.LocalPivotRadio->isChecked(); }
diff --git a/Source/Fractorium/GLWidget.cpp b/Source/Fractorium/GLWidget.cpp
index 21f56a7..2c23fc7 100644
--- a/Source/Fractorium/GLWidget.cpp
+++ b/Source/Fractorium/GLWidget.cpp
@@ -666,10 +666,20 @@ void GLEmberController::DrawAffines(bool pre, bool post)
if (pre && m_Fractorium->DrawAllPre())//Draw all pre affine if specified.
{
size_t i = 0;
+ bool any = false;
+
+ while (auto xform = ember->GetTotalXform(i, forceFinal))
+ if (m_Fractorium->IsXformSelected(i++))
+ {
+ any = true;
+ break;
+ }
+
+ i = 0;
while (auto xform = ember->GetTotalXform(i, forceFinal))
{
- bool selected = m_Fractorium->IsXformSelected(i++) || m_SelectedXform == xform;
+ bool selected = m_Fractorium->IsXformSelected(i++) || (!any && m_SelectedXform == xform);
DrawAffine(xform, true, selected, !dragging && (m_HoverXform == xform));
}
}
@@ -690,18 +700,24 @@ void GLEmberController::DrawAffines(bool pre, bool post)
if (!any)
DrawAffine(m_FractoriumEmberController->CurrentXform(), true, true, !dragging && (m_HoverXform == m_FractoriumEmberController->CurrentXform()));
}
- else if (pre)//Only draw current pre affine.
- {
- DrawAffine(m_SelectedXform, true, true, !dragging && (m_HoverXform == m_FractoriumEmberController->CurrentXform()));
- }
if (post && m_Fractorium->DrawAllPost())//Draw all post affine if specified.
{
size_t i = 0;
+ bool any = false;
+
+ while (auto xform = ember->GetTotalXform(i, forceFinal))
+ if (m_Fractorium->IsXformSelected(i++))
+ {
+ any = true;
+ break;
+ }
+
+ i = 0;
while (auto xform = ember->GetTotalXform(i, forceFinal))
{
- bool selected = m_Fractorium->IsXformSelected(i++) || m_SelectedXform == xform;
+ bool selected = m_Fractorium->IsXformSelected(i++) || (!any && m_SelectedXform == xform);
DrawAffine(xform, false, selected, !dragging && (m_HoverXform == xform));
}
}
@@ -722,10 +738,6 @@ void GLEmberController::DrawAffines(bool pre, bool post)
if (!any)
DrawAffine(m_FractoriumEmberController->CurrentXform(), false, true, !dragging && (m_HoverXform == m_FractoriumEmberController->CurrentXform()));
}
- else if (post)//Only draw current post affine.
- {
- DrawAffine(m_SelectedXform, false, true, !dragging && (m_HoverXform == m_FractoriumEmberController->CurrentXform()));
- }
}
if (dragging)//Draw large yellow dot on select or drag.
@@ -902,7 +914,7 @@ void GLEmberController::MousePress(QMouseEvent* e)
m_DragSrcPreTransforms[xfindex] = xform->m_Affine;
else
m_DragSrcPostTransforms[xfindex] = xform->m_Post;
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);//Don't update renderer here.
+ }, eXformUpdate::UPDATE_SELECTED, false);//Don't update renderer here.
m_DragHandlePos = m_HoverHandlePos;//The location in local coordinates of the point selected on the spinner, x, y or center.
m_DragState = eDragState::DragDragging;
m_GL->repaint();
@@ -1038,7 +1050,7 @@ void GLEmberController::MouseMove(QMouseEvent* e)
{
QPointF cd(xform->m_Affine.C() * scale, xform->m_Affine.F() * scale);
bool b = qrf.contains(cd);
- m_FractoriumEmberController->XformCheckboxAt(xfindex, [&](QCheckBox * cb)
+ m_FractoriumEmberController->XformCheckboxAt(int(xfindex), [&](QCheckBox * cb)
{
cb->setChecked(b);
});
@@ -1048,7 +1060,7 @@ void GLEmberController::MouseMove(QMouseEvent* e)
{
QPointF cd(xform->m_Post.C() * scale, xform->m_Post.F() * scale);
bool b = qrf.contains(cd);
- m_FractoriumEmberController->XformCheckboxAt(xfindex, [&](QCheckBox * cb)
+ m_FractoriumEmberController->XformCheckboxAt(int(xfindex), [&](QCheckBox * cb)
{
if (!cb->isChecked() && b)
cb->setChecked(b);
@@ -1799,8 +1811,8 @@ int GLEmberController::UpdateHover(v3T& glCoords)
//is set to show current, and the user hovers over another xform, but doesn't select it, then moves the mouse
//back over the hidden circle for the pre/post that was set to only show current.
bool isSel = m_Fractorium->IsXformSelected(ember->GetTotalXformIndex(m_SelectedXform));
- bool checkPre = pre && (m_Fractorium->DrawAllPre() || (m_Fractorium->DrawSelectedPre() && isSel) || m_Fractorium->DrawCurrentPre());
- bool checkPost = post && (m_Fractorium->DrawAllPost() || (m_Fractorium->DrawSelectedPost() && isSel) || m_Fractorium->DrawCurrentPost());
+ bool checkPre = pre && (m_Fractorium->DrawAllPre() || (m_Fractorium->DrawSelectedPre() && isSel));
+ bool checkPost = post && (m_Fractorium->DrawAllPost() || (m_Fractorium->DrawSelectedPost() && isSel));
if (CheckXformHover(m_SelectedXform, glCoords, bestDist, checkPre, checkPost))
{
@@ -2005,7 +2017,7 @@ void GLEmberController::CalcDragXAxis()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Affine;
@@ -2024,7 +2036,7 @@ void GLEmberController::CalcDragXAxis()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Post;
@@ -2045,7 +2057,7 @@ void GLEmberController::CalcDragXAxis()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T((affine.O() + affine.X()) * worldToAffineScale, 0);
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);//Calling code will update renderer.
+ }, eXformUpdate::UPDATE_SELECTED, false);//Calling code will update renderer.
}
else
{
@@ -2064,7 +2076,7 @@ void GLEmberController::CalcDragXAxis()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Affine;
@@ -2093,7 +2105,7 @@ void GLEmberController::CalcDragXAxis()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Post;
@@ -2124,7 +2136,7 @@ void GLEmberController::CalcDragXAxis()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T((affine.O() + affine.X()) * worldToAffineScale, 0);
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);
+ }, eXformUpdate::UPDATE_SELECTED, false);
}
}
@@ -2170,7 +2182,7 @@ void GLEmberController::CalcDragYAxis()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Affine;
@@ -2189,7 +2201,7 @@ void GLEmberController::CalcDragYAxis()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Post;
@@ -2210,7 +2222,7 @@ void GLEmberController::CalcDragYAxis()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T((affine.O() + affine.Y()) * worldToAffineScale, 0);
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);//Calling code will update renderer.
+ }, eXformUpdate::UPDATE_SELECTED, false);//Calling code will update renderer.
}
else
{
@@ -2229,7 +2241,7 @@ void GLEmberController::CalcDragYAxis()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Affine;
@@ -2258,7 +2270,7 @@ void GLEmberController::CalcDragYAxis()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Post;
@@ -2289,7 +2301,7 @@ void GLEmberController::CalcDragYAxis()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T((affine.O() + affine.Y()) * worldToAffineScale, 0);
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);
+ }, eXformUpdate::UPDATE_SELECTED, false);
}
}
@@ -2324,7 +2336,7 @@ void GLEmberController::CalcDragTranslation()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Affine;
@@ -2342,7 +2354,7 @@ void GLEmberController::CalcDragTranslation()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto src = it->second;
auto& affine = xform->m_Post;
@@ -2362,7 +2374,7 @@ void GLEmberController::CalcDragTranslation()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T(affine.O(), 0) * worldToAffineScale;
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);//Calling code will update renderer.
+ }, eXformUpdate::UPDATE_SELECTED, false);//Calling code will update renderer.
}
else
{
@@ -2374,7 +2386,7 @@ void GLEmberController::CalcDragTranslation()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto& src = it->second;
auto& affine = xform->m_Affine;
@@ -2385,7 +2397,7 @@ void GLEmberController::CalcDragTranslation()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto& src = it->second;
auto& affine = xform->m_Post;
@@ -2406,7 +2418,7 @@ void GLEmberController::CalcDragTranslation()
{
auto it = m_DragSrcPreTransforms.find(xfindex);
- if (it != m_DragSrcPreTransforms.end() && (m_Fractorium->DrawAllPre() || xform == m_SelectedXform))
+ if (it != m_DragSrcPreTransforms.end())
{
auto& src = it->second;
auto& affine = xform->m_Affine;
@@ -2415,7 +2427,7 @@ void GLEmberController::CalcDragTranslation()
it = m_DragSrcPostTransforms.find(xfindex);
- if (it != m_DragSrcPostTransforms.end() && (m_Fractorium->DrawAllPost() || xform == m_SelectedXform))
+ if (it != m_DragSrcPostTransforms.end())
{
auto& src = it->second;
auto& affine = xform->m_Post;
@@ -2426,7 +2438,7 @@ void GLEmberController::CalcDragTranslation()
if (xform == m_FractoriumEmberController->CurrentXform())
m_DragHandlePos = v3T(affine.O(), 0) * worldToAffineScale;
- }, eXformUpdate::UPDATE_CURRENT_AND_SELECTED, false);
+ }, eXformUpdate::UPDATE_SELECTED, false);
}
}
}