HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Public Member Functions | Data Fields | Friends
hi::v1::widget_draw_context Class Reference

#include <hikogui/GUI/widget_draw_context.hpp>

Public Member Functions

 widget_draw_context (widget_draw_context const &rhs) noexcept=default
 
 widget_draw_context (widget_draw_context &&rhs) noexcept=default
 
widget_draw_contextoperator= (widget_draw_context const &rhs) noexcept=default
 
widget_draw_contextoperator= (widget_draw_context &&rhs) noexcept=default
 
 widget_draw_context (gfx_draw_context const &gfx_context) noexcept
 
void draw_box (widget_layout const &layout, quad const &box, draw_attributes const &attributes) const noexcept
 Draw a box.
 
template<draw_quad_shape Shape, draw_attribute... Attributes>
void draw_box (widget_layout const &layout, Shape const &shape, Attributes const &...attributes) const noexcept
 Draw a box.
 
void draw_line (widget_layout const &layout, line_segment const &line, draw_attributes const &attributes) const noexcept
 Draw a line.
 
template<draw_attribute... Attributes>
void draw_line (widget_layout const &layout, line_segment const &line, Attributes const &...attributes) const noexcept
 Draw a line.
 
void draw_circle (widget_layout const &layout, hi::circle const &circle, draw_attributes const &attributes) const noexcept
 Draw a circle.
 
template<draw_attribute... Attributes>
void draw_circle (widget_layout const &layout, hi::circle const &circle, Attributes const &...attributes) const noexcept
 Draw a circle.
 
bool draw_image (widget_layout const &layout, quad const &box, paged_image &image, draw_attributes const &attributes) const noexcept
 Draw an image.
 
template<draw_attribute... Attributes>
bool draw_image (widget_layout const &layout, draw_quad_shape auto const &box, paged_image &image, Attributes const &...attributes) const noexcept
 Draw an image.
 
void draw_glyph (widget_layout const &layout, quad const &box, hi::font const &font, glyph_id glyph, draw_attributes const &attributes) const noexcept
 Draw a glyph.
 
template<draw_quad_shape Shape, draw_attribute... Attributes>
void draw_glyph (widget_layout const &layout, Shape const &box, hi::font const &font, glyph_id glyph, Attributes const &...attributes) const noexcept
 Draw a glyph.
 
void draw_glyph (widget_layout const &layout, quad const &box, font_book::font_glyph_type font_glyph, draw_attributes const &attributes) const noexcept
 Draw a glyph.
 
template<draw_quad_shape Shape, draw_attribute... Attributes>
void draw_glyph (widget_layout const &layout, Shape const &box, font_book::font_glyph_type font_glyph, Attributes const &...attributes) const noexcept
 Draw a glyph.
 
void draw_text (widget_layout const &layout, matrix3 const &transform, text_shaper const &text, draw_attributes const &attributes) const noexcept
 Draw shaped text.
 
template<draw_attribute... Attributes>
void draw_text (widget_layout const &layout, matrix3 const &transform, text_shaper const &text, Attributes const &...attributes) const noexcept
 Draw shaped text.
 
template<draw_attribute... Attributes>
void draw_text (widget_layout const &layout, text_shaper const &text, Attributes const &...attributes) const noexcept
 Draw shaped text.
 
void draw_text_selection (widget_layout const &layout, text_shaper const &text, text_selection const &selection, draw_attributes const &attributes) const noexcept
 Draw text-selection of shaped text.
 
template<draw_attribute... Attributes>
void draw_text_selection (widget_layout const &layout, text_shaper const &text, text_selection const &selection, Attributes const &...attributes) const noexcept
 Draw text-selection of shaped text.
 
void draw_text_cursors (widget_layout const &layout, text_shaper const &text, text_cursor cursor, bool overwrite_mode, bool dead_character_mode, draw_attributes const &attributes) const noexcept
 Draw text cursors of shaped text.
 
template<draw_attribute... Attributes>
void draw_text_cursors (widget_layout const &layout, text_shaper const &text, text_cursor cursor, bool overwrite_mode, bool dead_character_mode, Attributes const &...attributes) const noexcept
 Draw text cursors of shaped text.
 
void draw_hole (widget_layout const &layout, quad const &box, draw_attributes const &attributes) const noexcept
 Make a hole in the user interface.
 
template<draw_quad_shape Shape, draw_attribute... Attributes>
void draw_hole (widget_layout const &layout, Shape const &box, Attributes const &...attributes) const noexcept
 Make a hole in the user interface.
 

Data Fields

gfx_draw_context gfx_context
 
utc_nanoseconds display_time_point
 The time when the drawing will appear on the screen.
 

Friends

bool overlaps (widget_draw_context const &context, widget_layout const &layout) noexcept
 Checks if a widget's layout overlaps with the part of the window that is being drawn.
 

Detailed Description

Draw context for drawing using the HikoGUI shaders.

Member Function Documentation

◆ draw_box() [1/2]

void hi::v1::widget_draw_context::draw_box ( widget_layout const & layout,
quad const & box,
draw_attributes const & attributes ) const
inlinenoexcept

Draw a box.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe four points of the box to draw.
attributesThe drawing attributes to use.

◆ draw_box() [2/2]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_box ( widget_layout const & layout,
Shape const & shape,
Attributes const &... attributes ) const
inlinenoexcept

Draw a box.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
shapeThe shape of the box.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_circle() [1/2]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_circle ( widget_layout const & layout,
hi::circle const & circle,
Attributes const &... attributes ) const
inlinenoexcept

Draw a circle.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
circleThe circle to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_circle() [2/2]

void hi::v1::widget_draw_context::draw_circle ( widget_layout const & layout,
hi::circle const & circle,
draw_attributes const & attributes ) const
inlinenoexcept

Draw a circle.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
circleThe circle to draw.
attributesThe drawing attributes to use.

◆ draw_glyph() [1/4]

void hi::v1::widget_draw_context::draw_glyph ( widget_layout const & layout,
quad const & box,
font_book::font_glyph_type font_glyph,
draw_attributes const & attributes ) const
inlinenoexcept

Draw a glyph.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe size and position of the glyph.
glyphThe glyphs to draw.
attributesThe drawing attributes to use.

◆ draw_glyph() [2/4]

void hi::v1::widget_draw_context::draw_glyph ( widget_layout const & layout,
quad const & box,
hi::font const & font,
glyph_id glyph,
draw_attributes const & attributes ) const
inlinenoexcept

Draw a glyph.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe size and position of the glyph.
glyphThe glyphs to draw.
attributesThe drawing attributes to use.

◆ draw_glyph() [3/4]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_glyph ( widget_layout const & layout,
Shape const & box,
font_book::font_glyph_type font_glyph,
Attributes const &... attributes ) const
inlinenoexcept

Draw a glyph.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe size and position of the glyph.
glyphThe glyphs to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_glyph() [4/4]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_glyph ( widget_layout const & layout,
Shape const & box,
hi::font const & font,
glyph_id glyph,
Attributes const &... attributes ) const
inlinenoexcept

Draw a glyph.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe size and position of the glyph.
glyphThe glyphs to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_hole() [1/2]

void hi::v1::widget_draw_context::draw_hole ( widget_layout const & layout,
quad const & box,
draw_attributes const & attributes ) const
inlinenoexcept

Make a hole in the user interface.

This function makes a hole in the user-interface so that fragments written in the swap-chain before the GUI is drawn will be visible.

Parameters
layoutThe layout of the widget.
boxThe box in local coordinates of the widget.
attributesThe drawing attributes to use.

◆ draw_hole() [2/2]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_hole ( widget_layout const & layout,
Shape const & box,
Attributes const &... attributes ) const
inlinenoexcept

Make a hole in the user interface.

This function makes a hole in the user-interface so that fragments written in the swap-chain before the GUI is drawn will be visible.

Parameters
layoutThe layout of the widget.
boxThe box in local coordinates of the widget.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_image() [1/2]

template<draw_attribute... Attributes>
bool hi::v1::widget_draw_context::draw_image ( widget_layout const & layout,
draw_quad_shape auto const & box,
paged_image & image,
Attributes const &... attributes ) const
inlinenoexcept

Draw an image.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe four points of the box to draw.
imageThe image to show.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().
Returns
True when the image was drawn, false if the image is not ready yet. Widgets may want to request a redraw if the image is not ready.

◆ draw_image() [2/2]

bool hi::v1::widget_draw_context::draw_image ( widget_layout const & layout,
quad const & box,
paged_image & image,
draw_attributes const & attributes ) const
inlinenoexcept

Draw an image.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe four points of the box to draw.
imageThe image to show.
attributesThe drawing attributes to use.
Returns
True when the image was drawn, false if the image is not ready yet. Widgets may want to request a redraw if the image is not ready.

◆ draw_line() [1/2]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_line ( widget_layout const & layout,
line_segment const & line,
Attributes const &... attributes ) const
inlinenoexcept

Draw a line.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
lineThe line segment to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_line() [2/2]

void hi::v1::widget_draw_context::draw_line ( widget_layout const & layout,
line_segment const & line,
draw_attributes const & attributes ) const
inlinenoexcept

Draw a line.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
lineThe line segment to draw.
attributesThe drawing attributes to use.

◆ draw_text() [1/3]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_text ( widget_layout const & layout,
matrix3 const & transform,
text_shaper const & text,
Attributes const &... attributes ) const
inlinenoexcept

Draw shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
transformHow to transform the shaped text relative to layout.
textThe shaped text to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_text() [2/3]

void hi::v1::widget_draw_context::draw_text ( widget_layout const & layout,
matrix3 const & transform,
text_shaper const & text,
draw_attributes const & attributes ) const
inlinenoexcept

Draw shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
transformHow to transform the shaped text relative to layout.
textThe shaped text to draw.
attributesThe drawing attributes to use.

◆ draw_text() [3/3]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_text ( widget_layout const & layout,
text_shaper const & text,
Attributes const &... attributes ) const
inlinenoexcept

Draw shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
textThe shaped text to draw.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_text_cursors() [1/2]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_text_cursors ( widget_layout const & layout,
text_shaper const & text,
text_cursor cursor,
bool overwrite_mode,
bool dead_character_mode,
Attributes const &... attributes ) const
inlinenoexcept

Draw text cursors of shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
textThe shaped text to draw.
cursorThe position of the cursor.
overwrite_modeIf true draw overwrite mode cursor; if false draw insertion mode cursors,
dead_character_modeIf true draw the dead-character cursor. The dead_character_mode overrides all other cursors.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_text_cursors() [2/2]

void hi::v1::widget_draw_context::draw_text_cursors ( widget_layout const & layout,
text_shaper const & text,
text_cursor cursor,
bool overwrite_mode,
bool dead_character_mode,
draw_attributes const & attributes ) const
inlinenoexcept

Draw text cursors of shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
textThe shaped text to draw.
cursorThe position of the cursor.
overwrite_modeIf true draw overwrite mode cursor; if false draw insertion mode cursors,
dead_character_modeIf true draw the dead-character cursor. The dead_character_mode overrides all other cursors.
attributesThe drawing attributes to use.

◆ draw_text_selection() [1/2]

template<draw_attribute... Attributes>
void hi::v1::widget_draw_context::draw_text_selection ( widget_layout const & layout,
text_shaper const & text,
text_selection const & selection,
Attributes const &... attributes ) const
inlinenoexcept

Draw text-selection of shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
textThe shaped text to draw.
selectionThe text selection.
attributesThe drawing attributes to use, see: draw_attributes::draw_attributes().

◆ draw_text_selection() [2/2]

void hi::v1::widget_draw_context::draw_text_selection ( widget_layout const & layout,
text_shaper const & text,
text_selection const & selection,
draw_attributes const & attributes ) const
inlinenoexcept

Draw text-selection of shaped text.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
textThe shaped text to draw.
selectionThe text selection.
attributesThe drawing attributes to use.

Friends And Related Symbol Documentation

◆ overlaps

bool overlaps ( widget_draw_context const & context,
widget_layout const & layout )
friend

Checks if a widget's layout overlaps with the part of the window that is being drawn.

Parameters
contextThe draw context which contains the scissor rectangle.
layoutThe layout of a widget which contains the rectangle where the widget is located on the window
Returns
True if the widget needs to draw into the context.

Field Documentation

◆ display_time_point

utc_nanoseconds hi::v1::widget_draw_context::display_time_point

The time when the drawing will appear on the screen.


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