/* SPDX-License-Identifier: MIT. Copyright (c) 2026 Joerg Burbach. */
#ifndef LEXA_H
#define LEXA_H
#include <stdint.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct { const uint8_t *id, *bytes; size_t id_size, size; } lexa_text;
typedef struct { uint8_t kind, method; uint16_t text_count, width, height; uint32_t raw_size; } lexa_info;
typedef struct { uint8_t kind; uint16_t width, height; size_t count, font_size; lexa_text *entries; uint8_t *font; } lexa_document;
int lexa_inspect(const uint8_t *, size_t, lexa_info *);
int lexa_decode(const uint8_t *, size_t, lexa_document *);
void lexa_free(lexa_document *);
int lexa_encode_text(const lexa_text *, size_t, uint8_t **, size_t *);
int lexa_encode_font(const uint8_t *, size_t, uint16_t, uint16_t, uint8_t **, size_t *);
/* Shared BriefLZ core: returned allocations belong to the caller, release with free(). */
uint8_t *lexa_brief_lz_encode(const uint8_t *, size_t, size_t *);
uint8_t *lexa_brief_lz_decode(const uint8_t *, size_t, size_t, size_t *);
#ifdef __cplusplus
}
#endif
#endif
