aboutsummaryrefslogtreecommitdiff
path: root/src/visualizer/grid.h
blob: f327df855c6b56d8d4fb6b4b7b209fc6bfbf69b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once

#include <stddef.h>

struct PsiStringBuilder
{
	char *data;
	size_t len;
	size_t cap;
};

struct PsiStringBuilder psi_new_string_builder(void);
void psi_string_builder_append(struct PsiStringBuilder *sb, const char *s);
char *psi_string_builder_finish(struct PsiStringBuilder *sb);

struct PsiGlyphRow
{
	char (*cells)[5];
	size_t width;
};

struct PsiGlyphRow psi_new_glyph_row(size_t width);
void psi_free_glyph_row(struct PsiGlyphRow *row);
void psi_glyph_row_set(struct PsiGlyphRow *row, size_t index, const char *glyph);
size_t psi_glyph_row_place(struct PsiGlyphRow *row, size_t start, const char *utf8);
void psi_glyph_row_fill_space(struct PsiGlyphRow *row, size_t from, size_t to, const char *glyph);
void psi_glyph_row_render(struct PsiGlyphRow row, struct PsiStringBuilder *sb);

size_t psi_utf8_count(const char *s);