summaryrefslogtreecommitdiff
path: root/gui/src/ofApp.h
blob: 614861366cb2b410d62bfc90c78a03c15a9e5340 (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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#pragma once

#include "ofMain.h"
#include "lineTransformer.h"
#include "ofxNDI.h"
#include "ofxGui.h"
#include "ofxHelios.h"
#include "ofxOpenCv.h"
#include "ofxSVG.h"
#include "lineSegmenter.h"
#include "ofxXmlSettings.h"
#include "ofxClipper.h"
#include "ofxMidi.h"	

enum Source{
	TEST,
	NDI,
	Player,
	SVG_outlines,
	SVG_segmenters,
	Source_end
};

class ofApp: public ofBaseApp, public ofxMidiListener {

	public:
		void setup();
		void update();
		void draw();
		void exit();

		void keyPressed(ofKeyEventArgs &keyargs);
		void keyReleased(ofKeyEventArgs & args);
		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 dragEvent(ofDragInfo dragInfo);

		void newMidiMessage(ofxMidiMessage& eventArgs);
	
		void updateOutput(ofEventArgs & args);
		void drawOutput(ofEventArgs & args);
		void outputKeyPressed(ofKeyEventArgs & args);
		void outputKeyReleased(ofKeyEventArgs & args);
		void outputMouseDragged(ofMouseEventArgs & args);
		void outputMousePressed(ofMouseEventArgs & args);
		void outputMouseReleased(ofMouseEventArgs & args);
		void outputWindowResized(ofResizeEventArgs &resizeargs);	

		void select_random_shapes();
		void save_settings();

		bool commandPressed;

		glm::vec2 warpframe[4];
		int select_warpframe;
		bool bDrawFrame;

		ofxPanel gui;

		ofxHelios laser;

		int source;

		//======================================== //thresholding

		ofxCvColorImage			colorImg;
        ofxCvGrayscaleImage 	grayImage;
        ofxCvContourFinder 	contourFinder;

		//======================================== //ofxNDI

		ofxNDIreceiver ndiReceiver;
		ofImage ndiImage;
		char senderName[256];
		int nSenders;
		unsigned int senderWidth;
		unsigned int senderHeight;
		bool bNDIreceiver;

		// For received frame fps calculations
		double startTime, lastTime, frameTime, frameRate, fps;

		//====== gui

		ofxIntSlider contour_threshold;
		ofxFloatSlider contour_simplify;
		ofxToggle	 contour_useColour;
		ofxIntSlider laser_R;
		ofxIntSlider laser_G;
		ofxIntSlider laser_B;
		ofxIntSlider laser_intensity;
		ofxIntSlider laser_points;

		//====== video

		ofxFloatSlider video_speed;

		//svg gui
		ofxToggle	 shapes_randomise;
		ofxFloatSlider shapes_amount;
		ofxIntSlider shapes_duration;
		ofxToggle use_mask;
		ofxToggle invert_mask;

		//segmenter
		ofxToggle use_segmenter;
		ofxFloatSlider segmenter_speed;
		ofxFloatSlider segmenter_length;
		ofxIntSlider segmenter_number;

		//======================================= //MIDI

		ofxMidiIn midiIn;
		ofxMidiMessage midiMessage;

		//======================================= //video player

		ofVideoPlayer 		movie;

		//======================================= //SVG player

		ofxSVG svg;
		vector <lineSegmenter> segmenters;
		set <int> shape_selection;
		int framecounter;

		//======================================= //Mask clipping

		vector <ofPolyline> mask;
		ofx::Clipper clipper;

		//======================================= //positioning interface

		bool bShowPositionInterface;
		bool bOutputSelected;
		ofPoint outputSelectionPoint;
		ofPoint outputPosition;
		ofPoint outputOffset;
		float outputScale;
		float outputOffsetScale;

		//======================================= //saving settings

		ofxXmlSettings XML;

};