// // 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 &lines,ofColor colour,int intensity){ return 0; } int ofxHelios::draw(ofPolyline &line,ofColor colour,int intensity){ colourPolyline col=colourPolyline(line,colour); return draw(col,intensity); } int ofxHelios::draw(colourPolyline &line, int intensity){ vector lines; lines.push_back(line); return draw(lines,intensity); } int ofxHelios::draw(vector &lines, 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 vector points; ofPoint prev_point=lines[0][0]; ofColor prev_colour=lines[0].getColourAt(0); for (auto& line:lines){ float dist=prev_point.distance(line[0]); if (dist>SUBDIVIDE){ //printf("ofxHelios: creating %i join points\n",(int)joindist/SUBDIVIDE); //dac.SetShutter(device,false); //doesn't do anything } for (float j=0;j>8), (uint8_t)(((line.getColourAt(i).g)*laserintensity)>>8), (uint8_t)(((line.getColourAt(i).b)*laserintensity)>>8), (uint8_t)intensity )); float angle=line.getDegreesAtIndex(i); if (angle>MAX_ANGLE){ for (int l=0;l<((angle/180)*BLANK_NUM);l++){ points.push_back(HeliosPoint( (uint16_t)(line[i].x+xoffs), (uint16_t)(line[i].y+yoffs), 0,0,0,0)); //blank point } } prev_point=line[i]; prev_colour=line.getColourAt(i); } //dac.SetShutter(device,false); //doesn't do anything for (int k=0;k