AUI Framework
master
Cross-platform module-based framework for developing C++20 desktop applications
|
Public Member Functions | |
void | putPixel (glm::ivec2 position, AColor color, AOptional< Blending > blending=std::nullopt) noexcept |
_< IMultiStringCanvas > | newMultiStringCanvas (const AFontStyle &style) override |
Creates new canvas for batching multiple prerender string calls. More... | |
void | rectangle (const ABrush &brush, glm::vec2 position, glm::vec2 size) override |
Draws simple rectangle. More... | |
void | roundedRectangle (const ABrush &brush, glm::vec2 position, glm::vec2 size, float radius) override |
Draws rounded rect (with antialiasing, if msaa enabled). More... | |
void | rectangleBorder (const ABrush &brush, glm::vec2 position, glm::vec2 size, float lineWidth) override |
Draws rectangle's border. More... | |
void | roundedRectangleBorder (const ABrush &brush, glm::vec2 position, glm::vec2 size, float radius, int borderWidth) override |
Draws rounded rectangle's border. More... | |
void | boxShadow (glm::vec2 position, glm::vec2 size, float blurRadius, const AColor &color) override |
Draws a rectangle-shaped shadow. More... | |
void | boxShadowInner (glm::vec2 position, glm::vec2 size, float blurRadius, float spreadRadius, float borderRadius, const AColor &color, glm::vec2 offset) override |
Draws inner (inset) rectangle-shaped shadow. More... | |
void | string (glm::vec2 position, const AString &string, const AFontStyle &fs) override |
Draws string. More... | |
_< IPrerenderedString > | prerenderString (glm::vec2 position, const AString &text, const AFontStyle &fs) override |
Analyzes string and creates an instance of IRenderer::IPrerenderedString which helps IRenderer to efficiently render the string. More... | |
void | setBlending (Blending blending) override |
Sets blending mode. More... | |
void | setWindow (AWindowBase *window) override |
Sets the window to render on. More... | |
glm::mat4 | getProjectionMatrix () const override |
void | pushMaskBefore () override |
witches drawing to the stencil buffer instead of color buffer. More... | |
void | pushMaskAfter () override |
Switches drawing to the color buffer back from the stencil. Increases stencil depth. More... | |
void | popMaskBefore () override |
Switches drawing to the stencil buffer instead of color buffer. More... | |
void | popMaskAfter () override |
Switches drawing to the color buffer back from the stencil. Decreases stencil depth. More... | |
_unique< IRenderViewToTexture > | newRenderViewToTexture () noexcept override |
Returns a new instance of IRenderViewToTexture interface associated with this renderer. More... | |
void | lines (const ABrush &brush, AArrayView< glm::vec2 > points, const ABorderStyle &style, AMetric width) override |
Draws polyline (non-loop line strip). More... | |
void | points (const ABrush &brush, AArrayView< glm::vec2 > points, AMetric size) override |
Draws points list. More... | |
void | lines (const ABrush &brush, AArrayView< std::pair< glm::vec2, glm::vec2 > > points, const ABorderStyle &style, AMetric width) override |
Draws multiple individual lines in a batch. More... | |
void | squareSector (const ABrush &brush, const glm::vec2 &position, const glm::vec2 &size, AAngleRadians begin, AAngleRadians end) override |
Draws sector in rectangle shape. The sector is drawn clockwise from begin to end angles. More... | |
Public Member Functions inherited from IRenderer | |
_< ITexture > | getNewTexture () |
Creates new texture (image representation optimized for GPU rendering). | |
void | line (const ABrush &brush, glm::vec2 p1, glm::vec2 p2, const ABorderStyle &style=ABorderStyle::Solid{}, AMetric width=1_dp) |
void | lines (const ABrush &brush, AArrayView< glm::vec2 > points, const ABorderStyle &style=ABorderStyle::Solid{}) |
Draws polyline (non-loop line strip). 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... | |
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... | |
AWindowBase * | getWindow () const noexcept |
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 | |
_unique< ITexture > | createNewTexture () override |
void | drawLine (const ABrush &brush, glm::vec2 p1, glm::vec2 p2, const ABorderStyle &style, AMetric width) |
Protected Member Functions inherited from IRenderer | |
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) |
Additional Inherited Members | |
Protected Attributes inherited from IRenderer | |
AColor | mColor |
glm::mat4 | mTransform |
AWindowBase * | mWindow = nullptr |
APool< ITexture > | mTexturePool |
uint8_t | mStencilDepth = 0 |
|
overridevirtual |
Draws a rectangle-shaped shadow.
position | position |
size | rectangle size |
blurRadius | blur radius |
color | shadow color |
Implements IRenderer.
|
overridevirtual |
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. |
Implements IRenderer.
|
overrideprotectedvirtual |
Implements IRenderer.
|
overridevirtual |
Implements IRenderer.
|
overridevirtual |
Draws polyline (non-loop line strip).
brush | brush |
points | polyline points |
style | style |
width | line width |
Implements IRenderer.
|
overridevirtual |
Draws multiple individual lines in a batch.
brush | brush |
points | line points |
style | style |
width | line width |
Implements IRenderer.
|
overridevirtual |
Creates new canvas for batching multiple prerender
string calls.
IMultiStringCanvas
Implements IRenderer.
|
overridevirtualnoexcept |
Returns a new instance of IRenderViewToTexture interface associated with this renderer.
Implements IRenderer.
|
overridevirtual |
|
overridevirtual |
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.
Implements IRenderer.
|
overridevirtual |
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.
Implements IRenderer.
|
overridevirtual |
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 |
Implements IRenderer.
|
overridevirtual |
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.
Implements IRenderer.
|
overridevirtual |
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.
Implements IRenderer.
|
inlinenoexcept |
Draws a pixel onto the software framebuffer following the stencil and blending rules.
position
is inside the framebuffer. position | position. An assertion is triggered if position is not inside the framebuffer. |
color | color. |
blending | blending. Optional. Cheaper. When set, the one set by the setBlending function is ignored. |
|
overridevirtual |
Draws simple rectangle.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
Implements IRenderer.
|
overridevirtual |
Draws rectangle's border.
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
lineWidth | border line width (px) |
Implements IRenderer.
|
overridevirtual |
Draws rounded rect (with antialiasing, if msaa enabled).
brush | brush to use |
position | rectangle position (px) |
size | rectangle size (px) |
radius | corner radius (px) |
Implements IRenderer.
|
overridevirtual |
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) |
Implements IRenderer.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
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.
Implements IRenderer.
|
overridevirtual |
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. Implements IRenderer.