From 230cc5ee76ae1c0186a04dd5839df4fff6626e6f Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Tue, 13 Feb 2018 15:49:50 +0100 Subject: [PATCH] Extract animation base class. Skips some complicated computations, so yay. --- src/ActivityAnimation.cpp | 2 +- src/ActivityAnimation.hpp | 4 +++- src/Animation.cpp | 5 +++++ src/Animation.hpp | 14 ++++++++++++++ src/main.cpp | 3 +-- src/utils.hpp | 5 +++-- src/visualisations.cpp | 7 ++++--- src/visualisations.hpp | 8 ++++---- 8 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 src/Animation.cpp create mode 100644 src/Animation.hpp diff --git a/src/ActivityAnimation.cpp b/src/ActivityAnimation.cpp index 5a3b6d6..04039dd 100644 --- a/src/ActivityAnimation.cpp +++ b/src/ActivityAnimation.cpp @@ -33,7 +33,7 @@ ActivityAnimation::ActivityAnimation(std::size_t count, const float *aPos, const } } -void ActivityAnimation::draw(float timeScale) const +void ActivityAnimation::draw(float timeScale) { std::unique_ptr vertexBuffer(new float[bufferLength]); diff --git a/src/ActivityAnimation.hpp b/src/ActivityAnimation.hpp index d3b5eef..3513195 100644 --- a/src/ActivityAnimation.hpp +++ b/src/ActivityAnimation.hpp @@ -3,14 +3,16 @@ #include #include #include +#include "Animation.hpp" namespace fmri { class ActivityAnimation + : public Animation { public: ActivityAnimation(std::size_t count, const float* aPos, const float* bPos, const float xDist); - void draw(float timeScale) const; + void draw(float timeScale) override; private: std::size_t bufferLength; diff --git a/src/Animation.cpp b/src/Animation.cpp new file mode 100644 index 0000000..ee4a011 --- /dev/null +++ b/src/Animation.cpp @@ -0,0 +1,5 @@ +// +// Created by bert on 13/02/18. +// + +#include "Animation.hpp" diff --git a/src/Animation.hpp b/src/Animation.hpp new file mode 100644 index 0000000..2b9cf82 --- /dev/null +++ b/src/Animation.hpp @@ -0,0 +1,14 @@ +#pragma once + + +namespace fmri +{ + class Animation + { + public: + virtual ~Animation() = default; + + virtual void draw(float step) = 0; + + }; +} diff --git a/src/main.cpp b/src/main.cpp index 347fd3d..95c5a81 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -12,7 +12,6 @@ #include "camera.hpp" #include "LayerVisualisation.hpp" #include "Range.hpp" -#include "ActivityAnimation.hpp" #include "visualisations.hpp" using namespace std; @@ -25,7 +24,7 @@ struct vector> data; vector>::iterator currentData; vector> layerVisualisations; - vector> animations; + vector> animations; float animationStep = 0; } rendererData; diff --git a/src/utils.hpp b/src/utils.hpp index dd5964e..7deaf70 100644 --- a/src/utils.hpp +++ b/src/utils.hpp @@ -158,9 +158,10 @@ namespace fmri std::default_random_engine& rng(); /** + * Get the current animation offset for a particular animation. * - * @tparam Duration Duration type of length - * @param length + * @tparam Duration Duration type of length. Should be a specialisation of std::chrono::duration + * @param length The length of the animation. * @return */ template diff --git a/src/visualisations.cpp b/src/visualisations.cpp index 7c819ce..7435f57 100644 --- a/src/visualisations.cpp +++ b/src/visualisations.cpp @@ -4,6 +4,7 @@ #include "MultiImageVisualisation.hpp" #include "FlatLayerVisualisation.hpp" #include "Range.hpp" +#include "ActivityAnimation.hpp" using namespace fmri; using namespace std; @@ -56,9 +57,9 @@ computeActivityStrengths(const LayerData &prevState, const LayerInfo &layer) return result; } -fmri::ActivityAnimation *fmri::getActivityAnimation(const fmri::LayerData &prevState, const fmri::LayerData &curState, - const fmri::LayerInfo &layer, const vector &prevPositions, - const vector &curPositions) +Animation * fmri::getActivityAnimation(const fmri::LayerData &prevState, const fmri::LayerData &curState, + const fmri::LayerInfo &layer, const vector &prevPositions, + const vector &curPositions) { if (layer.type() != LayerInfo::Type::InnerProduct) { // Only supported type at this time diff --git a/src/visualisations.hpp b/src/visualisations.hpp index 9a5549c..43549e4 100644 --- a/src/visualisations.hpp +++ b/src/visualisations.hpp @@ -2,7 +2,7 @@ #include "LayerVisualisation.hpp" #include "LayerData.hpp" -#include "ActivityAnimation.hpp" +#include "Animation.hpp" #include "LayerInfo.hpp" namespace fmri { @@ -14,7 +14,7 @@ namespace fmri { */ LayerVisualisation* getVisualisationForLayer(const LayerData& layer); - ActivityAnimation *getActivityAnimation(const fmri::LayerData &prevState, const fmri::LayerData &curState, - const fmri::LayerInfo &layer, const vector &prevPositions, - const vector &curPositions); + Animation * getActivityAnimation(const fmri::LayerData &prevState, const fmri::LayerData &curState, + const fmri::LayerInfo &layer, const vector &prevPositions, + const vector &curPositions); }