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

#include <hikogui/GFX/draw_context.hpp>

Public Member Functions

 draw_context (draw_context const &rhs) noexcept=default
 
 draw_context (draw_context &&rhs) noexcept=default
 
draw_contextoperator= (draw_context const &rhs) noexcept=default
 
draw_contextoperator= (draw_context &&rhs) noexcept=default
 
 draw_context (gfx_device_vulkan &device, vector_span< pipeline_box::vertex > &box_vertices, vector_span< pipeline_image::vertex > &image_vertices, vector_span< pipeline_SDF::vertex > &sdf_vertices, vector_span< pipeline_alpha::vertex > &alpha_vertices) noexcept
 
 operator bool () const noexcept
 Check if the draw_context should be used for rendering.
 
void draw_box (widget_layout const &layout, quad const &box, draw_attributes const &attributes) const noexcept
 Draw a box with rounded corners.
 
template<draw_quad_shape Shape, draw_attribute... Attributes>
void draw_box (widget_layout const &layout, Shape const &shape, Attributes const &...attributes) const noexcept
 
void draw_line (widget_layout const &layout, line_segment const &line, draw_attributes const &attributes) const noexcept
 
template<draw_attribute... Attributes>
void draw_line (widget_layout const &layout, line_segment const &line, Attributes const &...attributes) const noexcept
 
void draw_circle (widget_layout const &layout, hi::circle const &circle, draw_attributes const &attributes) const noexcept
 
template<draw_attribute... Attributes>
void draw_circle (widget_layout const &layout, hi::circle const &circle, Attributes const &...attributes) const noexcept
 
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, glyph_ids const &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, glyph_ids const &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_device_vulkandevice
 
std::size_t frame_buffer_index
 The frame buffer index of the image we are currently rendering.
 
aarectanglei scissor_rectangle
 This is the rectangle of the window that is being redrawn.
 
color background_color
 The background color to clear the window with.
 
hi::subpixel_orientation subpixel_orientation
 The subpixel orientation for rendering glyphs.
 
bool active
 Window is active.
 
float saturation
 The tone-mapper's saturation.
 
utc_nanoseconds display_time_point
 The time when the drawing will appear on the screen.
 

Friends

bool overlaps (draw_context const &context, widget_layout const &layout) noexcept
 

Detailed Description

Draw context for drawing using the HikoGUI shaders.

Member Function Documentation

◆ draw_box()

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

Draw a box with rounded corners.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
boxThe four points of the box to draw.
fill_colorThe fill color of the inside of the box.
line_colorThe line color of the border of the box.
line_widthThe line width of the border.
border_sideThe side of the edge where the border is drawn.
corner_radiusThe corner radii of each corner of the box.

◆ draw_glyph() [1/2]

void v1::draw_context::draw_glyph ( widget_layout const & layout,
quad const & box,
glyph_ids const & 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.
clipping_rectangleA more narrow clipping rectangle than supplied by layout.
boxThe size and position of the glyph.
colorThe color that the glyph should be drawn in.
glyphThe glyphs to draw.

◆ draw_glyph() [2/2]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void v1::draw_context::draw_glyph ( widget_layout const & layout,
Shape const & box,
glyph_ids const & glyph,
Attributes const &... attributes ) const
inlinenoexcept

Draw a glyph.

Parameters
layoutThe layout to use, specifically the to_window transformation matrix and the clipping rectangle.
clipping_rectangleA more narrow clipping rectangle than supplied by layout.
boxThe size and position of the glyph.
colorThe color that the glyph should be drawn in.
glyphThe glyphs to draw.

◆ draw_hole() [1/2]

void v1::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.

◆ draw_hole() [2/2]

template<draw_quad_shape Shape, draw_attribute... Attributes>
void v1::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.

◆ draw_image() [1/2]

template<draw_attribute... Attributes>
bool v1::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.
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 v1::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.
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_text() [1/3]

template<draw_attribute... Attributes>
void v1::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.
colorText-color overriding the colors from the text_shaper.
textThe shaped text to draw.

◆ draw_text() [2/3]

void v1::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.
colorText-color overriding the colors from the text_shaper.
textThe shaped text to draw.

◆ draw_text() [3/3]

template<draw_attribute... Attributes>
void v1::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.
transformHow to transform the shaped text relative to layout.
colorText-color overriding the colors from the text_shaper.
textThe shaped text to draw.

◆ draw_text_cursors() [1/2]

template<draw_attribute... Attributes>
void v1::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.
primary_colorThe color of the primary cursor (the insertion cursor).
secondary_colorThe color of the secondary cursor (the append 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.

◆ draw_text_cursors() [2/2]

void v1::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.
primary_colorThe color of the primary cursor (the insertion cursor).
secondary_colorThe color of the secondary cursor (the append 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.

◆ draw_text_selection() [1/2]

template<draw_attribute... Attributes>
void v1::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.
colorThe color of the selection.

◆ draw_text_selection() [2/2]

void v1::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.
colorThe color of the selection.

◆ operator bool()

v1::draw_context::operator bool ( ) const
inlinenoexcept

Check if the draw_context should be used for rendering.

Field Documentation

◆ active

bool v1::draw_context::active

Window is active.

◆ background_color

color v1::draw_context::background_color

The background color to clear the window with.

◆ display_time_point

utc_nanoseconds v1::draw_context::display_time_point

The time when the drawing will appear on the screen.

◆ frame_buffer_index

std::size_t v1::draw_context::frame_buffer_index

The frame buffer index of the image we are currently rendering.

◆ saturation

float v1::draw_context::saturation

The tone-mapper's saturation.

◆ scissor_rectangle

aarectanglei v1::draw_context::scissor_rectangle

This is the rectangle of the window that is being redrawn.

◆ subpixel_orientation

hi::subpixel_orientation v1::draw_context::subpixel_orientation

The subpixel orientation for rendering glyphs.


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