2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
38#define LWSDC_RGBA(_r, _g, _b, _a) (((uint32_t)(_r) & 0xff
) |
39 (((uint32_t)(_g) & 0xff
) << 8
) |
40 (((uint32_t)(_b) & 0xff
) << 16
) |
41 (((uint32_t)(_a) & 0xff
) << 24
))
43#define LWSDC_R(_c) ((_c) & 0xff
)
44#define LWSDC_G(_c) ((_c >> 8
) & 0xff
)
45#define LWSDC_B(_c) ((_c >> 16
) & 0xff
)
46#define LWSDC_ALPHA(_c) ((_c >> 24
) & 0xff
)
48#define RGB_TO_Y(_r, _g, _b) ((((_r) * 299
) + ((_g) * 587
) + ((_b) * 114
)) / 1000
)
58
59
75typedef lws_stateful_ret_t (*lws_dlo_renderer_t)(
struct lws_display_render_state *rs);
76typedef lws_font_glyph_t * (*lws_dlo_image_glyph_t)(
78 uint32_t unicode,
char attach);
92
93
94
95
99
100
101
110
129 lws_display_id_t *
id;
200} lws_dlo_filesystem_t;
202#define LWSDLO_TEXT_FLAG_WRAP (1
<< 0
)
206 const lws_display_font_t *
font;
209
210
241} lws_dlo_rasterize_t;
259} lws_dlo_image_type_t;
263 lws_dlo_jpeg_t *dlo_jpeg;
264 lws_dlo_png_t *dlo_png;
278 lws_displaylist_t *
dl;
286} lws_display_render_stack_t;
296 lws_display_render_stack_t
st[12];
308} lws_display_render_state_t;
311LWS_VISIBLE LWS_EXTERN
void
314LWS_VISIBLE LWS_EXTERN lws_display_id_t *
317LWS_VISIBLE LWS_EXTERN lws_display_id_t *
320LWS_VISIBLE LWS_EXTERN
void
323LWS_VISIBLE LWS_EXTERN
void
326LWS_VISIBLE LWS_EXTERN
void
330
331
332
333
334
335
336
337LWS_VISIBLE LWS_EXTERN
void
341LWS_VISIBLE LWS_EXTERN
void
346
347
348
349
350
351
352LWS_VISIBLE LWS_EXTERN
void
355LWS_VISIBLE LWS_EXTERN
void
358LWS_VISIBLE LWS_EXTERN
int
361LWS_VISIBLE LWS_EXTERN
int
365
366
367
368
369
370
371
372LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
373lws_display_list_render_line(lws_display_render_state_t *rs);
375LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
376lws_display_get_ids_boxes(lws_display_render_state_t *rs);
379
380
382LWS_VISIBLE LWS_EXTERN lws_dlo_rect_t *
384 lws_box_t *box,
const lws_fx_t *radii,
385 lws_display_colour_t dc);
387LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
388lws_display_render_rect(
struct lws_display_render_state *rs);
391
392
394LWS_VISIBLE LWS_EXTERN lws_dlo_text_t *
396 lws_box_t *box,
const lws_display_font_t *font);
398LWS_VISIBLE LWS_EXTERN
int
400 lws_fx_t indent,
const char *utf8, size_t text_len);
402LWS_VISIBLE LWS_EXTERN
void
406
407
409LWS_VISIBLE LWS_EXTERN lws_dlo_png_t *
413LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
414lws_display_render_png(
struct lws_display_render_state *rs);
416LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
417lws_display_dlo_png_metadata_scan(lws_dlo_png_t *dp);
419LWS_VISIBLE LWS_EXTERN
void
423
424
426LWS_VISIBLE LWS_EXTERN lws_dlo_jpeg_t *
430LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
431lws_display_render_jpeg(
struct lws_display_render_state *rs);
433LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
434lws_display_dlo_jpeg_metadata_scan(lws_dlo_jpeg_t *dj);
436LWS_VISIBLE LWS_EXTERN
void
440
441
446 struct lws_context *
cx;
447 lws_displaylist_t *
dl;
458} lws_dlo_ss_create_info_t;
460LWS_VISIBLE LWS_EXTERN
int
465LWS_VISIBLE LWS_EXTERN
int
468LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t
469lhp_displaylist_layout(lhp_ctx_t *ctx,
char reason);
471#define lws_dlo_image_width(_u) ((_u)->failed ? -1
:
472 ((_u)->type == LWSDLOSS_TYPE_JPEG ?
473 (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) :
474 (int)lws_upng_get_width((_u)->u.dlo_png->png)))
475#define lws_dlo_image_height(_u) ((_u)->failed ? -1
:
476 ((_u)->type == LWSDLOSS_TYPE_JPEG ?
477 (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) :
478 (int)lws_upng_get_height((_u)->u.dlo_png->png)))
480#define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL :
481 ((_u)->type == LWSDLOSS_TYPE_JPEG ?
482 lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) :
483 lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
486
487
488
489
490
492LWS_VISIBLE LWS_EXTERN
int
495LWS_VISIBLE LWS_EXTERN
const lws_display_font_t *
498LWS_VISIBLE LWS_EXTERN
void
502
503
505LWS_VISIBLE LWS_EXTERN lws_dlo_filesystem_t *
509
510
512LWS_VISIBLE LWS_EXTERN
void
515LWS_VISIBLE LWS_EXTERN
void
518LWS_VISIBLE LWS_EXTERN
const lws_dlo_filesystem_t *
521LWS_VISIBLE LWS_EXTERN
void
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_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_display_render_stack_t st[12]
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_find(struct lws_context *cx, const char *url, lws_dlo_image_t *u)
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)
#define LWSDC_RGBA(_r, _g, _b, _a)
lws_displaylist_t displaylist
LWS_VISIBLE LWS_EXTERN void lws_display_dl_dump(lws_displaylist_t *dl)
LWS_VISIBLE const struct lws_plat_file_ops lws_dlo_fops
lws_display_scalar lowest_id_y
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_jpeg_destroy(struct lws_dlo *dlo)
lws_sorted_usec_list_t sul
LWS_VISIBLE LWS_EXTERN int lws_dlo_ensure_err_diff(lws_dlo_t *dlo)
lws_dlo_renderer_t render
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)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_text_destroy(struct lws_dlo *dlo)
lws_display_list_coord_t clkernpx
lws_display_state_t * lds
struct lws_display_state lws_display_state_t
const struct lws_surface_info * ic
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)
const char * generic_name
LWS_VISIBLE LWS_EXTERN void lws_display_list_destroy(lws_displaylist_t *dl)
#define RGB_TO_Y(_r, _g, _b)
LWS_VISIBLE LWS_EXTERN int lws_font_register(struct lws_context *cx, const uint8_t *data, size_t data_len)
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_sorted_usec_list_t * on_rx_sul
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_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)
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 int lws_dlo_ss_create(lws_dlo_ss_create_info_t *i, lws_dlo_t **pdlo)
lws_dlo_image_type_t type
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)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_adjust_dims(lws_dlo_t *dlo, lws_dlo_dim_t *dim)
lws_dlo_destroy_t _destroy
LWS_VISIBLE LWS_EXTERN int lws_display_dlo_add(lws_displaylist_t *dl, lws_dlo_t *dlo_parent, lws_dlo_t *dlo)
lws_dlo_renderer_t renderer
LWS_VISIBLE LWS_EXTERN void lws_fonts_destroy(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)
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_png_destroy(struct lws_dlo *dlo)
lws_dlo_image_glyph_t image_glyph
lws_dll2_owner_t children
LWS_VISIBLE LWS_EXTERN lws_display_id_t * lws_display_render_add_id(lws_display_render_state_t *rs, const char *id, void *priv)
lws_dll2_owner_t table_cols
LWS_VISIBLE LWS_EXTERN void lws_display_render_free_ids(lws_display_render_state_t *rs)
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_destroy(struct lws_context *cx)