FlowArithmeticCalculator 1.0.0
Flow Arithmetic Calculator
Loading...
Searching...
No Matches
gui::renderer::SkiaRendererImpl Class Reference

Class responsible for rendering the GUI using Skia and GLFW. More...

#include <SkiaRendererImpl.h>

+ Inheritance diagram for gui::renderer::SkiaRendererImpl:
+ Collaboration diagram for gui::renderer::SkiaRendererImpl:

Public Member Functions

 SkiaRendererImpl (gui::window::WindowBase< SkCanvas > *window, std::shared_ptr< business_logic::BlocksManager > blocksManager)
 Constructs a new SkiaRendererImpl.
 
 ~SkiaRendererImpl () override
 Destructor.
 
 SkiaRendererImpl (const SkiaRendererImpl &)=delete
 
SkiaRendererImploperator= (const SkiaRendererImpl &)=delete
 
 SkiaRendererImpl (SkiaRendererImpl &&)=delete
 
SkiaRendererImploperator= (SkiaRendererImpl &&)=delete
 
void render ()
 Renders the current frame.
 
void handleWindowResized (gui::window::WindowBase< SkCanvas > *window, float xScale, float yScale)
 Handles window resize events.
 
void renderCenteredTextsRows (SkCanvas *canvas, const business_logic::geometry::Size2D &size, const std::vector< components::UITextsRow > &rows) override
 Renders the texts on the canvas around the center horizontally, centered vertically.
 
- Public Member Functions inherited from gui::renderer::delegate::UIRendererDelegate< SkCanvas >
virtual ~UIRendererDelegate ()=default
 

Private Member Functions

void reinitializeSurface ()
 Reinitializes the Skia surface using the current width and height.
 

Private Attributes

std::shared_ptr< business_logic::BlocksManagerblocksManager
 The blocks manager.
 
gui::window::WindowBase< SkCanvas > * window
 The window.
 
sk_sp< GrDirectContext > grContext
 The Skia context.
 
sk_sp< SkSurface > skSurface
 The Skia surface.
 
gui::renderer::delegate::UIRendererDelegate< SkCanvas > * uiRendererDelegatePtr
 The UI renderer delegate.
 

Additional Inherited Members

- Protected Member Functions inherited from business_logic::Loggable< SkiaRendererImpl >
 Loggable ()
 
- Protected Attributes inherited from business_logic::Loggable< SkiaRendererImpl >
std::shared_ptr< spdlog::logger > logger
 

Detailed Description

Class responsible for rendering the GUI using Skia and GLFW.

Definition at line 49 of file SkiaRendererImpl.h.

Constructor & Destructor Documentation

◆ SkiaRendererImpl() [1/3]

gui::renderer::SkiaRendererImpl::SkiaRendererImpl ( gui::window::WindowBase< SkCanvas > *  window,
std::shared_ptr< business_logic::BlocksManager blocksManager 
)

Constructs a new SkiaRendererImpl.

Parameters
windowGLFW window handle
winWidthWindow width
winHeightWindow height
fbWidthFramebuffer width
fbHeightFramebuffer height
blocksManagerBlocks manager

Definition at line 6 of file SkiaRendererImpl.cpp.

References reinitializeSurface(), skSurface, and window.

+ Here is the call graph for this function:

◆ ~SkiaRendererImpl()

gui::renderer::SkiaRendererImpl::~SkiaRendererImpl ( )
override

Destructor.

Definition at line 60 of file SkiaRendererImpl.cpp.

References grContext, and skSurface.

◆ SkiaRendererImpl() [2/3]

gui::renderer::SkiaRendererImpl::SkiaRendererImpl ( const SkiaRendererImpl )
delete

◆ SkiaRendererImpl() [3/3]

gui::renderer::SkiaRendererImpl::SkiaRendererImpl ( SkiaRendererImpl &&  )
delete

Member Function Documentation

◆ handleWindowResized()

void gui::renderer::SkiaRendererImpl::handleWindowResized ( gui::window::WindowBase< SkCanvas > *  window,
float  xScale,
float  yScale 
)

Handles window resize events.

Parameters
windowThe window
xScaleNew window x scale
yScaleNew window y scale

Definition at line 76 of file SkiaRendererImpl.cpp.

References gui::constants::FONT_ASPECT_BASE_WINDOW_HEIGHT, gui::constants::FONT_ASPECT_BASE_WINDOW_WIDTH, gui::window::WindowBase< Canvas >::getWindowSize(), gui::renderer::FontManager::recalculateFontSizes(), reinitializeSurface(), skSurface, and window.

+ Here is the call graph for this function:

◆ operator=() [1/2]

SkiaRendererImpl & gui::renderer::SkiaRendererImpl::operator= ( const SkiaRendererImpl )
delete

◆ operator=() [2/2]

SkiaRendererImpl & gui::renderer::SkiaRendererImpl::operator= ( SkiaRendererImpl &&  )
delete

◆ reinitializeSurface()

void gui::renderer::SkiaRendererImpl::reinitializeSurface ( )
private

Reinitializes the Skia surface using the current width and height.

Definition at line 26 of file SkiaRendererImpl.cpp.

References gui::window::WindowBase< Canvas >::getFramebufferSize(), gui::window::WindowBase< Canvas >::getWindowSize(), grContext, business_logic::Loggable< SkiaRendererImpl >::logger, skSurface, and window.

Referenced by handleWindowResized(), and SkiaRendererImpl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ render()

void gui::renderer::SkiaRendererImpl::render ( )

Renders the current frame.

Definition at line 65 of file SkiaRendererImpl.cpp.

References blocksManager, gui::window::WindowBase< Canvas >::getWindowSize(), grContext, render(), skSurface, uiRendererDelegatePtr, window, and gui::renderer::colors::WINDOW_BACKGROUND_COLOR.

Referenced by render().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderCenteredTextsRows()

void gui::renderer::SkiaRendererImpl::renderCenteredTextsRows ( SkCanvas *  canvas,
const business_logic::geometry::Size2D size,
const std::vector< components::UITextsRow > &  rows 
)
overridevirtual

Renders the texts on the canvas around the center horizontally, centered vertically.

Parameters
canvasCanvas to draw on
sizeThe size of the canvas
rowsThe rows of texts to render

Implements gui::renderer::delegate::UIRendererDelegate< SkCanvas >.

Definition at line 94 of file SkiaRendererImpl.cpp.

References CENTERED_TEXT_ROWS_MARGIN_VERTICAL_NORM_PERCENT.

Member Data Documentation

◆ blocksManager

std::shared_ptr<business_logic::BlocksManager> gui::renderer::SkiaRendererImpl::blocksManager
private

The blocks manager.

Definition at line 108 of file SkiaRendererImpl.h.

Referenced by render().

◆ grContext

sk_sp<GrDirectContext> gui::renderer::SkiaRendererImpl::grContext
private

The Skia context.

Definition at line 118 of file SkiaRendererImpl.h.

Referenced by reinitializeSurface(), render(), and ~SkiaRendererImpl().

◆ skSurface

sk_sp<SkSurface> gui::renderer::SkiaRendererImpl::skSurface
private

The Skia surface.

Definition at line 123 of file SkiaRendererImpl.h.

Referenced by handleWindowResized(), reinitializeSurface(), render(), SkiaRendererImpl(), and ~SkiaRendererImpl().

◆ uiRendererDelegatePtr

gui::renderer::delegate::UIRendererDelegate<SkCanvas>* gui::renderer::SkiaRendererImpl::uiRendererDelegatePtr
private

The UI renderer delegate.

Definition at line 133 of file SkiaRendererImpl.h.

Referenced by render().

◆ window

gui::window::WindowBase<SkCanvas>* gui::renderer::SkiaRendererImpl::window
private

The window.

Definition at line 113 of file SkiaRendererImpl.h.

Referenced by handleWindowResized(), reinitializeSurface(), render(), and SkiaRendererImpl().


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