Browse Source

Improve `SurfaceStack`

master
Krisjanis Rijnieks 10 years ago
parent
commit
b73ab7bf96
  1. 28
      src/Surfaces/SurfaceStack.cpp
  2. 11
      src/Surfaces/SurfaceStack.h

28
src/Surfaces/SurfaceStack.cpp

@ -5,13 +5,22 @@ namespace piMapper {
SurfaceStack::SurfaceStack(){} SurfaceStack::SurfaceStack(){}
void SurfaceStack::push_back(ofx::piMapper::BaseSurface & s){ void SurfaceStack::push_back(BaseSurface * s){
_surfaces.push_back(s); _surfaces.push_back(s);
} }
void SurfaceStack::pop_back(){ void SurfaceStack::erase(int i){
if(_surfaces.size() > 0){ delete _surfaces[i];
_surfaces.pop_back(); _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();
} }
} }
@ -19,12 +28,11 @@ int SurfaceStack::size(){
return _surfaces.size(); return _surfaces.size();
} }
void SurfaceStack::erase(int pos){ BaseSurface * SurfaceStack::operator[](int i){
_surfaces.erase(_surfaces.begin() + pos); if(i >= _surfaces.size()){
} throw runtime_error("SurfaceStack index out of bounds");
}
void SurfaceStack::swap(ofx::piMapper::BaseSurface * a, ofx::piMapper::BaseSurface * b){ return _surfaces[i];
std::swap(a, b);
} }
} // namespace piMapper } // namespace piMapper

11
src/Surfaces/SurfaceStack.h

@ -11,18 +11,17 @@ class SurfaceStack {
public: public:
SurfaceStack(); SurfaceStack();
void push_back(BaseSurface & s); void push_back(BaseSurface * s);
void pop_back(); void erase(int i);
void erase(int pos); void swap(int a, int b);
void swap(BaseSurface * a, BaseSurface * b);
void draw(); void draw();
int size(); int size();
BaseSurface * at(int pos); BaseSurface * operator[](int i);
private: private:
vector<BaseSurface> _surfaces; vector<BaseSurface *> _surfaces;
}; };
} // namespace piMapper } // namespace piMapper

Loading…
Cancel
Save