HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Namespaces | Data Structures | Concepts | Typedefs | Enumerations | Functions | Variables
hi::v1 Namespace Reference

The HikoGUI API version 1. More...

Namespaces

namespace  geo
 HikoGUI geometry types.
 

Data Structures

class  abstract_button_widget
 Base class for implementing button widgets. More...
 
class  audio_device_widget
 Audio device configuration widget. More...
 
struct  box_constraints
 2D constraints. More...
 
struct  box_shape
 
class  button_delegate
 A button delegate controls the state of a button widget. More...
 
class  cache
 
class  cancel_error
 Cancel error is caused by user pressing cancel. More...
 
struct  char_converter
 A converter between character encodings. More...
 
struct  char_map
 Character encoder/decoder template. More...
 
struct  char_map<"ascii">
 ASCII (7-bit) character map. More...
 
struct  char_map<"cp-1252">
 CP-1252 / Windows-1252 character map. More...
 
struct  char_map<"iso-8859-1">
 ISO-8859-1 / Latin-1 character map. More...
 
struct  char_map<"utf-16">
 Unicode UTF-16 encoding. More...
 
struct  char_map<"utf-32">
 Unicode UTF-32 encoding. More...
 
struct  char_map<"utf-8">
 Unicode UTF-8 encoding. More...
 
struct  character
 The standard HikoGUI character type. More...
 
class  character_attributes
 
class  checkbox_delegate
 A toggle delegate controls the state of a toggle widget. More...
 
class  checkbox_widget
 A GUI widget that permits the user to make a binary choice. More...
 
class  circle
 A type defining a 2D circle. More...
 
class  color
 This is a RGBA floating point color. More...
 
class  const_resource_view
 A read-only view of a resource. More...
 
struct  convertible_to_any
 A type that can be implicitly converted to any type. More...
 
class  cpu_id
 
class  dead_lock_detector
 Dead lock detector. More...
 
class  default_checkbox_delegate
 A default toggle delegate. More...
 
class  default_radio_button_delegate
 A default radio button delegate. More...
 
class  default_selection_delegate
 A delegate that control the state of a selection_widget. More...
 
class  default_tab_delegate
 A delegate that control the state of a tab_widget. More...
 
class  default_text_delegate
 A default text delegate. More...
 
class  default_text_delegate< text >
 A default text delegate specialization for gstring. More...
 
class  default_text_delegate< text_variant >
 A default text delegate specialization for text. More...
 
class  default_text_delegate< translate >
 A default text delegate specialization for translate. More...
 
class  default_text_field_delegate
 A default text delegate. More...
 
class  default_text_field_delegate< T >
 A default text delegate specialization for std::integral<T>. More...
 
class  default_toggle_delegate
 A default toggle delegate. More...
 
struct  draw_attributes
 The draw attributes used to draw shaped into the draw context. More...
 
struct  em_length_tag
 
class  file
 A File object. More...
 
class  file_view
 Map a file into virtual memory. More...
 
class  font_char_map
 Character map of a font. More...
 
struct  gfx_draw_context
 
class  glob_pattern
 A glob pattern. More...
 
class  grid
 The layout-algorithm: More...
 
class  grid_cell
 A cell in a grid. More...
 
class  grid_widget
 A GUI widget that lays out child-widgets in a grid with variable sized cells. More...
 
class  gui_error
 
class  gui_event
 A user interface event. More...
 
class  icon_widget
 An simple GUI widget that displays an icon. More...
 
struct  intrinsic_t
 Tag used in constructors to set the intrinsic value of that object. More...
 
class  io_error
 Exception thrown during I/O on an error. More...
 
class  key_error
 
struct  keyboard_target_data
 
class  label_widget
 The GUI widget displays and lays out text together with an icon. More...
 
class  lean_vector
 Lean-vector with (SVO) short-vector-optimization. More...
 
struct  lexer_config
 
class  line_segment
 Line segment. More...
 
class  log
 
class  lookahead_iterator
 Lookahead iterator. More...
 
class  momentary_button_widget
 A momentary button widget. More...
 
struct  mouse_event_data
 Information for a mouse event. More...
 
struct  native_simd
 A native-SIMD type. More...
 
class  not_found_error
 Exception thrown when an item was not found. More...
 
struct  number_of_data_members
 
class  operation_error
 Exception thrown during execution of a dynamic operation. More...
 
class  os_error
 Exception thrown during an operating system call. More...
 
struct  otype_fbyte_buf_t
 Open-type for 8 signed integer that must be scaled by the EM-scale. More...
 
struct  otype_fixed15_16_buf_t
 Open-type 16.16 signed fixed point, range between -32768.0 and 32767.999. More...
 
struct  otype_fixed1_14_buf_t
 Open-type 16-bit signed fraction, range between -2.0 and 1.999. More...
 
struct  otype_fuword_buf_t
 Open-type for 16 unsigned integer that must be scaled by the EM-scale. More...
 
struct  otype_fword_buf_t
 Open-type for 16 signed integer that must be scaled by the EM-scale. More...
 
struct  otype_glyf_component
 
class  overlay_widget
 A GUI widget which may exist anywhere on a window overlaid above any other widget. More...
 
struct  override_t
 Tag used for special functions or constructions to do a override compared to another function of the same name. More...
 
class  parse_error
 Exception thrown during parsing on an error. More...
 
class  pixmap
 A 2D pixel-based image. More...
 
class  pixmap_span
 A non-owning 2D pixel-based image. More...
 
struct  plurality
 Plurality of a number. More...
 
struct  px_length_tag
 
class  quad_color
 A color for each corner of a quad. More...
 
class  radio_button_delegate
 A radio button delegate controls the state of a radio button widget. More...
 
class  radio_button_widget
 A graphical control element that allows the user to choose only one of a predefined set of mutually exclusive options. More...
 
class  radio_menu_button_widget
 A button that is part of a menu. More...
 
class  recursive_iterator
 An iterator which recursively iterates through nested containers. More...
 
class  row_column_layout
 
class  row_column_widget
 A row/column widget lays out child widgets along a row or column. More...
 
class  scroll_aperture_widget
 A scroll aperture widget. More...
 
class  scroll_bar_widget
 Scroll bar widget This widget is used in a pair of a vertical and horizontal scrollbar as a child of the scroll_widget. More...
 
class  scroll_widget
 The scroll widget allows a content widget to be shown in less space than is required. More...
 
class  selection_delegate
 A delegate that controls the state of a selection_widget. More...
 
class  selection_widget
 A graphical control element that allows the user to choose only one of a predefined set of mutually exclusive options. More...
 
struct  si_length_tag
 
class  spacer_widget
 This GUI widget is used as a spacer between other widget for layout purposes. More...
 
class  spell_errors
 
struct  style_sheet
 
struct  style_sheet_declaration
 
struct  style_sheet_pattern
 
struct  style_sheet_rule_set
 
struct  style_sheet_selector
 
struct  style_sheet_value
 
struct  sub_theme_selector_type
 
class  system_menu_widget
 The system menu widget. More...
 
class  tab_delegate
 A delegate that controls the state of a tab_widget. More...
 
class  tab_widget
 A graphical element that shows only one of a predefined set of mutually exclusive child widgets. More...
 
class  text_delegate
 A delegate that controls the state of a text_widget. More...
 
class  text_field_delegate
 A delegate that controls the state of a text_field_widget. More...
 
class  text_field_widget
 A single line text field. More...
 
struct  text_style
 
class  text_theme
 
class  text_widget
 A text widget. More...
 
struct  theme_length
 
class  theme_model
 
class  theme_model_base
 The theme models for all states for a specific widget component. More...
 
class  theme_model_length
 A length in pixels or dips (device independent pixels), optimized for read performance. More...
 
struct  theme_sub_model
 All the data of a theme for a specific widget-component at a specific state. More...
 
struct  three_way_comparison
 A functor to safely compare two arithmetic values. More...
 
struct  three_way_comparison< Lhs, Rhs >
 
class  toggle_delegate
 A toggle delegate controls the state of a toggle widget. More...
 
class  toggle_widget
 A GUI widget that permits the user to make a binary choice. More...
 
struct  token
 
class  toolbar_button_widget
 A momentary button used as a child in the toolbar. More...
 
class  toolbar_tab_button_widget
 A graphical control element that allows the user to choose only one of a predefined set of mutually exclusive views of a tab_widget. More...
 
class  toolbar_widget
 A toolbar widget is located at the top of a window and lays out its children horizontally. More...
 
struct  ucd_decomposition_info
 The decomposition info is used to determine how to decompose a code-point. More...
 
class  unfair_mutex_impl
 An unfair mutex This is a fast implementation of a mutex which does not fairly arbitrate between multiple blocking threads. More...
 
class  unfair_recursive_mutex
 An unfair recursive-mutex This is a fast implementation of a recursive-mutex which does not fairly arbitrate between multiple blocking threads. More...
 
class  unit
 
struct  unusable_t
 A type that can not be constructed, copied, moved or destructed. More...
 
class  URI
 A Uniform Resource Identifier. More...
 
class  uri_error
 
class  URL
 Universal Resource Locator. More...
 
class  url_error
 
class  widget
 
class  widget_draw_context
 Draw context for drawing using the HikoGUI shaders. More...
 
class  widget_layout
 The layout of a widget. More...
 
class  window_traffic_lights_widget
 Window control button widget. More...
 
class  window_widget
 The top-level window widget. More...
 

Concepts

concept  dsp_argument
 
concept  draw_attribute
 
concept  draw_quad_shape
 
concept  character_attribute
 
concept  theme_delegate
 
concept  bound_check_range_helper
 
concept  button_widget_attribute
 
concept  checkbox_widget_attribute
 
concept  icon_widget_attribute
 
concept  label_widget_attribute
 
concept  selection_widget_attribute
 
concept  text_field_widget_attribute
 
concept  text_widget_attribute
 
concept  toggle_widget_attribute
 

Typedefs

using thread_id = uint32_t
 
using unfair_mutex = unfair_mutex_impl<true>
 
using unfair_mutex_without_deadlock_detector = unfair_mutex_impl<false>
 
using aarectangle = geo::axis_aligned_rectangle
 
using corner_radii = geo::corner_radii<float>
 
using extent2 = geo::extent<float, 2>
 A 2D extent.
 
using extent3 = geo::extent<float, 3>
 A 3D extent.
 
using identity2 = geo::identity
 2D identity transform.
 
using identity3 = geo::identity
 2D identity transform.
 
using lookat3 = geo::lookat
 
using margins = geo::margins<float>
 
using matrix2 = geo::matrix<2>
 A 2D homogenious transformation matrix.
 
using matrix3 = geo::matrix<3>
 A 3D homogenious transformation matrix.
 
using perspective3 = geo::perspective
 
using widget_id = tagged_id<uint32_t, "widget">
 
template<typename T >
using row_layout = row_column_layout<axis::x, T>
 
template<typename T >
using column_layout = row_column_layout<axis::y, T>
 
using text = std::basic_string<character>
 
using text_view = std::basic_string_view<character>
 
using kilometers = unit<si_length_tag, double, std::kilo>
 
using meters = unit<si_length_tag, double>
 
using centimeters = unit<si_length_tag, double, std::centi>
 
using decimeters = unit<si_length_tag, double, std::deci>
 
using millimeters = unit<si_length_tag, double, std::milli>
 
using points = unit<si_length_tag, double, std::ratio<254, 720'000>::type>
 Points: 1/72 inch.
 
using inches = unit<si_length_tag, double, std::ratio<254, 10'000>::type>
 Inch: 254 mm.
 
using feet = unit<si_length_tag, double, std::ratio<3'048, 10'000>::type>
 
using yards = unit<si_length_tag, double, std::ratio<9'144, 10'000>::type>
 
using miles = unit<si_length_tag, double, std::ratio<16'093'440, 10'000>::type>
 
using dips = unit<si_length_tag, double, std::ratio<254, 960'000>::type>
 Device Independent Pixels: 1/96 inch.
 
using pixels = unit<px_length_tag, double>
 A physical pixel on a display.
 
using em_quads = unit<em_length_tag, double>
 Em-quad: A font's line-height.
 
using ssize_t = std::ptrdiff_t
 Signed size/index into an array.
 
template<fixed_string Name = "">
using row_widget = row_column_widget<Name / "row", axis::x>
 Lays out children in a row.
 
template<fixed_string Name = "">
using column_widget = row_column_widget<Name / "column", axis::y>
 Lays out children in a column.
 
template<fixed_string Name = "">
using vertical_scroll_widget = scroll_widget<axis::vertical, Name>
 Vertical scroll widget.
 
template<fixed_string Name = "">
using horizontal_scroll_widget = scroll_widget<axis::horizontal, Name>
 Horizontal scroll widget.
 

Enumerations

enum class  global_state_type : uint64_t {
  log_debug = 0x01 , log_info = 0x02 , log_statistics = 0x04 , log_trace = 0x08 ,
  log_audit = 0x10 , log_warning = 0x20 , log_error = 0x40 , log_fatal = 0x80 ,
  log_mask = log_debug | log_info | log_statistics | log_trace | log_audit | log_warning | log_error | log_fatal , log_level_default = log_audit | log_error | log_fatal , log_level_fatal = log_audit | log_fatal , log_level_error = log_trace | log_error | log_level_fatal ,
  log_level_warning = log_warning | log_level_error , log_level_info = log_info | log_statistics | log_level_warning , log_level_debug = log_debug | log_level_info , log_is_running = 0x1'00 ,
  time_stamp_utc_is_running = 0x2'00 , system_is_running = 0x1'000000'00 , system_is_shutting_down = 0x2'000000'00 , system_mask = system_is_running | system_is_shutting_down
}
 The flag-type used for global state. More...
 
enum class  seek_whence { seek_whence::begin , seek_whence::current , seek_whence::end }
 The position in the file to seek from. More...
 
enum class  access_mode {
  access_mode::read = 0x1 , access_mode::write = 0x2 , access_mode::rename = 0x4 , access_mode::read_lock = 0x10 ,
  access_mode::write_lock = 0x20 , access_mode::open = 0x100 , access_mode::create = 0x200 , access_mode::truncate = 0x400 ,
  access_mode::random = 0x1000 , access_mode::sequential = 0x2000 , access_mode::no_reuse = 0x4000 , access_mode::write_through = 0x8000 ,
  access_mode::create_directories = 0x10000 , access_mode::open_for_read = open | read , access_mode::open_for_read_and_write = open | read | write , truncate_or_create_for_write = create_directories | open | create | truncate | write
}
 The mode in which way to open a file. More...
 
enum class  path_location {
  path_location::resource_dirs , path_location::executable_file , path_location::executable_dir , path_location::library_file ,
  path_location::library_dir , path_location::data_dir , path_location::log_dir , path_location::preferences_file ,
  path_location::system_font_dirs , path_location::font_dirs , path_location::theme_dirs
}
 File and Directory locations. More...
 
enum class  font_style { normal = 0 , italic = 1 , oblique = 1 }
 The different styles a font-family comes with. More...
 
enum class  axis : unsigned char {
  none = 0 , x = 1 , y = 2 , z = 4 ,
  both = x | y , all = x | y | z , horizontal = x , vertical = y
}
 An enumeration of the 3 axis for 3D geometry. More...
 
enum class  line_end_cap { line_end_cap::flat , line_end_cap::round }
 The way two lines should be joined. More...
 
enum class  line_join_style { line_join_style::none , line_join_style::bevel , line_join_style::miter , line_join_style::round }
 The way two lines should be joined. More...
 
enum class  gui_event_type {
  none , keyboard_down , keyboard_up , keyboard_grapheme ,
  keyboard_partial_grapheme , keyboard_enter , keyboard_exit , mouse_move ,
  mouse_drag , mouse_down , mouse_up , mouse_wheel ,
  mouse_enter , mouse_exit , mouse_exit_window , gui_event_type::window_redraw ,
  gui_event_type::window_relayout , gui_event_type::window_reconstrain , gui_event_type::window_resize , gui_event_type::window_minimize ,
  gui_event_type::window_maximize , gui_event_type::window_normalize , gui_event_type::window_close , gui_event_type::window_open_sysmenu ,
  gui_event_type::window_set_keyboard_target , gui_event_type::window_set_clipboard , text_cursor_left_char , text_cursor_right_char ,
  text_cursor_down_char , text_cursor_up_char , text_cursor_left_word , text_cursor_right_word ,
  text_cursor_begin_line , text_cursor_end_line , text_cursor_begin_sentence , text_cursor_end_sentence ,
  text_cursor_begin_document , text_cursor_end_document , text_select_left_char , text_select_right_char ,
  text_select_down_char , text_select_up_char , text_select_word , text_select_left_word ,
  text_select_right_word , text_select_begin_line , text_select_end_line , text_select_begin_sentence ,
  text_select_end_sentence , text_select_document , text_select_begin_document , text_select_end_document ,
  text_delete_char_prev , text_delete_char_next , text_delete_word_prev , text_delete_word_next ,
  text_swap_chars , text_edit_paste , text_edit_copy , text_edit_cut ,
  text_undo , text_redo , text_insert_line , text_insert_line_up ,
  text_insert_line_down , text_mode_insert , gui_widget_next , gui_widget_prev ,
  gui_menu_next , gui_menu_prev , gui_toolbar_open , gui_toolbar_next ,
  gui_toolbar_prev , gui_activate , gui_activate_next , gui_cancel
}
 GUI event type. More...
 
enum class  gui_event_variant {
  gui_event_variant::other , gui_event_variant::mouse , gui_event_variant::keyboard , gui_event_variant::keyboard_target ,
  gui_event_variant::grapheme , gui_event_variant::rectangle , gui_event_variant::clipboard_data
}
 A granular gui event type. More...
 
enum class  border_side { on , inside , outside }
 The side where the border is drawn. More...
 
enum class  widget_mode {
  widget_mode::collapse , widget_mode::invisible , widget_mode::disabled , widget_mode::display ,
  widget_mode::select , widget_mode::partial , widget_mode::enabled
}
 The mode that the widget is operating at. More...
 
enum class  widget_state { off , on , other }
 
enum class  grid_state : uint8_t { none = 0 , need_layout = 1 , need_constrain = 2 }
 
enum class  style_sheet_value_mask {
  pixels = 0b0000'0001 , dips = 0b0000'0010 , em_quads = 0b0000'0100 , color = 0b0000'1000 ,
  font_family_id = 0b0001'0000 , font_weight = 0b0010'0000 , font_style = 0b0100'0000 , length = pixels | dips | em_quads
}
 
enum class  style_sheet_declaration_name {
  background_color , border_bottom_left_radius , border_bottom_right_radius , border_color ,
  border_top_left_radius , border_top_right_radius , border_width , caret_primary_color ,
  caret_secondary_color , caret_overwrite_color , caret_compose_color , fill_color ,
  font_color , font_family , font_size , font_style ,
  font_weight , height , margin_bottom , margin_left ,
  margin_right , margin_top , selection_color , width
}
 
enum class  theme_state : uint8_t {
  disabled = 0b00'0'0'00 , enabled = 0b00'0'0'01 , hover = 0b00'0'0'10 , active = 0b00'0'0'11 ,
  no_focus = 0b00'0'0'00 , focus = 0b00'0'1'00 , off = 0b00'0'0'00 , on = 0b00'1'0'00 ,
  layer_0 = 0b00'0'0'00 , layer_1 = 0b01'0'0'00 , layer_2 = 0b10'0'0'00 , layer_3 = 0b11'0'0'00
}
 
enum class  theme_state_mask : uint8_t { mouse = 0b00'0'0'11 , focus = 0b00'0'1'00 , value = 0b00'1'0'00 , layers = 0b11'0'0'00 }
 
enum class  unicode_bidi_class : uint8_t {
  ON = 0 , L = 1 , R = 2 , BN = 3 ,
  S = 4 , B = 5 , WS = 6 , ET = 7 ,
  ES = 8 , CS = 9 , EN = 10 , NSM = 11 ,
  AN = 12 , AL = 13 , LRE = 14 , RLE = 15 ,
  PDF = 16 , LRO = 17 , RLO = 18 , LRI = 19 ,
  RLI = 20 , FSI = 21 , PDI = 22
}
 Bidirectional class Unicode Standard Annex #9: https://unicode.org/reports/tr9/. More...
 
enum class  unicode_bidi_paired_bracket_type : uint8_t { n = 0 , o = 1 , c = 2 }
 
enum class  unicode_decomposition_type : uint8_t {
  canonical = 0 , noBreak = 1 , compat = 2 , super = 3 ,
  fraction = 4 , sub = 5 , font = 6 , circle = 7 ,
  wide = 8 , vertical = 9 , square = 10 , isolated = 11 ,
  _final = 12 , initial = 13 , medial = 14 , small = 15 ,
  narrow = 16
}
 The decomposition type determines if a code-point should be decomposed canonically or for a compatibility. More...
 
enum class  unicode_east_asian_width : uint8_t {
  N = 0 , Na = 1 , A = 2 , W = 3 ,
  H = 4 , F = 5
}
 
enum class  unicode_general_category : uint8_t {
  Cn = 0 , Cc = 1 , Cf = 2 , Co = 3 ,
  Cs = 4 , Ll = 5 , Lm = 6 , Lo = 7 ,
  Lt = 8 , Lu = 9 , Mc = 10 , Me = 11 ,
  Mn = 12 , Nd = 13 , Nl = 14 , No = 15 ,
  Pc = 16 , Pd = 17 , Pe = 18 , Pf = 19 ,
  Pi = 20 , Po = 21 , Ps = 22 , Sc = 23 ,
  Sk = 24 , Sm = 25 , So = 26 , Zl = 27 ,
  Zp = 28 , Zs = 29
}
 
enum class  unicode_grapheme_cluster_break : uint8_t {
  Other = 0 , Control = 1 , LF = 2 , CR = 3 ,
  Extended_Pictographic = 4 , Extend = 5 , Prepend = 6 , SpacingMark = 7 ,
  L = 8 , V = 9 , T = 10 , ZWJ = 11 ,
  LV = 12 , LVT = 13 , Regional_Indicator = 14
}
 
enum class  unicode_lexical_class : uint8_t {
  other = 0 , id_continue = 1 , id_start = 2 , syntax = 3 ,
  white_space = 4
}
 
enum class  unicode_line_break_class : uint8_t {
  XX = 0 , CM = 1 , BA = 2 , LF = 3 ,
  BK = 4 , CR = 5 , SP = 6 , EX = 7 ,
  QU = 8 , AL = 9 , PR = 10 , PO = 11 ,
  OP = 12 , CP = 13 , IS = 14 , HY = 15 ,
  SY = 16 , NU = 17 , CL = 18 , NL = 19 ,
  GL = 20 , AI = 21 , BB = 22 , HL = 23 ,
  SA = 24 , JL = 25 , JV = 26 , JT = 27 ,
  NS = 28 , ZW = 29 , ZWJ = 30 , B2 = 31 ,
  IN = 32 , WJ = 33 , ID = 34 , EB = 35 ,
  CJ = 36 , H2 = 37 , H3 = 38 , SG = 39 ,
  CB = 40 , RI = 41 , EM = 42
}
 Unicode line break class. More...
 
enum class  unicode_script : uint16_t {
  Adlam = 166 , Ahom = 338 , Anatolian_Hieroglyphs = 80 , Arabic = 160 ,
  Armenian = 230 , Avestan = 134 , Balinese = 360 , Bamum = 435 ,
  Bassa_Vah = 259 , Batak = 365 , Bengali = 325 , Bhaiksuki = 334 ,
  Bopomofo = 285 , Brahmi = 300 , Braille = 570 , Buginese = 367 ,
  Buhid = 372 , Canadian_Aboriginal = 440 , Carian = 201 , Caucasian_Albanian = 239 ,
  Chakma = 349 , Cham = 358 , Cherokee = 445 , Chorasmian = 109 ,
  Common = 994 , Coptic = 204 , Cuneiform = 20 , Cypriot = 403 ,
  Cypro_Minoan = 402 , Cyrillic = 220 , Deseret = 250 , Devanagari = 315 ,
  Dives_Akuru = 342 , Dogra = 328 , Duployan = 755 , Egyptian_Hieroglyphs = 50 ,
  Elbasan = 226 , Elymaic = 128 , Ethiopic = 430 , Georgian = 240 ,
  Glagolitic = 225 , Gothic = 206 , Grantha = 343 , Greek = 200 ,
  Gujarati = 320 , Gunjala_Gondi = 312 , Gurmukhi = 310 , Han = 500 ,
  Hangul = 286 , Hanifi_Rohingya = 167 , Hanunoo = 371 , Hatran = 127 ,
  Hebrew = 125 , Hiragana = 410 , Imperial_Aramaic = 124 , Inherited = 994 ,
  Inscriptional_Pahlavi = 131 , Inscriptional_Parthian = 130 , Javanese = 361 , Kaithi = 317 ,
  Kannada = 345 , Katakana = 411 , Kawi = 368 , Kayah_Li = 357 ,
  Kharoshthi = 305 , Khitan_Small_Script = 288 , Khmer = 355 , Khojki = 322 ,
  Khudawadi = 318 , Lao = 356 , Latin = 215 , Lepcha = 335 ,
  Limbu = 336 , Linear_A = 400 , Linear_B = 401 , Lisu = 399 ,
  Lycian = 202 , Lydian = 116 , Mahajani = 314 , Makasar = 366 ,
  Malayalam = 347 , Mandaic = 140 , Manichaean = 139 , Marchen = 332 ,
  Masaram_Gondi = 313 , Medefaidrin = 265 , Meetei_Mayek = 337 , Mende_Kikakui = 438 ,
  Meroitic_Cursive = 101 , Meroitic_Hieroglyphs = 100 , Miao = 282 , Modi = 324 ,
  Mongolian = 145 , Mro = 264 , Multani = 323 , Myanmar = 350 ,
  Nabataean = 159 , Nag_Mundari = 295 , Nandinagari = 311 , New_Tai_Lue = 354 ,
  Newa = 333 , Nko = 165 , Nushu = 499 , Nyiakeng_Puachue_Hmong = 451 ,
  Ogham = 212 , Ol_Chiki = 261 , Old_Hungarian = 176 , Old_Italic = 210 ,
  Old_North_Arabian = 106 , Old_Permic = 227 , Old_Persian = 30 , Old_Sogdian = 142 ,
  Old_South_Arabian = 105 , Old_Turkic = 175 , Old_Uyghur = 143 , Oriya = 327 ,
  Osage = 219 , Osmanya = 260 , Pahawh_Hmong = 450 , Palmyrene = 126 ,
  Pau_Cin_Hau = 263 , Phags_Pa = 331 , Phoenician = 115 , Psalter_Pahlavi = 132 ,
  Rejang = 363 , Runic = 211 , Samaritan = 123 , Saurashtra = 344 ,
  Sharada = 319 , Shavian = 281 , Siddham = 302 , SignWriting = 95 ,
  Sinhala = 348 , Sogdian = 141 , Sora_Sompeng = 398 , Soyombo = 329 ,
  Sundanese = 362 , Syloti_Nagri = 316 , Syriac = 135 , Tagalog = 370 ,
  Tagbanwa = 373 , Tai_Le = 353 , Tai_Tham = 351 , Tai_Viet = 359 ,
  Takri = 321 , Tamil = 346 , Tangsa = 520 , Tangut = 520 ,
  Telugu = 340 , Thaana = 170 , Thai = 352 , Tibetan = 330 ,
  Tifinagh = 120 , Tirhuta = 326 , Toto = 294 , Ugaritic = 40 ,
  Vai = 470 , Vithkuqi = 228 , Wancho = 283 , Warang_Citi = 262 ,
  Yezidi = 192 , Yi = 460 , Zanabazar_Square = 339 , Zzzz = 0
}
 
enum class  unicode_sentence_break_property : uint8_t {
  Other = 0 , Sp = 1 , LF = 2 , CR = 3 ,
  STerm = 4 , Close = 5 , SContinue = 6 , ATerm = 7 ,
  Numeric = 8 , Upper = 9 , Lower = 10 , Sep = 11 ,
  Format = 12 , OLetter = 13 , Extend = 14
}
 
enum class  unicode_word_break_property : uint8_t {
  Other = 0 , LF = 1 , Newline = 2 , CR = 3 ,
  WSegSpace = 4 , Double_Quote = 5 , Single_Quote = 6 , MidNum = 7 ,
  MidNumLet = 8 , Numeric = 9 , MidLetter = 10 , ALetter = 11 ,
  ExtendNumLet = 12 , Format = 13 , Extend = 14 , Hebrew_Letter = 15 ,
  ZWJ = 16 , Katakana = 17 , Regional_Indicator = 18
}
 
enum class  plurality_value : uint8_t {
  zero = 0 , one = 1 , two = 2 , few = 3 ,
  many = 4 , other = 5
}
 The plurality value of a cardinal or ordinal number. More...
 
enum class  plurality_mask : uint8_t {
  zero = 1 << to_underlying(plurality_value::zero) , one = 1 << to_underlying(plurality_value::one) , two = 1 << to_underlying(plurality_value::two) , few = 1 << to_underlying(plurality_value::few) ,
  many = 1 << to_underlying(plurality_value::many) , other = 1 << to_underlying(plurality_value::other)
}
 A mask of plurality values that this language supports. More...
 

Functions

char32_t random_char () noexcept
 
constexpr std::u32string to_u32string (std::u32string_view rhs) noexcept
 Identity conversion from UTF-32 to UTF-32.
 
constexpr std::u32string to_u32string (std::u16string_view rhs) noexcept
 Conversion from UTF-16 to UTF-32.
 
constexpr std::u32string to_u32string (std::u8string_view rhs) noexcept
 Conversion from UTF-8 to UTF-32.
 
constexpr std::u32string to_u32string (std::wstring_view rhs) noexcept
 Conversion from wide-string (UTF-16/32) to UTF-32.
 
constexpr std::u32string to_u32string (std::string_view rhs) noexcept
 Conversion from UTF-8 to UTF-32.
 
constexpr std::u16string to_u16string (std::u32string_view rhs) noexcept
 Conversion from UTF-32 to UTF-16.
 
constexpr std::u16string to_u16string (std::u16string_view rhs) noexcept
 Identity conversion from UTF-16 to UTF-16.
 
constexpr std::u16string to_u16string (std::u8string_view rhs) noexcept
 Conversion from UTF-8 to UTF-16.
 
constexpr std::u16string to_u16string (std::wstring_view rhs) noexcept
 Conversion from wide-string (UTF-16/32) to UTF-16.
 
constexpr std::u16string to_u16string (std::string_view rhs) noexcept
 Conversion from UTF-8 to UTF-16.
 
constexpr std::u8string to_u8string (std::u32string_view rhs) noexcept
 Conversion from UTF-32 to UTF-8.
 
constexpr std::u8string to_u8string (std::u16string_view rhs) noexcept
 Conversion from UTF-16 to UTF-8.
 
constexpr std::u8string to_u8string (std::u8string_view rhs) noexcept
 Identity conversion from UTF-8 to UTF-8.
 
constexpr std::u8string to_u8string (std::wstring_view rhs) noexcept
 Conversion from wide-string (UTF-16/32) to UTF-8.
 
constexpr std::u8string to_u8string (std::string_view rhs) noexcept
 Conversion from UTF-8 to UTF-8.
 
constexpr std::wstring to_wstring (std::u32string_view rhs) noexcept
 Conversion from UTF-32 to wide-string (UTF-16/32).
 
constexpr std::wstring to_wstring (std::u16string_view rhs) noexcept
 Conversion from UTF-16 to wide-string (UTF-16/32).
 
constexpr std::wstring to_wstring (std::u8string_view rhs) noexcept
 Conversion from UTF-8 to wide-string (UTF-16/32).
 
constexpr std::wstring to_wstring (std::wstring_view rhs) noexcept
 Identity conversion from wide-string (UTF-16/32) to wide-string (UTF-16/32).
 
constexpr std::wstring to_wstring (std::string_view rhs) noexcept
 Conversion from UTF-8 to wide-string (UTF-16/32).
 
constexpr std::string to_string (std::u32string_view rhs) noexcept
 Conversion from UTF-32 to UTF-8.
 
constexpr std::string to_string (std::u16string_view rhs) noexcept
 Conversion from UTF-16 to UTF-8.
 
constexpr std::string to_string (std::u8string_view rhs) noexcept
 Identity conversion from UTF-8 to UTF-8.
 
constexpr std::string to_string (std::wstring_view rhs) noexcept
 Conversion from wide-string (UTF-16/32) to UTF-8.
 
constexpr std::string to_string (std::string_view rhs) noexcept
 Conversion from UTF-8 to UTF-8.
 
constexpr matrix3 color_primaries_to_RGBtoXYZ (float wx, float wy, float rx, float ry, float gx, float gy, float bx, float by) noexcept
 Create a color space conversion matrix.
 
float Rec2100_linear_to_gamma (float L) noexcept
 Rec.2100 linear to gamma transfer function.
 
float Rec2100_gamma_to_linear (float N) noexcept
 Rec.2100 gamma to linear transfer function.
 
float sRGB_linear_to_gamma (float u) noexcept
 sRGB linear to gamma transfer function.
 
float sRGB_gamma_to_linear (float u) noexcept
 sRGB gamma to linear transfer function.
 
uint8_t sRGB_linear16_to_gamma8 (float16 u) noexcept
 sRGB linear float-16 to gamma transfer function.
 
float16 sRGB_gamma8_to_linear16 (uint8_t u) noexcept
 sRGB gamma to linear float-16 transfer function.
 
color color_from_sRGB (std::floating_point auto r, std::floating_point auto g, std::floating_point auto b, std::floating_point auto a) noexcept
 Convert gama corrected sRGB color to the linear color.
 
color color_from_sRGB (std::integral auto r, std::integral auto g, std::integral auto b, std::integral auto a) noexcept
 Convert gama corrected sRGB color to the linear color.
 
color color_from_sRGB (std::string_view str)
 
constexpr global_state_type operator| (global_state_type lhs, global_state_type rhs) noexcept
 
constexpr global_state_type operator& (global_state_type lhs, global_state_type rhs) noexcept
 
constexpr global_state_type operator~ (global_state_type rhs) noexcept
 
constexpr bool to_bool (global_state_type rhs) noexcept
 
constexpr bool is_system_running (global_state_type rhs) noexcept
 
constexpr bool is_system_shutting_down (global_state_type rhs) noexcept
 
bool is_system_running () noexcept
 Check if the HikoGUI system is running.
 
bool is_system_shutting_down () noexcept
 Check if the HikoGUI system is being shut down.
 
void set_log_level (global_state_type log_level) noexcept
 Set the logging level.
 
bool global_state_disable (global_state_type subsystem, std::memory_order order=std::memory_order::seq_cst) noexcept
 Disable a subsystem.
 
bool global_state_enable (global_state_type subsystem, std::memory_order order=std::memory_order::seq_cst) noexcept
 Enable a subsystem.
 
template<typename T >
requires (is_atomic_v<T>)
T::value_type start_subsystem (T &check_variable, typename T::value_type off_value, typename T::value_type(*init_function)(), void(*deinit_function)())
 Start a sub-system.
 
bool start_subsystem (global_state_type state_bit, bool(*init_function)(), void(*deinit_function)())
 Start a sub-system.
 
template<typename T >
requires (is_atomic_v<T>)
T::value_type start_subsystem_or_terminate (T &check_variable, typename T::value_type off_value, typename T::value_type(*init_function)(), void(*deinit_function)())
 Start a sub-system.
 
void stop_subsystem (void(*deinit_function)())
 Stop a sub-system.
 
void start_system () noexcept
 Start the system.
 
void shutdown_system () noexcept
 Shutdown the system.
 
thread_id current_thread_id () noexcept
 Get the current thread id.
 
void set_thread_name (std::string_view name) noexcept
 Set the name of the current thread.
 
std::string get_thread_name (thread_id id) noexcept
 Get the thread name of a thread id.
 
std::vector< bool > process_affinity_mask ()
 Get the current process CPU affinity mask.
 
std::vector< bool > set_thread_affinity_mask (std::vector< bool > const &mask)
 Set the current thread CPU affinity mask.
 
std::vector< bool > set_thread_affinity (std::size_t cpu_id)
 Set the current thread CPU affinity to a single CPU.
 
std::size_t advance_thread_affinity (std::size_t &cpu) noexcept
 Advance thread affinity to the next CPU.
 
std::size_t current_cpu_id () noexcept
 Get the current CPU id.
 
template<typename T , typename Op >
void dsp_visit (std::span< T > r, std::span< T const > a, std::span< T const > b, Op op) noexcept
 
template<typename T , typename Op >
void dsp_visit (std::span< T > r, std::span< T const > a, T b, Op op) noexcept
 
template<typename T , typename Op >
void dsp_visit (std::span< float > r, float a, Op op) noexcept
 
void dsp_add (dsp_argument auto... args) noexcept
 
void dsp_sub (dsp-argument auto... args) noexcept
 
void dsp_mul (dsp-argument auto... args) noexcept
 
constexpr access_mode operator| (access_mode const &lhs, access_mode const &rhs) noexcept
 
constexpr access_mode operator& (access_mode const &lhs, access_mode const &rhs) noexcept
 
constexpr bool to_bool (access_mode const &rhs) noexcept
 
generator< std::filesystem::path > glob (glob_pattern pattern)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (std::string_view pattern)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (std::string pattern)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (char const *pattern)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (std::filesystem::path pattern)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (path_location location, std::filesystem::path ref)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (path_location location, std::string_view ref)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (path_location location, std::string ref)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > glob (path_location location, char const *ref)
 Find paths on the filesystem that match the glob pattern.
 
generator< std::filesystem::path > get_paths (path_location location)
 Get a set of paths.
 
std::optional< std::filesystem::path > find_path (path_location location, std::filesystem::path const &ref) noexcept
 Find a path.
 
std::filesystem::path get_path (path_location location)
 Get the single and only path.
 
generator< font_stylealternatives (font_style const &start) noexcept
 
std::span< std::byte const > otype_cmap_find (std::span< std::byte const > bytes, uint16_t platform_id, uint16_t platform_specific_id)
 
font_char_map otype_cmap_parse_map_4 (std::span< std::byte const > over_sized_bytes)
 
font_char_map otype_cmap_parse_map_6 (std::span< std::byte const > over_sized_bytes)
 
font_char_map otype_cmap_parse_map_12 (std::span< std::byte const > over_sized_bytes)
 
font_char_map otype_cmap_parse_map (std::span< std::byte const > bytes)
 
font_char_map otype_cmap_parse (std::span< std::byte const > bytes)
 
graphic_path otype_glyf_get_path (std::span< std::byte const > bytes, float em_scale)
 Get the graphic-path of a simple glyph.
 
generator< otype_glyf_componentotype_glyf_get_compound (std::span< std::byte const > bytes, float em_scale)
 Get the components of a compound glyph.
 
bool otype_glyf_is_compound (std::span< std::byte const > bytes)
 Check if this glyph is a compound or simple glyph.
 
aarectangle otype_glyf_get_bounding_box (std::span< std::byte const > bytes, float em_scale)
 Get the bounding box of a simple glyph.
 
auto otype_head_parse (std::span< std::byte const > bytes)
 
auto otype_hhea_parse (std::span< std::byte const > bytes, float em_scale)
 
auto otype_hmtx_get (std::span< std::byte const > bytes, hi::glyph_id glyph_id, uint16_t num_horizontal_metrics, float em_scale)
 
std::optional< float > otype_kern_sub0_find (size_t &offset, std::span< std::byte const > bytes, glyph_id first_glyph_id, glyph_id second_glyph_id, float em_scale)
 
vector2 otype_kern_v0_find (std::span< std::byte const > bytes, glyph_id first_glyph_id, glyph_id second_glyph_id, float em_scale)
 'kern' version 0 find.
 
vector2 otype_kern_v1_find (std::span< std::byte const > bytes, glyph_id first_glyph_id, glyph_id second_glyph_id, float em_scale)
 
vector2 otype_kern_find (std::span< std::byte const > bytes, glyph_id first_glyph_id, glyph_id second_glyph_id, float em_scale)
 
std::pair< size_t, size_t > otype_loca16_get (std::span< std::byte const > bytes, hi::glyph_id glyph_id)
 
std::pair< size_t, size_t > otype_loca32_get (std::span< std::byte const > bytes, hi::glyph_id glyph_id)
 
std::pair< size_t, size_t > otype_loca_get (std::span< std::byte const > loca_bytes, hi::glyph_id glyph_id, bool loca_is_offset32)
 
std::span< std::byte const > otype_loca_get (std::span< std::byte const > loca_bytes, std::span< std::byte const > glyf_bytes, hi::glyph_id glyph_id, bool loca_is_offset32)
 
auto otype_maxp_parse (std::span< std::byte const > bytes)
 
std::optional< std::stringotype_name_search (std::span< std::byte const > bytes, uint16_t name_id, language_tag language=language_tag{"en"})
 Get a name from the name table.
 
auto otype_name_get_family (std::span< std::byte const > bytes)
 
auto otype_parse_os2 (std::span< std::byte const > bytes, float em_scale)
 
template<fixed_string Name>
std::span< std::byte const > otype_sfnt_search (std::span< std::byte const > bytes)
 
std::optional< std::stringotype_get_string (std::span< std::byte const > bytes, uint16_t platform_id, uint16_t platform_specific_id)
 
constexpr axis operator& (axis const &lhs, axis const &rhs) noexcept
 AND the axis.
 
constexpr axis operator| (axis const &lhs, axis const &rhs) noexcept
 OR the axis.
 
constexpr bool to_bool (axis const &rhs) noexcept
 Check if any of the axis are set.
 
aarectangle fit (aarectangle const &bounds, aarectangle const &rectangle) noexcept
 Make a rectangle fit inside bounds.
 
std::string_view to_string (gui_event_type rhs) noexcept
 Convert a GUI event type to a string.
 
constexpr gui_event_type to_gui_event_type (std::string_view name) noexcept
 Convert a name to a GUI event type.
 
constexpr gui_event_variant to_gui_event_variant (gui_event_type type) noexcept
 Convert a gui event type, to an gui event variant.
 
widgetget_if (widget *start, widget_id id, bool include_invisible) noexcept
 
widgetget (widget &start, widget_id id, bool include_invisible)
 
template<std::invocable< widget & > F>
void apply (widget &start, bool include_invisible, F const &f)
 
template<std::invocable< widget & > F>
void apply (widget &start, F const &f)
 
template<typename T , typename Allocator = std::allocator<std::remove_const_t<T>>>
 pixmap (pixmap_span< T > const &other, Allocator allocator=std::allocator{}) -> pixmap< std::remove_const_t< T > >
 
template<typename T , typename Allocator >
 pixmap_span (pixmap< T, Allocator > const &other) -> pixmap_span< T const >
 
template<typename T , typename Allocator >
 pixmap_span (pixmap< T, Allocator > &other) -> pixmap_span< T >
 
std::pair< std::string_view, language_tag > get_translation (std::string_view msgid, long long n=0, std::vector< language_tag > const &languages=os_settings::language_tags()) noexcept
 
void add_translation (std::string_view msgid, language_tag language, std::vector< std::string > const &plural_forms) noexcept
 
void add_translation (po_translations const &translations, language_tag const &language) noexcept
 
constexpr grid_state operator& (grid_state const &lhs, grid_state const &rhs) noexcept
 
constexpr grid_state operator| (grid_state const &lhs, grid_state const &rhs) noexcept
 
constexpr grid_state & operator& (grid_state &lhs, grid_state const &rhs) noexcept
 
constexpr grid_state & operator| (grid_state &lhs, grid_state const &rhs) noexcept
 
constexpr bool to_bool (grid_state const &rhs) noexcept
 
template<std::input_iterator It, std::input_iterator ItEnd>
 lean_vector (It first, ItEnd last) -> lean_vector< typename std::iterator_traits< It >::value_type >
 
template<size_t LookaheadCount, typename It , std::sentinel_for< It > ItEnd = std::default_sentinel_t>
auto make_lookahead_iterator (It first, ItEnd last=std::default_sentinel) noexcept
 Create a lookahead_iterator from a forward iterator.
 
template<size_t LookaheadCount, std::ranges::range Range>
auto make_lookahead_iterator (Range const &range) noexcept
 Create a lookahead_iterator from a forward iterator.
 
template<typename It , std::sentinel_for< It > ItEnd>
constexpr std::string token_location (It &it, ItEnd last, std::filesystem::path const &path) noexcept
 Create a location string for error messages.
 
template<char Wildcard = '*'>
constexpr bool pattern_match (std::string_view needle, std::string_view haystack) noexcept
 Patern match.
 
template<typename Functor >
void process_call (Functor &&functor, std::string_view data)
 Call a function in a new process.
 
template<typename Container >
constexpr auto recursive_iterator_begin (Container &rhs) noexcept
 Get a recursive iterator from the begin of a recursive container.
 
template<typename Container >
constexpr auto recursive_iterator_end (Container &rhs) noexcept
 Get a recursive iterator from one beyond the end of a recursive container.
 
template<typename Container >
constexpr auto recursive_iterator_begin (Container const &rhs) noexcept
 Get a recursive iterator from the begin of a recursive container.
 
template<typename Container >
constexpr auto recursive_iterator_end (Container const &rhs) noexcept
 Get a recursive iterator from one beyond the end of a recursive container.
 
template<size_t Index, typename Type >
constexpr decltype(auto) get_data_member (Type &&rhs) noexcept
 
template<typename T >
constexpr auto type_name () noexcept
 
void terminate_handler () noexcept
 The HikoGUI terminate handler.
 
spell_errors check_spelling (gstring text, language_tag language, size_t offset=0) noexcept
 
template<typename It , std::sentinal_for< It > ItEnd>
requires (std::is_same_v<std::iter_value_t<It>, character>)
spell_errors check_spelling (It first, ItEnd last) noexcept
 
template<typename It , std::sentinel_for< It > ItEnd>
requires (std::is_same_v<std::iter_value_t<It>, character>)
void fixup_script (It first, ItEnd last, iso_15924 default_script) noexcept
 Fixup the iso_15924 script in text.
 
template<std::ranges::range R>
requires (std::is_same_v<std::ranges::range_value_t<R>, character>)
void fixup_script (R &str, iso_15924 default_script) noexcept
 
text to_text (gstring_view str, character_attributes default_attributes) noexcept
 
template<character_attribute... Args>
text to_text (gstring_view str, Args const &...args) noexcept
 
text to_text (std::string_view str, unicode_normalize_config config, character_attributes default_attributes) noexcept
 
text to_text (std::string_view str, character_attributes default_attributes) noexcept
 
template<character_attribute... Args>
text to_text (std::string_view str, unicode_normalize_config config, Args const &...args) noexcept
 
template<character_attribute... Args>
text to_text (std::string_view str, Args const &...args) noexcept
 
text to_text_with_markup (gstring_view str, character_attributes default_attributes) noexcept
 
text to_text_with_markup (std::string_view str, character_attributes default_attributes) noexcept
 
template<character_attribute... Attributes>
text to_text_with_markup (gstring_view str, Attributes const &...attributes) noexcept
 
template<character_attribute... Attributes>
text to_text_with_markup (std::string_view str, Attributes const &...attributes) noexcept
 
constexpr gstring to_gstring (text_view str) noexcept
 
constexpr std::string to_string (text_view str) noexcept
 
constexpr std::wstring to_wstring (text_view str) noexcept
 
constexpr std::u32string to_u32string (text_view str) noexcept
 
template<typename It , std::sentinel_for< It > ItEnd>
requires (std::is_same_v<std::iter_value_t<It>, character>)
void set_attributes (It first, ItEnd last, character_attributes attributes) noexcept
 Change the attributes on a piece of text.
 
template<typename It , std::sentinel_for< It > ItEnd, character_attribute... Args>
requires (std::is_same_v<std::iter_value_t<It>, character>)
void set_attributes (It first, ItEnd last, Args const &...args) noexcept
 Change the attributes on a piece of text.
 
template<std::ranges::range R>
requires (std::is_same_v<std::ranges::range_value_t<R>, character>)
void set_attributes (R &str, character_attributes attributes) noexcept
 Change the attributes on text.
 
template<std::ranges::range R, character_attribute... Args>
requires (std::is_same_v<std::ranges::range_value_t<R>, character>)
void set_attributes (R &str, Args const &...args) noexcept
 Change the attributes on text.
 
text to_text (std::integral auto const &value) noexcept
 Convert integer to string.
 
text to_text (std::floating_point auto const &value) noexcept
 Convert floating point to string.
 
template<std::integral T>
from_text (text_view str, int base=10)
 Convert a string to an integer.
 
template<std::floating_point T>
from_text (text_view str)
 Convert a string to an floating point.
 
constexpr style_sheet_value_mask operator| (style_sheet_value_mask const &lhs, style_sheet_value_mask const &rhs) noexcept
 
constexpr style_sheet_value_mask operator& (style_sheet_value_mask const &lhs, style_sheet_value_mask const &rhs) noexcept
 
constexpr bool to_bool (style_sheet_value_mask const &rhs) noexcept
 
template<typename It , std::sentinel_for< It > ItEnd>
constexpr style_sheet parse_style_sheet (It first, ItEnd last, std::filesystem::path const &path)
 
constexpr style_sheet parse_style_sheet (std::string_view str, std::filesystem::path const &path)
 
style_sheet parse_style_sheet (std::filesystem::path const &path)
 
void register_theme_directory (std::filesystem::path const &path) noexcept
 
std::vector< std::stringtheme_names () noexcept
 Get a list of theme names.
 
void load_theme (std::string name, theme_mode mode) noexcept
 Find a theme matching the name and mode.
 
std::vector< std::stringtheme_model_keys () noexcept
 Get a list of all the keys registered at program startup.
 
theme_model_basetheme_model_by_key (std::string const &key)
 Get a theme-model by key.
 
constexpr theme_state & operator++ (theme_state &rhs) noexcept
 
constexpr theme_state operator| (theme_state const &lhs, theme_state const &rhs) noexcept
 
constexpr theme_state & operator|= (theme_state &lhs, theme_state const &rhs) noexcept
 
constexpr theme_state_mask operator| (theme_state_mask const &lhs, theme_state_mask const &rhs) noexcept
 
constexpr theme_state_mask & operator|= (theme_state_mask &lhs, theme_state_mask const &rhs) noexcept
 
constexpr theme_state operator& (theme_state const &lhs, theme_state_mask const &rhs) noexcept
 
constexpr bool is_isolate_starter (unicode_bidi_class const &rhs) noexcept
 
constexpr bool is_isolate_formatter (unicode_bidi_class const &rhs) noexcept
 
constexpr bool is_NI (unicode_bidi_class const &rhs) noexcept
 
constexpr bool is_control (unicode_bidi_class const &rhs) noexcept
 
constexpr unicode_bidi_class unicode_bidi_class_from_string (std::string_view str) noexcept
 
constexpr unicode_bidi_class ucd_get_bidi_class (char32_t code_point) noexcept
 
constexpr char32_t ucd_get_bidi_mirroring_glyph (char32_t code_point) noexcept
 Get the bidi-mirroring-glyph for a code-point.
 
constexpr unicode_bidi_paired_bracket_type ucd_get_bidi_paired_bracket_type (char32_t code_point) noexcept
 
constexpr uint8_t ucd_get_canonical_combining_class (char32_t code_point) noexcept
 
constexpr std::optional< char32_t > ucd_get_composition (char32_t cp1, char32_t cp2) noexcept
 Get the composition info of two code-points.
 
constexpr ucd_decomposition_info ucd_get_decomposition (char32_t code_point) noexcept
 Get the decomposition info of a code-point.
 
constexpr unicode_east_asian_width ucd_get_east_asian_width (char32_t code_point) noexcept
 
constexpr bool is_LC (unicode_general_category const &rhs) noexcept
 
constexpr bool is_L (unicode_general_category const &rhs) noexcept
 
constexpr bool is_M (unicode_general_category const &rhs) noexcept
 
constexpr bool is_Mn_or_Mc (unicode_general_category const &rhs) noexcept
 
constexpr bool is_N (unicode_general_category const &rhs) noexcept
 
constexpr bool is_P (unicode_general_category const &rhs) noexcept
 
constexpr bool is_S (unicode_general_category const &rhs) noexcept
 
constexpr bool is_Z (unicode_general_category const &rhs) noexcept
 
constexpr bool is_Zp_or_Zl (unicode_general_category const &rhs) noexcept
 
constexpr bool is_C (unicode_general_category const &rhs) noexcept
 
constexpr bool is_visible (unicode_general_category const &rhs) noexcept
 
constexpr bool is_noncharacter (char32_t rhs) noexcept
 
constexpr unicode_general_category ucd_get_general_category (char32_t code_point) noexcept
 
constexpr unicode_grapheme_cluster_break ucd_get_grapheme_cluster_break (char32_t code_point) noexcept
 
constexpr unicode_lexical_class ucd_get_lexical_class (char32_t code_point) noexcept
 
constexpr unicode_line_break_class ucd_get_line_break_class (char32_t code_point) noexcept
 
constexpr bool operator== (iso_15924 const &lhs, unicode_script const &rhs) noexcept
 
constexpr iso_15924 ucd_get_script (char32_t code_point) noexcept
 
constexpr unicode_sentence_break_property ucd_get_sentence_break_property (char32_t code_point) noexcept
 
constexpr unicode_word_break_property ucd_get_word_break_property (char32_t code_point) noexcept
 
template<typename It , typename ItEnd >
constexpr std::vector< unicode_break_opportunity > unicode_grapheme_break (It first, ItEnd last) noexcept
 
constexpr plurality_mask operator| (plurality_mask const &lhs, plurality_mask const &rhs) noexcept
 Or plurality masks together.
 
constexpr plurality cardinal_plural (language_tag language, std::integral auto n) noexcept
 Get plural information of a number in a given language.
 
constexpr size_t cardinal_plural (language_tag language, std::integral auto n, size_t size) noexcept
 Get an index into message plural-variants for a given number.
 
constexpr bool bound_check (std::unsigned_integral auto index, std::unsigned_integral auto upper) noexcept
 Check if an unsigned index is less than the bound.
 
constexpr bool bound_check (std::unsigned_integral auto index, std::signed_integral auto upper) noexcept
 
constexpr bool bound_check (std::integral auto index, std::integral auto lower, std::integral auto upper) noexcept
 Check if an index is between the lower (inclusive) and upper (exclusive).
 
constexpr bool bound_check (std::integral auto index, bound_check_range_helper auto &&range) noexcept
 Check if an index is within a range.
 
template<std::integral T>
std::string to_string (T const &value) noexcept
 Convert integer to string.
 
template<std::integral T>
from_string (std::string_view str, int base=10)
 Convert a string to an integer.
 
template<std::floating_point T>
from_string (std::string_view str)
 Convert a string to an floating point.
 
template<arithmetic Lhs, arithmetic Rhs>
constexpr auto three_way_compare (Lhs const &lhs, Rhs const &rhs) noexcept
 Safely compare two arithmetic values to each other.
 
void prepare_debug_break () noexcept
 Prepare for breaking in the debugger.
 
std::string get_last_error_message () noexcept
 Get the OS error message from the last error received on this thread.
 
std::chrono::time_zone const & cached_current_zone () noexcept
 Cached current time zone.
 
template<typename Tag , typename T1 , typename Ratio1 , typename T2 , typename Ratio2 >
constexpr bool operator== (unit< Tag, T1, Ratio1 > const &lhs, unit< Tag, T2, Ratio2 > const &rhs) noexcept
 
template<typename Tag , typename T1 , typename Ratio1 , typename T2 , typename Ratio2 >
constexpr auto operator<=> (unit< Tag, T1, Ratio1 > const &lhs, unit< Tag, T2, Ratio2 > const &rhs) noexcept
 
template<typename Tag , typename T1 , typename Ratio1 , typename T2 , typename Ratio2 >
constexpr auto operator+ (unit< Tag, T1, Ratio1 > const &lhs, unit< Tag, T2, Ratio2 > const &rhs) noexcept
 
template<typename Tag , typename T1 , typename Ratio1 , typename T2 , typename Ratio2 >
constexpr auto operator- (unit< Tag, T1, Ratio1 > const &lhs, unit< Tag, T2, Ratio2 > const &rhs) noexcept
 
template<typename Tag , typename T1 , typename Ratio1 , typename T2 , typename Ratio2 >
constexpr auto operator/ (unit< Tag, T1, Ratio1 > const &lhs, unit< Tag, T2, Ratio2 > const &rhs) noexcept
 
constexpr std::size_t operator""_uz (unsigned long long lhs) noexcept
 
constexpr std::size_t operator""_zu (unsigned long long lhs) noexcept
 
constexpr std::ptrdiff_t operator""_z (unsigned long long lhs) noexcept
 
template<typename T , typename U >
bool compare_store (T &lhs, U &&rhs) noexcept
 Compare then store if there was a change.
 
template<typename T , typename U >
bool compare_store (std::atomic< T > &lhs, U &&rhs) noexcept
 Compare then store if there was a change.
 
template<class T , class U >
constexpr auto && forward_like (U &&x) noexcept
 
template<std::integral T>
constexpr bool is_integral_value (T const &rhs) noexcept
 Check if a value is integral.
 
std::wstring win32_string_to_wstring (std::string_view s)
 Convert a UTF-8 std::string to a win32-API compatible std::wstring.
 
std::string win32_wstring_to_string (std::wstring_view s)
 Convert a win32-API compatible std::wstring to a UTF-8 std::string.
 
std::shared_ptr< checkbox_delegatemake_default_checkbox_delegate (auto &&value, auto &&...args) noexcept
 Make a shared pointer to a toggle-button delegate.
 
std::shared_ptr< radio_button_delegatemake_default_radio_button_delegate (auto &&value, auto &&...args) noexcept
 Make a shared pointer to a toggle-button delegate.
 
std::shared_ptr< selection_delegatemake_default_selection_delegate (auto &&value, auto &&options, auto &&...off_value) noexcept
 Create a shared pointer to a default selection delegate.
 
std::shared_ptr< tab_delegatemake_default_tab_delegate (auto &&value) noexcept
 Create a shared pointer to a default tab delegate.
 
std::shared_ptr< text_delegatemake_default_text_delegate (auto &&value) noexcept
 Create a shared pointer to a default text delegate.
 
std::shared_ptr< text_field_delegatemake_default_text_field_delegate (auto &&value) noexcept
 Create a shared pointer to a default text delegate.
 
std::shared_ptr< toggle_delegatemake_default_toggle_delegate (auto &&value, auto &&...args) noexcept
 Make a shared pointer to a toggle-button delegate.
 

Variables

template<fixed_string Tag>
auto named_color = detail::named_color_type<Tag>{}
 
template<>
auto named_color<"black"> = detail::named_color_type<"black">{color{0, 0, 0}}
 
template<>
auto named_color<"silver"> = detail::named_color_type<"silver">{color{192, 192, 192}}
 
template<>
auto named_color<"gray"> = detail::named_color_type<"gray">{color{128, 128, 128}}
 
template<>
auto named_color<"white"> = detail::named_color_type<"white">{color{255, 255, 255}}
 
template<>
auto named_color<"maroon"> = detail::named_color_type<"maroon">{color{128, 0, 0}}
 
template<>
auto named_color<"red"> = detail::named_color_type<"red">{color{255, 0, 0}}
 
template<>
auto named_color<"purple"> = detail::named_color_type<"purple">{color{128, 0, 128}}
 
template<>
auto named_color<"fuchsia"> = detail::named_color_type<"fuchsia">{color{255, 0, 255}}
 
template<>
auto named_color<"green"> = detail::named_color_type<"green">{color{0, 128, 0}}
 
template<>
auto named_color<"lime"> = detail::named_color_type<"lime">{color{0, 255, 0}}
 
template<>
auto named_color<"olive"> = detail::named_color_type<"olive">{color{128, 128, 0}}
 
template<>
auto named_color<"yellow"> = detail::named_color_type<"yellow">{color{255, 255, 0}}
 
template<>
auto named_color<"navy"> = detail::named_color_type<"navy">{color{0, 0, 128}}
 
template<>
auto named_color<"blue"> = detail::named_color_type<"blue">{color{0, 0, 255}}
 
template<>
auto named_color<"teal"> = detail::named_color_type<"teal">{color{0, 128, 128}}
 
template<>
auto named_color<"aqua"> = detail::named_color_type<"aqua">{color{0, 255, 255}}
 
template<>
auto named_color<"indigo"> = detail::named_color_type<"indigo">{color{75, 0, 130}}
 
template<>
auto named_color<"orange"> = detail::named_color_type<"orange">{color{255, 165, 0}}
 
template<>
auto named_color<"pink"> = detail::named_color_type<"pink">{color{255, 192, 203}}
 
template<>
auto named_color<"background"> = detail::named_color_type<"background">{color{0, 0, 0}}
 
template<>
auto named_color<"gray1"> = detail::named_color_type<"gray1">{color{26, 26, 26}}
 
template<>
auto named_color<"gray2"> = detail::named_color_type<"gray2">{color{51, 51, 51}}
 
template<>
auto named_color<"gray3"> = detail::named_color_type<"gray3">{color{77, 77, 77}}
 
template<>
auto named_color<"gray4"> = detail::named_color_type<"gray4">{color{102, 102, 102}}
 
template<>
auto named_color<"gray5"> = detail::named_color_type<"gray5">{color{127, 127, 127}}
 
template<>
auto named_color<"gray6"> = detail::named_color_type<"gray6">{color{153, 153, 153}}
 
template<>
auto named_color<"gray7"> = detail::named_color_type<"gray7">{color{179, 179, 179}}
 
template<>
auto named_color<"gray8"> = detail::named_color_type<"gray8">{color{204, 204, 204}}
 
template<>
auto named_color<"gray9"> = detail::named_color_type<"gray9">{color{229, 229, 229}}
 
template<>
auto named_color<"foreground"> = detail::named_color_type<"foreground">{color{255, 255, 255}}
 
template<>
auto named_color<"transparent"> = detail::named_color_type<"transparent">{color{0, 0, 0, 0}}
 
template<>
auto named_color<"accent"> = detail::named_color_type<"accent">{color{0, 0, 255}}
 
constexpr matrix3 Rec2020_to_XYZ = color_primaries_to_RGBtoXYZ(0.3127f, 0.3290f, 0.708f, 0.292f, 0.170f, 0.797f, 0.131f, 0.046f)
 Rec.2020 to XYZ color space conversion matrix.
 
constexpr matrix3 XYZ_to_Rec2020 = ~Rec2020_to_XYZ
 XYZ to Rec.2020 color space conversion matrix.
 
constexpr matrix3 Rec2100_to_XYZ = Rec2020_to_XYZ
 Rec.2100 to XYZ color space conversion matrix.
 
constexpr matrix3 XYZ_to_Rec2100 = XYZ_to_Rec2020
 XYZ to Rec.2100 color space conversion matrix.
 
constexpr matrix3 sRGB_to_XYZ
 Matrix to convert sRGB to XYZ.
 
constexpr matrix3 XYZ_to_sRGB
 Matrix to convert XYZ to sRGB.
 
std::atomic< global_state_typeglobal_state = global_state_type::log_level_default
 The global state of the hikogui framework.
 
constexpr std::size_t maximum_num_cpus = 64
 
constexpr auto font_style_metadata
 
constexpr auto gui_event_type_metadata
 
log log_global
 
template<lexer_config Config>
constexpr auto lexer = detail::lexer<Config>()
 
template<typename T >
constexpr size_t number_of_data_members_v = number_of_data_members<T>::value
 
std::terminate_handler old_terminate_handler
 The old terminate handler.
 
constexpr auto style_sheet_declaration_name_metadata
 
constexpr auto style_sheet_declaration_name_value_mask_metadata
 
template<fixed_string Tag>
auto theme = theme_model<Tag>{}
 A tagged global variable to a theme model for a widget's component.
 
constexpr auto theme_state_size = 64_uz
 
std::atomic< char const * > terminate_message = nullptr
 Message to show when the application is terminated.
 

Detailed Description

The HikoGUI API version 1.

Typedef Documentation

◆ dips

using hi::v1::dips = unit<si_length_tag, double, std::ratio<254, 960'000>::type>

Device Independent Pixels: 1/96 inch.

◆ em_quads

Em-quad: A font's line-height.

◆ inches

using hi::v1::inches = unit<si_length_tag, double, std::ratio<254, 10'000>::type>

Inch: 254 mm.

◆ matrix2

A 2D homogenious transformation matrix.

◆ matrix3

A 3D homogenious transformation matrix.

◆ pixels

using hi::v1::pixels = unit<px_length_tag, double>

A physical pixel on a display.

◆ points

using hi::v1::points = unit<si_length_tag, double, std::ratio<254, 720'000>::type>

Points: 1/72 inch.

◆ ssize_t

Signed size/index into an array.

Enumeration Type Documentation

◆ border_side

enum class hi::v1::border_side
strong

The side where the border is drawn.

Enumerator
on 

The border is drawn on the edge of a quad.

inside 

The border is drawn inside the edge of a quad.

outside 

The border is drawn outside the edge of a quad.

◆ font_style

enum class hi::v1::font_style
strong

The different styles a font-family comes with.

Either normal, italic or oblique. Although technically there is a difference between italic and oblique this difference is small and font-families rarely include both those styles; HikoGUI will treat italic and oblique as the same.

Enumerator
normal 

A font that is normal, non-italic.

italic 

A font that is italic.

oblique 

A font that is oblique.

◆ plurality_mask

enum class hi::v1::plurality_mask : uint8_t
strong

A mask of plurality values that this language supports.

Enumerator
zero 

The number was zero, and this means something in the current language.

one 

The number was one, and this means something in the current language.

two 

The number was two, and this means something in the current language.

few 

The number is part of few, and this means something in the current language.

many 

The number is part of many, and this means something in the current language.

other 

Any other number, every language will have at least this.

◆ plurality_value

enum class hi::v1::plurality_value : uint8_t
strong

The plurality value of a cardinal or ordinal number.

Enumerator
zero 

The number was zero, and this means something in the current language.

one 

The number was one, and this means something in the current language.

two 

The number was two, and this means something in the current language.

few 

The number is part of few, and this means something in the current language.

many 

The number is part of many, and this means something in the current language.

other 

Any other number, every language will have at least this.

◆ unicode_bidi_class

enum class hi::v1::unicode_bidi_class : uint8_t
strong

Bidirectional class Unicode Standard Annex #9: https://unicode.org/reports/tr9/.

◆ unicode_decomposition_type

enum class hi::v1::unicode_decomposition_type : uint8_t
strong

The decomposition type determines if a code-point should be decomposed canonically or for a compatibility.

◆ unicode_line_break_class

enum class hi::v1::unicode_line_break_class : uint8_t
strong

Unicode line break class.

See "AUX14: Unicode line break algorithm" http://unicode.org/reports/tr14/

◆ widget_state

enum class hi::v1::widget_state
strong
Enumerator
off 

The widget in the off-state.

i.e. Radio button or checkbox is not-checked.

on 

The widget is in the on-state.

i.e. Radio button or checkbox is checked.

other 

The widget is in the other-state.

i.e. Checkbox shows a partial match.

Function Documentation

◆ bound_check() [1/3]

constexpr bool hi::v1::bound_check ( std::integral auto index,
bound_check_range_helper auto && range )
constexprnoexcept

Check if an index is within a range.

Parameters
indexThe index to check.
rangeThe range object, such as a vector or array, which has a std::ranges::size().
Returns
true If index natural and below the size of the array.

◆ bound_check() [2/3]

constexpr bool hi::v1::bound_check ( std::integral auto index,
std::integral auto lower,
std::integral auto upper )
constexprnoexcept

Check if an index is between the lower (inclusive) and upper (exclusive).

Note
It is undefined behavior when upper is lower than lower.
Parameters
indexThe index to check.
lowerThe lower bound.
upperThe upper bound.
Returns
true If index is greater or equal to lower bound and index is less than upper bound.

◆ bound_check() [3/3]

constexpr bool hi::v1::bound_check ( std::unsigned_integral auto index,
std::unsigned_integral auto upper )
constexprnoexcept

Check if an unsigned index is less than the bound.

Parameters
indexThe unsigned index to check.
upperThe upper bound.
Returns
true If index is less than the upper bound.

◆ cached_current_zone()

std::chrono::time_zone const & hi::v1::cached_current_zone ( )
inlinenoexcept

Cached current time zone.

std::chrono::current_zone() is really slow, this keeps a cache.

The cached current time zone is not updated when the time zone is modified on the system.

◆ cardinal_plural() [1/2]

constexpr plurality hi::v1::cardinal_plural ( language_tag language,
std::integral auto n )
constexprnoexcept

Get plural information of a number in a given language.

Parameters
languageThe language.
nThe number to know the plurality for.
Returns
plurality information.

◆ cardinal_plural() [2/2]

constexpr size_t hi::v1::cardinal_plural ( language_tag language,
std::integral auto n,
size_t size )
constexprnoexcept

Get an index into message plural-variants for a given number.

Parameters
languageThe language the messages are in.
nThe number to format in the message.
sizeThe number of message plural-variants. Must be larger than 0.
Returns
An index into the plural-variants, if the number of variants is less than plurality suggest then zero is returned.

◆ compare_store() [1/2]

template<typename T , typename U >
bool hi::v1::compare_store ( std::atomic< T > & lhs,
U && rhs )
noexcept

Compare then store if there was a change.

Note
This atomic version does an lhs.exchange(rhs, std::memory_order_relaxed)
Returns
true if a store was executed.

◆ compare_store() [2/2]

template<typename T , typename U >
bool hi::v1::compare_store ( T & lhs,
U && rhs )
noexcept

Compare then store if there was a change.

Returns
true if a store was executed.

◆ fit()

aarectangle hi::v1::fit ( aarectangle const & bounds,
aarectangle const & rectangle )
noexcept

Make a rectangle fit inside bounds.

This algorithm will try to first move the rectangle and resist resizing it.

Parameters
boundsThe bounding box.
rectangleThe rectangle to fit inside the bounds.
Returns
A rectangle that fits inside the bounds

◆ from_string() [1/2]

template<std::floating_point T>
T hi::v1::from_string ( std::string_view str)

Convert a string to an floating point.

This function bypasses std::locale

Template Parameters
TThe integer type.
Parameters
strThe string is an integer.
Returns
The integer converted from a string.

◆ from_string() [2/2]

template<std::integral T>
T hi::v1::from_string ( std::string_view str,
int base = 10 )

Convert a string to an integer.

This function bypasses std::locale

Template Parameters
TThe integer type.
Parameters
strThe string is an integer.
baseThe base radix of the string encoded integer.
Returns
The integer converted from a string.

◆ get_last_error_message()

std::string hi::v1::get_last_error_message ( )
noexcept

Get the OS error message from the last error received on this thread.

◆ is_integral_value()

template<std::integral T>
constexpr bool hi::v1::is_integral_value ( T const & rhs)
constexprnoexcept

Check if a value is integral.

Parameters
rhsA integral value.
Returns
Always true.
Parameters
rhsA floating point value.
Returns
True if the floating point value is an integer.

◆ load_theme()

void hi::v1::load_theme ( std::string name,
theme_mode mode )
inlinenoexcept

Find a theme matching the name and mode.

Parameters
nameThe name of the theme to select.
modeThe mode of the theme to select.
Returns
true if the theme was loaded and activated successfully.

◆ make_lookahead_iterator() [1/2]

template<size_t LookaheadCount, typename It , std::sentinel_for< It > ItEnd = std::default_sentinel_t>
auto hi::v1::make_lookahead_iterator ( It first,
ItEnd last = std::default_sentinel )
noexcept

Create a lookahead_iterator from a forward iterator.

Template Parameters
LookaheadCountNumber of items to lookahead, including the iterator itself. Must be a power-of-two.
Parameters
firstA forward iterator.
lastA sentinel or end-iterator.
Returns
A lookahead iterator.

◆ make_lookahead_iterator() [2/2]

template<size_t LookaheadCount, std::ranges::range Range>
auto hi::v1::make_lookahead_iterator ( Range const & range)
noexcept

Create a lookahead_iterator from a forward iterator.

Template Parameters
LookaheadCountNumber of items to lookahead, including the iterator itself. Must be a power-of-two.
Parameters
firstA forward iterator.
lastA sentinel or end-iterator.
Returns
A lookahead iterator.

◆ operator|()

constexpr plurality_mask hi::v1::operator| ( plurality_mask const & lhs,
plurality_mask const & rhs )
constexprnoexcept

Or plurality masks together.

◆ otype_glyf_get_bounding_box()

aarectangle hi::v1::otype_glyf_get_bounding_box ( std::span< std::byte const > bytes,
float em_scale )
inline

Get the bounding box of a simple glyph.

Note
Only call this function when otype_glyf_is_compound() == false.

◆ otype_glyf_get_compound()

generator< otype_glyf_component > hi::v1::otype_glyf_get_compound ( std::span< std::byte const > bytes,
float em_scale )
inline

Get the components of a compound glyph.

Note
Only call this function when otype_glyf_is_compound() == true.

◆ otype_glyf_get_path()

graphic_path hi::v1::otype_glyf_get_path ( std::span< std::byte const > bytes,
float em_scale )
inline

Get the graphic-path of a simple glyph.

Note
Only call this function when otype_glyf_is_compound() == false.

◆ otype_glyf_is_compound()

bool hi::v1::otype_glyf_is_compound ( std::span< std::byte const > bytes)
inline

Check if this glyph is a compound or simple glyph.

◆ otype_kern_v0_find()

vector2 hi::v1::otype_kern_v0_find ( std::span< std::byte const > bytes,
glyph_id first_glyph_id,
glyph_id second_glyph_id,
float em_scale )
inline

'kern' version 0 find.

'kern' version 0 is used by Microsoft and is not in use anymore by Apple. However it is part of open-type.

◆ otype_name_search()

std::optional< std::string > hi::v1::otype_name_search ( std::span< std::byte const > bytes,
uint16_t name_id,
language_tag language = language_tag{"en"} )
inline

Get a name from the name table.

Parameters
bytesThe bytes of the name table.
name_idThe name to find a string for.
languageThe language to find the string for (default "en").
Returns
The string of the name was found, or std::nullopt if not found.

◆ pattern_match()

template<char Wildcard = '*'>
constexpr bool hi::v1::pattern_match ( std::string_view needle,
std::string_view haystack )
constexprnoexcept

Patern match.

Template Parameters
WildcardThe wildcard symbol to use.
Parameters
needleThe string to match with haystack, may include wildcard symbols.
haystackThe string to match with needle.
Returns
True when the needle pattern matched haystack.

◆ prepare_debug_break()

void hi::v1::prepare_debug_break ( )
noexcept

Prepare for breaking in the debugger.

This will check if a debugger exists and potentially launch the Just-In-Time debugger if one is configured. This function may terminate the application if no debugger is found.

It does not do the actual breaking.

◆ process_call()

template<typename Functor >
void hi::v1::process_call ( Functor && functor,
std::string_view data )

Call a function in a new process.

Parameters
functorA functor void(std::string_view) to call in a different process. You can pass for example a non-capturing lambda
dataData to pass to the functor.

◆ recursive_iterator_begin() [1/2]

template<typename Container >
constexpr auto hi::v1::recursive_iterator_begin ( Container & rhs)
constexprnoexcept

Get a recursive iterator from the begin of a recursive container.

◆ recursive_iterator_begin() [2/2]

template<typename Container >
constexpr auto hi::v1::recursive_iterator_begin ( Container const & rhs)
constexprnoexcept

Get a recursive iterator from the begin of a recursive container.

◆ recursive_iterator_end() [1/2]

template<typename Container >
constexpr auto hi::v1::recursive_iterator_end ( Container & rhs)
constexprnoexcept

Get a recursive iterator from one beyond the end of a recursive container.

◆ recursive_iterator_end() [2/2]

template<typename Container >
constexpr auto hi::v1::recursive_iterator_end ( Container const & rhs)
constexprnoexcept

Get a recursive iterator from one beyond the end of a recursive container.

◆ terminate_handler()

void hi::v1::terminate_handler ( )
noexcept

The HikoGUI terminate handler.

This handler will print an error message on the console or pop-up a dialogue box.

Note
Use hi_set_terminate_message() to set a message.

◆ theme_model_by_key()

theme_model_base & hi::v1::theme_model_by_key ( std::string const & key)
inline

Get a theme-model by key.

Parameters
keyThe key of the model to get.
Returns
A theme's model for the key.
Exceptions
std::out_of_range

◆ theme_model_keys()

std::vector< std::string > hi::v1::theme_model_keys ( )
inlinenoexcept

Get a list of all the keys registered at program startup.

Keys are automatically registered when using theme<> in your program.

Returns
A list of keys.

◆ theme_names()

std::vector< std::string > hi::v1::theme_names ( )
inlinenoexcept

Get a list of theme names.

This list of names is sorted and does not contain duplicates, ready to be displayed to the user.

◆ three_way_compare()

template<arithmetic Lhs, arithmetic Rhs>
constexpr auto hi::v1::three_way_compare ( Lhs const & lhs,
Rhs const & rhs )
constexprnoexcept

Safely compare two arithmetic values to each other.

Parameters
lhsThe left-hand-side arithmetic value.
rhsThe right-hand-side arithmetic value.
Returns
A std::strong_ordering or std::weak_ordering of the lhs and rhs.

◆ to_gui_event_type()

constexpr gui_event_type hi::v1::to_gui_event_type ( std::string_view name)
constexprnoexcept

Convert a name to a GUI event type.

◆ to_string() [1/2]

std::string_view hi::v1::to_string ( gui_event_type rhs)
inlinenoexcept

Convert a GUI event type to a string.

◆ to_string() [2/2]

template<std::integral T>
std::string hi::v1::to_string ( T const & value)
noexcept

Convert integer to string.

Convert floating point to string.

This function bypasses std::locale.

Parameters
valueThe signed or unsigned integer value.
Returns
The integer converted to a decimal string.

◆ token_location()

template<typename It , std::sentinel_for< It > ItEnd>
constexpr std::string hi::v1::token_location ( It & it,
ItEnd last,
std::filesystem::path const & path )
constexprnoexcept

Create a location string for error messages.

Parameters
itAn iterator that dereferences to a hi::token.
lastThe sentinel for it.
pathThe filename of the file being parsed.
Returns
A string with the location of the token.

◆ ucd_get_bidi_mirroring_glyph()

constexpr char32_t hi::v1::ucd_get_bidi_mirroring_glyph ( char32_t code_point)
constexprnoexcept

Get the bidi-mirroring-glyph for a code-point.

Parameters
code_pointThe code-point to query
Returns
The mirroring glyph, or U+0000 when the mirroring glyph was not found.

◆ ucd_get_composition()

constexpr std::optional< char32_t > hi::v1::ucd_get_composition ( char32_t cp1,
char32_t cp2 )
constexprnoexcept

Get the composition info of two code-points.

Parameters
cp1The first code-point
cp2The second code-point
Returns
The code-point forming the composition of the two given code-points, or std::nullopt if the two code-point don't composit.

◆ ucd_get_decomposition()

constexpr ucd_decomposition_info hi::v1::ucd_get_decomposition ( char32_t code_point)
constexprnoexcept

Get the decomposition info of a code-point.

◆ win32_string_to_wstring()

std::wstring hi::v1::win32_string_to_wstring ( std::string_view s)
inline

Convert a UTF-8 std::string to a win32-API compatible std::wstring.

◆ win32_wstring_to_string()

std::string hi::v1::win32_wstring_to_string ( std::wstring_view s)
inline

Convert a win32-API compatible std::wstring to a UTF-8 std::string.

Variable Documentation

◆ font_style_metadata

constexpr auto hi::v1::font_style_metadata
constexpr
Initial value:
= enum_metadata{
font_style::normal, "normal",
font_style::italic, "italic",
}

◆ old_terminate_handler

std::terminate_handler hi::v1::old_terminate_handler
inline

The old terminate handler.

This is the handler returned by std::set_terminate().

◆ style_sheet_declaration_name_metadata

constexpr auto hi::v1::style_sheet_declaration_name_metadata
constexpr
Initial value:
= enum_metadata{
style_sheet_declaration_name::background_color, "background-color",
style_sheet_declaration_name::border_bottom_left_radius, "border-bottom-left-radius",
style_sheet_declaration_name::border_bottom_right_radius, "border-bottom-right-radius",
style_sheet_declaration_name::border_color, "border-color",
style_sheet_declaration_name::border_top_left_radius, "border-top-left-radius",
style_sheet_declaration_name::border_top_right_radius, "border-top-right-radius",
style_sheet_declaration_name::border_width, "border-width",
style_sheet_declaration_name::caret_primary_color, "caret-primary-color",
style_sheet_declaration_name::caret_secondary_color, "caret-secondary-color",
style_sheet_declaration_name::caret_overwrite_color, "caret-overwrite-color",
style_sheet_declaration_name::caret_compose_color, "caret-compose-color",
style_sheet_declaration_name::fill_color, "fill-color",
style_sheet_declaration_name::font_color, "font-color",
style_sheet_declaration_name::font_family, "font-family",
style_sheet_declaration_name::font_size, "font-size",
style_sheet_declaration_name::font_style, "font-style",
style_sheet_declaration_name::font_weight, "font-weight",
style_sheet_declaration_name::height, "height",
style_sheet_declaration_name::margin_bottom, "margin-bottom",
style_sheet_declaration_name::margin_left, "margin-left",
style_sheet_declaration_name::margin_right, "margin-right",
style_sheet_declaration_name::margin_top, "margin-top",
style_sheet_declaration_name::selection_color, "selection-color",
style_sheet_declaration_name::width, "width",
}

◆ style_sheet_declaration_name_value_mask_metadata

constexpr auto hi::v1::style_sheet_declaration_name_value_mask_metadata
constexpr
Initial value:
= enum_metadata{
style_sheet_declaration_name::background_color, style_sheet_value_mask::color,
style_sheet_declaration_name::border_bottom_left_radius, style_sheet_value_mask::length,
style_sheet_declaration_name::border_bottom_right_radius, style_sheet_value_mask::length,
style_sheet_declaration_name::border_color, style_sheet_value_mask::color,
style_sheet_declaration_name::border_top_left_radius, style_sheet_value_mask::length,
style_sheet_declaration_name::border_top_right_radius, style_sheet_value_mask::length,
style_sheet_declaration_name::border_width, style_sheet_value_mask::length,
style_sheet_declaration_name::caret_primary_color, style_sheet_value_mask::color,
style_sheet_declaration_name::caret_secondary_color, style_sheet_value_mask::color,
style_sheet_declaration_name::caret_overwrite_color, style_sheet_value_mask::color,
style_sheet_declaration_name::caret_compose_color, style_sheet_value_mask::color,
style_sheet_declaration_name::fill_color, style_sheet_value_mask::color,
style_sheet_declaration_name::font_color, style_sheet_value_mask::color,
style_sheet_declaration_name::font_family, style_sheet_value_mask::font_family_id,
style_sheet_declaration_name::font_size, style_sheet_value_mask::dips,
style_sheet_declaration_name::font_style, style_sheet_value_mask::font_style,
style_sheet_declaration_name::font_weight, style_sheet_value_mask::font_weight,
style_sheet_declaration_name::height, style_sheet_value_mask::length,
style_sheet_declaration_name::margin_bottom, style_sheet_value_mask::length,
style_sheet_declaration_name::margin_left, style_sheet_value_mask::length,
style_sheet_declaration_name::margin_right, style_sheet_value_mask::length,
style_sheet_declaration_name::margin_top, style_sheet_value_mask::length,
style_sheet_declaration_name::selection_color, style_sheet_value_mask::color,
style_sheet_declaration_name::width, style_sheet_value_mask::length,
}

◆ terminate_message

std::atomic<char const *> hi::v1::terminate_message = nullptr
inline

Message to show when the application is terminated.

◆ theme

template<fixed_string Tag>
auto hi::v1::theme = theme_model<Tag>{}
inline

A tagged global variable to a theme model for a widget's component.

The following is an example for retrieving the theme's width for this widget. prefix is the tag/widget of the widget and this is the this pointer of widget.

auto width = theme<prefix>.width(this);

For performance reasons a widget should be marked final, so that retrieval of the state and point-to-pixel scaling is de-virtualized.