|
21 | 21 | #include "Settings.h"
|
22 | 22 | #include "DistortionType.h"
|
23 | 23 | #include "ScopedIncDec.h"
|
| 24 | +#include "dewarping/CylindricalSurfaceDewarper.h" |
24 | 25 |
|
25 | 26 | namespace deskew
|
26 | 27 | {
|
@@ -271,6 +272,8 @@ OptionsWidget::manualDistortionModelSetExternally(
|
271 | 272 | }
|
272 | 273 |
|
273 | 274 | m_ptrSettings->setPageParams(m_pageId, m_pageParams);
|
| 275 | + |
| 276 | + updateAutoValuesOnPanels(); |
274 | 277 | updateModeIndication(MODE_MANUAL);
|
275 | 278 | emit invalidateThumbnail(m_pageId);
|
276 | 279 | }
|
@@ -334,13 +337,15 @@ OptionsWidget::postUpdateUI(Params const& page_params)
|
334 | 337 | updateFramePanel(page_params.perspectiveParams().frameParams());
|
335 | 338 | updateSizePanel(page_params.perspectiveParams().sizeParams());
|
336 | 339 | updateMarginsPanel(page_params.perspectiveParams().marginsParams());
|
| 340 | + updateAutoValuesOnPanels(); |
337 | 341 | break;
|
338 | 342 | case DistortionType::WARP:
|
339 | 343 | updateFovPanel(page_params.dewarpingParams().fovParams());
|
340 | 344 | updateFramePanel(page_params.dewarpingParams().frameParams());
|
341 | 345 | updateBendPanel(page_params.dewarpingParams().bendParams());
|
342 | 346 | updateSizePanel(page_params.dewarpingParams().sizeParams());
|
343 | 347 | updateMarginsPanel(page_params.dewarpingParams().marginsParams());
|
| 348 | + updateAutoValuesOnPanels(); |
344 | 349 | break;
|
345 | 350 | }
|
346 | 351 |
|
@@ -507,6 +512,8 @@ OptionsWidget::fovAutoManualModeChanged(bool auto_mode)
|
507 | 512 |
|
508 | 513 | m_ptrSettings->setPageParams(m_pageId, m_pageParams);
|
509 | 514 |
|
| 515 | + updateAutoValuesOnPanels(); |
| 516 | + |
510 | 517 | if (auto_mode)
|
511 | 518 | {
|
512 | 519 | emit reloadRequested();
|
@@ -574,6 +581,8 @@ OptionsWidget::fovMinSpinBoxValueChanged(double fov_min_new)
|
574 | 581 | ui.fovSpinBox->setMinimum(fov_min_new);
|
575 | 582 | ui.fovMaxSpinBox->setMinimum(fov_min_new);
|
576 | 583 |
|
| 584 | + updateAutoValuesOnPanels(); |
| 585 | + |
577 | 586 | emit fovParamsSetByUser(fov_params);
|
578 | 587 | emit invalidateThumbnail(m_pageId);
|
579 | 588 | }
|
@@ -627,6 +636,8 @@ OptionsWidget::fovMaxSpinBoxValueChanged(double fov_max_new)
|
627 | 636 | ui.fovSpinBox->setMaximum(fov_max_new);
|
628 | 637 | ui.fovMinSpinBox->setMaximum(fov_max_new);
|
629 | 638 |
|
| 639 | + updateAutoValuesOnPanels(); |
| 640 | + |
630 | 641 | emit fovParamsSetByUser(fov_params);
|
631 | 642 | emit invalidateThumbnail(m_pageId);
|
632 | 643 | }
|
@@ -1318,6 +1329,34 @@ OptionsWidget::updateMarginsPanel(dewarping::MarginsParams const& margins_params
|
1318 | 1329 | ui.marginsMaxPixelScaleSpinBox->setValue(margins_params.maxPixelScale());
|
1319 | 1330 | }
|
1320 | 1331 |
|
| 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 | + |
1321 | 1360 | void
|
1322 | 1361 | OptionsWidget::setSpinBoxUnknownState()
|
1323 | 1362 | {
|
|
0 commit comments