diff options
Diffstat (limited to 'ofxHelios/src/ofxHelios.cpp')
| -rw-r--r-- | ofxHelios/src/ofxHelios.cpp | 78 |
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()) { + + } +} + |
