libwebsockets
Lightweight C library for HTML5 websockets
lws-dlo.h
Go to the documentation of this file.
1 /*
2  * lws abstract display
3  *
4  * Copyright (C) 2019 - 2022 Andy Green <andy@warmcat.com>
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to
8  * deal in the Software without restriction, including without limitation the
9  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10  * sell copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22  * IN THE SOFTWARE.
23  *
24  * lws display_list and display_list objects (dlo)
25  */
26 
27 #include <stdint.h>
28 
30 struct lws_surface_info;
31 struct lws_display_state;
32 struct lws_display_font;
33 struct lws_dlo_text;
34 struct lws_display;
35 struct lws_dlo_text;
36 struct lws_dlo;
37 
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))
42 
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)
47 
48 #define RGB_TO_Y(_r, _g, _b) ((((_r) * 299) + ((_g) * 587) + ((_b) * 114)) / 1000)
49 /* stores Y in RGBY */
50 #define PALETTE_RGBY(_r, _g, _b) LWSDC_RGBA(_r, _g, _b, (RGB_TO_Y(_r, _g, _b)))
51 
52 typedef struct {
56 
57 /*
58  * When using RGBA to describe native greyscale, R is Y and A is A, GB is ignored
59  */
60 
61 /* composed at start of larger, font-specific glyph struct */
62 
63 typedef struct lws_font_glyph {
65 
70 
71  int8_t x; /* x offset inside the glyph */
72 
74 
76 typedef lws_font_glyph_t * (*lws_dlo_image_glyph_t)(
77  struct lws_dlo_text *text,
78  uint32_t unicode, char attach);
79 typedef void (*lws_dlo_destroy_t)(struct lws_dlo *dlo);
80 
81 typedef struct lws_display_id {
83 
84  char id[16];
85  lws_box_t box; /* taken from DLO after layout */
86 
87  void *priv_user;
88  void *priv_driver;
89 
90  char exists;
91  char iframe; /* 1 = render html as if partial
92  * is the origin, otherwise
93  * render html with surface
94  * (0,0) as origin and rs->box
95  * is a viewport on to that */
97 
98 /*
99  * Common dlo object that joins the display list, composed into a subclass
100  * object like lws_dlo_rect_t etc
101  */
102 
103 typedef struct lws_dlo {
105 
106  lws_dll2_t col_list; /* lws_dlo_t: column-mates */
107  lws_dll2_t row_list; /* lws_dlo_t: row-mates */
108 
109  /* children are rendered "inside" the parent DLO box after allowing
110  * for parent padding */
112 
113  /* only used for dlo rect representing whole table */
114 
115  lws_dll2_owner_t table_cols; /* lhp_table_col_t */
116  lws_dll2_owner_t table_rows; /* lhp_table_row_t */
117 
118  /* may point to dlo whose width or height decides our x or y */
119 
120  struct lws_dlo *abut_x;
121  struct lws_dlo *abut_y;
122 
123  lws_dlo_destroy_t _destroy; /* dlo-type specific cb */
124  lws_dlo_renderer_t render; /* dlo-type specific cb */
125 
127  lws_fx_t padding[4]; /* child origin */
128 
129  lws_display_id_t *id; /* only valid until ids destroyed */
130 
133 
134  uint8_t flag_runon:1; /* continues same line */
136  uint8_t flag_toplevel:1; /* don't scan up with me (different owner) */
137 
138  /* render-specific members ... */
140 
141 typedef struct lws_circle {
143 
144  /* rasterization temps */
145  lws_fx_t orx; /* abs pixel x for centre */
146  lws_fx_t ory; /* abs pixel y for centre */
150 
151 typedef struct lws_dlo_rect {
153  lws_circle_t c[4]; /* t-l, t-r, b-l, b-r */
154  lws_fx_t b[4]; /* border width on t/r/b/l */
155  lws_display_colour_t dcb; /* border colour */
156 
157  /* rasterization temps */
158 
162 
166 
167 typedef struct lws_dlo_circle {
170 
171 typedef struct lws_font_choice {
172  const char *family_name;
173  const char *generic_name;
175  uint16_t style; /* normal, italic, oblique */
178 
179 typedef struct lws_display_font {
181 
183 
184  const uint8_t *data; /* may be cast to imp struct */
185  uint8_t *priv; /* only used by implementation */
186  size_t data_len;
189 
190  lws_fx_t em; /* 1 em in pixels */
191  lws_fx_t ex; /* 1 ex in pixels */
193 
194 typedef struct lws_dlo_filesystem {
196 
197  const char *name;
198  const void *data;
199  size_t len;
201 
202 #define LWSDLO_TEXT_FLAG_WRAP (1 << 0)
203 
204 typedef struct lws_dlo_text {
208  lws_box_t bounding_box; /* { 0, 0, w, h } relative
209  * to and subject to
210  * clipping by .dlo.box */
211 
212  /* referred to by glyphs */
213  const struct lws_surface_info *ic;
214  struct lwsac *ac_glyphs;
217 
218  char *text;
220  size_t text_len;
223 
225 
228  int16_t font_height;
230 
231  int16_t group_height;
233 
236 
237 typedef struct lws_dlo_rasterize {
238  lws_dll2_owner_t owner; /* lws_flow_t */
240  int lines;
242 
243 typedef struct lws_dlo_png {
244  lws_dlo_t dlo; /* ordering: first */
245  lws_flow_t flow; /* ordering: second */
248 
249 typedef struct lws_dlo_jpeg {
250  lws_dlo_t dlo; /* ordering: first */
251  lws_flow_t flow; /* ordering: second */
254 
255 typedef enum {
260 
261 typedef struct {
262  union {
263  lws_dlo_jpeg_t *dlo_jpeg;
264  lws_dlo_png_t *dlo_png;
265  } u;
267  char failed;
269 
271 
272 typedef struct lws_displaylist {
276 
277 typedef struct lws_dl_rend {
279  int w;
280  int h;
282 
283 typedef struct lws_display_render_stack {
284  lws_dlo_t *dlo; /* position in dlo owner */
285  lws_box_t co; /* our origin as parent */
287 
288 typedef struct lws_display_render_state {
289  lws_sorted_usec_list_t sul; /* return to event loop statefully */
290  lws_display_state_t *lds; /* optional, if using lws_display */
291 
293 
294  const struct lws_surface_info *ic; /* display dimensions, palette */
295 
296  lws_display_render_stack_t st[12]; /* DLO child stack */
297  int sp; /* DLO child stack level */
298 
299  uint8_t *line; /* Y or RGB line comp buffer */
300 
302 
305 
306  char html;
307 
309 
310 
313 
315 lws_display_render_add_id(lws_display_render_state_t *rs, const char *id, void *priv);
316 
319 
322 
325 
328 
339 
340 //#if defined(_DEBUG)
343 //#endif
344 
354 
357 
360 
363 
364 /*
365  * lws_display_list_render_line() - render a single raster line of the list
366  *
367  * \param rs: prepared render state object
368  *
369  * Allocates a line pair buffer into ds->line if necessary, and renders the
370  * current line (set by ds->curr) of the display list rasterization into it
371  */
374 
377 
378 /*
379  * rect
380  */
381 
384  lws_box_t *box, const lws_fx_t *radii,
386 
389 
390 /*
391  * dlo text
392  */
393 
396  lws_box_t *box, const lws_display_font_t *font);
397 
400  lws_fx_t indent, const char *utf8, size_t text_len);
401 
404 
405 /*
406  * PNG
407  */
408 
411  lws_box_t *box);
412 
415 
418 
421 
422 /*
423  * JPEG
424  */
425 
428  lws_box_t *box);
429 
432 
435 
438 
439 /*
440  * SS / dlo images
441  */
442 
443 struct lhp_ctx;
444 
445 typedef struct {
446  struct lws_context *cx;
452  const char *url;
453  struct lhp_ctx *lhp;
455  int32_t window;
456 
459 
462 
463 typedef struct lhp_ctx lhp_ctx_t;
464 
466 lws_dlo_ss_find(struct lws_context *cx, const char *url, lws_dlo_image_t *u);
467 
470 
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)))
479 
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)))
484 
485 /*
486  * Font registry
487  *
488  * Register fonts (currently, psfu) to the lws_context, and select the closest
489  * matching. Used to pick fonts from whatever CSS information is available.
490  */
491 
493 lws_font_register(struct lws_context *cx, const uint8_t *data, size_t data_len);
494 
496 lws_font_choose(struct lws_context *cx, const lws_font_choice_t *hints);
497 
499 lws_fonts_destroy(struct lws_context *cx);
500 
501 /*
502  * Static blob registry (built-in, name-accessible blobs)
503  */
504 
506 lws_dlo_file_register(struct lws_context *cx, const lws_dlo_filesystem_t *f);
507 
508 /* only needed if f dynamically heap-allocated... doesn't free data; data
509  * is typically overallocated after the lws_dlo_filesystem_t and freed when
510  * that is freed by this. */
511 
514 
516 lws_dlo_file_unregister_by_name(struct lws_context *cx, const char *name);
517 
519 lws_dlo_file_choose(struct lws_context *cx, const char *name);
520 
522 lws_dlo_file_destroy(struct lws_context *cx);
523 
524 LWS_VISIBLE extern const struct lws_plat_file_ops lws_dlo_fops;
unsigned short uint16_t
unsigned int uint32_t
#define LWS_EXTERN
unsigned char uint8_t
lws_stateful_ret_t
#define LWS_VISIBLE
uint32_t lws_display_colour_t
Definition: lws-display.h:31
int16_t lws_display_list_coord_t
Definition: lws-display.h:28
uint16_t lws_display_scalar
Definition: lws-display.h:29
lws_flow_t flow
Definition: lws-dlo.h:251
uint8_t init
Definition: lws-dlo.h:163
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)
int16_t font_line_height
Definition: lws-dlo.h:229
lws_display_colour_t dc
Definition: lws-dlo.h:132
uint8_t * kern
Definition: lws-dlo.h:219
lws_display_render_stack_t st[12]
Definition: lws-dlo.h:296
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_find(struct lws_context *cx, const char *url, lws_dlo_image_t *u)
lws_fx_t em
Definition: lws-dlo.h:190
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_displaylist_t * dl
Definition: lws-dlo.h:278
uint16_t curr
Definition: lws-dlo.h:216
LWS_VISIBLE LWS_EXTERN void lws_display_dl_init(lws_displaylist_t *dl, struct lws_display_state *ds)
void * priv_user
Definition: lws-dlo.h:87
LWS_VISIBLE LWS_EXTERN void lws_dlo_contents(lws_dlo_t *parent, lws_dlo_dim_t *dim)
lws_displaylist_t displaylist
Definition: lws-dlo.h:301
size_t text_len
Definition: lws-dlo.h:220
struct lws_dlo * abut_x
Definition: lws-dlo.h:120
LWS_VISIBLE LWS_EXTERN void lws_display_dl_dump(lws_displaylist_t *dl)
const char * name
Definition: lws-dlo.h:197
lws_box_t box
Definition: lws-dlo.h:85
const char * url
Definition: lws-dlo.h:452
struct lhp_ctx * lhp
Definition: lws-dlo.h:453
LWS_VISIBLE const struct lws_plat_file_ops lws_dlo_fops
LWS_VISIBLE LWS_EXTERN lws_display_id_t * lws_display_render_get_id(lws_display_render_state_t *rs, const char *id)
struct lws_dlo_jpeg lws_dlo_jpeg_t
lws_upng_t * png
Definition: lws-dlo.h:246
lws_display_scalar lowest_id_y
Definition: lws-dlo.h:304
lws_fx_t height
Definition: lws-dlo.h:68
lws_fx_t indent
Definition: lws-dlo.h:224
struct lwsac * ac_glyphs
Definition: lws-dlo.h:214
lws_dlo_image_type_t
Definition: lws-dlo.h:255
@ LWSDLOSS_TYPE_JPEG
Definition: lws-dlo.h:256
@ LWSDLOSS_TYPE_CSS
Definition: lws-dlo.h:258
@ LWSDLOSS_TYPE_PNG
Definition: lws-dlo.h:257
uint16_t style
Definition: lws-dlo.h:175
lws_dll2_t list
Definition: lws-dlo.h:195
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_jpeg_destroy(struct lws_dlo *dlo)
lws_sorted_usec_list_t sul
Definition: lws-dlo.h:289
lws_font_glyph_t *(* lws_dlo_image_glyph_t)(struct lws_dlo_text *text, uint32_t unicode, char attach)
Definition: lws-dlo.h:76
LWS_VISIBLE LWS_EXTERN const lws_display_font_t * lws_font_choose(struct lws_context *cx, const lws_font_choice_t *hints)
lws_fx_t btm
Definition: lws-dlo.h:159
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_get_ids_boxes(lws_display_render_state_t *rs)
lws_dll2_t list
Definition: lws-dlo.h:180
LWS_VISIBLE LWS_EXTERN int lws_dlo_ensure_err_diff(lws_dlo_t *dlo)
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_fx_t r
Definition: lws-dlo.h:142
int16_t group_height
Definition: lws-dlo.h:231
lws_dlo_renderer_t render
Definition: lws-dlo.h:124
int16_t font_height
Definition: lws-dlo.h:228
uint8_t flag_toplevel
Definition: lws-dlo.h:136
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_text_destroy(struct lws_dlo *dlo)
lws_display_list_coord_t clkernpx
Definition: lws-dlo.h:221
lws_display_state_t * lds
Definition: lws-dlo.h:290
lws_dlo_t dlo
Definition: lws-dlo.h:152
lws_dll2_owner_t dl
Definition: lws-dlo.h:273
lws_dll2_owner_t glyphs
Definition: lws-dlo.h:207
lws_display_id_t * id
Definition: lws-dlo.h:129
const void * data
Definition: lws-dlo.h:198
const struct lws_surface_info * ic
Definition: lws-dlo.h:294
struct lws_display_id lws_display_id_t
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)
LWS_VISIBLE LWS_EXTERN void lws_display_render_dump_ids(lws_dll2_owner_t *ids)
struct lws_context * cx
Definition: lws-dlo.h:446
lws_jpeg_t * j
Definition: lws-dlo.h:252
void(* lws_dlo_destroy_t)(struct lws_dlo *dlo)
Definition: lws-dlo.h:79
lws_fx_t ex
Definition: lws-dlo.h:191
const char * generic_name
Definition: lws-dlo.h:173
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_list_destroy(lws_displaylist_t *dl)
size_t data_len
Definition: lws-dlo.h:186
LWS_VISIBLE LWS_EXTERN int lws_font_register(struct lws_context *cx, const uint8_t *data, size_t data_len)
const uint8_t * data
Definition: lws-dlo.h:184
struct lws_font_choice lws_font_choice_t
uint16_t fixed_height
Definition: lws-dlo.h:176
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_destroy(lws_dlo_t **r)
lws_displaylist_t * dl
Definition: lws-dlo.h:447
lws_dlo_t * dlo_parent
Definition: lws-dlo.h:448
lws_dlo_t dlo
Definition: lws-dlo.h:250
lws_sorted_usec_list_t sul
Definition: lws-dlo.h:239
lws_dll2_t col_list
Definition: lws-dlo.h:106
lws_dll2_owner_t table_rows
Definition: lws-dlo.h:116
lws_sorted_usec_list_t * on_rx_sul
Definition: lws-dlo.h:451
lws_fx_t rsq
Definition: lws-dlo.h:147
struct lws_dlo_filesystem lws_dlo_filesystem_t
struct lws_display_font lws_display_font_t
int16_t group_y_baseline
Definition: lws-dlo.h:232
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_unregister(lws_dlo_filesystem_t **f)
lws_fx_t cwidth
Definition: lws-dlo.h:69
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)
char exists
Definition: lws-dlo.h:90
lws_fx_t _cwidth
Definition: lws-dlo.h:234
uint32_t flags
Definition: lws-dlo.h:226
struct lws_dlo_rect lws_dlo_rect_t
lws_dll2_owner_t ids
Definition: lws-dlo.h:292
uint16_t weight
Definition: lws-dlo.h:174
lws_dlo_t dlo
Definition: lws-dlo.h:168
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_unregister_by_name(struct lws_context *cx, const char *name)
lws_dll2_t list
Definition: lws-dlo.h:64
const struct lws_surface_info * ic
Definition: lws-dlo.h:213
struct lws_display_state * ds
Definition: lws-dlo.h:274
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_png_metadata_scan(lws_dlo_png_t *dp)
uint8_t alt
Definition: lws-dlo.h:164
lws_dlo_t dlo
Definition: lws-dlo.h:205
lws_fx_t w
Definition: lws-dlo.h:53
lws_dlo_image_t * u
Definition: lws-dlo.h:454
LWS_VISIBLE LWS_EXTERN int lws_dlo_ss_create(lws_dlo_ss_create_info_t *i, lws_dlo_t **pdlo)
lws_box_t bounding_box
Definition: lws-dlo.h:208
lws_fx_t right
Definition: lws-dlo.h:160
lws_dlo_image_type_t type
Definition: lws-dlo.h:266
lws_fx_t b[4]
Definition: lws-dlo.h:154
lws_box_t db
Definition: lws-dlo.h:161
lws_display_list_coord_t cwidth
Definition: lws-dlo.h:222
const lws_display_font_t * font
Definition: lws-dlo.h:206
lws_fx_t padding[4]
Definition: lws-dlo.h:127
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_adjust_dims(lws_dlo_t *dlo, lws_dlo_dim_t *dim)
lws_display_scalar curr
Definition: lws-dlo.h:303
lws_circle_t c[4]
Definition: lws-dlo.h:153
lws_dlo_destroy_t _destroy
Definition: lws-dlo.h:123
lws_fx_t xpx
Definition: lws-dlo.h:67
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
Definition: lws-dlo.h:187
LWS_VISIBLE LWS_EXTERN void lws_fonts_destroy(struct lws_context *cx)
struct lws_dlo_circle lws_dlo_circle_t
lws_dlo_t dlo
Definition: lws-dlo.h:244
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_png_destroy(struct lws_dlo *dlo)
lws_dlo_image_glyph_t image_glyph
Definition: lws-dlo.h:188
uint8_t flag_done_align
Definition: lws-dlo.h:135
lws_font_choice_t choice
Definition: lws-dlo.h:182
int16_t font_y_baseline
Definition: lws-dlo.h:227
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_dlo_jpeg_metadata_scan(lws_dlo_jpeg_t *dj)
lws_flow_t flow
Definition: lws-dlo.h:245
lws_display_colour_t dcb
Definition: lws-dlo.h:155
struct lws_circle lws_circle_t
lws_dll2_owner_t children
Definition: lws-dlo.h:111
lws_stateful_ret_t(* lws_dlo_renderer_t)(struct lws_display_render_state *rs)
Definition: lws-dlo.h:75
lws_fx_t margin[4]
Definition: lws-dlo.h:126
char * text
Definition: lws-dlo.h:218
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_jpeg(struct lws_display_render_state *rs)
lws_dll2_t list
Definition: lws-dlo.h:104
lws_fx_t orx
Definition: lws-dlo.h:145
void * priv_driver
Definition: lws-dlo.h:88
lws_dll2_owner_t owner
Definition: lws-dlo.h:238
lws_dll2_t row_list
Definition: lws-dlo.h:107
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)
struct lws_dl_rend lws_dl_rend_t
lws_fx_t ys
Definition: lws-dlo.h:148
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lhp_displaylist_layout(lhp_ctx_t *ctx, char reason)
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_display_render_rect(struct lws_display_render_state *rs)
uint8_t flag_runon
Definition: lws-dlo.h:134
const char * family_name
Definition: lws-dlo.h:172
struct lws_font_glyph lws_font_glyph_t
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_fx_t ory
Definition: lws-dlo.h:146
lws_box_t box
Definition: lws-dlo.h:131
struct lws_dlo lws_dlo_t
char iframe
Definition: lws-dlo.h:91
LWS_VISIBLE LWS_EXTERN lws_dlo_filesystem_t * lws_dlo_file_register(struct lws_context *cx, const lws_dlo_filesystem_t *f)
struct lws_dlo_rasterize lws_dlo_rasterize_t
int8_t x
Definition: lws-dlo.h:71
lws_dll2_owner_t table_cols
Definition: lws-dlo.h:115
lws_dll2_t list
Definition: lws-dlo.h:82
uint8_t * priv
Definition: lws-dlo.h:185
lws_fx_t h
Definition: lws-dlo.h:54
struct lws_dlo * abut_y
Definition: lws-dlo.h:121
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
uint8_t * line
Definition: lws-dlo.h:215
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_destroy(struct lws_context *cx)
struct lws_display_render_state lws_display_render_state_t
lws_fx_t xorg
Definition: lws-dlo.h:66
union lhp_ctx::@13 u
struct lws_jpeg lws_jpeg_t
Definition: lws-jpeg.h:36
void(* sul_cb_t)(struct lws_sorted_usec_list *sul)
struct lws_upng_t lws_upng_t
Definition: lws-upng.h:51