27#if !defined(__LWS_DLO_H__)
41#define LWSDC_RGBA(_r, _g, _b, _a) (((uint32_t)(_r) & 0xff) | \
42 (((uint32_t)(_g) & 0xff) << 8) | \
43 (((uint32_t)(_b) & 0xff) << 16) | \
44 (((uint32_t)(_a) & 0xff) << 24))
46#define LWSDC_R(_c) ((_c) & 0xff)
47#define LWSDC_G(_c) ((_c >> 8) & 0xff)
48#define LWSDC_B(_c) ((_c >> 16) & 0xff)
49#define LWSDC_ALPHA(_c) ((_c >> 24) & 0xff)
51#define RGB_TO_Y(_r, _g, _b) ((((_r) * 299) + ((_g) * 587) + ((_b) * 114)) / 1000)
53#define PALETTE_RGBY(_r, _g, _b) LWSDC_RGBA(_r, _g, _b, (RGB_TO_Y(_r, _g, _b)))
285#define LWSDLO_TEXT_FLAG_WRAP (1 << 0)
439#if !defined(LWS_DLO_STACK_DEPTH)
440#if defined(LWS_ESP_PLATFORM)
441#define LWS_DLO_STACK_DEPTH 16
443#define LWS_DLO_STACK_DEPTH 64
487 struct lws_context *
cx;
594 const lws_box_t *box,
const char *url,
size_t url_len);
641 lws_fx_t indent,
const char *utf8,
size_t text_len);
666 lws_box_t *box,
const char *name,
size_t len);
683 lws_box_t *box,
const char *name,
size_t len);
700 lws_box_t *box,
const char *name,
size_t len);
717 lws_box_t *box,
const char *name,
size_t len);
744 struct lws_context *
cx;
838#if !defined(LWS_DLO_ASSET_BLOB_DEFAULT_MAX_FOOTPRINT)
839#define LWS_DLO_ASSET_BLOB_DEFAULT_MAX_FOOTPRINT (64 * 1024 * 1024)
844#if !defined(LWS_DLO_ASSET_BLOB_MAX_PAYLOAD)
845#define LWS_DLO_ASSET_BLOB_MAX_PAYLOAD (16 * 1024 * 1024)
849#if !defined(LWS_DLO_ASSET_L1_MAX_FOOTPRINT)
850#define LWS_DLO_ASSET_L1_MAX_FOOTPRINT (8 * 1024 * 1024)
854#if !defined(LWS_DLO_ASSET_L1_MAX_ITEMS)
855#define LWS_DLO_ASSET_L1_MAX_ITEMS 256
859#if !defined(LWS_DLO_ASSET_CACHE_EXPIRY_S)
860#define LWS_DLO_ASSET_CACHE_EXPIRY_S (24 * 60 * 60)
887#if defined(LWS_WITH_SVG) && defined(LWS_WITH_GIF)
889#define lws_dlo_image_width(_u) ((_u)->failed ? -1 : \
890 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
891 (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) : \
892 (_u)->type == LWSDLOSS_TYPE_SVG ? \
893 (int)lws_svg_get_width((_u)->u.dlo_svg->svg) : \
894 (_u)->type == LWSDLOSS_TYPE_GIF ? \
895 (int)lws_gif_get_width((_u)->u.dlo_gif->gif) : \
896 (int)lws_upng_get_width((_u)->u.dlo_png->png)))
897#define lws_dlo_image_height(_u) ((_u)->failed ? -1 : \
898 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
899 (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) : \
900 (_u)->type == LWSDLOSS_TYPE_SVG ? \
901 (int)lws_svg_get_height((_u)->u.dlo_svg->svg) : \
902 (_u)->type == LWSDLOSS_TYPE_GIF ? \
903 (int)lws_gif_get_height((_u)->u.dlo_gif->gif) : \
904 (int)lws_upng_get_height((_u)->u.dlo_png->png)))
906#define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL : \
907 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
908 lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) : \
909 (_u)->type == LWSDLOSS_TYPE_SVG ? \
910 lws_display_dlo_svg_metadata_scan((_u)->u.dlo_svg) : \
911 (_u)->type == LWSDLOSS_TYPE_GIF ? \
912 lws_display_dlo_gif_metadata_scan((_u)->u.dlo_gif) : \
913 lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
915#elif defined(LWS_WITH_SVG)
917#define lws_dlo_image_width(_u) ((_u)->failed ? -1 : \
918 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
919 (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) : \
920 (_u)->type == LWSDLOSS_TYPE_SVG ? \
921 (int)lws_svg_get_width((_u)->u.dlo_svg->svg) : \
922 (int)lws_upng_get_width((_u)->u.dlo_png->png)))
923#define lws_dlo_image_height(_u) ((_u)->failed ? -1 : \
924 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
925 (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) : \
926 (_u)->type == LWSDLOSS_TYPE_SVG ? \
927 (int)lws_svg_get_height((_u)->u.dlo_svg->svg) : \
928 (int)lws_upng_get_height((_u)->u.dlo_png->png)))
930#define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL : \
931 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
932 lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) : \
933 (_u)->type == LWSDLOSS_TYPE_SVG ? \
934 lws_display_dlo_svg_metadata_scan((_u)->u.dlo_svg) : \
935 lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
937#elif defined(LWS_WITH_GIF)
939#define lws_dlo_image_width(_u) ((_u)->failed ? -1 : \
940 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
941 (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) : \
942 (_u)->type == LWSDLOSS_TYPE_GIF ? \
943 (int)lws_gif_get_width((_u)->u.dlo_gif->gif) : \
944 (int)lws_upng_get_width((_u)->u.dlo_png->png)))
945#define lws_dlo_image_height(_u) ((_u)->failed ? -1 : \
946 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
947 (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) : \
948 (_u)->type == LWSDLOSS_TYPE_GIF ? \
949 (int)lws_gif_get_height((_u)->u.dlo_gif->gif) : \
950 (int)lws_upng_get_height((_u)->u.dlo_png->png)))
952#define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL : \
953 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
954 lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) : \
955 (_u)->type == LWSDLOSS_TYPE_GIF ? \
956 lws_display_dlo_gif_metadata_scan((_u)->u.dlo_gif) : \
957 lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
961#define lws_dlo_image_width(_u) ((_u)->failed ? -1 : \
962 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
963 (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) : \
964 (int)lws_upng_get_width((_u)->u.dlo_png->png)))
965#define lws_dlo_image_height(_u) ((_u)->failed ? -1 : \
966 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
967 (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) : \
968 (int)lws_upng_get_height((_u)->u.dlo_png->png)))
970#define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL : \
971 ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
972 lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) : \
973 lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
struct lws_dll2 lws_dll2_t
struct lws_dll2_owner lws_dll2_owner_t
struct lws_flow lws_flow_t
struct lws_reclaimable lws_reclaimable_t
#define LWS_EXTERN_FOR_DATA
struct lws_fixed3232 lws_fx_t
uint32_t lws_display_colour_t
int16_t lws_display_list_coord_t
uint16_t lws_display_scalar
LWS_VISIBLE LWS_EXTERN int lws_display_dlo_text_update(lws_dlo_text_t *text, lws_display_colour_t dc, lws_fx_t indent, const char *utf8, size_t text_len)
LWS_VISIBLE LWS_EXTERN lws_dlo_cursor_t lws_display_dl_cursor_at(lws_displaylist_t *dl, int x, int y)
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_renew_image(struct lws_context *cx, lws_dlo_t *dlo)
LWS_VISIBLE LWS_EXTERN lws_dlo_filesystem_t * lws_dlo_file_register(struct lws_context *cx, const lws_dlo_filesystem_t *f)
LWS_VISIBLE LWS_EXTERN const lws_display_font_t * lws_font_choose(struct lws_context *cx, const lws_font_choice_t *hints)
lws_font_glyph_t *(* lws_dlo_image_glyph_t)(struct lws_dlo_text *text, uint32_t unicode, char attach)
struct lws_dlo_hit lws_dlo_hit_t
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_find(struct lws_context *cx, const char *url, lws_dlo_image_t *u)
@ LWS_DLO_CURSOR_CROSSHAIR
@ LWS_DLO_CURSOR_NOT_ALLOWED
LWS_VISIBLE LWS_EXTERN void lws_display_dl_init(lws_displaylist_t *dl, struct lws_display_state *ds)
LWS_VISIBLE LWS_EXTERN void lws_dlo_contents(lws_dlo_t *parent, lws_dlo_dim_t *dim)
lws_displaylist_t displaylist
LWS_VISIBLE LWS_EXTERN void lws_display_dl_dump(lws_displaylist_t *dl)
LWS_VISIBLE LWS_EXTERN int lws_display_dlo_gif_rx(lws_dlo_gif_t *dlo_gif, const uint8_t *buf, size_t len)
struct lws_font_waiter lws_font_waiter_t
LWS_VISIBLE LWS_EXTERN struct lws_cache_ttl_lru * lws_dlo_asset_cache(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN lws_dlo_png_t * lws_display_dlo_png_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const char *name, size_t len)
struct lws_dlo_jpeg lws_dlo_jpeg_t
lws_display_scalar lowest_id_y
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_stop_any_active(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_jpeg_destroy(struct lws_dlo *dlo)
lws_sorted_usec_list_t sul
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_get_ids_boxes(lws_display_render_state_t *rs)
LWS_VISIBLE LWS_EXTERN int lws_dlo_ensure_err_diff(lws_dlo_t *dlo)
lws_dlo_renderer_t render
struct lws_dlo_gif lws_dlo_gif_t
LWS_VISIBLE LWS_EXTERN int lws_fonts_register_manifest(struct lws_context *cx, const char *url)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_text_destroy(struct lws_dlo *dlo)
lws_display_list_coord_t clkernpx
LWS_VISIBLE LWS_EXTERN lws_dlo_gif_t * lws_display_dlo_gif_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const char *name, size_t len)
lws_sorted_usec_list_t * sul
const struct lws_surface_info * ic
struct lws_display_id lws_display_id_t
LWS_VISIBLE LWS_EXTERN void lws_display_render_dump_ids(lws_dll2_owner_t *ids)
LWS_VISIBLE LWS_EXTERN lws_dlo_rect_t * lws_display_dlo_rect_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const lws_fx_t *radii, lws_display_colour_t dc)
void(* lws_dlo_destroy_t)(struct lws_dlo *dlo)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_gif_destroy(struct lws_dlo *dlo)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_text_measure(lws_dlo_text_t *text, const char *utf8, size_t text_len, lws_fx_t *total, lws_fx_t *longest_word)
const char * generic_name
LWS_VISIBLE LWS_EXTERN void lws_dlo_ss_renew_images(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_assets_active(struct lws_context *cx)
LWS_VISIBLE LWS_EXTERN int lws_font_register(struct lws_context *cx, const uint8_t *data, size_t data_len)
lws_dlo_jpeg_t * dlo_jpeg
struct lws_font_choice lws_font_choice_t
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_destroy(lws_dlo_t **r)
lws_sorted_usec_list_t sul
lws_dll2_owner_t table_rows
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_svg_metadata_scan(lws_dlo_svg_t *ds)
lws_display_render_stack_t st[LWS_DLO_STACK_DEPTH]
lws_sorted_usec_list_t * on_rx_sul
struct lws_dlo_filesystem lws_dlo_filesystem_t
struct lws_display_font lws_display_font_t
LWS_VISIBLE LWS_EXTERN lws_display_id_t * lws_display_render_get_id(lws_display_render_state_t *rs, const char *id)
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_unregister(lws_dlo_filesystem_t **f)
LWS_VISIBLE LWS_EXTERN lws_dlo_hit_t * lws_display_dlo_hit_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, const lws_box_t *box, const char *url, size_t url_len)
struct lws_dlo_png lws_dlo_png_t
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_list_render_line(lws_display_render_state_t *rs)
LWS_VISIBLE LWS_EXTERN lws_dlo_text_t * lws_display_dlo_text_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const lws_display_font_t *font)
struct lws_dlo_rect lws_dlo_rect_t
LWS_VISIBLE LWS_EXTERN lws_dlo_svg_t * lws_display_dlo_svg_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const char *name, size_t len)
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_unregister_by_name(struct lws_context *cx, const char *name)
const struct lws_surface_info * ic
struct lws_display_state * ds
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_png_metadata_scan(lws_dlo_png_t *dp)
#define LWS_DLO_STACK_DEPTH
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_gif_metadata_scan(lws_dlo_gif_t *dg)
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_hit(struct lws_display_render_state *rs)
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_create(lws_dlo_ss_create_info_t *i, lws_dlo_t **pdlo)
LWS_VISIBLE LWS_EXTERN_FOR_DATA const struct lws_plat_file_ops lws_dlo_fops
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_gif(struct lws_display_render_state *rs)
lws_display_list_coord_t cwidth
const lws_display_font_t * font
LWS_VISIBLE LWS_EXTERN const lws_dlo_filesystem_t * lws_dlo_file_choose(struct lws_context *cx, const char *name)
struct lws_dlo_svg lws_dlo_svg_t
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_adjust_dims(lws_dlo_t *dlo, lws_dlo_dim_t *dim)
lws_dlo_destroy_t _destroy
struct lws_display_state * lds
LWS_VISIBLE LWS_EXTERN void lws_dlo_ss_detach_lhp(struct lws_context *cx, struct lhp_ctx *lhp)
LWS_VISIBLE LWS_EXTERN int lws_display_dlo_add(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_dlo_t *dlo)
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_png(struct lws_display_render_state *rs)
lws_dlo_renderer_t renderer
LWS_VISIBLE LWS_EXTERN void lws_fonts_destroy(struct lws_context *cx)
struct lws_dlo_circle lws_dlo_circle_t
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_png_destroy(struct lws_dlo *dlo)
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_svg(struct lws_display_render_state *rs)
LWS_VISIBLE LWS_EXTERN lws_dlo_jpeg_t * lws_display_dlo_jpeg_new(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_box_t *box, const char *name, size_t len)
lws_dlo_image_glyph_t image_glyph
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_jpeg_metadata_scan(lws_dlo_jpeg_t *dj)
LWS_VISIBLE LWS_EXTERN lws_dlo_hit_t * lws_display_dl_hit_test(lws_displaylist_t *dl, int x, int y, lws_box_t *abox)
struct lws_circle lws_circle_t
lws_dll2_owner_t children
lws_stateful_ret_t(* lws_dlo_renderer_t)(struct lws_display_render_state *rs)
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_jpeg(struct lws_display_render_state *rs)
struct lws_ss_handle * hss_html
LWS_VISIBLE LWS_EXTERN int lws_fonts_register_dir(struct lws_context *cx, const char *dirpath)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_hit_destroy(struct lws_dlo *dlo)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_svg_destroy(struct lws_dlo *dlo)
struct lws_dl_rend lws_dl_rend_t
lws_font_waiter_t font_wait
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_rect(struct lws_display_render_state *rs)
LWS_VISIBLE LWS_EXTERN int lws_font_register_file(struct lws_context *cx, const char *path)
LWS_VISIBLE LWS_EXTERN void lws_display_list_destroy(struct lws_context *cx, lws_displaylist_t *dl)
struct lws_font_glyph lws_font_glyph_t
LWS_VISIBLE LWS_EXTERN lws_display_id_t * lws_display_render_add_id(lws_display_render_state_t *rs, const char *id, void *priv)
struct lws_dlo_rasterize lws_dlo_rasterize_t
lws_dll2_owner_t table_cols
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lhp_displaylist_layout(struct lhp_ctx *ctx, char reason)
LWS_VISIBLE LWS_EXTERN void lws_display_render_free_ids(lws_display_render_state_t *rs)
struct lws_dlo_text lws_dlo_text_t
struct lws_displaylist lws_displaylist_t
struct lws_display_render_stack lws_display_render_stack_t
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_destroy(struct lws_context *cx)
struct lws_display_render_state lws_display_render_state_t
struct lws_jpeg lws_jpeg_t
void(* sul_cb_t)(struct lws_sorted_usec_list *sul)
struct lws_sorted_usec_list lws_sorted_usec_list_t
struct lws_upng_t lws_upng_t
union lhp_ctx::@313012322054160254166174133215050156320073307327 u
lws_dlo_image_type_t type