AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
IRenderer Class Referenceabstract

Base class for rendering. More...

#include <AUI/Render/IRenderer.h>

Detailed Description

Renderer is shared between windows. It's expected to share resources (if any). Thus, it does not perform any platform specific routines.

See also
IRenderingContext

Member Function Documentation

> All members, including inherited

◆ backdrops()

void IRenderer::backdrops ( glm::ivec2 position,
glm::ivec2 size,
std::span< ass::Backdrop::Any > backdrops )
Parameters
positionrectangle position (px)
sizerectangle size (px)
backdropsarray of backdrop effects. Impl might apply optimizations on using several effects at once.

Implementation might draw stub (i.e., gray rectangle) instead of drawing complex backdrop effects.

◆ boxShadow()

virtual void IRenderer::boxShadow ( glm::vec2 position,
glm::vec2 size,
float blurRadius,
const AColor & color )
pure virtual
Parameters
positionposition
sizerectangle size
blurRadiusblur radius
colorshadow color

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ boxShadowInner()

virtual void IRenderer::boxShadowInner ( glm::vec2 position,
glm::vec2 size,
float blurRadius,
float spreadRadius,
float borderRadius,
const AColor & color,
glm::vec2 offset )
pure virtual
Parameters
positionposition
sizerectangle size
blurRadiusblur radius
spreadRadiusspread (offset) radius
borderRadiusborder radius of the rectangle.
colorshadow color
offsetshadow offset. Unlike outer shadow (ctx.render.boxShadow), the offset is passed to the shader instead of a simple rectangle position offset.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ line()

void IRenderer::line ( const ABrush & brush,
glm::vec2 p1,
glm::vec2 p2,
const ABorderStyle & style = ABorderStyle::Solid{},
AMetric width = 1_dp )
inline
Performance note
if you want to drawElements multiple lines, consider using ARender::lines function instead.

◆ lines() [1/4]

virtual void IRenderer::lines ( const ABrush & brush,
AArrayView< glm::vec2 > points,
const ABorderStyle & style,
AMetric width )
pure virtual
Parameters
brushbrush
pointspolyline points
stylestyle
widthline width

Implemented in OpenGLRenderer, and SoftwareRenderer.

Examples
examples/app/game_of_life/src/main.cpp, and examples/ui/views/src/DemoGraphView.cpp.

◆ lines() [2/4]

void IRenderer::lines ( const ABrush & brush,
AArrayView< glm::vec2 > points,
const ABorderStyle & style = ABorderStyle::Solid{} )
inline
Parameters
brushbrush
pointspolyline points
stylestyle

◆ lines() [3/4]

virtual void IRenderer::lines ( const ABrush & brush,
AArrayView< std::pair< glm::vec2, glm::vec2 > > points,
const ABorderStyle & style,
AMetric width )
pure virtual
Parameters
brushbrush
pointsline points
stylestyle
widthline width

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ lines() [4/4]

void IRenderer::lines ( const ABrush & brush,
AArrayView< std::pair< glm::vec2, glm::vec2 > > points,
const ABorderStyle & style = ABorderStyle::Solid{} )
inline
Parameters
brushbrush
pointsline points
stylestyle

◆ newMultiStringCanvas()

virtual _< IMultiStringCanvas > IRenderer::newMultiStringCanvas ( const AFontStyle & style)
pure virtual
Returns
a new instance of IMultiStringCanvas

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ newRenderViewToTexture()

virtual _unique< IRenderViewToTexture > IRenderer::newRenderViewToTexture ( )
nodiscardpure virtualnoexcept
Returns
A new instance. Can return null if unsupported.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ points()

virtual void IRenderer::points ( const ABrush & brush,
AArrayView< glm::vec2 > points,
AMetric size )
pure virtual
Parameters
brushbrush
pointspoints
sizepoint size

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ popMaskAfter()

virtual void IRenderer::popMaskAfter ( )
pure virtual

Stencil buffer should not be changed after calling this function. Should be called after the popMaskBefore function.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ popMaskBefore()

virtual void IRenderer::popMaskBefore ( )
pure virtual

Stencil pixel is decreased by each affected pixel. Should be called before the popMaskAfter function.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ prerenderString()

virtual _< IPrerenderedString > IRenderer::prerenderString ( glm::vec2 position,
const AString & text,
const AFontStyle & fs )
pure virtual
Parameters
positionstring's top left point
textstring to prerender
fsfont style
Returns
an instance of IPrerenderedString

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ pushMaskAfter()

virtual void IRenderer::pushMaskAfter ( )
pure virtual

Stencil buffer should not be changed after calling this function. Should be called after the pushMaskBefore function.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ pushMaskBefore()

virtual void IRenderer::pushMaskBefore ( )
pure virtual

Stencil pixel is increased by each affected pixel. Should be called before the pushMaskAfter function.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ rectangle()

virtual void IRenderer::rectangle ( const ABrush & brush,
glm::vec2 position,
glm::vec2 size )
pure virtual
Parameters
brushbrush to use
positionrectangle position (px)
sizerectangle size (px)

Implemented in OpenGLRenderer, and SoftwareRenderer.

Examples
examples/app/fractal/src/FractalView.cpp, and examples/app/game_of_life/src/main.cpp.

◆ rectangleBorder()

virtual void IRenderer::rectangleBorder ( const ABrush & brush,
glm::vec2 position,
glm::vec2 size,
float lineWidth = 1.f )
pure virtual
Parameters
brushbrush to use
positionrectangle position (px)
sizerectangle size (px)
lineWidthborder line width (px)

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ rotate() [1/2]

void IRenderer::rotate ( AAngleRadians angle)
inline
Parameters
angleangle to rotate

◆ rotate() [2/2]

void IRenderer::rotate ( const glm::vec3 & axis,
AAngleRadians angle )
inline
Parameters
axisaxis
angleangle to rotate

◆ roundedRectangle()

virtual void IRenderer::roundedRectangle ( const ABrush & brush,
glm::vec2 position,
glm::vec2 size,
float radius )
pure virtual
Parameters
brushbrush to use
positionrectangle position (px)
sizerectangle size (px)
radiuscorner radius (px)

Implemented in OpenGLRenderer, and SoftwareRenderer.

Examples
examples/7guis/circle_drawer/src/main.cpp.

◆ roundedRectangleBorder()

virtual void IRenderer::roundedRectangleBorder ( const ABrush & brush,
glm::vec2 position,
glm::vec2 size,
float radius,
int borderWidth )
pure virtual
Parameters
brushbrush to use
positionrectangle position (px)
sizerectangle size (px)
radiuscorner radius (px)
borderWidthborder line width (px)

Implemented in OpenGLRenderer, and SoftwareRenderer.

Examples
examples/7guis/circle_drawer/src/main.cpp.

◆ setBlending()

virtual void IRenderer::setBlending ( Blending blending)
pure virtual
Parameters
blendingnew blending mode

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ setColor()

void IRenderer::setColor ( const AColor & color)
inline
Parameters
colorcolor
Examples
examples/app/minesweeper/src/CellView.cpp.

◆ setColorForced()

void IRenderer::setColorForced ( const AColor & color)
inline
Parameters
colorcolor

◆ setTransform()

void IRenderer::setTransform ( const glm::mat4 & transform)
inline
Parameters
transformtransform matrix

◆ setTransformForced()

void IRenderer::setTransformForced ( const glm::mat4 & transform)
inline
Parameters
transformtransform matrix

◆ setWindow()

virtual void IRenderer::setWindow ( AWindowBase * window)
inlinevirtual
Parameters
windowtarget window

Reimplemented in SoftwareRenderer.

◆ squareSector()

virtual void IRenderer::squareSector ( const ABrush & brush,
const glm::vec2 & position,
const glm::vec2 & size,
AAngleRadians begin,
AAngleRadians end )
pure virtual
Parameters
brushbrush to use
positionrectangle position (px)
sizerectangle size (px)
beginbegin angle of the sector
endend angle of the sector

The method can be used as mask to ctx.render.roundedRect, creating arc shape.

Implemented in OpenGLRenderer, and SoftwareRenderer.

◆ string()

virtual void IRenderer::string ( glm::vec2 position,
const AString & string,
const AFontStyle & fs = {} )
pure virtual
Parameters
positionstring's top left point
stringstring to render
fsfont style (optional)
Note
This function is dramatically inefficient since it does symbol lookup for every character is the string and does GPU buffer allocations. If you want to render the same string for several times (frames), consider using the IRenderer::prerenderString function or high level views (such as ALabel) instead.

Implemented in OpenGLRenderer, and SoftwareRenderer.

Examples
examples/app/minesweeper/src/CellView.cpp.

◆ stub()

void IRenderer::stub ( glm::vec2 position,
glm::vec2 size )
protected

This can be used if implementation does not support or can't draw complex effects (i.e., blur)

◆ translate()

void IRenderer::translate ( const glm::vec2 & offset)
inline
Parameters
offsetoffset in pixels to translate.