Browse Source

Make `BaseSurface::scaleTo()` non-virtual

master
Krisjanis Rijnieks 9 years ago
parent
commit
103e29b881
  1. 14
      src/Surfaces/BaseSurface.cpp
  2. 2
      src/Surfaces/BaseSurface.h
  3. 1
      src/Surfaces/GridWarpSurface.h
  4. 1
      src/Surfaces/QuadSurface.h
  5. 13
      src/Surfaces/TriangleSurface.cpp
  6. 1
      src/Surfaces/TriangleSurface.h

14
src/Surfaces/BaseSurface.cpp

@ -91,6 +91,20 @@ BaseSource * BaseSurface::getDefaultSource(){
void BaseSurface::setMoved(bool moved){ void BaseSurface::setMoved(bool moved){
_moved = moved; _moved = moved;
} }
void BaseSurface::scaleTo(float scale){
cout << "TriangleSurface::scaleTo()" << endl;
ofVec3f centroid = mesh.getCentroid();
for(unsigned int i = 0; i < mesh.getVertices().size(); ++i){
ofVec3f d = mesh.getVertices()[i] - centroid;
d *= scale;
mesh.getVertices()[i] = centroid + d;
}
ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this);
}
bool BaseSurface::getMoved(){ bool BaseSurface::getMoved(){
return _moved; return _moved;
} }

2
src/Surfaces/BaseSurface.h

@ -22,7 +22,6 @@ class BaseSurface {
virtual void setTexCoord(int index, ofVec2f t) = 0; virtual void setTexCoord(int index, ofVec2f t) = 0;
virtual void setTexCoords(vector<ofVec2f> t) = 0; virtual void setTexCoords(vector<ofVec2f> t) = 0;
virtual void moveBy(ofVec2f v) = 0; virtual void moveBy(ofVec2f v) = 0;
virtual void scaleTo(float scale) = 0;
virtual int getType() = 0; virtual int getType() = 0;
@ -39,6 +38,7 @@ class BaseSurface {
void drawTexture(ofVec2f position); void drawTexture(ofVec2f position);
void setSource(BaseSource * newSource); void setSource(BaseSource * newSource);
void setMoved(bool moved); void setMoved(bool moved);
void scaleTo(float scale);
BaseSource * getSource(); BaseSource * getSource();
BaseSource * getDefaultSource(); BaseSource * getDefaultSource();

1
src/Surfaces/GridWarpSurface.h

@ -15,7 +15,6 @@ class GridWarpSurface : public BaseSurface {
void setup(); void setup();
void draw(); void draw();
void moveBy(ofVec2f v); void moveBy(ofVec2f v);
void scaleTo(float scale){}
int getType(); int getType();
int getGridRows(); int getGridRows();

1
src/Surfaces/QuadSurface.h

@ -27,7 +27,6 @@ class QuadSurface : public BaseSurface {
void setTexCoords(vector<ofVec2f> t); void setTexCoords(vector<ofVec2f> t);
void moveBy(ofVec2f v); void moveBy(ofVec2f v);
void scaleTo(float scale){} // TODO: fill this
int getType(); int getType();
bool hitTest(ofVec2f p); bool hitTest(ofVec2f p);

13
src/Surfaces/TriangleSurface.cpp

@ -133,19 +133,6 @@ void TriangleSurface::moveBy(ofVec2f v){
ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this); ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this);
} }
void TriangleSurface::scaleTo(float scale){
cout << "TriangleSurface::scaleTo()" << endl;
ofVec3f centroid = mesh.getCentroid();
for(unsigned int i = 0; i < mesh.getVertices().size(); ++i){
ofVec3f d = mesh.getVertices()[i] - centroid;
d *= scale;
mesh.getVertices()[i] = centroid + d;
}
ofNotifyEvent(verticesChangedEvent, mesh.getVertices(), this);
}
int TriangleSurface::getType(){ int TriangleSurface::getType(){
return SurfaceType::TRIANGLE_SURFACE; return SurfaceType::TRIANGLE_SURFACE;
} }

1
src/Surfaces/TriangleSurface.h

@ -25,7 +25,6 @@ class TriangleSurface : public BaseSurface {
void setTexCoords(vector<ofVec2f> t); void setTexCoords(vector<ofVec2f> t);
void moveBy(ofVec2f v); void moveBy(ofVec2f v);
void scaleTo(float scale);
int getType(); int getType();
bool hitTest(ofVec2f p); bool hitTest(ofVec2f p);

Loading…
Cancel
Save