summaryrefslogtreecommitdiff
path: root/src/viewport.cpp
blob: c660edecd5cf769a502ab0115d68e55d9865ef98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#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;
	ox=_ox;
	oy=_oy;
	num=_num;
	rb1.allocate(w,h,GL_RGB);
	rb2.allocate(w,h,GL_RGB);
	seed=ofRandom(1.0f);
}

void viewport::drawport(vpcontrol &control){
		
		rb1.begin();

		//can be done with texture offset?

		int startx=((w-(w*control.fscale))/2)+control.xshift;
		while (startx>0) startx-=(w*control.fscale);
		int starty=((h-(h*control.fscale))/2)+control.yshift;
		while (starty>0) starty-=(h*control.fscale);
		
		for (int i=startx;i<w*2;i+=(w*control.fscale)) {
			for (int j=starty;j<h*2;j+=(h*control.fscale)) {
			    rb2.draw(i,j,w*control.fscale,h*control.fscale);
			}
		}

		//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,w,h);
		}

		ofSetLineWidth(3); //control.thickness);

		if(control.wave){
			if (h>w){
				ofBeginShape();
				for (int i = 0; i < h; i++){
					ofVertex((w/2) -(control.right[i+(num*h)]*w),i);
				}
				ofEndShape(false);
			}
			else {	
				ofBeginShape();
				for (int i = 0; i < w; i++){
					ofVertex(i, (h/2) -(control.right[i+(num*w)]*h) );
				}
				ofEndShape(false);
			}
		}
		

		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
}