HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Namespaces | Data Structures | Typedefs | Enumerations | Functions | Variables

geometry/margins.hpp More...

Namespaces

namespace  geo
 HikoGUI geometry types.
 
namespace  v1
 The HikoGUI API version 1.
 

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_button_delegate
 A default toggle button delegate. 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_layout
 Grid layout algorithm. 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  menu_button_widget
 A button that is part of a menu. 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  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...
 

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<float>
 
using aarectanglei = geo::axis_aligned_rectangle<int>
 
using corner_radii = geo::corner_radii<float>
 
using corner_radiii = geo::corner_radii<int>
 
using extent2 = geo::extent<float, 2>
 A 2D extent.
 
using extent3 = geo::extent<float, 3>
 A 3D extent.
 
using extent2i = geo::extent<int, 2>
 A 2D extent.
 
using extent3i = geo::extent<int, 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 marginsi = geo::margins<int>
 
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<join_path(Name, "row"), axis::x>
 Lays out children in a row.
 
template<fixed_string Name = "">
using column_widget = row_column_widget<join_path(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  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 , spacing_horizontal ,
  spacing_vertical , 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.
 
aarectanglei fit (aarectanglei const &bounds, aarectanglei const &rectangle) noexcept
 Make a rectangle fit inside bounds.
 
template<>
constexpr aarectanglei narrow_cast (aarectangle const &rhs) noexcept
 
template<>
constexpr aarectangle narrow_cast (aarectanglei const &rhs) noexcept
 
template<>
constexpr corner_radii narrow_cast (corner_radiii const &rhs) noexcept
 
template<>
constexpr extent2i narrow_cast (extent2 const &rhs) noexcept
 
template<>
constexpr extent2 narrow_cast (extent2i const &rhs) noexcept
 
template<>
constexpr marginsi narrow_cast (margins const &rhs) noexcept
 
template<>
constexpr margins narrow_cast (marginsi const &rhs) noexcept
 
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
 
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.
 
bool 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
 
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< button_delegatemake_default_radio_button_delegate (auto &&value, auto &&on_value) noexcept
 Make a shared pointer to a radio-button delegate.
 
std::shared_ptr< button_delegatemake_default_toggle_button_delegate (auto &&value, auto &&...args) noexcept
 Make a shared pointer to a toggle-button delegate.
 
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< 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}}
 
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

geometry/margins.hpp

theme/theme_model.hpp This file defines an API to retrieve the current theme's values.

The HikoGUI namespace.