diff --git a/src/ActivityAnimation.cpp b/src/ActivityAnimation.cpp index cb74618..b0e0761 100644 --- a/src/ActivityAnimation.cpp +++ b/src/ActivityAnimation.cpp @@ -9,8 +9,26 @@ using namespace std; using namespace fmri; -ActivityAnimation::ActivityAnimation(const vector>> &interactions, - const float *aPositions, const float *bPositions, float xDist) : +ActivityAnimation::Color ActivityAnimation::colorBySign(float intensity) +{ + if (intensity > 0) { + return {0, 1, 0}; + } else { + return {1, 0, 0}; + } +}; + +ActivityAnimation::ActivityAnimation( + const std::vector>> &interactions, const float *aPositions, + const float *bPositions, float xDist) : + ActivityAnimation(interactions, aPositions, bPositions, xDist, ActivityAnimation::colorBySign) +{ +} + +ActivityAnimation::ActivityAnimation( + const std::vector>> &interactions, + const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring) + : bufferLength(3 * interactions.size()) { startingPos.reserve(bufferLength); @@ -21,13 +39,7 @@ ActivityAnimation::ActivityAnimation(const vector color; - if (entry.first > 0) { - color = {0, 1, 0}; - } else { - color = {1, 0, 0}; - } - colorBuf.push_back(color); + colorBuf.push_back(coloring(entry.first)); for (auto i : Range(3)) { startingPos.emplace_back(aPos[i]); diff --git a/src/ActivityAnimation.hpp b/src/ActivityAnimation.hpp index ca984d3..5b58804 100644 --- a/src/ActivityAnimation.hpp +++ b/src/ActivityAnimation.hpp @@ -12,14 +12,21 @@ namespace fmri : public Animation { public: + typedef std::array Color; + typedef std::function ColoringFunction; + ActivityAnimation(const std::vector>> &interactions, - const float *aPositions, const float *bPositions, float xDist); + const float *aPositions, const float *bPositions, float xDist); + ActivityAnimation(const std::vector>> &interactions, + const float *aPositions, const float *bPositions, float xDist, ColoringFunction coloring); void draw(float timeScale) override; + static Color colorBySign(float intensity); + private: std::size_t bufferLength; std::vector> colorBuf; std::vector startingPos; std::vector delta; }; -} \ No newline at end of file +}