semigraphics.go (20742B)
1 package tview 2 3 import "github.com/gdamore/tcell/v2" 4 5 // Semigraphics provides an easy way to access unicode characters for drawing. 6 // 7 // Named like the unicode characters, 'Semigraphics'-prefix used if unicode block 8 // isn't prefixed itself. 9 const ( 10 // Block: General Punctuation U+2000-U+206F (http://unicode.org/charts/PDF/U2000.pdf) 11 SemigraphicsHorizontalEllipsis rune = '\u2026' // … 12 13 // Block: Box Drawing U+2500-U+257F (http://unicode.org/charts/PDF/U2500.pdf) 14 BoxDrawingsLightHorizontal rune = '\u2500' // ─ 15 BoxDrawingsHeavyHorizontal rune = '\u2501' // ━ 16 BoxDrawingsLightVertical rune = '\u2502' // │ 17 BoxDrawingsHeavyVertical rune = '\u2503' // ┃ 18 BoxDrawingsLightTripleDashHorizontal rune = '\u2504' // ┄ 19 BoxDrawingsHeavyTripleDashHorizontal rune = '\u2505' // ┅ 20 BoxDrawingsLightTripleDashVertical rune = '\u2506' // ┆ 21 BoxDrawingsHeavyTripleDashVertical rune = '\u2507' // ┇ 22 BoxDrawingsLightQuadrupleDashHorizontal rune = '\u2508' // ┈ 23 BoxDrawingsHeavyQuadrupleDashHorizontal rune = '\u2509' // ┉ 24 BoxDrawingsLightQuadrupleDashVertical rune = '\u250a' // ┊ 25 BoxDrawingsHeavyQuadrupleDashVertical rune = '\u250b' // ┋ 26 BoxDrawingsLightDownAndRight rune = '\u250c' // ┌ 27 BoxDrawingsDownLightAndRightHeavy rune = '\u250d' // ┍ 28 BoxDrawingsDownHeavyAndRightLight rune = '\u250e' // ┎ 29 BoxDrawingsHeavyDownAndRight rune = '\u250f' // ┏ 30 BoxDrawingsLightDownAndLeft rune = '\u2510' // ┐ 31 BoxDrawingsDownLightAndLeftHeavy rune = '\u2511' // ┑ 32 BoxDrawingsDownHeavyAndLeftLight rune = '\u2512' // ┒ 33 BoxDrawingsHeavyDownAndLeft rune = '\u2513' // ┓ 34 BoxDrawingsLightUpAndRight rune = '\u2514' // └ 35 BoxDrawingsUpLightAndRightHeavy rune = '\u2515' // ┕ 36 BoxDrawingsUpHeavyAndRightLight rune = '\u2516' // ┖ 37 BoxDrawingsHeavyUpAndRight rune = '\u2517' // ┗ 38 BoxDrawingsLightUpAndLeft rune = '\u2518' // ┘ 39 BoxDrawingsUpLightAndLeftHeavy rune = '\u2519' // ┙ 40 BoxDrawingsUpHeavyAndLeftLight rune = '\u251a' // ┚ 41 BoxDrawingsHeavyUpAndLeft rune = '\u251b' // ┛ 42 BoxDrawingsLightVerticalAndRight rune = '\u251c' // ├ 43 BoxDrawingsVerticalLightAndRightHeavy rune = '\u251d' // ┝ 44 BoxDrawingsUpHeavyAndRightDownLight rune = '\u251e' // ┞ 45 BoxDrawingsDownHeavyAndRightUpLight rune = '\u251f' // ┟ 46 BoxDrawingsVerticalHeavyAndRightLight rune = '\u2520' // ┠ 47 BoxDrawingsDownLightAndRightUpHeavy rune = '\u2521' // ┡ 48 BoxDrawingsUpLightAndRightDownHeavy rune = '\u2522' // ┢ 49 BoxDrawingsHeavyVerticalAndRight rune = '\u2523' // ┣ 50 BoxDrawingsLightVerticalAndLeft rune = '\u2524' // ┤ 51 BoxDrawingsVerticalLightAndLeftHeavy rune = '\u2525' // ┥ 52 BoxDrawingsUpHeavyAndLeftDownLight rune = '\u2526' // ┦ 53 BoxDrawingsDownHeavyAndLeftUpLight rune = '\u2527' // ┧ 54 BoxDrawingsVerticalHeavyAndLeftLight rune = '\u2528' // ┨ 55 BoxDrawingsDownLightAndLeftUpHeavy rune = '\u2529' // ┨ 56 BoxDrawingsUpLightAndLeftDownHeavy rune = '\u252a' // ┪ 57 BoxDrawingsHeavyVerticalAndLeft rune = '\u252b' // ┫ 58 BoxDrawingsLightDownAndHorizontal rune = '\u252c' // ┬ 59 BoxDrawingsLeftHeavyAndRightDownLight rune = '\u252d' // ┭ 60 BoxDrawingsRightHeavyAndLeftDownLight rune = '\u252e' // ┮ 61 BoxDrawingsDownLightAndHorizontalHeavy rune = '\u252f' // ┯ 62 BoxDrawingsDownHeavyAndHorizontalLight rune = '\u2530' // ┰ 63 BoxDrawingsRightLightAndLeftDownHeavy rune = '\u2531' // ┱ 64 BoxDrawingsLeftLightAndRightDownHeavy rune = '\u2532' // ┲ 65 BoxDrawingsHeavyDownAndHorizontal rune = '\u2533' // ┳ 66 BoxDrawingsLightUpAndHorizontal rune = '\u2534' // ┴ 67 BoxDrawingsLeftHeavyAndRightUpLight rune = '\u2535' // ┵ 68 BoxDrawingsRightHeavyAndLeftUpLight rune = '\u2536' // ┶ 69 BoxDrawingsUpLightAndHorizontalHeavy rune = '\u2537' // ┷ 70 BoxDrawingsUpHeavyAndHorizontalLight rune = '\u2538' // ┸ 71 BoxDrawingsRightLightAndLeftUpHeavy rune = '\u2539' // ┹ 72 BoxDrawingsLeftLightAndRightUpHeavy rune = '\u253a' // ┺ 73 BoxDrawingsHeavyUpAndHorizontal rune = '\u253b' // ┻ 74 BoxDrawingsLightVerticalAndHorizontal rune = '\u253c' // ┼ 75 BoxDrawingsLeftHeavyAndRightVerticalLight rune = '\u253d' // ┽ 76 BoxDrawingsRightHeavyAndLeftVerticalLight rune = '\u253e' // ┾ 77 BoxDrawingsVerticalLightAndHorizontalHeavy rune = '\u253f' // ┿ 78 BoxDrawingsUpHeavyAndDownHorizontalLight rune = '\u2540' // ╀ 79 BoxDrawingsDownHeavyAndUpHorizontalLight rune = '\u2541' // ╁ 80 BoxDrawingsVerticalHeavyAndHorizontalLight rune = '\u2542' // ╂ 81 BoxDrawingsLeftUpHeavyAndRightDownLight rune = '\u2543' // ╃ 82 BoxDrawingsRightUpHeavyAndLeftDownLight rune = '\u2544' // ╄ 83 BoxDrawingsLeftDownHeavyAndRightUpLight rune = '\u2545' // ╅ 84 BoxDrawingsRightDownHeavyAndLeftUpLight rune = '\u2546' // ╆ 85 BoxDrawingsDownLightAndUpHorizontalHeavy rune = '\u2547' // ╇ 86 BoxDrawingsUpLightAndDownHorizontalHeavy rune = '\u2548' // ╈ 87 BoxDrawingsRightLightAndLeftVerticalHeavy rune = '\u2549' // ╉ 88 BoxDrawingsLeftLightAndRightVerticalHeavy rune = '\u254a' // ╊ 89 BoxDrawingsHeavyVerticalAndHorizontal rune = '\u254b' // ╋ 90 BoxDrawingsLightDoubleDashHorizontal rune = '\u254c' // ╌ 91 BoxDrawingsHeavyDoubleDashHorizontal rune = '\u254d' // ╍ 92 BoxDrawingsLightDoubleDashVertical rune = '\u254e' // ╎ 93 BoxDrawingsHeavyDoubleDashVertical rune = '\u254f' // ╏ 94 BoxDrawingsDoubleHorizontal rune = '\u2550' // ═ 95 BoxDrawingsDoubleVertical rune = '\u2551' // ║ 96 BoxDrawingsDownSingleAndRightDouble rune = '\u2552' // ╒ 97 BoxDrawingsDownDoubleAndRightSingle rune = '\u2553' // ╓ 98 BoxDrawingsDoubleDownAndRight rune = '\u2554' // ╔ 99 BoxDrawingsDownSingleAndLeftDouble rune = '\u2555' // ╕ 100 BoxDrawingsDownDoubleAndLeftSingle rune = '\u2556' // ╖ 101 BoxDrawingsDoubleDownAndLeft rune = '\u2557' // ╗ 102 BoxDrawingsUpSingleAndRightDouble rune = '\u2558' // ╘ 103 BoxDrawingsUpDoubleAndRightSingle rune = '\u2559' // ╙ 104 BoxDrawingsDoubleUpAndRight rune = '\u255a' // ╚ 105 BoxDrawingsUpSingleAndLeftDouble rune = '\u255b' // ╛ 106 BoxDrawingsUpDoubleAndLeftSingle rune = '\u255c' // ╜ 107 BoxDrawingsDoubleUpAndLeft rune = '\u255d' // ╝ 108 BoxDrawingsVerticalSingleAndRightDouble rune = '\u255e' // ╞ 109 BoxDrawingsVerticalDoubleAndRightSingle rune = '\u255f' // ╟ 110 BoxDrawingsDoubleVerticalAndRight rune = '\u2560' // ╠ 111 BoxDrawingsVerticalSingleAndLeftDouble rune = '\u2561' // ╡ 112 BoxDrawingsVerticalDoubleAndLeftSingle rune = '\u2562' // ╢ 113 BoxDrawingsDoubleVerticalAndLeft rune = '\u2563' // ╣ 114 BoxDrawingsDownSingleAndHorizontalDouble rune = '\u2564' // ╤ 115 BoxDrawingsDownDoubleAndHorizontalSingle rune = '\u2565' // ╥ 116 BoxDrawingsDoubleDownAndHorizontal rune = '\u2566' // ╦ 117 BoxDrawingsUpSingleAndHorizontalDouble rune = '\u2567' // ╧ 118 BoxDrawingsUpDoubleAndHorizontalSingle rune = '\u2568' // ╨ 119 BoxDrawingsDoubleUpAndHorizontal rune = '\u2569' // ╩ 120 BoxDrawingsVerticalSingleAndHorizontalDouble rune = '\u256a' // ╪ 121 BoxDrawingsVerticalDoubleAndHorizontalSingle rune = '\u256b' // ╫ 122 BoxDrawingsDoubleVerticalAndHorizontal rune = '\u256c' // ╬ 123 BoxDrawingsLightArcDownAndRight rune = '\u256d' // ╭ 124 BoxDrawingsLightArcDownAndLeft rune = '\u256e' // ╮ 125 BoxDrawingsLightArcUpAndLeft rune = '\u256f' // ╯ 126 BoxDrawingsLightArcUpAndRight rune = '\u2570' // ╰ 127 BoxDrawingsLightDiagonalUpperRightToLowerLeft rune = '\u2571' // ╱ 128 BoxDrawingsLightDiagonalUpperLeftToLowerRight rune = '\u2572' // ╲ 129 BoxDrawingsLightDiagonalCross rune = '\u2573' // ╳ 130 BoxDrawingsLightLeft rune = '\u2574' // ╴ 131 BoxDrawingsLightUp rune = '\u2575' // ╵ 132 BoxDrawingsLightRight rune = '\u2576' // ╶ 133 BoxDrawingsLightDown rune = '\u2577' // ╷ 134 BoxDrawingsHeavyLeft rune = '\u2578' // ╸ 135 BoxDrawingsHeavyUp rune = '\u2579' // ╹ 136 BoxDrawingsHeavyRight rune = '\u257a' // ╺ 137 BoxDrawingsHeavyDown rune = '\u257b' // ╻ 138 BoxDrawingsLightLeftAndHeavyRight rune = '\u257c' // ╼ 139 BoxDrawingsLightUpAndHeavyDown rune = '\u257d' // ╽ 140 BoxDrawingsHeavyLeftAndLightRight rune = '\u257e' // ╾ 141 BoxDrawingsHeavyUpAndLightDown rune = '\u257f' // ╿ 142 143 // Block Elements. 144 BlockUpperHalfBlock rune = '\u2580' // ▀ 145 BlockLowerOneEighthBlock rune = '\u2581' // ▁ 146 BlockLowerOneQuarterBlock rune = '\u2582' // ▂ 147 BlockLowerThreeEighthsBlock rune = '\u2583' // ▃ 148 BlockLowerHalfBlock rune = '\u2584' // ▄ 149 BlockLowerFiveEighthsBlock rune = '\u2585' // ▅ 150 BlockLowerThreeQuartersBlock rune = '\u2586' // ▆ 151 BlockLowerSevenEighthsBlock rune = '\u2587' // ▇ 152 BlockFullBlock rune = '\u2588' // █ 153 BlockLeftSevenEighthsBlock rune = '\u2589' // ▉ 154 BlockLeftThreeQuartersBlock rune = '\u258A' // ▊ 155 BlockLeftFiveEighthsBlock rune = '\u258B' // ▋ 156 BlockLeftHalfBlock rune = '\u258C' // ▌ 157 BlockLeftThreeEighthsBlock rune = '\u258D' // ▍ 158 BlockLeftOneQuarterBlock rune = '\u258E' // ▎ 159 BlockLeftOneEighthBlock rune = '\u258F' // ▏ 160 BlockRightHalfBlock rune = '\u2590' // ▐ 161 BlockLightShade rune = '\u2591' // ░ 162 BlockMediumShade rune = '\u2592' // ▒ 163 BlockDarkShade rune = '\u2593' // ▓ 164 BlockUpperOneEighthBlock rune = '\u2594' // ▔ 165 BlockRightOneEighthBlock rune = '\u2595' // ▕ 166 BlockQuadrantLowerLeft rune = '\u2596' // ▖ 167 BlockQuadrantLowerRight rune = '\u2597' // ▗ 168 BlockQuadrantUpperLeft rune = '\u2598' // ▘ 169 BlockQuadrantUpperLeftAndLowerLeftAndLowerRight rune = '\u2599' // ▙ 170 BlockQuadrantUpperLeftAndLowerRight rune = '\u259A' // ▚ 171 BlockQuadrantUpperLeftAndUpperRightAndLowerLeft rune = '\u259B' // ▛ 172 BlockQuadrantUpperLeftAndUpperRightAndLowerRight rune = '\u259C' // ▜ 173 BlockQuadrantUpperRight rune = '\u259D' // ▝ 174 BlockQuadrantUpperRightAndLowerLeft rune = '\u259E' // ▞ 175 BlockQuadrantUpperRightAndLowerLeftAndLowerRight rune = '\u259F' // ▟ 176 ) 177 178 // SemigraphicJoints is a map for joining semigraphic (or otherwise) runes. 179 // So far only light lines are supported but if you want to change the border 180 // styling you need to provide the joints, too. 181 // The matching will be sorted ascending by rune value, so you don't need to 182 // provide all rune combinations, 183 // e.g. (─) + (│) = (┼) will also match (│) + (─) = (┼) 184 var SemigraphicJoints = map[string]rune{ 185 // (─) + (│) = (┼) 186 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVertical}): BoxDrawingsLightVerticalAndHorizontal, 187 // (─) + (┌) = (┬) 188 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndRight}): BoxDrawingsLightDownAndHorizontal, 189 // (─) + (┐) = (┬) 190 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightDownAndHorizontal, 191 // (─) + (└) = (┴) 192 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndRight}): BoxDrawingsLightUpAndHorizontal, 193 // (─) + (┘) = (┴) 194 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightUpAndHorizontal, 195 // (─) + (├) = (┼) 196 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, 197 // (─) + (┤) = (┼) 198 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, 199 // (─) + (┬) = (┬) 200 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, 201 // (─) + (┴) = (┴) 202 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, 203 // (─) + (┼) = (┼) 204 string([]rune{BoxDrawingsLightHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 205 206 // (│) + (┌) = (├) 207 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndRight}): BoxDrawingsLightVerticalAndRight, 208 // (│) + (┐) = (┤) 209 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightVerticalAndLeft, 210 // (│) + (└) = (├) 211 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndRight, 212 // (│) + (┘) = (┤) 213 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndLeft, 214 // (│) + (├) = (├) 215 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, 216 // (│) + (┤) = (┤) 217 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, 218 // (│) + (┬) = (┼) 219 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 220 // (│) + (┴) = (┼) 221 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 222 // (│) + (┼) = (┼) 223 string([]rune{BoxDrawingsLightVertical, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 224 225 // (┌) + (┐) = (┬) 226 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightDownAndLeft}): BoxDrawingsLightDownAndHorizontal, 227 // (┌) + (└) = (├) 228 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndRight, 229 // (┌) + (┘) = (┼) 230 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndHorizontal, 231 // (┌) + (├) = (├) 232 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, 233 // (┌) + (┤) = (┼) 234 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, 235 // (┌) + (┬) = (┬) 236 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, 237 // (┌) + (┴) = (┼) 238 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 239 // (┌) + (┴) = (┼) 240 string([]rune{BoxDrawingsLightDownAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 241 242 // (┐) + (└) = (┼) 243 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndRight}): BoxDrawingsLightVerticalAndHorizontal, 244 // (┐) + (┘) = (┤) 245 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightVerticalAndLeft, 246 // (┐) + (├) = (┼) 247 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, 248 // (┐) + (┤) = (┤) 249 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, 250 // (┐) + (┬) = (┬) 251 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightDownAndHorizontal, 252 // (┐) + (┴) = (┼) 253 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 254 // (┐) + (┼) = (┼) 255 string([]rune{BoxDrawingsLightDownAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 256 257 // (└) + (┘) = (┴) 258 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightUpAndLeft}): BoxDrawingsLightUpAndHorizontal, 259 // (└) + (├) = (├) 260 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndRight, 261 // (└) + (┤) = (┼) 262 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, 263 // (└) + (┬) = (┼) 264 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 265 // (└) + (┴) = (┴) 266 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, 267 // (└) + (┼) = (┼) 268 string([]rune{BoxDrawingsLightUpAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 269 270 // (┘) + (├) = (┼) 271 string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndRight}): BoxDrawingsLightVerticalAndHorizontal, 272 // (┘) + (┤) = (┤) 273 string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndLeft, 274 // (┘) + (┬) = (┼) 275 string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 276 // (┘) + (┴) = (┴) 277 string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightUpAndHorizontal, 278 // (┘) + (┼) = (┼) 279 string([]rune{BoxDrawingsLightUpAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 280 281 // (├) + (┤) = (┼) 282 string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightVerticalAndLeft}): BoxDrawingsLightVerticalAndHorizontal, 283 // (├) + (┬) = (┼) 284 string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 285 // (├) + (┴) = (┼) 286 string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 287 // (├) + (┼) = (┼) 288 string([]rune{BoxDrawingsLightVerticalAndRight, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 289 290 // (┤) + (┬) = (┼) 291 string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightDownAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 292 // (┤) + (┴) = (┼) 293 string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 294 // (┤) + (┼) = (┼) 295 string([]rune{BoxDrawingsLightVerticalAndLeft, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 296 297 // (┬) + (┴) = (┼) 298 string([]rune{BoxDrawingsLightDownAndHorizontal, BoxDrawingsLightUpAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 299 // (┬) + (┼) = (┼) 300 string([]rune{BoxDrawingsLightDownAndHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 301 302 // (┴) + (┼) = (┼) 303 string([]rune{BoxDrawingsLightUpAndHorizontal, BoxDrawingsLightVerticalAndHorizontal}): BoxDrawingsLightVerticalAndHorizontal, 304 } 305 306 // PrintJoinedSemigraphics prints a semigraphics rune into the screen at the given 307 // position with the given style, joining it with any existing semigraphics 308 // rune.At this point, only regular single line borders are supported. 309 func PrintJoinedSemigraphics(screen tcell.Screen, x, y int, ch rune, style tcell.Style) { 310 previous, _, _, _ := screen.GetContent(x, y) 311 312 // What's the resulting rune? 313 var result rune 314 if ch == previous { 315 result = ch 316 } else { 317 if ch < previous { 318 previous, ch = ch, previous 319 } 320 result = SemigraphicJoints[string([]rune{previous, ch})] 321 } 322 if result == 0 { 323 result = ch 324 } 325 326 // We only print something if we have something. 327 screen.SetContent(x, y, result, nil, style) 328 }