summaryrefslogtreecommitdiff
path: root/ofxHelios/src/ofxHelios.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ofxHelios/src/ofxHelios.cpp')
-rw-r--r--ofxHelios/src/ofxHelios.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/ofxHelios/src/ofxHelios.cpp b/ofxHelios/src/ofxHelios.cpp
new file mode 100644
index 0000000..d05e062
--- /dev/null
+++ b/ofxHelios/src/ofxHelios.cpp
@@ -0,0 +1,78 @@
+//
+// ofxHelios.cpp
+//
+//
+// Created by Tim Redfern Nov 2017
+//
+//
+
+#include "ofxHelios.h"
+
+/*
+draw a colourpolyline
+
+put in mid points
+
+draw a vector of lines
+
+put in dwell points
+
+*/
+
+int ofxHelios::draw(vector <ofPolyline> &points,ofColor colour,int intensity){
+ return 0;
+}
+
+int ofxHelios::draw(ofPolyline &line,ofColor colour,int intensity){
+
+ colourPolyline col=colourPolyline(line,colour);
+ return draw(col);
+
+}
+
+int ofxHelios::draw(colourPolyline &line, int intensity){
+ //todo: move to a thread
+ //todo: add a transform
+ //POC
+
+ int xoffs=0x800-(ofGetWidth()/2);
+ int yoffs=0x800-(ofGetHeight()/2);
+
+ if (device!=OFXHELIOS_NODEVICE){
+ while (!dac.GetStatus(device)); //timeout for this?
+ //assemble data
+
+ HeliosPoint points[line.size()];
+
+ for (int i=0;i<line.size();i++){
+ points[i]=HeliosPoint(
+ {
+ (uint16_t)(line[i].x+xoffs),
+ (uint16_t)(line[i].y+yoffs),
+ (uint8_t)(((line.getColourAt(i).r)*laserintensity)>>8),
+ (uint8_t)(((line.getColourAt(i).g)*laserintensity)>>8),
+ (uint8_t)(((line.getColourAt(i).b)*laserintensity)>>8),
+ (uint8_t)intensity
+ });
+ }
+
+ if (HELIOS_ERROR==dac.WriteFrame(device, pps, HELIOS_FLAGS_DEFAULT, points, line.size())){
+ printf("ofxHelios: write error (%i,%i,%i,%i)\n",device, pps, HELIOS_FLAGS_DEFAULT, (int)line.size());
+ return -1;
+ }
+
+
+ }
+ return 0;
+}
+
+
+
+
+void ofxHelios::threadedFunction(){
+
+ while(isThreadRunning()) {
+
+ }
+}
+