From 965eb57d14185aeeae041be9146fed93f4283f70 Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Sun, 10 Jan 2016 15:57:50 +0100 Subject: [PATCH] Add `setVertices` and `setTexCoords` methods This is to be able to pass vectors of values to the surfaces instead values one by one diff --git a/src/Surfaces/BaseSurface.h b/src/Surfaces/BaseSurface.h index 19d090b..e524872 100644 --- a/src/Surfaces/BaseSurface.h +++ b/src/Surfaces/BaseSurface.h @@ -16,8 +16,13 @@ class BaseSurface { ~BaseSurface(); virtual void setup(){} virtual void draw(){} + virtual void setVertex(int index, ofVec2f p){} + virtual void setVertices(vector v){} + virtual void setTexCoord(int index, ofVec2f t){} + virtual void setTexCoords(vector t){} + virtual void moveBy(ofVec2f v){} virtual int getType(){} virtual bool hitTest(ofVec2f p){} diff --git a/src/Surfaces/QuadSurface.cpp b/src/Surfaces/QuadSurface.cpp index 34055e7..3a9089b 100644 --- a/src/Surfaces/QuadSurface.cpp +++ b/src/Surfaces/QuadSurface.cpp @@ -103,6 +103,16 @@ void QuadSurface::setVertex(int index, ofVec2f p){ calculate4dTextureCoords(); } +void QuadSurface::setVertices(vector v){ + if(v.size() != 4){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 4; ++i){ + mesh.setVertex(i, v[i]); + } + calculate4dTextureCoords(); +} + void QuadSurface::setTexCoord(int index, ofVec2f t){ if(index > 3){ ofLog() << "Texture coordinate with this index does not exist: " << index @@ -114,6 +124,16 @@ void QuadSurface::setTexCoord(int index, ofVec2f t){ calculate4dTextureCoords(); } +void QuadSurface::setTexCoords(vector t){ + if(t.size() != 4){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 4; ++i){ + mesh.setTexCoord(i, t[i]); + } + calculate4dTextureCoords(); +} + void QuadSurface::moveBy(ofVec2f v){ vector & vertices = getVertices(); for(int i = 0; i < vertices.size(); i++){ diff --git a/src/Surfaces/QuadSurface.h b/src/Surfaces/QuadSurface.h index b53ac95..07777d4 100644 --- a/src/Surfaces/QuadSurface.h +++ b/src/Surfaces/QuadSurface.h @@ -18,8 +18,13 @@ class QuadSurface : public BaseSurface { ofVec2f t2, ofVec2f t3, ofVec2f t4, BaseSource * newSource); void draw(); + void setVertex(int index, ofVec2f p); + void setVertices(vector v); + void setTexCoord(int index, ofVec2f t); + void setTexCoords(vector t); + void moveBy(ofVec2f v); int getType(); diff --git a/src/Surfaces/TriangleSurface.cpp b/src/Surfaces/TriangleSurface.cpp index 8937948..27e3951 100644 --- a/src/Surfaces/TriangleSurface.cpp +++ b/src/Surfaces/TriangleSurface.cpp @@ -62,6 +62,15 @@ void TriangleSurface::setVertex(int index, ofVec2f p){ mesh.setVertex(index, p); } +void TriangleSurface::setVertices(vector v){ + if(v.size() != 3){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 3; ++i){ + mesh.setVertex(i, v[i]); + } +} + void TriangleSurface::setTexCoord(int index, ofVec2f t){ if(index > 2){ ofLog() << "Texture coordinate with this index does not exist: " << index @@ -72,6 +81,15 @@ void TriangleSurface::setTexCoord(int index, ofVec2f t){ mesh.setTexCoord(index, t); } +void TriangleSurface::setTexCoords(vector t){ + if(t.size() != 3){ + throw runtime_error("Wrong number of texture coordinates"); + } + for(int i = 0; i < 3; ++i){ + mesh.setTexCoord(i, t[i]); + } +} + void TriangleSurface::moveBy(ofVec2f v){ vector & vertices = getVertices(); for(int i = 0; i < vertices.size(); i++){ diff --git a/src/Surfaces/TriangleSurface.h b/src/Surfaces/TriangleSurface.h index 9edfcf4..c3d9317 100644 --- a/src/Surfaces/TriangleSurface.h +++ b/src/Surfaces/TriangleSurface.h @@ -16,8 +16,13 @@ class TriangleSurface : public BaseSurface { void setup(ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f t1, ofVec2f t2, ofVec2f t3, BaseSource * newSource); void draw(); + void setVertex(int index, ofVec2f p); + void setVertices(vector v); + void setTexCoord(int index, ofVec2f t); + void setTexCoords(vector t); + void moveBy(ofVec2f v); int getType(); --- src/Surfaces/BaseSurface.h | 5 +++++ src/Surfaces/QuadSurface.cpp | 20 ++++++++++++++++++++ src/Surfaces/QuadSurface.h | 5 +++++ src/Surfaces/TriangleSurface.cpp | 18 ++++++++++++++++++ src/Surfaces/TriangleSurface.h | 5 +++++ 5 files changed, 53 insertions(+) diff --git a/src/Surfaces/BaseSurface.h b/src/Surfaces/BaseSurface.h index 19d090b..e524872 100644 --- a/src/Surfaces/BaseSurface.h +++ b/src/Surfaces/BaseSurface.h @@ -16,8 +16,13 @@ class BaseSurface { ~BaseSurface(); virtual void setup(){} virtual void draw(){} + virtual void setVertex(int index, ofVec2f p){} + virtual void setVertices(vector v){} + virtual void setTexCoord(int index, ofVec2f t){} + virtual void setTexCoords(vector t){} + virtual void moveBy(ofVec2f v){} virtual int getType(){} virtual bool hitTest(ofVec2f p){} diff --git a/src/Surfaces/QuadSurface.cpp b/src/Surfaces/QuadSurface.cpp index 34055e7..3a9089b 100644 --- a/src/Surfaces/QuadSurface.cpp +++ b/src/Surfaces/QuadSurface.cpp @@ -103,6 +103,16 @@ void QuadSurface::setVertex(int index, ofVec2f p){ calculate4dTextureCoords(); } +void QuadSurface::setVertices(vector v){ + if(v.size() != 4){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 4; ++i){ + mesh.setVertex(i, v[i]); + } + calculate4dTextureCoords(); +} + void QuadSurface::setTexCoord(int index, ofVec2f t){ if(index > 3){ ofLog() << "Texture coordinate with this index does not exist: " << index @@ -114,6 +124,16 @@ void QuadSurface::setTexCoord(int index, ofVec2f t){ calculate4dTextureCoords(); } +void QuadSurface::setTexCoords(vector t){ + if(t.size() != 4){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 4; ++i){ + mesh.setTexCoord(i, t[i]); + } + calculate4dTextureCoords(); +} + void QuadSurface::moveBy(ofVec2f v){ vector & vertices = getVertices(); for(int i = 0; i < vertices.size(); i++){ diff --git a/src/Surfaces/QuadSurface.h b/src/Surfaces/QuadSurface.h index b53ac95..07777d4 100644 --- a/src/Surfaces/QuadSurface.h +++ b/src/Surfaces/QuadSurface.h @@ -18,8 +18,13 @@ class QuadSurface : public BaseSurface { ofVec2f t2, ofVec2f t3, ofVec2f t4, BaseSource * newSource); void draw(); + void setVertex(int index, ofVec2f p); + void setVertices(vector v); + void setTexCoord(int index, ofVec2f t); + void setTexCoords(vector t); + void moveBy(ofVec2f v); int getType(); diff --git a/src/Surfaces/TriangleSurface.cpp b/src/Surfaces/TriangleSurface.cpp index 8937948..27e3951 100644 --- a/src/Surfaces/TriangleSurface.cpp +++ b/src/Surfaces/TriangleSurface.cpp @@ -62,6 +62,15 @@ void TriangleSurface::setVertex(int index, ofVec2f p){ mesh.setVertex(index, p); } +void TriangleSurface::setVertices(vector v){ + if(v.size() != 3){ + throw runtime_error("Wrong number of vertices"); + } + for(int i = 0; i < 3; ++i){ + mesh.setVertex(i, v[i]); + } +} + void TriangleSurface::setTexCoord(int index, ofVec2f t){ if(index > 2){ ofLog() << "Texture coordinate with this index does not exist: " << index @@ -72,6 +81,15 @@ void TriangleSurface::setTexCoord(int index, ofVec2f t){ mesh.setTexCoord(index, t); } +void TriangleSurface::setTexCoords(vector t){ + if(t.size() != 3){ + throw runtime_error("Wrong number of texture coordinates"); + } + for(int i = 0; i < 3; ++i){ + mesh.setTexCoord(i, t[i]); + } +} + void TriangleSurface::moveBy(ofVec2f v){ vector & vertices = getVertices(); for(int i = 0; i < vertices.size(); i++){ diff --git a/src/Surfaces/TriangleSurface.h b/src/Surfaces/TriangleSurface.h index 9edfcf4..c3d9317 100644 --- a/src/Surfaces/TriangleSurface.h +++ b/src/Surfaces/TriangleSurface.h @@ -16,8 +16,13 @@ class TriangleSurface : public BaseSurface { void setup(ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f t1, ofVec2f t2, ofVec2f t3, BaseSource * newSource); void draw(); + void setVertex(int index, ofVec2f p); + void setVertices(vector v); + void setTexCoord(int index, ofVec2f t); + void setTexCoords(vector t); + void moveBy(ofVec2f v); int getType();