ofxPiMapper fixed for C++17 & oF 12.0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.5 KiB

#include "SurfaceStack.h"
namespace ofx {
namespace piMapper {
SurfaceStack::SurfaceStack(){}
void SurfaceStack::push_back(BaseSurface * s){
ofAddListener(s->verticesChangedEvent, this, &SurfaceStack::onVerticesChanged);
ofAddListener(s->vertexChangedEvent, this, &SurfaceStack::onVertexChanged);
_surfaces.push_back(s);
}
void SurfaceStack::pop_back(){
ofRemoveListener(_surfaces.back()->verticesChangedEvent, this, &SurfaceStack::onVerticesChanged);
ofRemoveListener(_surfaces.back()->vertexChangedEvent, this, &SurfaceStack::onVertexChanged);
_surfaces.pop_back();
}
void SurfaceStack::erase(int i){
ofRemoveListener(_surfaces[i]->verticesChangedEvent, this, &SurfaceStack::onVerticesChanged);
ofRemoveListener(_surfaces[i]->vertexChangedEvent, this, &SurfaceStack::onVertexChanged);
_surfaces.erase(_surfaces.begin() + i);
}
void SurfaceStack::swap(int a, int b){
std::swap(_surfaces[a], _surfaces[b]);
}
void SurfaceStack::draw(){
for(int i = 0; i < _surfaces.size(); ++i){
_surfaces[i]->draw();
}
}
int SurfaceStack::size(){
return _surfaces.size();
}
BaseSurface * SurfaceStack::operator[](int i){
if(i >= _surfaces.size()){
throw runtime_error("SurfaceStack index out of bounds");
}
return _surfaces[i];
}
BaseSurface * SurfaceStack::back(){
return _surfaces.back();
}
void SurfaceStack::onVerticesChanged(vector<ofVec3f> & vertices){
ofNotifyEvent(verticesChangedEvent, vertices, this);
}
void SurfaceStack::onVertexChanged(ofVec3f & vertex){
ofNotifyEvent(vertexChangedEvent, vertex, this);
}
} // namespace piMapper
} // namespace ofx