#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(); //if (control.fade>0){ // ofEnableAlphaBlending(); // ofSetColor(255,255,255,255-control.fade); //} //can be done with texture offset? int xshift=control.reverse?(num%2==0?control.xshift:-control.xshift):control.xshift; int yshift=control.reverse?(num%2==0?control.yshift:-control.yshift):control.yshift; int startx=((bw-(bw*control.fscale))/2)+xshift; while (startx>0) startx-=(bw*control.fscale); int starty=((bh-(bh*control.fscale))/2)+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); } if (control.drawkeys) { for (int i=0;iw){ 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(); if (control.drawseconds>-1){ ofCircle(control.bx*bw,control.by*bh,(control.drawseconds*bh*.04)+(bh*.02)); } 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 }