ref: 2f2cde293c602af5a0ec94dfb0f36fe135898adc
parent: 831735d7990dede6325b3034ffe35085b471a6ab
author: cancel <cancel@cancel.fm>
date: Wed Jan 1 13:22:28 EST 2020
Cleanup fancy ruler drawing
--- a/tui_main.c
+++ b/tui_main.c
@@ -513,6 +513,24 @@
return;
bool use_rulers = ruler_spacing_y != 0 && ruler_spacing_x != 0;
chtype bullet = ACS_BULLET;
+ enum { T = 1 << 0, B = 1 << 1, L = 1 << 2, R = 1 << 3 };
+ chtype rs[T | B | L | R];
+ if (use_rulers) {
+ bool use_fancy_rulers = true;
+ for (Usz i = 0; i < sizeof rs / sizeof(chtype); ++i) {
+ rs[i] = '+';
+ }
+ if (use_fancy_rulers) {
+ rs[T | L] = ACS_ULCORNER;
+ rs[T | R] = ACS_URCORNER;
+ rs[B | L] = ACS_LLCORNER;
+ rs[B | R] = ACS_LRCORNER;
+ rs[T] = ACS_TTEE;
+ rs[B] = ACS_BTEE;
+ rs[L] = ACS_LTEE;
+ rs[R] = ACS_RTEE;
+ }
+ }
for (Usz iy = 0; iy < rows; ++iy) {
Usz line_offset = (offset_y + iy) * field_w + offset_x;
Glyph const* g_row = gbuffer + line_offset;
@@ -523,31 +541,15 @@
Mark m = m_row[ix];
chtype ch;
if (g == '.') {
- ch = bullet;
if (use_y_ruler && (ix + offset_x) % ruler_spacing_x == 0) {
- bool top = iy + offset_y == 0;
- bool bot = iy + offset_y + 1 == field_h;
- bool left = ix + offset_x == 0;
- bool right = ix + offset_x + 1 == field_w;
- if (top && left) {
- ch = ACS_ULCORNER;
- } else if (top && right) {
- ch = ACS_URCORNER;
- } else if (bot && left) {
- ch = ACS_LLCORNER;
- } else if (bot && right) {
- ch = ACS_LRCORNER;
- } else if (top) {
- ch = ACS_TTEE;
- } else if (bot) {
- ch = ACS_BTEE;
- } else if (left) {
- ch = ACS_LTEE;
- } else if (right) {
- ch = ACS_RTEE;
- } else {
- ch = '+';
- }
+ int p = 0; // clang-format off
+ if (iy + offset_y == 0 ) p |= T;
+ if (iy + offset_y + 1 == field_h) p |= B;
+ if (ix + offset_x == 0 ) p |= L;
+ if (ix + offset_x + 1 == field_w) p |= R;
+ ch = rs[p]; // clang-format on
+ } else {
+ ch = bullet;
}
} else {
ch = (chtype)g;