diff --git a/Source/Fractorium/CurvesGraphicsView.cpp b/Source/Fractorium/CurvesGraphicsView.cpp index 98dad2b..091bd03 100644 --- a/Source/Fractorium/CurvesGraphicsView.cpp +++ b/Source/Fractorium/CurvesGraphicsView.cpp @@ -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]; @@ -272,4 +273,4 @@ void CurvesGraphicsView::mousePressEvent(QMouseEvent* e) } } } -} \ No newline at end of file +} diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h index d1ca72b..1e3f087 100644 --- a/Source/Fractorium/FractoriumEmberController.h +++ b/Source/Fractorium/FractoriumEmberController.h @@ -139,6 +139,10 @@ public: virtual void SequenceOpenButtonClicked() { } //Params. + virtual void ParamsToEmber(Ember& ember, bool basicParams = false) { }; +#ifdef DO_DOUBLE + virtual void ParamsToEmber(Ember& 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& ember, bool basicParams = false) override; +#ifdef DO_DOUBLE + virtual void ParamsToEmber(Ember& 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 void SetEmberPrivate(const Ember& ember, bool verbatim, bool updatePointer); //Params. - void ParamsToEmber(Ember& ember); + template void ParamsToEmberPrivate(Ember& ember, bool basicParams); //Xforms. void SetNormalizedWeightText(Xform* xform); diff --git a/Source/Fractorium/FractoriumParams.cpp b/Source/Fractorium/FractoriumParams.cpp index 516d88d..7d7c6b1 100644 --- a/Source/Fractorium/FractoriumParams.cpp +++ b/Source/Fractorium/FractoriumParams.cpp @@ -828,47 +828,57 @@ void FractoriumEmberController::FillParamTablesAndPalette() /// Copy all GUI widget values on the parameters tab to the passed in ember. /// /// The ember to copy values to. +/// true to get just filter and colors. +template void FractoriumEmberController::ParamsToEmber(Ember& ember, bool basicParams) { ParamsToEmberPrivate(ember, basicParams); } +#ifdef DO_DOUBLE +template void FractoriumEmberController::ParamsToEmber(Ember& ember, bool basicParams) { ParamsToEmberPrivate(ember, basicParams); } +#endif template -void FractoriumEmberController::ParamsToEmber(Ember& ember) +template +void FractoriumEmberController::ParamsToEmberPrivate(Ember& 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_Background.r = color.red() / 255.0; - ember.m_Background.g = color.green() / 255.0; - ember.m_Background.b = color.blue() / 255.0; - ember.m_PaletteMode = ePaletteMode(m_Fractorium->m_PaletteModeCombo->currentIndex()); - ember.m_FinalRasW = m_Fractorium->m_WidthSpin->value();//Geometry. - ember.m_FinalRasH = m_Fractorium->m_HeightSpin->value(); - ember.m_CenterX = m_Fractorium->m_CenterXSpin->value(); - ember.m_CenterY = ember.m_RotCenterY = m_Fractorium->m_CenterYSpin->value(); - ember.m_PixelsPerUnit = m_Fractorium->m_ScaleSpin->value(); - ember.m_Zoom = m_Fractorium->m_ZoomSpin->value(); - ember.m_Rotate = m_Fractorium->m_RotateSpin->value(); - ember.m_CamZPos = m_Fractorium->m_ZPosSpin->value(); - ember.m_CamPerspective = m_Fractorium->m_PerspectiveSpin->value(); - 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(); - ember.m_Quality = m_Fractorium->m_QualitySpin->value(); - ember.m_Supersample = m_Fractorium->m_SupersampleSpin->value(); - ember.m_AffineInterp = eAffineInterp(m_Fractorium->m_AffineInterpTypeCombo->currentIndex()); - ember.m_Interp = eInterp(m_Fractorium->m_InterpTypeCombo->currentIndex()); - ember.SyncSize(); + 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; + ember.m_PaletteMode = ePaletteMode(m_Fractorium->m_PaletteModeCombo->currentIndex()); + ember.m_FinalRasW = m_Fractorium->m_WidthSpin->value();//Geometry. + ember.m_FinalRasH = m_Fractorium->m_HeightSpin->value(); + ember.m_CenterX = m_Fractorium->m_CenterXSpin->value(); + ember.m_CenterY = ember.m_RotCenterY = m_Fractorium->m_CenterYSpin->value(); + ember.m_PixelsPerUnit = m_Fractorium->m_ScaleSpin->value(); + ember.m_Zoom = m_Fractorium->m_ZoomSpin->value(); + ember.m_Rotate = m_Fractorium->m_RotateSpin->value(); + ember.m_CamZPos = m_Fractorium->m_ZPosSpin->value(); + ember.m_CamPerspective = m_Fractorium->m_PerspectiveSpin->value(); + 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_SubBatchSize = m_Fractorium->m_SbsSpin->value(); + ember.m_FuseCount = m_Fractorium->m_FuseSpin->value(); + ember.m_RandPointRange = m_Fractorium->m_RandRangeSpin->value(); + ember.m_Quality = m_Fractorium->m_QualitySpin->value(); + ember.m_Supersample = m_Fractorium->m_SupersampleSpin->value(); + ember.m_AffineInterp = eAffineInterp(m_Fractorium->m_AffineInterpTypeCombo->currentIndex()); + ember.m_Interp = eInterp(m_Fractorium->m_InterpTypeCombo->currentIndex()); + ember.SyncSize(); } ///