From 64c89ab53447a004002ec0b0db94fd0a1e632cf6 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Sun, 28 Jan 2018 22:20:49 +0000 Subject: POC driver --- ofxHelios/src/colourPolyline.cpp | 40 +++++++++++++++++++++ ofxHelios/src/colourPolyline.h | 39 ++++++++++++++++++++ ofxHelios/src/ofxHelios.cpp | 78 ++++++++++++++++++++++++++++++++++++++++ ofxHelios/src/ofxHelios.h | 78 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 235 insertions(+) create mode 100644 ofxHelios/src/colourPolyline.cpp create mode 100644 ofxHelios/src/colourPolyline.h create mode 100644 ofxHelios/src/ofxHelios.cpp create mode 100644 ofxHelios/src/ofxHelios.h (limited to 'ofxHelios/src') diff --git a/ofxHelios/src/colourPolyline.cpp b/ofxHelios/src/colourPolyline.cpp new file mode 100644 index 0000000..24b1e00 --- /dev/null +++ b/ofxHelios/src/colourPolyline.cpp @@ -0,0 +1,40 @@ +#include "colourPolyline.h" + + +void colourPolyline::addVertex( float x, float y){ + addVertex(ofPoint(x,y)); +} + +void colourPolyline::addVertex( const ofPoint& p ){ + addVertex(p, ofColor(255,255,255)); +} + +void colourPolyline::addVertex( float x, float y, int r, int g, int b){ + addVertex(ofPoint(x,y),ofColor(r,g,b)); +} + +void colourPolyline::addVertex( const ofPoint& p , int r, int g, int b){ + addVertex(p,ofColor(r,g,b)); +} + +void colourPolyline::addVertex( const ofPoint& p , const ofColor& c){ + ofPolyline::addVertex(p); + pointColours.push_back(c); +} + + + +ofColor colourPolyline::getColourAt(int i){ + return pointColours[i]; +} + +void colourPolyline::draw(){ + for (int i=0;i pointColours; + +}; \ No newline at end of file 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 &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>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()) { + + } +} + diff --git a/ofxHelios/src/ofxHelios.h b/ofxHelios/src/ofxHelios.h new file mode 100644 index 0000000..d873706 --- /dev/null +++ b/ofxHelios/src/ofxHelios.h @@ -0,0 +1,78 @@ +// +// ofxHelios.h +// +// +// Created by Tim Redfern Nov 2017 +// +// it would be good if ofxHelios could inherit the current transform + +#ifndef ofxHelios_h +#define ofxHelios_h +#define OFXHELIOS_VERSION 0.1 +#define OFXHELIOS_NODEVICE -1 +#include "ofMain.h" +#include "colourPolyline.h" + +#define BUFFER_POINTS 2048 + +#include + +class ofxHelios : public ofThread +{ +public: + + ofxHelios(int _pps=20000,int _device = 0) + { + int numdevices=dac.OpenDevices(); + for (int i=0;i=numdevices){ + ofLogNotice() << "ofxHelios v "< &points,ofColor colour=ofColor(255,255,255),int intensity=255); + + void threadedFunction(); + + //isReady() + + private: + + int device; + HeliosDac dac; + int pps; + int laserintensity; + +}; + +#endif -- cgit v1.2.3