All the unicode helpers are move to TSM so move the symbols, too.
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
#define LOG_SUBSYSTEM "console"
struct cell {
- kmscon_symbol_t ch;
+ tsm_symbol_t ch;
struct kmscon_console_attr attr;
};
}
static void console_write(struct kmscon_console *con, unsigned int x,
- unsigned int y, kmscon_symbol_t ch,
+ unsigned int y, tsm_symbol_t ch,
const struct kmscon_console_attr *attr)
{
struct line *line;
con->tab_ruler[i] = false;
}
-void kmscon_console_write(struct kmscon_console *con, kmscon_symbol_t ch,
+void kmscon_console_write(struct kmscon_console *con, tsm_symbol_t ch,
const struct kmscon_console_attr *attr)
{
unsigned int last;
typedef int (*kmscon_console_prepare_cb) (struct kmscon_console *con,
void *data);
typedef int (*kmscon_console_draw_cb) (struct kmscon_console *con,
- kmscon_symbol_t ch,
+ tsm_symbol_t ch,
unsigned int posx,
unsigned int posy,
const struct kmscon_console_attr *attr,
void kmscon_console_reset_tabstop(struct kmscon_console *con);
void kmscon_console_reset_all_tabstops(struct kmscon_console *con);
-void kmscon_console_write(struct kmscon_console *con, kmscon_symbol_t ch,
+void kmscon_console_write(struct kmscon_console *con, tsm_symbol_t ch,
const struct kmscon_console_attr *attr);
void kmscon_console_newline(struct kmscon_console *con);
void kmscon_console_scroll_up(struct kmscon_console *con, unsigned int num);
*
* Returns: 0 on success or negative error code if this glyph couldn't be drawn.
*/
-int kmscon_text_draw(struct kmscon_text *txt, kmscon_symbol_t ch,
+int kmscon_text_draw(struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr)
{
return kmscon_text_prepare(data);
}
-int kmscon_text_draw_cb(struct kmscon_console *con, kmscon_symbol_t ch,
+int kmscon_text_draw_cb(struct kmscon_console *con, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr, void *data)
{
int (*init) (struct kmscon_font *out,
const struct kmscon_font_attr *attr);
void (*destroy) (struct kmscon_font *font);
- int (*render) (struct kmscon_font *font, kmscon_symbol_t sym,
+ int (*render) (struct kmscon_font *font, tsm_symbol_t sym,
const struct kmscon_glyph **out);
int (*render_empty) (struct kmscon_font *font,
const struct kmscon_glyph **out);
void kmscon_font_ref(struct kmscon_font *font);
void kmscon_font_unref(struct kmscon_font *font);
-int kmscon_font_render(struct kmscon_font *font, kmscon_symbol_t sym,
+int kmscon_font_render(struct kmscon_font *font, tsm_symbol_t sym,
const struct kmscon_glyph **out);
int kmscon_font_render_empty(struct kmscon_font *font,
const struct kmscon_glyph **out);
int (*set) (struct kmscon_text *txt);
void (*unset) (struct kmscon_text *txt);
int (*prepare) (struct kmscon_text *txt);
- int (*draw) (struct kmscon_text *txt, kmscon_symbol_t ch,
+ int (*draw) (struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr);
int (*render) (struct kmscon_text *txt);
unsigned int kmscon_text_get_rows(struct kmscon_text *txt);
int kmscon_text_prepare(struct kmscon_text *txt);
-int kmscon_text_draw(struct kmscon_text *txt, kmscon_symbol_t ch,
+int kmscon_text_draw(struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr);
int kmscon_text_render(struct kmscon_text *txt);
void kmscon_text_abort(struct kmscon_text *txt);
int kmscon_text_prepare_cb(struct kmscon_console *con, void *data);
-int kmscon_text_draw_cb(struct kmscon_console *con, kmscon_symbol_t ch,
+int kmscon_text_draw_cb(struct kmscon_console *con, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr, void *data);
int kmscon_text_render_cb(struct kmscon_console *con, void *data);
return 0;
}
-static int bblit_draw(struct kmscon_text *txt, kmscon_symbol_t ch,
+static int bblit_draw(struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr)
{
bb->reqs = NULL;
}
-static int bbulk_draw(struct kmscon_text *txt, kmscon_symbol_t ch,
+static int bbulk_draw(struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr)
{
*
* Returns: 0 on success, negative error code on failure
*/
-int kmscon_font_render(struct kmscon_font *font, kmscon_symbol_t sym,
+int kmscon_font_render(struct kmscon_font *font, tsm_symbol_t sym,
const struct kmscon_glyph **out)
{
if (!font || !out)
}
static int kmscon_font_8x16_render(struct kmscon_font *font,
- kmscon_symbol_t sym,
+ tsm_symbol_t sym,
const struct kmscon_glyph **out)
{
const uint32_t *val;
size_t len;
- val = kmscon_symbol_get(&sym, &len);
+ val = tsm_symbol_get(&sym, &len);
if (len > 1 || *val >= 256)
return -ERANGE;
}
static int get_glyph(struct face *face, struct kmscon_glyph **out,
- kmscon_symbol_t ch)
+ tsm_symbol_t ch)
{
struct kmscon_glyph *glyph;
struct glyph *data;
* TODO: Fix this by drawing all related characters into a single glyph
* and saving it or simply refer to the pango backend which already does
* that. */
- val = kmscon_symbol_get(&ch, &len);
+ val = tsm_symbol_get(&ch, &len);
if (len > 1 || !*val) {
ret = -ERANGE;
goto out_glyph;
memset(face->empty.buf.data, 0, s);
- ret = get_glyph(face, &g, kmscon_symbol_make('?'));
+ ret = get_glyph(face, &g, tsm_symbol_make('?'));
if (ret) {
memcpy(&face->inval, &face->empty, sizeof(face->inval));
} else {
{
struct face *face = NULL;
int ret;
- kmscon_symbol_t ch;
+ tsm_symbol_t ch;
unsigned int i, width;
struct kmscon_glyph *glyph;
struct glyph *data;
if (face->shrink) {
width = 0;
for (i = 0x20; i < 0x7f; ++i) {
- ch = kmscon_symbol_make(i);
+ ch = tsm_symbol_make(i);
ret = get_glyph(face, &glyph, ch);
if (ret)
continue;
}
static int kmscon_font_freetype2_render(struct kmscon_font *font,
- kmscon_symbol_t sym,
+ tsm_symbol_t sym,
const struct kmscon_glyph **out)
{
struct kmscon_glyph *glyph;
}
static int get_glyph(struct face *face, struct kmscon_glyph **out,
- kmscon_symbol_t ch)
+ tsm_symbol_t ch)
{
struct kmscon_glyph *glyph;
PangoLayout *layout;
/* no line spacing */
pango_layout_set_spacing(layout, 0);
- val = kmscon_symbol_get_u8(ch, &len);
+ val = tsm_symbol_get_u8(ch, &len);
pango_layout_set_text(layout, val, len);
- kmscon_symbol_free_u8(val);
+ tsm_symbol_free_u8(val);
cnt = pango_layout_get_line_count(layout);
if (cnt == 0) {
}
static int kmscon_font_pango_render(struct kmscon_font *font,
- kmscon_symbol_t sym,
+ tsm_symbol_t sym,
const struct kmscon_glyph **out)
{
struct kmscon_glyph *glyph;
}
static int kmscon_font_unifont_render(struct kmscon_font *font,
- kmscon_symbol_t sym,
+ tsm_symbol_t sym,
const struct kmscon_glyph **out)
{
const uint32_t *val;
size_t len;
- val = kmscon_symbol_get(&sym, &len);
+ val = tsm_symbol_get(&sym, &len);
if (len > 1 || *val >= kmscon_text_font_unifont_data_hex_len)
return -ERANGE;
}
static int find_glyph(struct kmscon_text *txt, struct glyph **out,
- kmscon_symbol_t ch)
+ tsm_symbol_t ch)
{
struct gltex *gt = txt->data;
struct atlas *atlas;
return 0;
}
-static int gltex_draw(struct kmscon_text *txt, kmscon_symbol_t ch,
+static int gltex_draw(struct kmscon_text *txt, tsm_symbol_t ch,
unsigned int posx, unsigned int posy,
const struct kmscon_console_attr *attr)
{
/*
* Unicode Symbol Handling
- * The main goal of the kmscon_symbol_* functions is to provide a datatype which
+ * The main goal of the tsm_symbol_* functions is to provide a datatype which
* can contain the representation of any printable character. This includes all
* basic Unicode characters but also combined characters.
* To avoid all the memory management we still represent a character as a single
- * integer value (kmscon_symbol_t) but internally we allocate a string which is
+ * integer value (tsm_symbol_t) but internally we allocate a string which is
* represented by this value.
*
- * A kmscon_symbol_t is an integer which represents a single character point.
+ * A tsm_symbol_t is an integer which represents a single character point.
* For most Unicode characters this is simply the UCS4 representation. In fact,
- * every UCS4 characters is a valid kmscon_symbol_t object.
+ * every UCS4 characters is a valid tsm_symbol_t object.
* However, Unicode standard allows combining marks. Therefore, some characters
* consists of more than one Unicode character.
* A global symbol-table provides all those combined characters as single
* integers. You simply create a valid base character and append your combining
- * marks and the table will return a new valid kmscon_symbol_t. It is no longer
+ * marks and the table will return a new valid tsm_symbol_t. It is no longer
* a valid UCS4 value, though. But no memory management is needed as all
- * kmscon_symbol_t objects are simple integers.
+ * tsm_symbol_t objects are simple integers.
*
* The symbol table contains two-way
* references. The Hash Table contains all the symbols with the symbol ucs4
#define KMSCON_UCS4_MAX 0x7fffffffUL
#define KMSCON_UCS4_INVALID 0xfffd
-const kmscon_symbol_t kmscon_symbol_default = 0;
+const tsm_symbol_t tsm_symbol_default = 0;
static const char default_u8[] = { 0 };
static pthread_mutex_t table_mutex = PTHREAD_MUTEX_INITIALIZER;
return 0;
}
-kmscon_symbol_t kmscon_symbol_make(uint32_t ucs4)
+tsm_symbol_t tsm_symbol_make(uint32_t ucs4)
{
if (ucs4 > KMSCON_UCS4_MAX) {
log_warn("invalid ucs4 character");
* This always returns a valid value. If an error happens, the default character
* is returned. If \size is NULL, then the size value is omitted.
*/
-static const uint32_t *table__get(kmscon_symbol_t *sym, size_t *size)
+static const uint32_t *table__get(tsm_symbol_t *sym, size_t *size)
{
uint32_t *ucs4;
if (table__init()) {
if (size)
*size = 1;
- return &kmscon_symbol_default;
+ return &tsm_symbol_default;
}
ucs4 = *KMSCON_ARRAY_AT(table_index, uint32_t*,
if (!ucs4) {
if (size)
*size = 1;
- return &kmscon_symbol_default;
+ return &tsm_symbol_default;
}
if (size) {
return ucs4;
}
-const uint32_t *kmscon_symbol_get(kmscon_symbol_t *sym, size_t *size)
+const uint32_t *tsm_symbol_get(tsm_symbol_t *sym, size_t *size)
{
const uint32_t *res;
return res;
}
-kmscon_symbol_t kmscon_symbol_append(kmscon_symbol_t sym, uint32_t ucs4)
+tsm_symbol_t tsm_symbol_append(tsm_symbol_t sym, uint32_t ucs4)
{
uint32_t buf[KMSCON_UCS4_MAXLEN + 1], nsym, *nval;
const uint32_t *ptr;
size_t s;
- kmscon_symbol_t rsym;
+ tsm_symbol_t rsym;
void *tmp;
bool res;
}
}
-const char *kmscon_symbol_get_u8(kmscon_symbol_t sym, size_t *size)
+const char *tsm_symbol_get_u8(tsm_symbol_t sym, size_t *size)
{
const uint32_t *ucs4;
char *val;
size_t i, pos, len;
- ucs4 = kmscon_symbol_get(&sym, &len);
+ ucs4 = tsm_symbol_get(&sym, &len);
val = malloc(4 * len);
if (!val)
goto err_out;
return default_u8;
}
-void kmscon_symbol_free_u8(const char *s)
+void tsm_symbol_free_u8(const char *s)
{
if (s != default_u8)
free((void*)s);
/* symbols */
-typedef uint32_t kmscon_symbol_t;
+typedef uint32_t tsm_symbol_t;
-extern const kmscon_symbol_t kmscon_symbol_default;
+extern const tsm_symbol_t tsm_symbol_default;
-kmscon_symbol_t kmscon_symbol_make(uint32_t ucs4);
-kmscon_symbol_t kmscon_symbol_append(kmscon_symbol_t sym, uint32_t ucs4);
-const uint32_t *kmscon_symbol_get(kmscon_symbol_t *sym, size_t *size);
-const char *kmscon_symbol_get_u8(kmscon_symbol_t sym, size_t *size);
-void kmscon_symbol_free_u8(const char *s);
+tsm_symbol_t tsm_symbol_make(uint32_t ucs4);
+tsm_symbol_t tsm_symbol_append(tsm_symbol_t sym, uint32_t ucs4);
+const uint32_t *tsm_symbol_get(tsm_symbol_t *sym, size_t *size);
+const char *tsm_symbol_get_u8(tsm_symbol_t sym, size_t *size);
+void tsm_symbol_free_u8(const char *s);
/* utf8 state machine */
vte_write_debug((_vte), (_u8), (_len), true, __FILE__, __LINE__)
/* write to console */
-static void write_console(struct kmscon_vte *vte, kmscon_symbol_t sym)
+static void write_console(struct kmscon_vte *vte, tsm_symbol_t sym)
{
to_rgb(vte, &vte->cattr);
kmscon_console_write(vte->con, sym, &vte->cattr);
/* perform parser action */
static void do_action(struct kmscon_vte *vte, uint32_t data, int action)
{
- kmscon_symbol_t sym;
+ tsm_symbol_t sym;
switch (action) {
case ACTION_NONE:
/* ignore character */
break;
case ACTION_PRINT:
- sym = kmscon_symbol_make(vte_map(vte, data));
+ sym = tsm_symbol_make(vte_map(vte, data));
write_console(vte, sym);
break;
case ACTION_EXECUTE:
bool kmscon_vte_handle_keyboard(struct kmscon_vte *vte, uint32_t keysym,
unsigned int mods, uint32_t unicode)
{
- kmscon_symbol_t sym;
+ tsm_symbol_t sym;
char val;
size_t len;
const char *u8;
}
vte_write_raw(vte, &val, 1);
} else {
- sym = kmscon_symbol_make(unicode);
- u8 = kmscon_symbol_get_u8(sym, &len);
+ sym = tsm_symbol_make(unicode);
+ u8 = tsm_symbol_get_u8(sym, &len);
vte_write_raw(vte, u8, len);
- kmscon_symbol_free_u8(u8);
+ tsm_symbol_free_u8(u8);
}
return true;
}
/* available character sets */
-typedef kmscon_symbol_t kmscon_vte_charset[96];
+typedef tsm_symbol_t kmscon_vte_charset[96];
extern kmscon_vte_charset kmscon_vte_unicode_lower;
extern kmscon_vte_charset kmscon_vte_unicode_upper;