aboutsummaryrefslogtreecommitdiff
path: root/src/visualizer/grid.h
blob: 9353433c9b8df507baf466e4632f742ba46adb8d (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);