From 79b21aa16fc9e28cc2e165106bc4930a780c0a61 Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Sun, 11 May 2014 23:32:58 +0200 Subject: [PATCH] Add alternative surface adding methods --- example/src/ofApp.cpp | 5 ++++- src/ofxBaseSurface.cpp | 7 ++++++- src/ofxBaseSurface.h | 1 + src/ofxSurfaceManager.cpp | 29 +++++++++++++++++++++++++++++ src/ofxSurfaceManager.h | 6 ++++++ 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/example/src/ofApp.cpp b/example/src/ofApp.cpp index 2bd1709..94d13a0 100644 --- a/example/src/ofApp.cpp +++ b/example/src/ofApp.cpp @@ -6,7 +6,10 @@ void ofApp::setup() bShowInfo = false; surfaceManager.addSurface(); - surfaceManager.addSurface(); + surfaceManager.addSurface( &image.getTextureReference() ); + surfaceManager.addSurface(ofVec2f(10,10), ofVec2f(300, 20), ofVec2f(200, 300), + ofVec2f(0.1f, 0.1f), ofVec2f(0.5f, 0.2f), ofVec2f(0.4f, 0.9f), + &image.getTextureReference()); } void ofApp::update() diff --git a/src/ofxBaseSurface.cpp b/src/ofxBaseSurface.cpp index 42a5cbe..00768a6 100644 --- a/src/ofxBaseSurface.cpp +++ b/src/ofxBaseSurface.cpp @@ -38,7 +38,7 @@ void ofxBaseSurface::createDefaultTexture() texture = &defaultTexture; } -void ofxBaseSurface::drawTexture(ofVec2f position) +void ofxBaseSurface::drawTexture(ofVec2f position) { ofMesh texMesh; texMesh.addVertex(position); @@ -56,6 +56,11 @@ void ofxBaseSurface::drawTexture(ofVec2f position) texture->unbind(); } +void ofxBaseSurface::setTexture(ofTexture *texturePtr) +{ + texture = texturePtr; +} + ofTexture* ofxBaseSurface::getTexture() { return texture; diff --git a/src/ofxBaseSurface.h b/src/ofxBaseSurface.h index 2fd60d6..3d6124f 100644 --- a/src/ofxBaseSurface.h +++ b/src/ofxBaseSurface.h @@ -14,6 +14,7 @@ public: // Draws a texture using ofMesh void drawTexture(ofVec2f position); + void setTexture(ofTexture* texturePtr); ofTexture* getTexture(); diff --git a/src/ofxSurfaceManager.cpp b/src/ofxSurfaceManager.cpp index ad253f6..c56f2ec 100644 --- a/src/ofxSurfaceManager.cpp +++ b/src/ofxSurfaceManager.cpp @@ -109,6 +109,23 @@ void ofxSurfaceManager::addSurface() addTriangleSurface(); } +void ofxSurfaceManager::addSurface(ofTexture* texturePtr) +{ + addTriangleSurface(texturePtr); +} + +void ofxSurfaceManager::addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3) +{ + addTriangleSurface(v1, v2, v3, t1, t2, t3); +} + +void ofxSurfaceManager::addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, + ofVec2f t1, ofVec2f t2, ofVec2f t3, + ofTexture *texturePtr) +{ + addTriangleSurface(v1, v2, v3, t1, t2, t3, texturePtr); +} + void ofxSurfaceManager::removeSurface(int index) { if ( index >= surfaceGuis.size() ) { @@ -157,6 +174,18 @@ void ofxSurfaceManager::addTriangleSurface() surfaceGuis.back()->setup( *triangleSurfaces.back() ); } +void ofxSurfaceManager::addTriangleSurface(ofTexture* texturePtr) +{ + addTriangleSurface(); + triangleSurfaces.back()->setTexture(texturePtr); +} + +void ofxSurfaceManager::addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3) +{ + addTriangleSurface(); + triangleSurfaces.back()->setup(v1, v2, v3, t1, t2, t3, triangleSurfaces.back()->getTexture()); +} + void ofxSurfaceManager::addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr) { addTriangleSurface(); diff --git a/src/ofxSurfaceManager.h b/src/ofxSurfaceManager.h index 9055c48..1ebdbde 100644 --- a/src/ofxSurfaceManager.h +++ b/src/ofxSurfaceManager.h @@ -20,6 +20,10 @@ public: void mouseDragged(int x, int y, int button); void addSurface(); + void addSurface(ofTexture* texturePtr); + void addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3); + void addSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr); + void removeSurface(int index); void setGuiMode(ofxSurfaceGui::editMode); void selectSurface(int index); @@ -31,6 +35,8 @@ private: deque surfaceGuis; void addTriangleSurface(); + void addTriangleSurface(ofTexture* texturePtr); + void addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3); void addTriangleSurface(ofVec2f v1, ofVec2f v2, ofVec2f v3, ofVec2f t1, ofVec2f t2, ofVec2f t3, ofTexture* texturePtr); };