Glyphs.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. #nullable enable
  2. namespace Terminal.Gui;
  3. /// <summary>Defines the standard set of glyphs used to draw checkboxes, lines, borders, etc...</summary>
  4. /// <remarks>
  5. /// <para>
  6. /// Access with <see cref="Glyphs"/> (which is a global using alias for
  7. /// <see cref="Glyphs"/>).
  8. /// </para>
  9. /// <para>
  10. /// The default glyphs can be changed per-<see cref="ThemeScope"/> in <see cref="ConfigurationManager"/>. Within a <c>config.json</c>
  11. /// file the Json property name is the property name prefixed with "Glyphs.".
  12. /// </para>
  13. /// <para>
  14. /// The Json property can be one of:
  15. /// - unicode glyph in a string (e.g. "☑")
  16. /// - U+hex format in a string (e.g. "U+2611")
  17. /// - \u format in a string (e.g. "\\u2611")
  18. /// - A decimal number (e.g. 97 for "a")
  19. /// </para>
  20. /// </remarks>
  21. public class Glyphs
  22. {
  23. // IMPORTANT: If you change these, make sure to update the ./Resources/config.json file as
  24. // IMPORTANT: it is the source of truth for the default glyphs at runtime.
  25. // IMPORTANT: Configuration Manager test SaveDefaults uses this class to generate the default config file
  26. // IMPORTANT: in ./UnitTests/bin/Debug/netX.0/config.json
  27. /// <summary>File icon. Defaults to ☰ (Trigram For Heaven)</summary>
  28. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  29. public static Rune File { get; set; } = (Rune)'☰';
  30. /// <summary>Folder icon. Defaults to ꤉ (Kayah Li Digit Nine)</summary>
  31. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  32. public static Rune Folder { get; set; } = (Rune)'꤉';
  33. /// <summary>Horizontal Ellipsis - … U+2026</summary>
  34. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  35. public static Rune HorizontalEllipsis { get; set; } = (Rune)'…';
  36. /// <summary>Vertical Four Dots - ⁞ U+205e</summary>
  37. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  38. public static Rune VerticalFourDots { get; set; } = (Rune)'⁞';
  39. #region ----------------- Single Glyphs -----------------
  40. /// <summary>Checked indicator (e.g. for <see cref="ListView"/> and <see cref="CheckBox"/>).</summary>
  41. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  42. public static Rune CheckStateChecked { get; set; } = (Rune)'☑';
  43. /// <summary>Not Checked indicator (e.g. for <see cref="ListView"/> and <see cref="CheckBox"/>).</summary>
  44. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  45. public static Rune CheckStateUnChecked { get; set; } = (Rune)'☐';
  46. /// <summary>Null Checked indicator (e.g. for <see cref="ListView"/> and <see cref="CheckBox"/>).</summary>
  47. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  48. public static Rune CheckStateNone { get; set; } = (Rune)'☒';
  49. /// <summary>Selected indicator (e.g. for <see cref="ListView"/> and <see cref="RadioGroup"/>).</summary>
  50. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  51. public static Rune Selected { get; set; } = (Rune)'◉';
  52. /// <summary>Not Selected indicator (e.g. for <see cref="ListView"/> and <see cref="RadioGroup"/>).</summary>
  53. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  54. public static Rune UnSelected { get; set; } = (Rune)'○';
  55. /// <summary>Horizontal arrow.</summary>
  56. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  57. public static Rune RightArrow { get; set; } = (Rune)'►';
  58. /// <summary>Left arrow.</summary>
  59. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  60. public static Rune LeftArrow { get; set; } = (Rune)'◄';
  61. /// <summary>Down arrow.</summary>
  62. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  63. public static Rune DownArrow { get; set; } = (Rune)'▼';
  64. /// <summary>Vertical arrow.</summary>
  65. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  66. public static Rune UpArrow { get; set; } = (Rune)'▲';
  67. /// <summary>Left default indicator (e.g. for <see cref="Button"/>.</summary>
  68. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  69. public static Rune LeftDefaultIndicator { get; set; } = (Rune)'►';
  70. /// <summary>Horizontal default indicator (e.g. for <see cref="Button"/>.</summary>
  71. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  72. public static Rune RightDefaultIndicator { get; set; } = (Rune)'◄';
  73. /// <summary>Left Bracket (e.g. for <see cref="Button"/>. Default is (U+005B) - [.</summary>
  74. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  75. public static Rune LeftBracket { get; set; } = (Rune)'⟦';
  76. /// <summary>Horizontal Bracket (e.g. for <see cref="Button"/>. Default is (U+005D) - ].</summary>
  77. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  78. public static Rune RightBracket { get; set; } = (Rune)'⟧';
  79. /// <summary>Half block meter segment (e.g. for <see cref="ProgressBar"/>).</summary>
  80. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  81. public static Rune BlocksMeterSegment { get; set; } = (Rune)'▌';
  82. /// <summary>Continuous block meter segment (e.g. for <see cref="ProgressBar"/>).</summary>
  83. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  84. public static Rune ContinuousMeterSegment { get; set; } = (Rune)'█';
  85. /// <summary>Stipple pattern (e.g. for <see cref="ScrollBar"/>). Default is Light Shade (U+2591) - ░.</summary>
  86. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  87. public static Rune Stipple { get; set; } = (Rune)'░';
  88. /// <summary>Diamond. Default is Lozenge (U+25CA) - ◊.</summary>
  89. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  90. public static Rune Diamond { get; set; } = (Rune)'◊';
  91. /// <summary>Close. Default is Heavy Ballot X (U+2718) - ✘.</summary>
  92. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  93. public static Rune Close { get; set; } = (Rune)'✘';
  94. /// <summary>Minimize. Default is Lower Horizontal Shadowed White Circle (U+274F) - ❏.</summary>
  95. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  96. public static Rune Minimize { get; set; } = (Rune)'❏';
  97. /// <summary>Maximize. Default is Upper Horizontal Shadowed White Circle (U+273D) - ✽.</summary>
  98. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  99. public static Rune Maximize { get; set; } = (Rune)'✽';
  100. /// <summary>Dot. Default is (U+2219) - ∙.</summary>
  101. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  102. public static Rune Dot { get; set; } = (Rune)'∙';
  103. /// <summary>Dotted Square - ⬚ U+02b1a┝</summary>
  104. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  105. public static Rune DottedSquare { get; set; } = (Rune)'⬚';
  106. /// <summary>Black Circle . Default is (U+025cf) - ●.</summary>
  107. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  108. public static Rune BlackCircle { get; set; } = (Rune)'●'; // Black Circle - ● U+025cf
  109. /// <summary>Expand (e.g. for <see cref="TreeView"/>.</summary>
  110. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  111. public static Rune Expand { get; set; } = (Rune)'+';
  112. /// <summary>Expand (e.g. for <see cref="TreeView"/>.</summary>
  113. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  114. public static Rune Collapse { get; set; } = (Rune)'-';
  115. /// <summary>Identical To (U+226)</summary>
  116. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  117. public static Rune IdenticalTo { get; set; } = (Rune)'≡';
  118. /// <summary>Move indicator. Default is Lozenge (U+25CA) - ◊.</summary>
  119. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  120. public static Rune Move { get; set; } = (Rune)'◊';
  121. /// <summary>Size Horizontally indicator. Default is ┥Left Right Arrow - ↔ U+02194</summary>
  122. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  123. public static Rune SizeHorizontal { get; set; } = (Rune)'↔';
  124. /// <summary>Size Vertical indicator. Default Up Down Arrow - ↕ U+02195</summary>
  125. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  126. public static Rune SizeVertical { get; set; } = (Rune)'↕';
  127. /// <summary>Size Top Left indicator. North West Arrow - ↖ U+02196</summary>
  128. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  129. public static Rune SizeTopLeft { get; set; } = (Rune)'↖';
  130. /// <summary>Size Top Right indicator. North East Arrow - ↗ U+02197</summary>
  131. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  132. public static Rune SizeTopRight { get; set; } = (Rune)'↗';
  133. /// <summary>Size Bottom Right indicator. South East Arrow - ↘ U+02198</summary>
  134. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  135. public static Rune SizeBottomRight { get; set; } = (Rune)'↘';
  136. /// <summary>Size Bottom Left indicator. South West Arrow - ↙ U+02199</summary>
  137. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  138. public static Rune SizeBottomLeft { get; set; } = (Rune)'↙';
  139. /// <summary>Apple (non-BMP). Because snek. And because it's an example of a non-BMP surrogate pair. See Issue #2610.</summary>
  140. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  141. public static Rune Apple { get; set; } = "🍎".ToRunes () [0]; // nonBMP
  142. /// <summary>Apple (BMP). Because snek. See Issue #2610.</summary>
  143. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  144. public static Rune AppleBMP { get; set; } = (Rune)'❦';
  145. #endregion
  146. #region ----------------- Lines -----------------
  147. /// <summary>Box Drawings Horizontal Line - Light (U+2500) - ─</summary>
  148. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  149. public static Rune HLine { get; set; } = (Rune)'─';
  150. /// <summary>Box Drawings Vertical Line - Light (U+2502) - │</summary>
  151. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  152. public static Rune VLine { get; set; } = (Rune)'│';
  153. /// <summary>Box Drawings Double Horizontal (U+2550) - ═</summary>
  154. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  155. public static Rune HLineDbl { get; set; } = (Rune)'═';
  156. /// <summary>Box Drawings Double Vertical (U+2551) - ║</summary>
  157. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineDbl { get; set; } = (Rune)'║';
  158. /// <summary>Box Drawings Heavy Double Dash Horizontal (U+254D) - ╍</summary>
  159. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineHvDa2 { get; set; } = (Rune)'╍';
  160. /// <summary>Box Drawings Heavy Triple Dash Vertical (U+2507) - ┇</summary>
  161. [SerializableConfigurationProperty (Scope = typeof (ThemeScope))]
  162. public static Rune VLineHvDa3 { get; set; } = (Rune)'┇';
  163. /// <summary>Box Drawings Heavy Triple Dash Horizontal (U+2505) - ┅</summary>
  164. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineHvDa3 { get; set; } = (Rune)'┅';
  165. /// <summary>Box Drawings Heavy Quadruple Dash Horizontal (U+2509) - ┉</summary>
  166. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineHvDa4 { get; set; } = (Rune)'┉';
  167. /// <summary>Box Drawings Heavy Double Dash Vertical (U+254F) - ╏</summary>
  168. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineHvDa2 { get; set; } = (Rune)'╏';
  169. /// <summary>Box Drawings Heavy Quadruple Dash Vertical (U+250B) - ┋</summary>
  170. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineHvDa4 { get; set; } = (Rune)'┋';
  171. /// <summary>Box Drawings Light Double Dash Horizontal (U+254C) - ╌</summary>
  172. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineDa2 { get; set; } = (Rune)'╌';
  173. /// <summary>Box Drawings Light Triple Dash Vertical (U+2506) - ┆</summary>
  174. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineDa3 { get; set; } = (Rune)'┆';
  175. /// <summary>Box Drawings Light Triple Dash Horizontal (U+2504) - ┄</summary>
  176. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineDa3 { get; set; } = (Rune)'┄';
  177. /// <summary>Box Drawings Light Quadruple Dash Horizontal (U+2508) - ┈</summary>
  178. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineDa4 { get; set; } = (Rune)'┈';
  179. /// <summary>Box Drawings Light Double Dash Vertical (U+254E) - ╎</summary>
  180. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineDa2 { get; set; } = (Rune)'╎';
  181. /// <summary>Box Drawings Light Quadruple Dash Vertical (U+250A) - ┊</summary>
  182. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineDa4 { get; set; } = (Rune)'┊';
  183. /// <summary>Box Drawings Heavy Horizontal (U+2501) - ━</summary>
  184. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HLineHv { get; set; } = (Rune)'━';
  185. /// <summary>Box Drawings Heavy Vertical (U+2503) - ┃</summary>
  186. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune VLineHv { get; set; } = (Rune)'┃';
  187. /// <summary>Box Drawings Light Left (U+2574) - ╴</summary>
  188. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfLeftLine { get; set; } = (Rune)'╴';
  189. /// <summary>Box Drawings Light Vertical (U+2575) - ╵</summary>
  190. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfTopLine { get; set; } = (Rune)'╵';
  191. /// <summary>Box Drawings Light Horizontal (U+2576) - ╶</summary>
  192. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfRightLine { get; set; } = (Rune)'╶';
  193. /// <summary>Box Drawings Light Down (U+2577) - ╷</summary>
  194. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfBottomLine { get; set; } = (Rune)'╷';
  195. /// <summary>Box Drawings Heavy Left (U+2578) - ╸</summary>
  196. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfLeftLineHv { get; set; } = (Rune)'╸';
  197. /// <summary>Box Drawings Heavy Vertical (U+2579) - ╹</summary>
  198. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfTopLineHv { get; set; } = (Rune)'╹';
  199. /// <summary>Box Drawings Heavy Horizontal (U+257A) - ╺</summary>
  200. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfRightLineHv { get; set; } = (Rune)'╺';
  201. /// <summary>Box Drawings Light Vertical and Horizontal (U+257B) - ╻</summary>
  202. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune HalfBottomLineLt { get; set; } = (Rune)'╻';
  203. /// <summary>Box Drawings Light Horizontal and Heavy Horizontal (U+257C) - ╼</summary>
  204. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightSideLineLtHv { get; set; } = (Rune)'╼';
  205. /// <summary>Box Drawings Light Vertical and Heavy Horizontal (U+257D) - ╽</summary>
  206. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomSideLineLtHv { get; set; } = (Rune)'╽';
  207. /// <summary>Box Drawings Heavy Left and Light Horizontal (U+257E) - ╾</summary>
  208. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftSideLineHvLt { get; set; } = (Rune)'╾';
  209. /// <summary>Box Drawings Heavy Vertical and Light Horizontal (U+257F) - ╿</summary>
  210. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopSideLineHvLt { get; set; } = (Rune)'╿';
  211. #endregion
  212. #region ----------------- Upper Left Corners -----------------
  213. /// <summary>Box Drawings Upper Left Corner - Light Vertical and Light Horizontal (U+250C) - ┌</summary>
  214. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCorner { get; set; } = (Rune)'┌';
  215. /// <summary>Box Drawings Upper Left Corner - Double (U+2554) - ╔</summary>
  216. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerDbl { get; set; } = (Rune)'╔';
  217. /// <summary>Box Drawings Upper Left Corner - Light Arc Down and Horizontal (U+256D) - ╭</summary>
  218. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerR { get; set; } = (Rune)'╭';
  219. /// <summary>Box Drawings Heavy Down and Horizontal (U+250F) - ┏</summary>
  220. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerHv { get; set; } = (Rune)'┏';
  221. /// <summary>Box Drawings Down Heavy and Horizontal Light (U+251E) - ┎</summary>
  222. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerHvLt { get; set; } = (Rune)'┎';
  223. /// <summary>Box Drawings Down Light and Horizontal Heavy (U+250D) - ┎</summary>
  224. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerLtHv { get; set; } = (Rune)'┍';
  225. /// <summary>Box Drawings Double Down and Single Horizontal (U+2553) - ╓</summary>
  226. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerDblSingle { get; set; } = (Rune)'╓';
  227. /// <summary>Box Drawings Single Down and Double Horizontal (U+2552) - ╒</summary>
  228. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ULCornerSingleDbl { get; set; } = (Rune)'╒';
  229. #endregion
  230. #region ----------------- Lower Left Corners -----------------
  231. /// <summary>Box Drawings Lower Left Corner - Light Vertical and Light Horizontal (U+2514) - └</summary>
  232. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCorner { get; set; } = (Rune)'└';
  233. /// <summary>Box Drawings Heavy Vertical and Horizontal (U+2517) - ┗</summary>
  234. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerHv { get; set; } = (Rune)'┗';
  235. /// <summary>Box Drawings Heavy Vertical and Horizontal Light (U+2516) - ┖</summary>
  236. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerHvLt { get; set; } = (Rune)'┖';
  237. /// <summary>Box Drawings Vertical Light and Horizontal Heavy (U+2511) - ┕</summary>
  238. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerLtHv { get; set; } = (Rune)'┕';
  239. /// <summary>Box Drawings Double Vertical and Double Left (U+255A) - ╚</summary>
  240. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerDbl { get; set; } = (Rune)'╚';
  241. /// <summary>Box Drawings Single Vertical and Double Left (U+2558) - ╘</summary>
  242. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerSingleDbl { get; set; } = (Rune)'╘';
  243. /// <summary>Box Drawings Double Down and Single Left (U+2559) - ╙</summary>
  244. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerDblSingle { get; set; } = (Rune)'╙';
  245. /// <summary>Box Drawings Upper Left Corner - Light Arc Down and Left (U+2570) - ╰</summary>
  246. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LLCornerR { get; set; } = (Rune)'╰';
  247. #endregion
  248. #region ----------------- Upper Right Corners -----------------
  249. /// <summary>Box Drawings Upper Horizontal Corner - Light Vertical and Light Horizontal (U+2510) - ┐</summary>
  250. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCorner { get; set; } = (Rune)'┐';
  251. /// <summary>Box Drawings Upper Horizontal Corner - Double Vertical and Double Horizontal (U+2557) - ╗</summary>
  252. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerDbl { get; set; } = (Rune)'╗';
  253. /// <summary>Box Drawings Upper Horizontal Corner - Light Arc Vertical and Horizontal (U+256E) - ╮</summary>
  254. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerR { get; set; } = (Rune)'╮';
  255. /// <summary>Box Drawings Heavy Down and Left (U+2513) - ┓</summary>
  256. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerHv { get; set; } = (Rune)'┓';
  257. /// <summary>Box Drawings Heavy Vertical and Left Down Light (U+2511) - ┑</summary>
  258. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerHvLt { get; set; } = (Rune)'┑';
  259. /// <summary>Box Drawings Down Light and Horizontal Heavy (U+2514) - ┒</summary>
  260. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerLtHv { get; set; } = (Rune)'┒';
  261. /// <summary>Box Drawings Double Vertical and Single Left (U+2556) - ╖</summary>
  262. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerDblSingle { get; set; } = (Rune)'╖';
  263. /// <summary>Box Drawings Single Vertical and Double Left (U+2555) - ╕</summary>
  264. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune URCornerSingleDbl { get; set; } = (Rune)'╕';
  265. #endregion
  266. #region ----------------- Lower Right Corners -----------------
  267. /// <summary>Box Drawings Lower Right Corner - Light (U+2518) - ┘</summary>
  268. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCorner { get; set; } = (Rune)'┘';
  269. /// <summary>Box Drawings Lower Right Corner - Double (U+255D) - ╝</summary>
  270. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerDbl { get; set; } = (Rune)'╝';
  271. /// <summary>Box Drawings Lower Right Corner - Rounded (U+256F) - ╯</summary>
  272. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerR { get; set; } = (Rune)'╯';
  273. /// <summary>Box Drawings Lower Right Corner - Heavy (U+251B) - ┛</summary>
  274. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerHv { get; set; } = (Rune)'┛';
  275. /// <summary>Box Drawings Lower Right Corner - Double Vertical and Single Horizontal (U+255C) - ╜</summary>
  276. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerDblSingle { get; set; } = (Rune)'╜';
  277. /// <summary>Box Drawings Lower Right Corner - Single Vertical and Double Horizontal (U+255B) - ╛</summary>
  278. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerSingleDbl { get; set; } = (Rune)'╛';
  279. /// <summary>Box Drawings Lower Right Corner - Light Vertical and Heavy Horizontal (U+2519) - ┙</summary>
  280. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerLtHv { get; set; } = (Rune)'┙';
  281. /// <summary>Box Drawings Lower Right Corner - Heavy Vertical and Light Horizontal (U+251A) - ┚</summary>
  282. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LRCornerHvLt { get; set; } = (Rune)'┚';
  283. #endregion
  284. #region ----------------- Tees -----------------
  285. /// <summary>Box Drawings Left Tee - Single Vertical and Single Horizontal (U+251C) - ├</summary>
  286. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTee { get; set; } = (Rune)'├';
  287. /// <summary>Box Drawings Left Tee - Single Vertical and Double Horizontal (U+255E) - ╞</summary>
  288. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeDblH { get; set; } = (Rune)'╞';
  289. /// <summary>Box Drawings Left Tee - Double Vertical and Single Horizontal (U+255F) - ╟</summary>
  290. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeDblV { get; set; } = (Rune)'╟';
  291. /// <summary>Box Drawings Left Tee - Double Vertical and Double Horizontal (U+2560) - ╠</summary>
  292. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeDbl { get; set; } = (Rune)'╠';
  293. /// <summary>Box Drawings Left Tee - Heavy Horizontal and Light Vertical (U+2523) - ┝</summary>
  294. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeHvH { get; set; } = (Rune)'┝';
  295. /// <summary>Box Drawings Left Tee - Light Horizontal and Heavy Vertical (U+252B) - ┠</summary>
  296. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeHvV { get; set; } = (Rune)'┠';
  297. /// <summary>Box Drawings Left Tee - Heavy Vertical and Heavy Horizontal (U+2527) - ┣</summary>
  298. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune LeftTeeHvDblH { get; set; } = (Rune)'┣';
  299. /// <summary>Box Drawings Right Tee - Single Vertical and Single Horizontal (U+2524) - ┤</summary>
  300. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTee { get; set; } = (Rune)'┤';
  301. /// <summary>Box Drawings Right Tee - Single Vertical and Double Horizontal (U+2561) - ╡</summary>
  302. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeDblH { get; set; } = (Rune)'╡';
  303. /// <summary>Box Drawings Right Tee - Double Vertical and Single Horizontal (U+2562) - ╢</summary>
  304. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeDblV { get; set; } = (Rune)'╢';
  305. /// <summary>Box Drawings Right Tee - Double Vertical and Double Horizontal (U+2563) - ╣</summary>
  306. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeDbl { get; set; } = (Rune)'╣';
  307. /// <summary>Box Drawings Right Tee - Heavy Horizontal and Light Vertical (U+2528) - ┥</summary>
  308. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeHvH { get; set; } = (Rune)'┥';
  309. /// <summary>Box Drawings Right Tee - Light Horizontal and Heavy Vertical (U+2530) - ┨</summary>
  310. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeHvV { get; set; } = (Rune)'┨';
  311. /// <summary>Box Drawings Right Tee - Heavy Vertical and Heavy Horizontal (U+252C) - ┫</summary>
  312. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune RightTeeHvDblH { get; set; } = (Rune)'┫';
  313. /// <summary>Box Drawings Top Tee - Single Vertical and Single Horizontal (U+252C) - ┬</summary>
  314. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTee { get; set; } = (Rune)'┬';
  315. /// <summary>Box Drawings Top Tee - Single Vertical and Double Horizontal (U+2564) - ╤</summary>
  316. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeDblH { get; set; } = (Rune)'╤';
  317. /// <summary>Box Drawings Top Tee - Double Vertical and Single Horizontal (U+2565) - ╥</summary>
  318. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeDblV { get; set; } = (Rune)'╥';
  319. /// <summary>Box Drawings Top Tee - Double Vertical and Double Horizontal (U+2566) - ╦</summary>
  320. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeDbl { get; set; } = (Rune)'╦';
  321. /// <summary>Box Drawings Top Tee - Heavy Horizontal and Light Vertical (U+252F) - ┯</summary>
  322. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeHvH { get; set; } = (Rune)'┯';
  323. /// <summary>Box Drawings Top Tee - Light Horizontal and Heavy Vertical (U+2537) - ┰</summary>
  324. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeHvV { get; set; } = (Rune)'┰';
  325. /// <summary>Box Drawings Top Tee - Heavy Vertical and Heavy Horizontal (U+2533) - ┳</summary>
  326. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune TopTeeHvDblH { get; set; } = (Rune)'┳';
  327. /// <summary>Box Drawings Bottom Tee - Single Vertical and Single Horizontal (U+2534) - ┴</summary>
  328. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTee { get; set; } = (Rune)'┴';
  329. /// <summary>Box Drawings Bottom Tee - Single Vertical and Double Horizontal (U+2567) - ╧</summary>
  330. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeDblH { get; set; } = (Rune)'╧';
  331. /// <summary>Box Drawings Bottom Tee - Double Vertical and Single Horizontal (U+2568) - ╨</summary>
  332. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeDblV { get; set; } = (Rune)'╨';
  333. /// <summary>Box Drawings Bottom Tee - Double Vertical and Double Horizontal (U+2569) - ╩</summary>
  334. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeDbl { get; set; } = (Rune)'╩';
  335. /// <summary>Box Drawings Bottom Tee - Heavy Horizontal and Light Vertical (U+2535) - ┷</summary>
  336. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeHvH { get; set; } = (Rune)'┷';
  337. /// <summary>Box Drawings Bottom Tee - Light Horizontal and Heavy Vertical (U+253D) - ┸</summary>
  338. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeHvV { get; set; } = (Rune)'┸';
  339. /// <summary>Box Drawings Bottom Tee - Heavy Vertical and Heavy Horizontal (U+2539) - ┻</summary>
  340. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune BottomTeeHvDblH { get; set; } = (Rune)'┻';
  341. #endregion
  342. #region ----------------- Crosses -----------------
  343. /// <summary>Box Drawings Cross - Single Vertical and Single Horizontal (U+253C) - ┼</summary>
  344. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune Cross { get; set; } = (Rune)'┼';
  345. /// <summary>Box Drawings Cross - Single Vertical and Double Horizontal (U+256A) - ╪</summary>
  346. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossDblH { get; set; } = (Rune)'╪';
  347. /// <summary>Box Drawings Cross - Double Vertical and Single Horizontal (U+256B) - ╫</summary>
  348. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossDblV { get; set; } = (Rune)'╫';
  349. /// <summary>Box Drawings Cross - Double Vertical and Double Horizontal (U+256C) - ╬</summary>
  350. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossDbl { get; set; } = (Rune)'╬';
  351. /// <summary>Box Drawings Cross - Heavy Horizontal and Light Vertical (U+253F) - ┿</summary>
  352. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossHvH { get; set; } = (Rune)'┿';
  353. /// <summary>Box Drawings Cross - Light Horizontal and Heavy Vertical (U+2541) - ╂</summary>
  354. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossHvV { get; set; } = (Rune)'╂';
  355. /// <summary>Box Drawings Cross - Heavy Vertical and Heavy Horizontal (U+254B) - ╋</summary>
  356. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune CrossHv { get; set; } = (Rune)'╋';
  357. #endregion
  358. #region ----------------- ShadowStyle -----------------
  359. /// <summary>Shadow - Vertical Start - Left Half Block - ▌ U+0258c</summary>
  360. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ShadowVerticalStart { get; set; } = (Rune)'▖'; // Half: '\u2596' ▖;
  361. /// <summary>Shadow - Vertical - Left Half Block - ▌ U+0258c</summary>
  362. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ShadowVertical { get; set; } = (Rune)'▌';
  363. /// <summary>Shadow - Horizontal Start - Upper Half Block - ▀ U+02580</summary>
  364. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ShadowHorizontalStart { get; set; } = (Rune)'▝'; // Half: ▝ U+0259d;
  365. /// <summary>Shadow - Horizontal - Upper Half Block - ▀ U+02580</summary>
  366. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ShadowHorizontal { get; set; } = (Rune)'▀';
  367. /// <summary>Shadow - Horizontal End - Quadrant Upper Left - ▘ U+02598</summary>
  368. [SerializableConfigurationProperty(Scope = typeof(ThemeScope))] public static Rune ShadowHorizontalEnd { get; set; } = (Rune)'▘';
  369. #endregion
  370. }