From 13b49f8a54d36fe89658ea89cc58eda76f23f41b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sun, 13 Mar 2016 14:02:08 +0100 Subject: [PATCH 1/3] Use fabs instead of fabsf in LinEqSolve --- rtengine/CA_correct_RT.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index dd7dac228..b43e9177e 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -51,11 +51,11 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution) for(k = 0; k < (nDim - 1); k++) { // base row of matrix // search of line with max element - fMaxElem = fabsf( pfMatr[k * nDim + k] ); + fMaxElem = fabs( pfMatr[k * nDim + k] ); m = k; for (i = k + 1; i < nDim; i++) { - if(fMaxElem < fabsf(pfMatr[i * nDim + k]) ) { + if(fMaxElem < fabs(pfMatr[i * nDim + k]) ) { fMaxElem = pfMatr[i * nDim + k]; m = i; } From af45865a2e56621bed429392e03a59e894629a37 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sun, 13 Mar 2016 18:15:48 +0100 Subject: [PATCH 2/3] The pipette mechanism was broken: the created point was not dragged. (no issue) --- rtgui/cropwindow.cc | 2 ++ rtgui/curveeditor.cc | 7 +++++-- rtgui/curveeditorgroup.h | 2 +- rtgui/diagonalcurveeditorsubgroup.cc | 10 +++++++--- rtgui/diagonalcurveeditorsubgroup.h | 2 +- rtgui/flatcurveeditorsubgroup.cc | 8 ++++++-- rtgui/flatcurveeditorsubgroup.h | 2 +- rtgui/mycurve.h | 2 +- rtgui/mydiagonalcurve.cc | 12 ++++++++---- rtgui/mydiagonalcurve.h | 2 +- rtgui/myflatcurve.cc | 6 ++++-- rtgui/myflatcurve.h | 2 +- 12 files changed, 38 insertions(+), 19 deletions(-) diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 4ac0d60fb..7bc81ba62 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -623,6 +623,8 @@ void CropWindow::buttonRelease (int button, int num, int bstate, int x, int y) if (state != SEditDrag3 && state != SEditPick3 && button == 3 && !(bstate & (GDK_SHIFT_MASK|GDK_CONTROL_MASK))) { iarea->pipetteVal[0] = iarea->pipetteVal[1] = iarea->pipetteVal[2] = -1.f; + needRedraw = iarea->object == 1; + if (editSubscriber && editSubscriber->getEditingType() == ET_PIPETTE) { editSubscriber->mouseOver(0); } diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 8ad521d06..c9d02d9a3 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -405,8 +405,11 @@ bool CurveEditor::button1Pressed(const int modifierKey) EditDataProvider* provider = getEditProvider(); if (provider->object) { - subGroup->pipetteButton1Pressed(provider, modifierKey); - remoteDrag = true; + remoteDrag = subGroup->pipetteButton1Pressed(provider, modifierKey); + } + + if (remoteDrag) { + action = ES_ACTION_DRAGGING; } subGroup->refresh(this); diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index 1f1120f83..09cbb8167 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -141,7 +141,7 @@ public: virtual void stopNumericalAdjustment() = 0; virtual void pipetteMouseOver(EditDataProvider *provider, int modifierKey) = 0; - virtual void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0; + virtual bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0; virtual void pipetteButton1Released(EditDataProvider *provider) = 0; virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0; diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index 4ca2bb159..657186a12 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -468,13 +468,15 @@ void DiagonalCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, i } } -void DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) +bool DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) { CurveEditor *curveEditor = static_cast(parent->displayedCurve); + bool isDragging = false; + switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): - customCurve->pipetteButton1Pressed(provider, modifierKey); + isDragging = customCurve->pipetteButton1Pressed(provider, modifierKey); break; case (DCT_Parametric): @@ -485,13 +487,15 @@ void DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provid break; case (DCT_NURBS): - NURBSCurve->pipetteButton1Pressed(provider, modifierKey); + isDragging = NURBSCurve->pipetteButton1Pressed(provider, modifierKey); break; default: // (DCT_Linear, DCT_Unchanged) // ... do nothing break; } + + return isDragging; } void DiagonalCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index 8178eb56a..5b6d845d5 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -83,7 +83,7 @@ public: void refresh(CurveEditor *curveToRefresh); void editModeSwitchedOff (); void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); void pipetteButton1Released(EditDataProvider *provider); void pipetteDrag(EditDataProvider *provider, int modifierKey); void showCoordinateAdjuster(CoordinateProvider *provider); diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 691fbe3dd..fd975de5e 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -216,13 +216,15 @@ void FlatCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, int m } } -void FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) +bool FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) { CurveEditor *curveEditor = static_cast(parent->displayedCurve); + bool isDragging = false; + switch((FlatCurveType)(curveEditor->curveType->getSelected())) { case (FCT_MinMaxCPoints): - CPointsCurve->pipetteButton1Pressed(provider, modifierKey); + isDragging = CPointsCurve->pipetteButton1Pressed(provider, modifierKey); CPointsCurve->setDirty(true); break; @@ -230,6 +232,8 @@ void FlatCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provider, // ... do nothing break; } + + return isDragging; } void FlatCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index 8cd2a6d9a..7772dcebd 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -54,7 +54,7 @@ public: void refresh(CurveEditor *curveToRefresh); void editModeSwitchedOff(); void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); void pipetteButton1Released(EditDataProvider *provider); void pipetteDrag(EditDataProvider *provider, int modifierKey); void showCoordinateAdjuster(CoordinateProvider *provider); diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 96574e12a..ba3158ac9 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -146,7 +146,7 @@ public: virtual void reset (const std::vector &resetCurve, double identityValue = 0.5) = 0; virtual void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) = 0; - virtual void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0; + virtual bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) = 0; virtual void pipetteButton1Released(EditDataProvider *provider) = 0; virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0; diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index 98eb6c283..2a70e9b7c 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -1071,11 +1071,11 @@ void MyDiagonalCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provi } } - -void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) +// returns true if a point is being dragged +bool MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) { if (edited_point > 1) { - return; + return false; } int num = (int)curve.x.size(); @@ -1086,7 +1086,7 @@ void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modi double minDistanceX = double(MIN_DISTANCE) / double(graphW - 1); if ((graphW < 0) || (graphH < 0)) { - return; + return false; } snapToElmt = -100; @@ -1141,7 +1141,11 @@ void MyDiagonalCurve::pipetteButton1Pressed(EditDataProvider *provider, int modi lit_point = closest_point; ugpX = curve.x.at(closest_point); ugpY = curve.y.at(closest_point); + + return true; } + + return false; } void MyDiagonalCurve::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index 033ba9f95..45b23e965 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -90,7 +90,7 @@ public: void updateBackgroundHistogram (LUTu & hist); void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); void pipetteButton1Released(EditDataProvider *provider); void pipetteDrag(EditDataProvider *provider, int modifierKey); diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index 474756834..fe53565d2 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -1288,10 +1288,11 @@ void MyFlatCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, } } -void MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) +// returns true if a point is being dragged +bool MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) { if (edited_point > -1) { - return; + return false; } buttonPressed = true; @@ -1368,6 +1369,7 @@ void MyFlatCurve::pipetteButton1Pressed(EditDataProvider *provider, int modifier break; } + return true; } void MyFlatCurve::pipetteButton1Released(EditDataProvider *provider) diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index cd08edf89..7949a4df6 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -130,7 +130,7 @@ public: //void updateBackgroundHistogram (unsigned int* hist); void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - void pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); void pipetteButton1Released(EditDataProvider *provider); void pipetteDrag(EditDataProvider *provider, int modifierKey); From b0bfe48723d8e5419af9f03399276d5ac1be2bdc Mon Sep 17 00:00:00 2001 From: Beep6581 Date: Sun, 13 Mar 2016 19:59:04 +0100 Subject: [PATCH 3/3] Increased Fast Export's max resize width and height to 10000, closes #3212 --- rtgui/exportpanel.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtgui/exportpanel.cc b/rtgui/exportpanel.cc index 67ea092f2..2e25ab6cf 100644 --- a/rtgui/exportpanel.cc +++ b/rtgui/exportpanel.cc @@ -151,12 +151,12 @@ ExportPanel::ExportPanel () : listener (NULL) MaxWidth->set_digits (0); MaxWidth->set_increments (1, 100); MaxWidth->set_value (options.fastexport_resize_width); - MaxWidth->set_range (32, 3000); + MaxWidth->set_range (32, 10000); MaxHeight->set_digits (0); MaxHeight->set_increments (1, 100); MaxHeight->set_value (options.fastexport_resize_height); - MaxHeight->set_range (32, 3000); + MaxHeight->set_range (32, 10000); // Buttons btnFastExport = Gtk::manage ( new Gtk::Button (M("EXPORT_PUTTOQUEUEFAST")) );