From 34a459de430dd35034ec9404fe7ec54407641085 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Fri, 31 Aug 2012 16:48:23 +0100 Subject: threaded loader --- liveengine/liveengine.cbp | 6 ++++- liveengine/src/layers.cpp | 10 +++++--- liveengine/src/layers.h | 3 ++- liveengine/src/playlist.cpp | 58 +++++++++++++++++++++++++++++++++++++++++++++ liveengine/src/playlist.h | 23 ++++++++++++++++++ liveengine/src/testApp.cpp | 51 ++++++++++----------------------------- liveengine/src/testApp.h | 12 ++++------ 7 files changed, 111 insertions(+), 52 deletions(-) create mode 100644 liveengine/src/playlist.cpp create mode 100644 liveengine/src/playlist.h diff --git a/liveengine/liveengine.cbp b/liveengine/liveengine.cbp index db4e112..ae2bc2e 100644 --- a/liveengine/liveengine.cbp +++ b/liveengine/liveengine.cbp @@ -34,7 +34,9 @@ - + + @@ -50,6 +52,8 @@ + + diff --git a/liveengine/src/layers.cpp b/liveengine/src/layers.cpp index f140073..3ae7810 100644 --- a/liveengine/src/layers.cpp +++ b/liveengine/src/layers.cpp @@ -19,7 +19,9 @@ layer::~layer() } -svglayer::svglayer() {} +svglayer::svglayer() { + xo=0;yo=0; +} svglayer::svglayer(string _f) { load(_f); @@ -32,14 +34,16 @@ void svglayer::load(string _f){ fills.push_back(svg.getPathAt(i).getFillColor()); strokes.push_back(svg.getPathAt(i).getStrokeColor()); printf(" path %i: fill %08x stroke %08x\n",i,svg.getPathAt(i).getFillColor().getHex(),svg.getPathAt(i).getStrokeColor().getHex()); - } + } + xo=(ofGetWidth()-svg.getWidth())/2; + yo=(ofGetHeight()-svg.getHeight())/2; } void svglayer::draw(float a) { //svg.draw(); for (int i=0;i fills; - vector strokes; + vector strokes; + float xo,yo; }; class imglayer: public layer diff --git a/liveengine/src/playlist.cpp b/liveengine/src/playlist.cpp new file mode 100644 index 0000000..896c788 --- /dev/null +++ b/liveengine/src/playlist.cpp @@ -0,0 +1,58 @@ +#include "playlist.h" + +playlist::playlist() +{ +} + +void playlist::load(string _name){ + printf("loading %s\n",_name.c_str()); + + + if( !XML.loadFile(_name) ){ + printf("unable to load %s check data/ folder\n",_name.c_str()); + }else { + printf("starting loader thread\n"); + startThread(false, false); //blocking, verbose + } + + + +} + +void playlist::threadedFunction(){ + + if( lock() ){ + + int numLayers=0; + layers.clear(); + if(XML.pushTag("playlist")) { + numLayers=XML.getNumTags("svglayer"); + if(numLayers) { + for (int i=0;i layers; + protected: + private: +}; + +#endif // PLAYLIST_H diff --git a/liveengine/src/testApp.cpp b/liveengine/src/testApp.cpp index ee89f6a..0d8ec28 100755 --- a/liveengine/src/testApp.cpp +++ b/liveengine/src/testApp.cpp @@ -1,35 +1,5 @@ #include "testApp.h" -void testApp::loadplaylist(string _name){ - int numLayers=0; - layers.clear(); - if( !XML.loadFile(_name) ){ - printf("unable to load %s check data/ folder\n",_name.c_str()); - }else{ - if(XML.pushTag("playlist")) { - numLayers=XML.getNumTags("svglayer"); - if(numLayers) { - for (int i=0;idraw(lamda); - ofPopMatrix(); + case LIST: + if (list.lock()) { //if playlist is loaded + ofPushMatrix(); + //ofScale(sin(ofGetElapsedTimef())+1.1,sin(ofGetElapsedTimef())+1.1); + if (list.layers.find(note)!=list.layers.end()) list.layers[note]->draw(lamda); + ofPopMatrix(); + list.unlock(); + } break; } } @@ -126,16 +99,16 @@ void testApp::draw(){ //-------------------------------------------------------------- void testApp::keyPressed (int key){ if(key == 'q'){ - loadplaylist("insects.xml"); + list.load("insects.xml"); } if(key == 'w'){ - loadplaylist("barcelona.xml"); + list.load("barcelona.xml"); } if(key == 'e'){ - loadplaylist("organs.xml"); + list.load("organs.xml"); } if(key == 'r'){ - loadplaylist("tai_chi.xml"); + list.load("tai_chi.xml"); } if(key == 's'){ XML.saveFile("settings.xml"); diff --git a/liveengine/src/testApp.h b/liveengine/src/testApp.h index 7e0272f..0f97068 100755 --- a/liveengine/src/testApp.h +++ b/liveengine/src/testApp.h @@ -71,13 +71,10 @@ non random colours #include "ofxMidi.h" - -#include "layers.h" - #define BLOCKS 0 #define LIST 1 - +#include "playlist.h" class testApp : public ofBaseApp, public ofxMidiListener{ @@ -101,12 +98,11 @@ class testApp : public ofBaseApp, public ofxMidiListener{ void toggleFPS(); bool showFPS; - void loadplaylist(string _name); - ofxXmlSettings XML; unsigned char* controllers; - int note,mode; + int note, + mode; float lastnoteTime; float decayTime; @@ -123,7 +119,7 @@ class testApp : public ofBaseApp, public ofxMidiListener{ void newMidiMessage(ofxMidiEventArgs& eventArgs); - map layers; + playlist list; }; -- cgit v1.2.3