diff options
| -rw-r--r-- | gui/bin/data/settings.xml | 23 | ||||
| -rwxr-xr-x | gui/libs/libHeliosDacAPI.dylib | bin | 0 -> 24208 bytes | |||
| -rw-r--r-- | ofxHelios/libs/libheliosdac/.DS_Store | bin | 6148 -> 6148 bytes | |||
| -rw-r--r-- | ofxHelios/libs/libheliosdac/lib/.DS_Store | bin | 6148 -> 6148 bytes | |||
| -rw-r--r-- | ofxHelios/src/colourPolyline.cpp | 2 | ||||
| -rw-r--r-- | ofxHelios/src/colourPolyline.h | 2 | ||||
| -rw-r--r-- | ofxHelios/src/ofxHelios.cpp | 14 | ||||
| -rw-r--r-- | ofxHelios/src/ofxHelios.h | 27 |
8 files changed, 55 insertions, 13 deletions
diff --git a/gui/bin/data/settings.xml b/gui/bin/data/settings.xml new file mode 100644 index 0000000..a8d321c --- /dev/null +++ b/gui/bin/data/settings.xml @@ -0,0 +1,23 @@ +<WARP> + <p0> + <X>70.000000000</X> + <Y>93.000000000</Y> + </p0> + <p1> + <X>1163.714843750</X> + <Y>61.531250000</Y> + </p1> + <p2> + <X>1090.921875000</X> + <Y>781.691406250</Y> + </p2> + <p3> + <X>135.000000000</X> + <Y>831.441406250</Y> + </p3> +</WARP> +<POSITION> + <X>51.000000000</X> + <Y>746.000000000</Y> +</POSITION> +<SCALE>2.280712128</SCALE> diff --git a/gui/libs/libHeliosDacAPI.dylib b/gui/libs/libHeliosDacAPI.dylib Binary files differnew file mode 100755 index 0000000..2544dff --- /dev/null +++ b/gui/libs/libHeliosDacAPI.dylib diff --git a/ofxHelios/libs/libheliosdac/.DS_Store b/ofxHelios/libs/libheliosdac/.DS_Store Binary files differindex 38e1f0d..351047d 100644 --- a/ofxHelios/libs/libheliosdac/.DS_Store +++ b/ofxHelios/libs/libheliosdac/.DS_Store diff --git a/ofxHelios/libs/libheliosdac/lib/.DS_Store b/ofxHelios/libs/libheliosdac/lib/.DS_Store Binary files differindex eb14d43..87307e8 100644 --- a/ofxHelios/libs/libheliosdac/lib/.DS_Store +++ b/ofxHelios/libs/libheliosdac/lib/.DS_Store diff --git a/ofxHelios/src/colourPolyline.cpp b/ofxHelios/src/colourPolyline.cpp index 24b1e00..66b63d5 100644 --- a/ofxHelios/src/colourPolyline.cpp +++ b/ofxHelios/src/colourPolyline.cpp @@ -24,7 +24,7 @@ void colourPolyline::addVertex( const ofPoint& p , const ofColor& c){ -ofColor colourPolyline::getColourAt(int i){ +const ofColor colourPolyline::getColourAt(const int i){ return pointColours[i]; } diff --git a/ofxHelios/src/colourPolyline.h b/ofxHelios/src/colourPolyline.h index b6bf749..29f9951 100644 --- a/ofxHelios/src/colourPolyline.h +++ b/ofxHelios/src/colourPolyline.h @@ -30,7 +30,7 @@ class colourPolyline: public ofPolyline { void draw(); - ofColor getColourAt(int i); + const ofColor getColourAt(const int i); private: diff --git a/ofxHelios/src/ofxHelios.cpp b/ofxHelios/src/ofxHelios.cpp index d5bf812..9521ec2 100644 --- a/ofxHelios/src/ofxHelios.cpp +++ b/ofxHelios/src/ofxHelios.cpp @@ -17,7 +17,7 @@ we see curved on both edges betwen shapes, but not on corners int ofxHelios::draw(vector <ofPolyline> &lines,ofColor colour,int intensity){ vector <colourPolyline> output; for (auto& line:lines){ - output.push_back(line); + output.push_back(colourPolyline(line,colour)); } return draw(output,intensity); } @@ -40,8 +40,8 @@ int ofxHelios::draw(vector <colourPolyline> &lines, int intensity){ //todo: add a transform //POC - int xoffs=0x800-(ofGetWidth()/2); - int yoffs=0x800-(ofGetHeight()/2); + int xoffs=output_centre.x-(ofGetWidth()/2); + int yoffs=output_centre.y-(ofGetHeight()/2); if (device!=OFXHELIOS_NODEVICE){ while (!dac.GetStatus(device)); //timeout for this? @@ -50,6 +50,7 @@ int ofxHelios::draw(vector <colourPolyline> &lines, int intensity){ vector <HeliosPoint> points; for (auto& line:lines){ + float dist=abs(prev_point.distance(line[0])); if (dist>SUBDIVIDE){ //draw blanking points if required (only between shapes) @@ -113,7 +114,12 @@ int ofxHelios::draw(vector <colourPolyline> &lines, int intensity){ } - if (HELIOS_ERROR==dac.WriteFrame(device, pps, HELIOS_FLAGS_DEFAULT, &points[0], points.size())){ + for (auto& p:points){ //hopefully avoid problems with excessive scale + p.x=min((uint16_t)0xfff,p.x); + p.y=min((uint16_t)0xfff,p.y); + } + + if (HELIOS_ERROR==dac.WriteFrame(device, pps, HELIOS_FLAGS_DEFAULT, &points[0], min(HELIOS_MAX_POINTS,(int)points.size()))){ printf("ofxHelios: write error (%i,%i,%i,%i)\n",device, pps, HELIOS_FLAGS_DEFAULT, (int)points.size()); return -1; } diff --git a/ofxHelios/src/ofxHelios.h b/ofxHelios/src/ofxHelios.h index e55e99d..280906f 100644 --- a/ofxHelios/src/ofxHelios.h +++ b/ofxHelios/src/ofxHelios.h @@ -14,8 +14,8 @@ #include "ofMain.h" #include "colourPolyline.h" -#define SUBDIVIDE 20 -#define BLANK_NUM 4 +#define SUBDIVIDE 15 +#define BLANK_NUM 8 #define MAX_ANGLE 15.0f #include <HeliosDac.h> @@ -43,7 +43,8 @@ public: pps=_pps; //dac.SetShutter(device,true); } - prev_point=ofPoint(0x7ff,0x7ff); + output_centre=ofPoint(0x7ff,0x7ff); + prev_point=output_centre; } ~ofxHelios() @@ -51,13 +52,24 @@ public: //stopThread(); } + void set_centre(ofPoint c){ + ofPoint cp=c+ofPoint(0x7ff,0x7ff); + if (cp!=output_centre){ + output_centre=cp; + ofLogNotice() << "ofxHelios v "<<OFXHELIOS_VERSION<<": set output centre to "<<output_centre.x<<","<<output_centre.y; + } + } void set_pts(int n){ - pps=n; - ofLogNotice() << "ofxHelios v "<<OFXHELIOS_VERSION<<": set point output to "<<pps; + if (n!=pps){ + pps=n; + ofLogNotice() << "ofxHelios v "<<OFXHELIOS_VERSION<<": set point output to "<<pps; + } } void set_intensity(int i){ - laserintensity=i; - ofLogNotice() << "ofxHelios v "<<OFXHELIOS_VERSION<<": set intensity to "<<laserintensity; + if (i!=laserintensity){ + laserintensity=i; + ofLogNotice() << "ofxHelios v "<<OFXHELIOS_VERSION<<": set intensity to "<<laserintensity; + } } int get_pts(){ return pps; @@ -78,6 +90,7 @@ public: int pps; int laserintensity; + ofPoint output_centre; ofPoint prev_point; ofColor prev_colour; |
