#pragma once #include "terminal.h" #include "layer.h" class LayerStack { public: LayerStack(); ~LayerStack(); void pushLayer(Layer*); void pushOverlay(Layer*); void popLayer(Layer*); void popOverlay(Layer*); void propagateEvent(const Event*); void updateLayers(); void shutdown(); inline Layer* getLayer(unsigned long i) { return layers.at(i); } std::vector::iterator begin() {return layers.begin();} std::vector::iterator end() {return layers.end();} private: std::vector layers; std::vector::iterator insert; bool eventHandled; };