AUI Framework
master
Cross-platform module-based framework for developing C++20 desktop applications
|
Base class for rendering. More...
Base class for rendering.
Renderer is shared between windows. It's expected to share resources (if any). Thus, it does not perform any platform specific routines.
Classes | |
class | IMultiStringCanvas |
class | IPrerenderedString |
Public Member Functions | |
_< ITexture > | getNewTexture () |
Creates new texture (image representation optimized for GPU rendering). | |
virtual _< IMultiStringCanvas > | newMultiStringCanvas (const AFontStyle &style)=0 |
Creates new canvas for batching multiple prerender string calls. More... | |
virtual void | rectangle (const ABrush &brush, glm::vec2 position, glm::vec2 size)=0 |
Draws simple rectangle. More... | |
virtual void | roundedRectangle (const ABrush &brush, glm::vec2 position, glm::vec2 size, float radius)=0 |
Draws rounded rect (with antialiasing, if msaa enabled). More... | |
virtual void | rectangleBorder (const ABrush &brush, glm::vec2 position, glm::vec2 size, float lineWidth=1.f)=0 |
Draws rectangle's border. More... | |
virtual void | roundedRectangleBorder (const ABrush &brush, glm::vec2 position, glm::vec2 size, float radius, int borderWidth)=0 |
Draws rounded rectangle's border. More... | |
virtual void | boxShadow (glm::vec2 position, glm::vec2 size, float blurRadius, const AColor &color)=0 |
Draws a rectangle-shaped shadow. More... | |
virtual void | boxShadowInner (glm::vec2 position, glm::vec2 size, float blurRadius, float spreadRadius, float borderRadius, const AColor &color, glm::vec2 offset)=0 |
Draws inner (inset) rectangle-shaped shadow. More... | |
virtual void | string (glm::vec2 position, const AString &string, const AFontStyle &fs={})=0 |
Draws string. More... | |
virtual _< IPrerenderedString > | prerenderString (glm::vec2 position, const AString &text, const AFontStyle &fs)=0 |
Analyzes string and creates an instance of IRenderer::IPrerenderedString which helps IRenderer to efficiently render the string. More... | |
void | line (const ABrush &brush, glm::vec2 p1, glm::vec2 p2, const ABorderStyle &style=ABorderStyle::Solid{}, AMetric width=1_dp) |
virtual void | lines (const ABrush &brush, AArrayView< glm::vec2 > points, const ABorderStyle &style, AMetric width)=0 |
Draws polyline (non-loop line strip). More... | |
void | lines (const ABrush &brush, AArrayView< glm::vec2 > points, const ABorderStyle &style=ABorderStyle::Solid{}) |
Draws polyline (non-loop line strip). More... | |
virtual void | points (const ABrush &brush, AArrayView< glm::vec2 > points, AMetric size)=0 |
Draws points list. More... | |
virtual void | lines (const ABrush &brush, AArrayView< std::pair< glm::vec2, glm::vec2 > > points, const ABorderStyle &style, AMetric width)=0 |
Draws multiple individual lines in a batch. More... | |
void | lines (const ABrush &brush, AArrayView< std::pair< glm::vec2, glm::vec2 > > points, const ABorderStyle &style=ABorderStyle::Solid{}) |
Draws multiple individual lines in a batch. More... | |
virtual void | squareSector (const ABrush &brush, const glm::vec2 &position, const glm::vec2 &size, AAngleRadians begin, AAngleRadians end)=0 |
Draws sector in rectangle shape. The sector is drawn clockwise from begin to end angles. More... | |
void | setColorForced (const AColor &color) |
Sets the color which is multiplied with any brush. More... | |
void | setColor (const AColor &color) |
const AColor & | getColor () const |
void | setTransform (const glm::mat4 &transform) |
Sets the transform matrix which is applicable for any figure. Unlike setTransformForced , the new matrix is multiplied by the previous matrix. More... | |
void | setTransformForced (const glm::mat4 &transform) |
Sets the transform matrix which is applicable for any figure. More... | |
virtual void | pushMaskBefore ()=0 |
witches drawing to the stencil buffer instead of color buffer. More... | |
virtual void | pushMaskAfter ()=0 |
Switches drawing to the color buffer back from the stencil. Increases stencil depth. More... | |
virtual void | popMaskBefore ()=0 |
Switches drawing to the stencil buffer instead of color buffer. More... | |
virtual void | popMaskAfter ()=0 |
Switches drawing to the color buffer back from the stencil. Decreases stencil depth. More... | |
virtual void | setBlending (Blending blending)=0 |
Sets blending mode. More... | |
virtual _unique< IRenderViewToTexture > | newRenderViewToTexture () noexcept=0 |
Returns a new instance of IRenderViewToTexture interface associated with this renderer. More... | |
virtual void | setWindow (AWindowBase *window) |
Sets the window to render on. More... | |
AWindowBase * | getWindow () const noexcept |
virtual glm::mat4 | getProjectionMatrix () const =0 |
const glm::mat4 & | getTransform () |
std::uint8_t | getStencilDepth () const noexcept |
void | setStencilDepth (uint8_t stencilDepth) |
void | translate (const glm::vec2 &offset) |
Wrapper for setTransform applying matrix translate transformation. More... | |
void | rotate (const glm::vec3 &axis, AAngleRadians angle) |
wrapper for setTransform applying matrix rotation along the specified axis. More... | |
void | rotate (AAngleRadians angle) |
wrapper for setTransform applying matrix rotation along z axis. More... | |
void | setAllowRenderToTexture (bool allowRenderToTexture) |
bool | allowRenderToTexture () const noexcept |
void | backdrops (glm::ivec2 position, glm::ivec2 size, std::span< ass::Backdrop::Any > backdrops) |
Draws rectangular backdrop effects. More... | |
Public Member Functions inherited from aui::noncopyable | |
noncopyable (const noncopyable &)=delete | |
noncopyable & | operator= (const noncopyable &)=delete |
Protected Member Functions | |
virtual _unique< ITexture > | createNewTexture ()=0 |
void | stub (glm::vec2 position, glm::vec2 size) |
Draws stub (i.e., gray rectangle) More... | |
virtual void | backdrops (glm::ivec2 position, glm::ivec2 size, std::span< ass::Backdrop::Preprocessed > backdrops) |
Protected Attributes | |
AColor | mColor |
glm::mat4 | mTransform |
AWindowBase * | mWindow = nullptr |
APool< ITexture > | mTexturePool |
uint8_t | mStencilDepth = 0 |
void IRenderer::backdrops | ( | glm::ivec2 | position, |
glm::ivec2 | size, | ||
std::span< ass::Backdrop::Any > | backdrops | ||
) |
Draws rectangular backdrop effects.
position | rectangle position (px) |
size | rectangle size (px) |
backdrops | array 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.
|
pure virtual |
Draws a rectangle-shaped shadow.
position | position |
size | rectangle size |
blurRadius | blur radius |
color | shadow color |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws inner (inset) rectangle-shaped shadow.
position | position |
size | rectangle size |
blurRadius | blur radius |
spreadRadius | spread (offset) radius |
borderRadius | border radius of the rectangle. |
color | shadow color |
offset | shadow 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.
|
inline |
ARender::lines
function instead.
|
pure virtual |
Draws polyline (non-loop line strip).
brush | brush |
points | polyline points |
style | style |
width | line width |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
inline |
Draws polyline (non-loop line strip).
brush | brush |
points | polyline points |
style | style |
|
pure virtual |
Draws multiple individual lines in a batch.
brush | brush |
points | line points |
style | style |
width | line width |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
inline |
Draws multiple individual lines in a batch.
brush | brush |
points | line points |
style | style |
|
pure virtual |
Creates new canvas for batching multiple prerender
string calls.
IMultiStringCanvas
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtualnoexcept |
Returns a new instance of IRenderViewToTexture interface associated with this renderer.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws points list.
brush | brush |
points | points |
size | point size |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Switches drawing to the color buffer back from the stencil. Decreases stencil depth.
Stencil buffer should not be changed after calling this function. Should be called after the popMaskBefore
function.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Switches drawing to the stencil buffer instead of color buffer.
Stencil pixel is decreased by each affected pixel. Should be called before the popMaskAfter
function.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Analyzes string and creates an instance of IRenderer::IPrerenderedString
which helps IRenderer
to efficiently render the string.
position | string's top left point |
text | string to prerender |
fs | font style |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Switches drawing to the color buffer back from the stencil. Increases stencil depth.
Stencil buffer should not be changed after calling this function. Should be called after the pushMaskBefore
function.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
witches drawing to the stencil buffer instead of color buffer.
Stencil pixel is increased by each affected pixel. Should be called before the pushMaskAfter
function.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws simple rectangle.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws rectangle's border.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
lineWidth | border line width (px) |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
inline |
wrapper for setTransform applying matrix rotation along z axis.
angle | angle to rotate |
|
inline |
wrapper for setTransform applying matrix rotation along the specified axis.
axis | axis |
angle | angle to rotate |
|
pure virtual |
Draws rounded rect (with antialiasing, if msaa enabled).
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
radius | corner radius (px) |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws rounded rectangle's border.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
radius | corner radius (px) |
borderWidth | border line width (px) |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Sets blending mode.
blending | new blending mode |
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
inline |
@bruef Sets the color which is multiplied with any brush. Unlike setColorForced
, the new color is multiplied by the previous color.
color | color |
|
inline |
Sets the color which is multiplied with any brush.
color | color |
|
inline |
Sets the transform matrix which is applicable for any figure. Unlike setTransformForced
, the new matrix is multiplied by the previous matrix.
transform | transform matrix |
|
inline |
Sets the transform matrix which is applicable for any figure.
transform | transform matrix |
|
inlinevirtual |
|
pure virtual |
Draws sector in rectangle shape. The sector is drawn clockwise from begin to end angles.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
The method can be used as mask to ctx.render.roundedRect, creating arc shape.
Implemented in OpenGLRenderer, and SoftwareRenderer.
|
pure virtual |
Draws string.
position | string's top left point |
string | string to render |
fs | font style (optional) |
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.
|
protected |
Draws stub (i.e., gray rectangle)
This can be used if implementation does not support or can't draw complex effects (i.e., blur)
|
inline |
Wrapper for setTransform applying matrix translate transformation.
offset | offset in pixels to translate. |
#include <AUI/Render/IRenderer.h>