aboutsummaryrefslogtreecommitdiff
path: root/src/visualizer/grid.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/visualizer/grid.c')
-rw-r--r--src/visualizer/grid.c146
1 files changed, 73 insertions, 73 deletions
diff --git a/src/visualizer/grid.c b/src/visualizer/grid.c
index 32ade1b..29d1981 100644
--- a/src/visualizer/grid.c
+++ b/src/visualizer/grid.c
@@ -6,129 +6,129 @@
static size_t glyph_bytes(unsigned char lead)
{
- if (lead < 0x80)
- return 1;
- if ((lead >> 5) == 0x6)
- return 2;
- if ((lead >> 4) == 0xE)
- return 3;
- if ((lead >> 3) == 0x1E)
- return 4;
+ if (lead < 0x80)
+ return 1;
+ if ((lead >> 5) == 0x6)
+ return 2;
+ if ((lead >> 4) == 0xE)
+ return 3;
+ if ((lead >> 3) == 0x1E)
+ return 4;
- return 1;
+ return 1;
}
size_t psi_utf8_count(const char* s)
{
- size_t count = 0;
- while (*s)
- {
- s += glyph_bytes((unsigned char)*s);
- count++;
- }
+ size_t count = 0;
+ while (*s)
+ {
+ s += glyph_bytes((unsigned char)*s);
+ count++;
+ }
- return count;
+ return count;
}
struct PsiStringBuilder psi_new_string_builder(void)
{
- return (struct PsiStringBuilder){
- NULL,
- 0,
- 0,
- };
+ return (struct PsiStringBuilder){
+ NULL,
+ 0,
+ 0,
+ };
}
void psi_string_builder_append(struct PsiStringBuilder* sb, const char* s)
{
- size_t n = strlen(s);
- if (sb->len + n + 1 > sb->cap)
- {
- size_t new_cap = sb->cap == 0 ? 256 : sb->cap * 2;
- while (new_cap < sb->len + n + 1)
- new_cap *= 2;
+ size_t n = strlen(s);
+ if (sb->len + n + 1 > sb->cap)
+ {
+ size_t new_cap = sb->cap == 0 ? 256 : sb->cap * 2;
+ while (new_cap < sb->len + n + 1)
+ new_cap *= 2;
- sb->data = realloc(sb->data, new_cap);
- assert(sb->data != NULL);
- sb->cap = new_cap;
- }
+ sb->data = realloc(sb->data, new_cap);
+ assert(sb->data != NULL);
+ sb->cap = new_cap;
+ }
- memcpy(sb->data + sb->len, s, n + 1);
- sb->len += n;
+ memcpy(sb->data + sb->len, s, n + 1);
+ sb->len += n;
}
char* psi_string_builder_finish(struct PsiStringBuilder* sb)
{
- if (sb->data == NULL)
- psi_string_builder_append(sb, "");
+ if (sb->data == NULL)
+ psi_string_builder_append(sb, "");
- return sb->data;
+ return sb->data;
}
struct PsiGlyphRow psi_new_glyph_row(size_t width)
{
- char (*cells)[5] = malloc(width * sizeof(*cells));
- assert(cells != NULL || width == 0);
+ char (*cells)[5] = malloc(width * sizeof(*cells));
+ assert(cells != NULL || width == 0);
- for (size_t i = 0; i < width; i++)
- memcpy(cells[i], " ", 2);
+ for (size_t i = 0; i < width; i++)
+ memcpy(cells[i], " ", 2);
- return (struct PsiGlyphRow){
- cells,
- width,
- };
+ return (struct PsiGlyphRow){
+ cells,
+ width,
+ };
}
void psi_free_glyph_row(struct PsiGlyphRow* row)
{
- free(row->cells);
- row->cells = NULL;
- row->width = 0;
+ free(row->cells);
+ row->cells = NULL;
+ row->width = 0;
}
void psi_glyph_row_set(struct PsiGlyphRow* row, size_t index, const char* glyph)
{
- if (index >= row->width)
- return;
+ if (index >= row->width)
+ return;
- size_t n = glyph_bytes((unsigned char)glyph[0]);
- memcpy(row->cells[index], glyph, n);
- row->cells[index][n] = '\0';
+ size_t n = glyph_bytes((unsigned char)glyph[0]);
+ memcpy(row->cells[index], glyph, n);
+ row->cells[index][n] = '\0';
}
size_t psi_glyph_row_place(struct PsiGlyphRow* row, size_t start, const char* utf8)
{
- size_t count = 0;
- const char* p = utf8;
+ size_t count = 0;
+ const char* p = utf8;
- while (*p)
- {
- size_t n = glyph_bytes((unsigned char)*p);
- size_t index = start + count;
- if (index < row->width)
- {
- memcpy(row->cells[index], p, n);
- row->cells[index][n] = '\0';
- }
+ while (*p)
+ {
+ size_t n = glyph_bytes((unsigned char)*p);
+ size_t index = start + count;
+ if (index < row->width)
+ {
+ memcpy(row->cells[index], p, n);
+ row->cells[index][n] = '\0';
+ }
- p += n;
- count++;
- }
+ p += n;
+ count++;
+ }
- return count;
+ return count;
}
void psi_glyph_row_fill_space(struct PsiGlyphRow* row, size_t from, size_t to, const char* glyph)
{
- for (size_t i = from; i < to && i < row->width; i++)
- if (strcmp(row->cells[i], " ") == 0)
- psi_glyph_row_set(row, i, glyph);
+ for (size_t i = from; i < to && i < row->width; i++)
+ if (strcmp(row->cells[i], " ") == 0)
+ psi_glyph_row_set(row, i, glyph);
}
void psi_glyph_row_render(struct PsiGlyphRow row, struct PsiStringBuilder* sb)
{
- for (size_t i = 0; i < row.width; i++)
- psi_string_builder_append(sb, row.cells[i]);
+ for (size_t i = 0; i < row.width; i++)
+ psi_string_builder_append(sb, row.cells[i]);
- psi_string_builder_append(sb, "\n");
+ psi_string_builder_append(sb, "\n");
}