Color&Filter

This commit is contained in:
Michel Mastriani 2020-01-02 15:02:57 -03:00
parent e657eac9fe
commit 9d1abfce15
3 changed files with 64 additions and 45 deletions

View File

@ -218,16 +218,17 @@ void CurvesGraphicsView::paintEvent(QPaintEvent* e)
void CurvesGraphicsView::mousePressEvent(QMouseEvent* e)
{
QGraphicsView::mousePressEvent(e);
auto thresh = devicePixelRatioF() * 10;
auto findpoint = [&](int x, int y) -> int
auto thresh = devicePixelRatioF() * 4;
auto findpoint = [&](int x, int y, bool incThresh = false) -> int
{
for (int i = 0; i < m_Points[m_Index].size(); i++)
{
auto item = m_Points[m_Index][i];
auto xdist = std::abs(item->pos().x() - x);
auto ydist = std::abs(item->pos().y() - y);
auto threshAgain = incThresh ? thresh * 2 : thresh;
if (xdist < thresh && ydist < thresh)
if (xdist < threshAgain && ydist < threshAgain)
return i;
}
@ -241,7 +242,7 @@ void CurvesGraphicsView::mousePressEvent(QMouseEvent* e)
if (i != -1)
emit PointRemovedSignal(m_Index, i);
}
else if (findpoint(e->pos().x(), e->pos().y()) == -1)
else if (findpoint(e->pos().x(), e->pos().y(), true) == -1)
{
QRectF rect = scene()->sceneRect();
auto points = m_Points[m_Index];

View File

@ -139,6 +139,10 @@ public:
virtual void SequenceOpenButtonClicked() { }
//Params.
virtual void ParamsToEmber(Ember<float>& ember, bool basicParams = false) { };
#ifdef DO_DOUBLE
virtual void ParamsToEmber(Ember<double>& ember, bool basicParams = false) { };
#endif
virtual void SetCenter(double x, double y) { }
virtual void FillParamTablesAndPalette() { }
virtual void BrightnessChanged(double d) { }
@ -421,6 +425,10 @@ public:
virtual void SequenceOpenButtonClicked() override;
//Params.
virtual void ParamsToEmber(Ember<float>& ember, bool basicParams = false) override;
#ifdef DO_DOUBLE
virtual void ParamsToEmber(Ember<double>& ember, bool basicParams = false) override;
#endif
virtual void SetCenter(double x, double y) override;
virtual void FillParamTablesAndPalette() override;
virtual void BrightnessChanged(double d) override;
@ -558,7 +566,7 @@ private:
template <typename U> void SetEmberPrivate(const Ember<U>& ember, bool verbatim, bool updatePointer);
//Params.
void ParamsToEmber(Ember<T>& ember);
template <typename U> void ParamsToEmberPrivate(Ember<U>& ember, bool basicParams);
//Xforms.
void SetNormalizedWeightText(Xform<T>* xform);

View File

@ -828,16 +828,33 @@ void FractoriumEmberController<T>::FillParamTablesAndPalette()
/// Copy all GUI widget values on the parameters tab to the passed in ember.
/// </summary>
/// <param name="ember">The ember to copy values to.</param>
/// <param name="basicParams">true to get just filter and colors.</param>
template <typename T> void FractoriumEmberController<T>::ParamsToEmber(Ember<float>& ember, bool basicParams) { ParamsToEmberPrivate<float>(ember, basicParams); }
#ifdef DO_DOUBLE
template <typename T> void FractoriumEmberController<T>::ParamsToEmber(Ember<double>& ember, bool basicParams) { ParamsToEmberPrivate<double>(ember, basicParams); }
#endif
template <typename T>
void FractoriumEmberController<T>::ParamsToEmber(Ember<T>& ember)
template <typename U>
void FractoriumEmberController<T>::ParamsToEmberPrivate(Ember<U>& ember, bool basicParams)
{
auto color = m_Fractorium->ui.ColorTable->item(5, 1)->backgroundColor();
ember.m_Brightness = m_Fractorium->m_BrightnessSpin->value();//Color.
ember.m_Gamma = m_Fractorium->m_GammaSpin->value();
ember.m_GammaThresh = m_Fractorium->m_GammaThresholdSpin->value();
ember.m_Vibrancy = m_Fractorium->m_VibrancySpin->value();
ember.m_HighlightPower = m_Fractorium->m_HighlightSpin->value();
ember.m_K2 = m_Fractorium->m_K2Spin->value();
ember.m_SpatialFilterRadius = m_Fractorium->m_SpatialFilterWidthSpin->value();//Filter.
ember.m_SpatialFilterType = eSpatialFilterType(m_Fractorium->m_SpatialFilterTypeCombo->currentIndex());
ember.m_TemporalFilterWidth = m_Fractorium->m_TemporalFilterWidthSpin->value();
ember.m_TemporalFilterType = eTemporalFilterType(m_Fractorium->m_TemporalFilterTypeCombo->currentIndex());
ember.m_MinRadDE = m_Fractorium->m_DEFilterMinRadiusSpin->value();
ember.m_MaxRadDE = m_Fractorium->m_DEFilterMaxRadiusSpin->value();
ember.m_CurveDE = m_Fractorium->m_DECurveSpin->value();
if(basicParams)
return;
auto color = m_Fractorium->ui.ColorTable->item(5, 1)->backgroundColor();
ember.m_Background.r = color.red() / 255.0;
ember.m_Background.g = color.green() / 255.0;
ember.m_Background.b = color.blue() / 255.0;
@ -854,13 +871,6 @@ void FractoriumEmberController<T>::ParamsToEmber(Ember<T>& ember)
ember.m_CamPitch = m_Fractorium->m_PitchSpin->value() * DEG_2_RAD_T;
ember.m_CamYaw = m_Fractorium->m_YawSpin->value() * DEG_2_RAD_T;
ember.m_CamDepthBlur = m_Fractorium->m_DepthBlurSpin->value();
ember.m_SpatialFilterRadius = m_Fractorium->m_SpatialFilterWidthSpin->value();//Filter.
ember.m_SpatialFilterType = eSpatialFilterType(m_Fractorium->m_SpatialFilterTypeCombo->currentIndex());
ember.m_TemporalFilterWidth = m_Fractorium->m_TemporalFilterWidthSpin->value();
ember.m_TemporalFilterType = eTemporalFilterType(m_Fractorium->m_TemporalFilterTypeCombo->currentIndex());
ember.m_MinRadDE = m_Fractorium->m_DEFilterMinRadiusSpin->value();
ember.m_MaxRadDE = m_Fractorium->m_DEFilterMaxRadiusSpin->value();
ember.m_CurveDE = m_Fractorium->m_DECurveSpin->value();
ember.m_SubBatchSize = m_Fractorium->m_SbsSpin->value();
ember.m_FuseCount = m_Fractorium->m_FuseSpin->value();
ember.m_RandPointRange = m_Fractorium->m_RandRangeSpin->value();