lxgui
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
lxgui::gui::frame_renderer Class Referenceabstract

Abstract class for layering and rendering frames. More...

#include <gui_frame_renderer.hpp>

Inheritance diagram for lxgui::gui::frame_renderer:
lxgui::gui::root lxgui::gui::scroll_frame

Classes

struct  frame_comparator
 

Public Member Functions

 frame_renderer ()
 Default constructor. More...
 
virtual ~frame_renderer ()=default
 Destructor. More...
 
 frame_renderer (const frame_renderer &)=delete
 
 frame_renderer (frame_renderer &&)=delete
 
frame_rendereroperator= (const frame_renderer &)=delete
 
frame_rendereroperator= (frame_renderer &&)=delete
 
virtual void notify_strata_needs_redraw (strata strata_id)
 Tells this renderer that one of its region requires redraw. More...
 
virtual void notify_rendered_frame (const utils::observer_ptr< frame > &obj, bool rendered)
 Tells this renderer that it should (or not) render another frame. More...
 
virtual void notify_strata_changed (const utils::observer_ptr< frame > &obj, strata old_strata_id, strata new_strata_id)
 Tells this renderer that a frame has changed strata. More...
 
virtual void notify_level_changed (const utils::observer_ptr< frame > &obj, int old_level, int new_level)
 Tells this renderer that a frame has changed level. More...
 
virtual vector2f get_target_dimensions () const =0
 Returns the width and height of of this renderer's main render target (e.g., screen). More...
 
utils::observer_ptr< const framefind_topmost_frame (const std::function< bool(const frame &)> &predicate) const
 Find the top-most frame matching the provided predicate. More...
 
utils::observer_ptr< framefind_topmost_frame (const std::function< bool(const frame &)> &predicate)
 Find the top-most frame matching the provided predicate. More...
 
int get_highest_level (strata strata_id) const
 Returns the highest level on the provided strata. More...
 

Protected Types

using frame_list_type = utils::sorted_vector< frame *, frame_comparator >
 
using frame_list_iterator = frame_list_type::iterator
 

Protected Member Functions

void clear_strata_list_ ()
 
bool has_strata_list_changed_ () const
 
void reset_strata_list_changed_flag_ ()
 
void render_strata_ (const strata_data &strata_obj) const
 
std::pair< std::size_t, std::size_t > get_strata_range_ (strata strata_id) const
 

Protected Attributes

std::array< strata_data, num_stratastrata_list_
 
frame_list_type sorted_frame_list_
 
bool frame_list_updated_ = false
 

Static Protected Attributes

static constexpr std::size_t num_strata = magic_enum::enum_count<strata>()
 

Detailed Description

Abstract class for layering and rendering frames.

Definition at line 20 of file gui_frame_renderer.hpp.

Member Typedef Documentation

◆ frame_list_iterator

Definition at line 106 of file gui_frame_renderer.hpp.

◆ frame_list_type

Definition at line 105 of file gui_frame_renderer.hpp.

Constructor & Destructor Documentation

◆ frame_renderer() [1/3]

lxgui::gui::frame_renderer::frame_renderer ( )

Default constructor.

Definition at line 72 of file gui_frame_renderer.cpp.

◆ ~frame_renderer()

virtual lxgui::gui::frame_renderer::~frame_renderer ( )
virtualdefault

Destructor.

◆ frame_renderer() [2/3]

lxgui::gui::frame_renderer::frame_renderer ( const frame_renderer )
delete

◆ frame_renderer() [3/3]

lxgui::gui::frame_renderer::frame_renderer ( frame_renderer &&  )
delete

Member Function Documentation

◆ clear_strata_list_()

void lxgui::gui::frame_renderer::clear_strata_list_ ( )
protected

Definition at line 183 of file gui_frame_renderer.cpp.

◆ find_topmost_frame() [1/2]

utils::observer_ptr<frame> lxgui::gui::frame_renderer::find_topmost_frame ( const std::function< bool(const frame &)> &  predicate)
inline

Find the top-most frame matching the provided predicate.

Parameters
predicateA function returning 'true' if the frame can be selected
Returns
The topmost frame, or nullptr if none

Definition at line 82 of file gui_frame_renderer.hpp.

◆ find_topmost_frame() [2/2]

utils::observer_ptr< const frame > lxgui::gui::frame_renderer::find_topmost_frame ( const std::function< bool(const frame &)> &  predicate) const

Find the top-most frame matching the provided predicate.

Parameters
predicateA function returning 'true' if the frame can be selected
Returns
The topmost frame, or nullptr if none

Definition at line 149 of file gui_frame_renderer.cpp.

◆ get_highest_level()

int lxgui::gui::frame_renderer::get_highest_level ( strata  strata_id) const

Returns the highest level on the provided strata.

Parameters
strata_idThe strata to inspect
Returns
The highest level on the provided strata

Definition at line 161 of file gui_frame_renderer.cpp.

◆ get_strata_range_()

std::pair< std::size_t, std::size_t > lxgui::gui::frame_renderer::get_strata_range_ ( strata  strata_id) const
protected

Definition at line 125 of file gui_frame_renderer.cpp.

◆ get_target_dimensions()

virtual vector2f lxgui::gui::frame_renderer::get_target_dimensions ( ) const
pure virtual

Returns the width and height of of this renderer's main render target (e.g., screen).

Returns
The render target dimensions

Implemented in lxgui::gui::scroll_frame, and lxgui::gui::root.

◆ has_strata_list_changed_()

bool lxgui::gui::frame_renderer::has_strata_list_changed_ ( ) const
protected

Definition at line 188 of file gui_frame_renderer.cpp.

◆ notify_level_changed()

void lxgui::gui::frame_renderer::notify_level_changed ( const utils::observer_ptr< frame > &  obj,
int  old_level,
int  new_level 
)
virtual

Tells this renderer that a frame has changed level.

Parameters
objThe frame which has changed
old_levelThe old frame level
new_levelThe new frame level

Definition at line 132 of file gui_frame_renderer.cpp.

◆ notify_rendered_frame()

void lxgui::gui::frame_renderer::notify_rendered_frame ( const utils::observer_ptr< frame > &  obj,
bool  rendered 
)
virtual

Tells this renderer that it should (or not) render another frame.

Parameters
objThe frame to render
rendered'true' if this renderer needs to render that new object

Definition at line 82 of file gui_frame_renderer.cpp.

◆ notify_strata_changed()

void lxgui::gui::frame_renderer::notify_strata_changed ( const utils::observer_ptr< frame > &  obj,
strata  old_strata_id,
strata  new_strata_id 
)
virtual

Tells this renderer that a frame has changed strata.

Parameters
objThe frame which has changed
old_strata_idThe old frame strata
new_strata_idThe new frame strata

Definition at line 110 of file gui_frame_renderer.cpp.

◆ notify_strata_needs_redraw()

void lxgui::gui::frame_renderer::notify_strata_needs_redraw ( strata  strata_id)
virtual

Tells this renderer that one of its region requires redraw.

Reimplemented in lxgui::gui::scroll_frame.

Definition at line 78 of file gui_frame_renderer.cpp.

◆ operator=() [1/2]

frame_renderer& lxgui::gui::frame_renderer::operator= ( const frame_renderer )
delete

◆ operator=() [2/2]

frame_renderer& lxgui::gui::frame_renderer::operator= ( frame_renderer &&  )
delete

◆ render_strata_()

void lxgui::gui::frame_renderer::render_strata_ ( const strata_data strata_obj) const
protected

Definition at line 174 of file gui_frame_renderer.cpp.

◆ reset_strata_list_changed_flag_()

void lxgui::gui::frame_renderer::reset_strata_list_changed_flag_ ( )
protected

Definition at line 192 of file gui_frame_renderer.cpp.

Member Data Documentation

◆ frame_list_updated_

bool lxgui::gui::frame_renderer::frame_list_updated_ = false
protected

Definition at line 114 of file gui_frame_renderer.hpp.

◆ num_strata

constexpr std::size_t lxgui::gui::frame_renderer::num_strata = magic_enum::enum_count<strata>()
staticconstexprprotected

Definition at line 110 of file gui_frame_renderer.hpp.

◆ sorted_frame_list_

frame_list_type lxgui::gui::frame_renderer::sorted_frame_list_
protected

Definition at line 113 of file gui_frame_renderer.hpp.

◆ strata_list_

std::array<strata_data, num_strata> lxgui::gui::frame_renderer::strata_list_
protected

Definition at line 112 of file gui_frame_renderer.hpp.


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