diff --git a/src/FlatLayerVisualisation.cpp b/src/FlatLayerVisualisation.cpp index 0c1a3f1..120c15d 100644 --- a/src/FlatLayerVisualisation.cpp +++ b/src/FlatLayerVisualisation.cpp @@ -21,6 +21,7 @@ static inline void computeColor(float intensity, float limit, float* destination } FlatLayerVisualisation::FlatLayerVisualisation(const LayerData &layer, Ordering ordering) : + LayerVisualisation(layer.numEntries()), ordering(ordering), faceCount(layer.numEntries() * 4), vertexBuffer(new float[faceCount * 3]), @@ -78,7 +79,7 @@ void FlatLayerVisualisation::render() glDisableClientState(GL_COLOR_ARRAY); } -void FlatLayerVisualisation::setVertexPositions(int vertexNo, float *destination) +void FlatLayerVisualisation::setVertexPositions(const int vertexNo, float *destination) { int j = 0; float zOffset; @@ -100,6 +101,12 @@ void FlatLayerVisualisation::setVertexPositions(int vertexNo, float *destination break; } + nodePositions_[3 * vertexNo] = 0; + nodePositions_[3 * vertexNo + 1] = yOffset; + nodePositions_[3 * vertexNo + 2] = zOffset; + // TODO: actually compute from this rather than copying to destination. + // Side note: should move this out of this function anyway. + // Create the 4 vertices for the pyramid destination[j++] = -0.5f; destination[j++] = 0 + yOffset; diff --git a/src/FlatLayerVisualisation.hpp b/src/FlatLayerVisualisation.hpp index d98a355..4a40d76 100644 --- a/src/FlatLayerVisualisation.hpp +++ b/src/FlatLayerVisualisation.hpp @@ -26,6 +26,6 @@ namespace fmri std::unique_ptr colorBuffer; std::unique_ptr indexBuffer; - void setVertexPositions(int vertexNo, float* destination); + void setVertexPositions(const int vertexNo, float *destination); }; } diff --git a/src/LayerVisualisation.cpp b/src/LayerVisualisation.cpp new file mode 100644 index 0000000..3dcabc7 --- /dev/null +++ b/src/LayerVisualisation.cpp @@ -0,0 +1,11 @@ +#include "LayerVisualisation.hpp" + +const std::vector &fmri::LayerVisualisation::nodePositions() const +{ + return nodePositions_; +} + +fmri::LayerVisualisation::LayerVisualisation(size_t numNodes) + : nodePositions_(numNodes * 3) +{ +} diff --git a/src/LayerVisualisation.hpp b/src/LayerVisualisation.hpp index 170bf17..d3b2677 100644 --- a/src/LayerVisualisation.hpp +++ b/src/LayerVisualisation.hpp @@ -1,12 +1,20 @@ #pragma once +#include + namespace fmri { class LayerVisualisation { public: + LayerVisualisation() = default; + LayerVisualisation(size_t numNodes); virtual ~LayerVisualisation() = default; virtual void render() = 0; + virtual const std::vector& nodePositions() const; + + protected: + std::vector nodePositions_; }; }