summaryrefslogtreecommitdiff
path: root/gui/src/lineSegmenter.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2018-11-29 03:01:05 +0000
committerTim Redfern <tim@getdrop.com>2018-11-29 03:01:05 +0000
commit11779cd013e4b8f8d8e298e480d7cf763a21e4e2 (patch)
treec4afe354fced7f01ce6aab1e720a1a1717bbf4fc /gui/src/lineSegmenter.cpp
parent2dcde7e8eb69d6e1139838555ea77d1ef6a84548 (diff)
maybe..
Diffstat (limited to 'gui/src/lineSegmenter.cpp')
-rw-r--r--gui/src/lineSegmenter.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/gui/src/lineSegmenter.cpp b/gui/src/lineSegmenter.cpp
index 14f6e24..495190d 100644
--- a/gui/src/lineSegmenter.cpp
+++ b/gui/src/lineSegmenter.cpp
@@ -62,6 +62,44 @@ int lineSegmenter::size(){
return line.size();
}
+const vector <colourPolyline> & colourLineSegmenter::getSegments(int num,float coverage, float phase){
+
+ segments.clear();
+
+ for (int i=0;i<num;i++){
+ float startIndex=line.getIndexAtPercent((phase+i)/num); //always <1
+ float endPoint=(phase+i+coverage)/num; //can be >1
+ float endIndex=line.getIndexAtPercent(endPoint>1.0f?endPoint-1.0f:endPoint);
+ colourPolyline segment;
+ segment.addVertex(line.getPointAtIndexInterpolated(startIndex),line.getColourAtIndexInterpolated(startIndex));
+ for (int j=(int)ceil(startIndex);j<(endPoint>1?line.size():(int)ceil(endIndex));j++){
+ segment.addVertex(line[j],line.getColourAt(j));
+ }
+ if (endPoint>1){
+ segments.push_back(segment);
+ segment.clear();
+ for (int j=0;j<(int)ceil(endIndex);j++){
+ segment.addVertex(line[j],line.getColourAt(j));
+ }
+ segment.addVertex(line.getPointAtIndexInterpolated(endIndex),line.getColourAtIndexInterpolated(endIndex));
+ }
+ else {
+ segment.addVertex(line.getPointAtIndexInterpolated(endIndex),line.getColourAtIndexInterpolated(endIndex));
+ }
+ segments.push_back(segment);
+ }
+
+ return segments;
+}
+
+void colourLineSegmenter::draw(){
+ line.draw();
+ return;
+}
+int colourLineSegmenter::size(){
+ return line.size();
+}
+
/*