summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2018-10-30 23:38:41 +0000
committerTim Redfern <tim@getdrop.com>2018-10-30 23:38:41 +0000
commitb552beeaa899d0ac5c7d3388bc911f16cc1dbc4c (patch)
tree1aa17ad38f6d481659e6ddd856cedc5b2886670d /gui
parent9fe89712b7106cc8dab9af95ba53e0265202485c (diff)
drawing 3 layer additive for I_cried
Diffstat (limited to 'gui')
-rw-r--r--gui/src/chainImage.cpp19
-rw-r--r--gui/src/ofApp.cpp21
2 files changed, 36 insertions, 4 deletions
diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp
index a6cde14..40e483a 100644
--- a/gui/src/chainImage.cpp
+++ b/gui/src/chainImage.cpp
@@ -479,9 +479,15 @@ void chainImage::drawChain(float fadeIn,bool additive,float intensity,float zoom
glScalef(getLinkScale(),getLinkScale(),getLinkScale());
//ofEnableAlphaBlending();
- glEnable(GL_BLEND);
+ if (additive){
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ ofSetColor(255,255,255,255);
+ }
+ else {
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity);
+ }
- ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity);
//setting alpha here doesn't work with shader?
//possibly if you could set the alpha when drawing?
@@ -497,6 +503,15 @@ void chainImage::drawChain(float fadeIn,bool additive,float intensity,float zoom
//link->setAlpha(transition);
link->draw(0,0,link->getWidth(),link->getHeight());
+ if (additive){
+ ofSetColor(255,255,255,255*min(1.0,transition/fadeIn)*intensity);
+ glTranslatef(link->getLinkPos().x,link->getLinkPos().y,0);
+ glRotatef(link->getLinkRot(),0,0,1);
+ glScalef(link->getLinkScale(),link->getLinkScale(),link->getLinkScale());
+ link->link->setAnchorPoint(link->link->getWidth()/2,link->link->getHeight()/2);
+ link->link->draw(0,0,link->link->getWidth(),link->link->getHeight());
+ }
+
glDisable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp
index 5869074..5c148be 100644
--- a/gui/src/ofApp.cpp
+++ b/gui/src/ofApp.cpp
@@ -314,6 +314,7 @@ void ofApp::newMidiMessage(ofxMidiMessage& msg) {
}
+
//--------------------------------------------------------------
void ofApp::guiKeyPressed(ofKeyEventArgs &args){
@@ -337,7 +338,12 @@ void ofApp::guiKeyPressed(ofKeyEventArgs &args){
sets[1].decayFactor=sets[0].decayFactor;
printf("Decayfactor: %f \n",sets[0].decayFactor);
}
-
+ if(args.key == 'a'){
+ bool add=!sets[0].additive;;
+ sets[0].additive=add;
+ sets[1].additive=add;
+ printf("Additive: %s \n",add?"true":"false");
+ }
if(args.key >='1' && args.key <= '9'){
//sets[0].decayFactor = 1.0f + (
// pow(4.0f,-((args.key-'1')+1.7f))
@@ -359,11 +365,22 @@ void ofApp::keyPressed(ofKeyEventArgs &args){
outputFS=!outputFS;
ofSetFullscreen(outputFS);
}
+ if(args.key == 'a'){
+ bool add=!sets[0].additive;;
+ sets[0].additive=add;
+ sets[1].additive=add;
+ printf("Additive: %s \n",add?"true":"false");
+ }
if(args.key >='1' && args.key <= '9'){
+ //sets[0].decayFactor = 1.0f + (
+ // pow(4.0f,-((args.key-'1')+1.7f))
+ // * (sets[0].decayFactor<1.0f?-1:1)
+ // );
sets[0].decayFactor = 1.0f + (
- pow(4.0f,-((args.key-'1')+1.7f))
+ pow(4.0f,-(3+((args.key-'1')*0.1)+1.7f))
* (sets[0].decayFactor<1.0f?-1:1)
);
+ //temp fine adjust with keys
sets[1].decayFactor=sets[0].decayFactor;
printf("Keydiff: %f Decayfactor: %f \n",((args.key-'1')+1.0f),sets[0].decayFactor);
}