summaryrefslogtreecommitdiff
path: root/gui/src/ofApp.h
blob: 20116a15d970e551dd1f8912a37f88a486bbb470 (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
#pragma once

#include "ofMain.h"
#include "ofxDmx.h"
#include "ofxMidi.h"	
#include "chainImage.h"



class dmxMap{
	//resolution independent DMX colour tracker
	public:
		dmxMap(){
		}
		dmxMap(ofxDmx *_dmx,int _chan_R,int _chan_G,int _chan_B,int _chan_intensity,float _x,float _y){
			dmx=_dmx;
			chan_R=_chan_R;
			chan_G=_chan_G;
			chan_B=_chan_B;
			chan_intensity=_chan_intensity;
			x=_x;
			y=_y;
		}
		void update(int intensity){
			unsigned char color[3];
			glReadPixels(x*ofGetWidth() , ofGetHeight() - (y*ofGetHeight()) , 1 , 1 , GL_RGB , GL_UNSIGNED_BYTE , color);
			//printf("dmxMap %i,%i: colour %i %i %i\n",x,y,color[0],color[1],color[2]);
			dmx->setLevel(chan_R, color[0]);
			dmx->setLevel(chan_G, color[1]);
			dmx->setLevel(chan_B, color[2]);
			dmx->setLevel(chan_intensity, intensity);
			dmx->update();
		}
		int chan_R, chan_G, chan_B, chan_intensity;
		float x,y;
		ofxDmx *dmx;
};

class ofApp : public ofBaseApp, public ofxMidiListener{

	public:
		void setup();
		void update();
		void updateOutput(ofEventArgs & args);
		void draw();
		void drawOutput(ofEventArgs & args);
		void exit();

		void keyPressed(ofKeyEventArgs &keyargs);
		void keyReleased(int key);
		void mouseMoved(int x, int y );
		void mouseDragged(int x, int y, int button);
		void mousePressed(int x, int y, int button);
		void mouseReleased(int x, int y, int button);
		void mouseEntered(int x, int y);
		void mouseExited(int x, int y);
		void windowResized(int w, int h);
		void outputWindowResized(ofResizeEventArgs &resizeargs);
		void dragEvent(ofDragInfo dragInfo);
		void gotMessage(ofMessage msg);

	vector<string> arguments;

	chainImageSet images;

	ofxDmx dmx;
	vector<dmxMap> map;

	void newMidiMessage(ofxMidiMessage& eventArgs);
	ofxMidiIn midiIn;
	ofxMidiMessage midiMessage;

	int dmxIntensity;

};