diff options
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/src/chainImage.cpp | 81 | ||||
| -rw-r--r-- | gui/src/chainImage.h | 1 |
2 files changed, 48 insertions, 34 deletions
diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp index 915071a..02f3b32 100644 --- a/gui/src/chainImage.cpp +++ b/gui/src/chainImage.cpp @@ -100,6 +100,7 @@ void chainImageSet::drawGui(){ float thumby=ii->thumbnail.getHeight()/2; float thumbscale=ii->thumbnail.getWidth()/ii->getWidth(); + //why do I have to set this every time?? ii->thumbnail.setAnchorPercent(0.5,0.5); @@ -110,7 +111,7 @@ void chainImageSet::drawGui(){ ii->thumbnail.getHeight() ); - if (ii==selected) ofSetColor(255,255,0); + if (ii==selected) ofSetColor(255,0,0); else ofSetColor(255,255,255); ofDrawLine(t_xoffs+borderwidth,borderwidth, @@ -141,40 +142,49 @@ void chainImageSet::drawGui(){ ); - //printf("Sub image: centre at %f,%f \n",ii->link->thumbnail.getAnchorPoint().x,ii->link->thumbnail.getAnchorPoint().y); - - ii->link->thumbnail.setAnchorPercent(0.5,0.5); - - float thescale=ii->linkScale; - if (ii==selected){ - thescale*=(1.0f+dragScale); - } - - ii->link->thumbnail.draw( - subpictx, - subpicty, - ii->link->thumbnail.getWidth()*thescale, - ii->link->thumbnail.getHeight()*thescale - ); - - ofPoint p1=ofPoint( - subpictx-(ii->link->thumbnail.getWidth()*thescale*0.5), - subpicty-(ii->link->thumbnail.getHeight()*thescale*0.5)); - ofPoint p2=ofPoint( - subpictx+(ii->link->thumbnail.getWidth()*thescale*0.5), - subpicty-(ii->link->thumbnail.getHeight()*thescale*0.5)); - ofPoint p3=ofPoint( - subpictx+(ii->link->thumbnail.getWidth()*thescale*0.5), - subpicty+(ii->link->thumbnail.getHeight()*thescale*0.5)); - ofPoint p4=ofPoint( - subpictx-(ii->link->thumbnail.getWidth()*thescale*0.5), - subpicty+(ii->link->thumbnail.getHeight()*thescale*0.5)); - - ofDrawLine(p1,p2); - ofDrawLine(p2,p3); - ofDrawLine(p3,p4); - ofDrawLine(p4,p1); + glPushMatrix(); + glTranslatef(subpictx,subpicty,0); + + float r=ii->linkRot; + if (ii==selected) r+=dragRotate; + glRotatef(r,0,0,1); + + //printf("Sub image: centre at %f,%f \n",ii->link->thumbnail.getAnchorPoint().x,ii->link->thumbnail.getAnchorPoint().y); + + ii->link->thumbnail.setAnchorPercent(0.5,0.5); + + float thescale=ii->linkScale; + if (ii==selected){ + thescale*=(1.0f+dragScale); + } + + ii->link->thumbnail.draw( + 0, + 0, + ii->link->thumbnail.getWidth()*thescale, + ii->link->thumbnail.getHeight()*thescale + ); + + ofPoint p1=ofPoint( + -(ii->link->thumbnail.getWidth()*thescale*0.5), + -(ii->link->thumbnail.getHeight()*thescale*0.5)); + ofPoint p2=ofPoint( + (ii->link->thumbnail.getWidth()*thescale*0.5), + -(ii->link->thumbnail.getHeight()*thescale*0.5)); + ofPoint p3=ofPoint( + (ii->link->thumbnail.getWidth()*thescale*0.5), + (ii->link->thumbnail.getHeight()*thescale*0.5)); + ofPoint p4=ofPoint( + -(ii->link->thumbnail.getWidth()*thescale*0.5), + (ii->link->thumbnail.getHeight()*thescale*0.5)); + + ofDrawLine(p1,p2); + ofDrawLine(p2,p3); + ofDrawLine(p3,p4); + ofDrawLine(p4,p1); + + glPopMatrix(); } @@ -269,6 +279,7 @@ void chainImageSet::mouseDragged(int x, int y, int button){ break; case OF_MOUSE_BUTTON_2: //alt-click + dragRotate=((x-clickPoint.x)/(selected->thumbnail.getWidth() ))*180.0f; break; case OF_MOUSE_BUTTON_3: //control-click @@ -288,6 +299,8 @@ void chainImageSet::mouseReleased(int x, int y, int button){ dragPoint=ofPoint(0,0); selected->linkScale*=(1.0f+dragScale); dragScale=0.0f; + selected->linkRot+=dragRotate; + dragRotate=0.0f; } diff --git a/gui/src/chainImage.h b/gui/src/chainImage.h index 3db4cb2..f5d89f2 100644 --- a/gui/src/chainImage.h +++ b/gui/src/chainImage.h @@ -61,4 +61,5 @@ class chainImageSet{ ofPoint clickPoint; ofPoint dragPoint; float dragScale; + float dragRotate; };
\ No newline at end of file |
