summaryrefslogtreecommitdiff
path: root/gui
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2017-08-29 00:55:14 +0100
committerTim Redfern <tim@getdrop.com>2017-08-29 00:55:14 +0100
commit9090618078eff67634a0217b9c37b2151183f78d (patch)
tree4fd999f31c40ee17688e6cdf1e231e9b589a6c7c /gui
parent50d670c523ef4ee563ba961bd479b432516cefaf (diff)
starting to shape up
Diffstat (limited to 'gui')
-rw-r--r--gui/src/chainImage.cpp88
-rw-r--r--gui/src/chainImage.h8
-rw-r--r--gui/src/main.cpp2
-rw-r--r--gui/src/ofApp.cpp8
4 files changed, 97 insertions, 9 deletions
diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp
index 2ac6074..9a759eb 100644
--- a/gui/src/chainImage.cpp
+++ b/gui/src/chainImage.cpp
@@ -2,6 +2,11 @@
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
+#define distance(a,b)
+
+float distance(ofPoint p1,ofPoint p2){
+ return pow(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2),0.5);
+}
void chainImage::init(ofPoint _linkPos,float _linkScale,float _linkRot){
linkPos=_linkPos;
@@ -71,7 +76,7 @@ void chainImage::drawChain(float fadeIn){
glTranslatef(linkPos.x,linkPos.y,0);
- glScalef(linkScale,linkScale,linkScale);
+ glScalef(linkScale,linkScale,_linkScale);
ofEnableAlphaBlending();
@@ -90,6 +95,8 @@ void chainImageSet::drawGui(){
for(std::list<chainImage>::iterator ii=images.begin(); ii != images.end(); ii++){
+ ofSetColor(255,255,255);
+
float thumbx=ii->thumbnail.getWidth()/2;
float thumby=ii->thumbnail.getHeight()/2;
float thumbscale=ii->thumbnail.getWidth()/ii->getWidth();
@@ -104,7 +111,8 @@ void chainImageSet::drawGui(){
ii->thumbnail.getHeight()
);
- ofSetColor(255,255,255);
+ if (ii==selected) ofSetColor(255,255,0);
+ else ofSetColor(255,255,255);
ofDrawLine(t_xoffs+borderwidth,borderwidth,
t_xoffs+borderwidth+ii->thumbnail.getWidth(),borderwidth);
@@ -114,11 +122,17 @@ void chainImageSet::drawGui(){
t_xoffs+borderwidth,borderwidth+ii->thumbnail.getHeight());
ofDrawLine(t_xoffs+borderwidth,borderwidth+ii->thumbnail.getHeight(),
t_xoffs+borderwidth,borderwidth);
+
+ ofSetColor(255,255,255);
if (ii->link){
+ ofPoint lp=ii->linkPos;
+ if (ii==selected){
+ lp+=dragPoint;
+ }
- float subpictx=t_xoffs+borderwidth+thumbx+(ii->linkPos.x*thumbscale);
- float subpicty=borderwidth+thumby+(ii->linkPos.y*thumbscale);
+ float subpictx=t_xoffs+borderwidth+thumbx+(lp.x*thumbscale);
+ float subpicty=borderwidth+thumby+(lp.y*thumbscale);
ofDrawLine(
subpictx,
@@ -132,6 +146,11 @@ void chainImageSet::drawGui(){
ii->link->thumbnail.setAnchorPercent(0.5,0.5);
+ float thescale=ii->linkScale;
+ if (ii==selected){
+ thescale*=dragScale;
+ }
+
ii->link->thumbnail.draw(
subpictx,
subpicty,
@@ -201,6 +220,9 @@ if not make a symbolic link
(++images.rbegin())->filename.c_str(),
images.rbegin()->filename.c_str());
}
+ else {
+ selected=images.begin();
+ }
@@ -211,4 +233,62 @@ if not make a symbolic link
return false;
}
+void chainImageSet::keyPressed(int key){
+ switch(key){
+ case '[':
+ if (selected==images.begin()){
+ selected=--images.end();
+ }
+ else --selected;
+ break;
+ case ']':
+ ++selected;
+ if (selected==images.end()){
+ selected=images.begin();
+ }
+ break;
+ case OF_KEY_UP:
+ selected->linkPos.y--;
+ break;
+ case OF_KEY_DOWN:
+ selected->linkPos.y++;
+ break;
+ case OF_KEY_LEFT:
+ selected->linkPos.x--;
+ break;
+ case OF_KEY_RIGHT:
+ selected->linkPos.x++;
+ break;
+ }
+}
+
+//--------------------------------------------------------------
+void chainImageSet::mouseDragged(int x, int y, int button){
+ switch (button){
+ case OF_MOUSE_BUTTON_1:
+ dragPoint=ofPoint(x-clickPoint.x,y-clickPoint.y)*(selected->getHeight()/ofGetHeight());
+ break;
+ case OF_MOUSE_BUTTON_2:
+ //alt-click
+ break;
+ case OF_MOUSE_BUTTON_3:
+ //control-click
+ dragScale=distance(clickPoint,ofPoint(x,y))/selected->getHeight();
+ break;
+ }
+ }
+
+//--------------------------------------------------------------
+void chainImageSet::mousePressed(int x, int y, int button){
+ clickPoint=ofPoint(x,y);
+}
+
+//--------------------------------------------------------------
+void chainImageSet::mouseReleased(int x, int y, int button){
+ selected->linkPos+=dragPoint;
+ dragPoint=ofPoint(0,0);
+ selected->linkScale*=(1.0f+dragScale);
+ dragScale=0.0f;
+}
+
diff --git a/gui/src/chainImage.h b/gui/src/chainImage.h
index 03089a2..3db4cb2 100644
--- a/gui/src/chainImage.h
+++ b/gui/src/chainImage.h
@@ -50,7 +50,15 @@ class chainImageSet{
}
void drawGui();
bool add(std::string filename,glm::vec2 pos);
+ void keyPressed(int key);
+ void mouseDragged(int x, int y, int button);
+ void mousePressed(int x, int y, int button);
+ void mouseReleased(int x, int y, int button);
std::list <chainImage> images;
float currentDefaultImageRatio;
+ std::list<chainImage>::iterator selected;
+ ofPoint clickPoint;
+ ofPoint dragPoint;
+ float dragScale;
}; \ No newline at end of file
diff --git a/gui/src/main.cpp b/gui/src/main.cpp
index 0346c1e..072f406 100644
--- a/gui/src/main.cpp
+++ b/gui/src/main.cpp
@@ -3,7 +3,7 @@
//========================================================================
int main(int argc, char *argv[]){
- ofSetupOpenGL(1600,250,OF_WINDOW); // <-------- setup the GL context
+ ofSetupOpenGL(1600,200,OF_WINDOW); // <-------- setup the GL context
// this kicks off the running of my app
// can be OF_WINDOW or OF_FULLSCREEN
diff --git a/gui/src/ofApp.cpp b/gui/src/ofApp.cpp
index 4000461..4ab2dc4 100644
--- a/gui/src/ofApp.cpp
+++ b/gui/src/ofApp.cpp
@@ -27,7 +27,7 @@ void ofApp::draw(){
//--------------------------------------------------------------
void ofApp::keyPressed(int key){
-
+ images.keyPressed(key);
}
//--------------------------------------------------------------
@@ -42,17 +42,17 @@ void ofApp::mouseMoved(int x, int y ){
//--------------------------------------------------------------
void ofApp::mouseDragged(int x, int y, int button){
-
+ images.mouseDragged(x,y,button);
}
//--------------------------------------------------------------
void ofApp::mousePressed(int x, int y, int button){
-
+ images.mousePressed(x,y,button);
}
//--------------------------------------------------------------
void ofApp::mouseReleased(int x, int y, int button){
-
+ images.mouseReleased(x,y,button);
}
//--------------------------------------------------------------