Browse Source

Improve `SurfaceStack`

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

28
src/Surfaces/SurfaceStack.cpp

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

13
src/Surfaces/SurfaceStack.h

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

Loading…
Cancel
Save