From 8aac2388c2eb988fa5bf70ff4e9d958ea0eddb26 Mon Sep 17 00:00:00 2001 From: Daniel Minor Date: Mon, 3 Aug 2020 10:27:05 -0400 Subject: [PATCH] Use time step when exporting animation --- python/core/auto_generated/qgstemporalutils.sip.in | 4 +++- src/app/qgsanimationexportdialog.cpp | 9 +++++++-- src/app/qgsanimationexportdialog.h | 7 +++++-- src/app/qgstemporalcontrollerdockwidget.cpp | 6 ++++-- src/core/qgstemporalutils.cpp | 4 ++-- src/core/qgstemporalutils.h | 7 +++++-- 6 files changed, 26 insertions(+), 11 deletions(-) diff --git a/python/core/auto_generated/qgstemporalutils.sip.in b/python/core/auto_generated/qgstemporalutils.sip.in index 2eada458d77a..33b8c175069c 100644 --- a/python/core/auto_generated/qgstemporalutils.sip.in +++ b/python/core/auto_generated/qgstemporalutils.sip.in @@ -35,7 +35,9 @@ returns the maximal combined temporal extent of these layers. { QgsDateTimeRange animationRange; - QgsInterval frameDuration; + double frameTimeStep; + + QgsUnitTypes::TemporalUnit frameTimeStepUnit; QString outputDirectory; diff --git a/src/app/qgsanimationexportdialog.cpp b/src/app/qgsanimationexportdialog.cpp index f19a937144ab..5972f48d7eb6 100644 --- a/src/app/qgsanimationexportdialog.cpp +++ b/src/app/qgsanimationexportdialog.cpp @@ -225,9 +225,14 @@ QgsDateTimeRange QgsAnimationExportDialog::animationRange() const return QgsDateTimeRange( mStartDateTime->dateTime(), mEndDateTime->dateTime() ); } -QgsInterval QgsAnimationExportDialog::frameInterval() const +double QgsAnimationExportDialog::frameTimeStep() const { - return QgsInterval( mFrameDurationSpinBox->value(), static_cast< QgsUnitTypes::TemporalUnit>( mTimeStepsComboBox->currentData().toInt() ) ); + return mFrameDurationSpinBox->value(); +} + +QgsUnitTypes::TemporalUnit QgsAnimationExportDialog::frameTimeStepUnit() const +{ + return static_cast< QgsUnitTypes::TemporalUnit>( mTimeStepsComboBox->currentData().toInt() ); } void QgsAnimationExportDialog::applyMapSettings( QgsMapSettings &mapSettings ) diff --git a/src/app/qgsanimationexportdialog.h b/src/app/qgsanimationexportdialog.h index 85d5785b3ec0..8c2983fcdebe 100644 --- a/src/app/qgsanimationexportdialog.h +++ b/src/app/qgsanimationexportdialog.h @@ -63,8 +63,11 @@ class APP_EXPORT QgsAnimationExportDialog: public QDialog, private Ui::QgsAnimat //! Returns the overall animation range QgsDateTimeRange animationRange() const; - //! Returns the duration of each individual frame - QgsInterval frameInterval() const; + //! Returns the time step of each individual frame + double frameTimeStep() const; + + //! Returns the time step unit of each individual frame + QgsUnitTypes::TemporalUnit frameTimeStepUnit() const; //! configure a map settings object void applyMapSettings( QgsMapSettings &mapSettings ); diff --git a/src/app/qgstemporalcontrollerdockwidget.cpp b/src/app/qgstemporalcontrollerdockwidget.cpp index 7742dcad351c..336239dffd5f 100644 --- a/src/app/qgstemporalcontrollerdockwidget.cpp +++ b/src/app/qgstemporalcontrollerdockwidget.cpp @@ -60,7 +60,8 @@ void QgsTemporalControllerDockWidget::exportAnimation() dlg->applyMapSettings( s ); const QgsDateTimeRange animationRange = dlg->animationRange(); - const QgsInterval frameDuration = dlg->frameInterval(); + const double frameTimeStep = dlg->frameTimeStep(); + const QgsUnitTypes::TemporalUnit frameTimeStepUnit = dlg->frameTimeStepUnit(); const QString outputDir = dlg->outputDirectory(); const QString fileNameExpression = dlg->fileNameExpression(); @@ -89,7 +90,8 @@ void QgsTemporalControllerDockWidget::exportAnimation() decorations = QgisApp::instance()->activeDecorations(); QgsTemporalUtils::AnimationExportSettings animationSettings; - animationSettings.frameDuration = frameDuration; + animationSettings.frameTimeStep = frameTimeStep; + animationSettings.frameTimeStepUnit = frameTimeStepUnit; animationSettings.animationRange = animationRange; animationSettings.outputDirectory = outputDir; animationSettings.fileNameTemplate = fileNameExpression; diff --git a/src/core/qgstemporalutils.cpp b/src/core/qgstemporalutils.cpp index a1e984d8898a..3968e006d9ba 100644 --- a/src/core/qgstemporalutils.cpp +++ b/src/core/qgstemporalutils.cpp @@ -80,8 +80,8 @@ bool QgsTemporalUtils::exportAnimation( const QgsMapSettings &mapSettings, const QgsTemporalNavigationObject navigator; navigator.setTemporalExtents( settings.animationRange ); - navigator.setFrameTimeStep( settings.frameDuration.seconds() ); - navigator.setFrameTimeStepUnit( QgsUnitTypes::TemporalUnit::TemporalSeconds ); + navigator.setFrameTimeStep( settings.frameTimeStep ); + navigator.setFrameTimeStepUnit( settings.frameTimeStepUnit ); QgsMapSettings ms = mapSettings; const QgsExpressionContext context = ms.expressionContext(); diff --git a/src/core/qgstemporalutils.h b/src/core/qgstemporalutils.h index 2abec1277d34..b3244ade3387 100644 --- a/src/core/qgstemporalutils.h +++ b/src/core/qgstemporalutils.h @@ -51,8 +51,11 @@ class CORE_EXPORT QgsTemporalUtils //! Dictates the overall temporal range of the animation. QgsDateTimeRange animationRange; - //! Duration of individual export frames - QgsInterval frameDuration; + //! Time step of individual export frames + double frameTimeStep; + + //! Time step unit of individual export frames + QgsUnitTypes::TemporalUnit frameTimeStepUnit; //! Destination directory for created image files. QString outputDirectory;