Muto 0.0.1
Cross-Platform Application Template
GitHub Repo | Muto Updates | Muto's Author
Loading...
Searching...
No Matches
Muto::LayerStack Class Reference

Manages an ordered stack of Layer pointers. Layers can be pushed or popped and the stack can be iterated in forward or reverse order. More...

#include <LayerStack.h>

Public Member Functions

std::vector< Layer * >::iterator begin ()
 Returns an iterator to the beginning of the layer stack.
 
std::vector< Layer * >::iterator end ()
 Returns an iterator to the end of the layer stack.
 
 LayerStack ()
 
void PopLayer (Layer *layer)
 Removes the specified layer from the stack.
 
void PopOverlay (Layer *overlay)
 Removes the specified overlay layer from the stack.
 
void PushLayer (Layer *layer)
 Adds the layer to the stack at the position before the first overlay.
 
void PushOverlay (Layer *overlay)
 Pushes the overlay layer on top of all other layers.
 
std::vector< Layer * >::reverse_iterator rbegin ()
 Returns a reverse iterator to the beginning of the layer stack.
 
std::vector< Layer * >::reverse_iterator rend ()
 Returns a reverse iterator to the end of the layer stack.
 
 ~LayerStack ()
 

Private Attributes

unsigned int m_LayerInsertIndex = 0
 Index indicating where to insert new layers (before overlays).
 
std::vector< Layer * > m_Layers
 Vector holding pointers to the layers in the stack.
 

Detailed Description

Manages an ordered stack of Layer pointers. Layers can be pushed or popped and the stack can be iterated in forward or reverse order.

Todo:
Add layer priority system (maybe?)

Constructor & Destructor Documentation

◆ LayerStack()

Muto::LayerStack::LayerStack ( )
7 {
8 }

◆ ~LayerStack()

Muto::LayerStack::~LayerStack ( )
11 {
12 for (Layer* layer : m_Layers)
13 {
14 layer->OnDetach();
15 delete layer;
16 }
17 }
std::vector< Layer * > m_Layers
Vector holding pointers to the layers in the stack.
Definition LayerStack.h:53
constexpr Scope< T > CreateScope(Args &&... args)
Creates a Scope (unique_ptr) for the given type and constructor arguments.
Definition Defines_Macros.h:51

Member Function Documentation

◆ begin()

std::vector< Layer * >::iterator Muto::LayerStack::begin ( )
inline

Returns an iterator to the beginning of the layer stack.

42{ return m_Layers.begin(); }

◆ end()

std::vector< Layer * >::iterator Muto::LayerStack::end ( )
inline

Returns an iterator to the end of the layer stack.

44{ return m_Layers.end(); }

◆ PopLayer()

void Muto::LayerStack::PopLayer ( Layer *  layer)

Removes the specified layer from the stack.

Parameters
layerPointer to the layer to be removed.
33 {
35 auto it = std::find(m_Layers.begin(), m_Layers.end(), layer);
36 if (it != m_Layers.end())
37 {
38 m_Layers.erase(it);
40 }
41 }
#define MU_PROFILE_FUNCTION()
Definition Instrumentor.h:240
unsigned int m_LayerInsertIndex
Index indicating where to insert new layers (before overlays).
Definition LayerStack.h:55

References m_LayerInsertIndex.

◆ PopOverlay()

void Muto::LayerStack::PopOverlay ( Layer *  overlay)

Removes the specified overlay layer from the stack.

Parameters
overlayPointer to the overlay layer to be removed.
43 {
45 auto it = std::find(m_Layers.begin(), m_Layers.end(), overlay);
46 if (it != m_Layers.end())
47 {
48 m_Layers.erase(it);
49 }
50 }

◆ PushLayer()

void Muto::LayerStack::PushLayer ( Layer *  layer)

Adds the layer to the stack at the position before the first overlay.

Parameters
layerPointer to the layer to be added.
20 {
22 m_Layers.emplace(m_Layers.begin() + m_LayerInsertIndex, layer);
24 }

References m_LayerInsertIndex.

◆ PushOverlay()

void Muto::LayerStack::PushOverlay ( Layer *  overlay)

Pushes the overlay layer on top of all other layers.

Parameters
overlayPointer to the overlay layer to be added.
27 {
29 m_Layers.emplace_back(overlay);
30 }

◆ rbegin()

std::vector< Layer * >::reverse_iterator Muto::LayerStack::rbegin ( )
inline

Returns a reverse iterator to the beginning of the layer stack.

46{ return m_Layers.rbegin(); }

◆ rend()

std::vector< Layer * >::reverse_iterator Muto::LayerStack::rend ( )
inline

Returns a reverse iterator to the end of the layer stack.

48{ return m_Layers.rend(); }

Member Data Documentation

◆ m_LayerInsertIndex

unsigned int Muto::LayerStack::m_LayerInsertIndex = 0
private

Index indicating where to insert new layers (before overlays).

Referenced by PopLayer(), and PushLayer().

◆ m_Layers

std::vector<Layer*> Muto::LayerStack::m_Layers
private

Vector holding pointers to the layers in the stack.


The documentation for this class was generated from the following files: