Skip to content

Commit f1da995

Browse files
committed
Update auto fov values in OptionsWidget panels
1 parent ce73acf commit f1da995

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

src/core/filters/deskew/OptionsWidget.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "Settings.h"
2222
#include "DistortionType.h"
2323
#include "ScopedIncDec.h"
24+
#include "dewarping/CylindricalSurfaceDewarper.h"
2425

2526
namespace deskew
2627
{
@@ -271,6 +272,8 @@ OptionsWidget::manualDistortionModelSetExternally(
271272
}
272273

273274
m_ptrSettings->setPageParams(m_pageId, m_pageParams);
275+
276+
updateAutoValuesOnPanels();
274277
updateModeIndication(MODE_MANUAL);
275278
emit invalidateThumbnail(m_pageId);
276279
}
@@ -334,13 +337,15 @@ OptionsWidget::postUpdateUI(Params const& page_params)
334337
updateFramePanel(page_params.perspectiveParams().frameParams());
335338
updateSizePanel(page_params.perspectiveParams().sizeParams());
336339
updateMarginsPanel(page_params.perspectiveParams().marginsParams());
340+
updateAutoValuesOnPanels();
337341
break;
338342
case DistortionType::WARP:
339343
updateFovPanel(page_params.dewarpingParams().fovParams());
340344
updateFramePanel(page_params.dewarpingParams().frameParams());
341345
updateBendPanel(page_params.dewarpingParams().bendParams());
342346
updateSizePanel(page_params.dewarpingParams().sizeParams());
343347
updateMarginsPanel(page_params.dewarpingParams().marginsParams());
348+
updateAutoValuesOnPanels();
344349
break;
345350
}
346351

@@ -507,6 +512,8 @@ OptionsWidget::fovAutoManualModeChanged(bool auto_mode)
507512

508513
m_ptrSettings->setPageParams(m_pageId, m_pageParams);
509514

515+
updateAutoValuesOnPanels();
516+
510517
if (auto_mode)
511518
{
512519
emit reloadRequested();
@@ -574,6 +581,8 @@ OptionsWidget::fovMinSpinBoxValueChanged(double fov_min_new)
574581
ui.fovSpinBox->setMinimum(fov_min_new);
575582
ui.fovMaxSpinBox->setMinimum(fov_min_new);
576583

584+
updateAutoValuesOnPanels();
585+
577586
emit fovParamsSetByUser(fov_params);
578587
emit invalidateThumbnail(m_pageId);
579588
}
@@ -627,6 +636,8 @@ OptionsWidget::fovMaxSpinBoxValueChanged(double fov_max_new)
627636
ui.fovSpinBox->setMaximum(fov_max_new);
628637
ui.fovMinSpinBox->setMaximum(fov_max_new);
629638

639+
updateAutoValuesOnPanels();
640+
630641
emit fovParamsSetByUser(fov_params);
631642
emit invalidateThumbnail(m_pageId);
632643
}
@@ -1318,6 +1329,34 @@ OptionsWidget::updateMarginsPanel(dewarping::MarginsParams const& margins_params
13181329
ui.marginsMaxPixelScaleSpinBox->setValue(margins_params.maxPixelScale());
13191330
}
13201331

1332+
void
1333+
OptionsWidget::updateAutoValuesOnPanels()
1334+
try
1335+
{
1336+
switch (m_pageParams.distortionType())
1337+
{
1338+
case DistortionType::WARP:
1339+
if (m_pageParams.dewarpingParams().fovParams().mode() == MODE_AUTO)
1340+
{
1341+
dewarping::CylindricalSurfaceDewarper dewarper(
1342+
m_pageParams.dewarpingParams().distortionModel().topCurve().polyline(),
1343+
m_pageParams.dewarpingParams().distortionModel().bottomCurve().polyline(),
1344+
m_pageParams.dewarpingParams().fovParams(),
1345+
m_pageParams.dewarpingParams().frameParams(),
1346+
m_pageParams.dewarpingParams().bendParams()
1347+
);
1348+
ui.fovSpinBox->setValue(dewarper.fov());
1349+
ui.fovSlider->setValue(fovToSlider(dewarper.fov()));
1350+
}
1351+
break;
1352+
}
1353+
}
1354+
catch (std::runtime_error const&)
1355+
{
1356+
ui.fovSpinBox->setSpecialValueText("?");
1357+
ui.fovSpinBox->setValue(ui.fovSpinBox->minimum());
1358+
}
1359+
13211360
void
13221361
OptionsWidget::setSpinBoxUnknownState()
13231362
{

src/core/filters/deskew/OptionsWidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,8 @@ private slots:
159159

160160
void updateMarginsPanel(dewarping::MarginsParams const& margins_params);
161161

162+
void updateAutoValuesOnPanels();
163+
162164
void setSpinBoxUnknownState();
163165

164166
void setSpinBoxKnownState(double angle);

src/dewarping/CylindricalSurfaceDewarper.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@ class CylindricalSurfaceDewarper
8080
return m_directrixArcLength;
8181
}
8282

83+
double fov() const
84+
{
85+
return m_fov;
86+
}
87+
8388
Generatrix mapGeneratrix(double crv_x, State& state) const;
8489

8590
/**

0 commit comments

Comments
 (0)