#include "viewport.h" //make viewport oversample viewport::viewport() { //ctor } viewport::viewport(int _w,int _h,int _ox,int _oy,int _num) { setup(_w,_h,_ox,_oy,_num); } void viewport::setup(int _w,int _h,int _ox,int _oy,int _num) { w=_w; h=_h; bw=w*oversample; bh=h*oversample; ox=_ox; oy=_oy; num=_num; rb1.allocate(bw,bh,GL_RGB); rb2.allocate(bw,bh,GL_RGB); seed=ofRandom(1.0f); } void viewport::drawport(vpcontrol &control){ rb1.begin(); //can be done with texture offset? int startx=((bw-(bw*control.fscale))/2)+control.xshift; while (startx>0) startx-=(bw*control.fscale); int starty=((bh-(bh*control.fscale))/2)+control.yshift; while (starty>0) starty-=(bh*control.fscale); for (int i=startx;i0){ ofEnableAlphaBlending(); ofSetColor(0,0,0,control.fade); ofRect(0,0,bw,bh); ofDisableAlphaBlending(); } //do whatever with feedback //set draw colour from palette if (Palette.isLoaded()){ ofSetColor(Palette.getBlend((ofGetElapsedTimef()*control.freq*0.0318)/seed)); } else { uint8_t f=(uint8_t)((sin((ofGetElapsedTimef()*control.freq)/seed)+1.0f)*127.50f); ofSetColor(f,f,f); } if (control.fill){ ofRect(0,0,bw,bh); } ofSetLineWidth(control.thickness); if (!control.fillwave) { ofNoFill(); } if(control.wave){ if (h>w){ ofBeginShape(); for (int i = 0; i < bh; i++){ ofVertex((bw/2) -(control.right[i+(num*bh)]*bw),i); } ofEndShape(false); } else { ofBeginShape(); for (int i = 0; i < bw; i++){ ofVertex(i, (bh/2) -(control.right[i+(num*bw)]*bh) ); } ofEndShape(false); } } ofFill(); rb1.end(); rb2.begin(); ofSetColor(255,255,255); rb1.draw(0,0); rb2.end(); } void viewport::draw(uint8_t b,float s){ ofSetColor(b,b,b); rb2.draw(ox*s,oy*s,w*s,h*s); } viewport::~viewport() { //dtor }