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 #if !defined(__LWS_DLO_H__)
28 #define __LWS_DLO_H__
29 
30 #include <stdint.h>
31 
33 struct lws_surface_info;
34 struct lws_display_state;
35 struct lws_display_font;
36 struct lws_dlo_text;
37 struct lws_display;
38 struct lws_dlo_text;
39 struct lws_dlo;
40 
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))
45 
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)
50 
51 #define RGB_TO_Y(_r, _g, _b) ((((_r) * 299) + ((_g) * 587) + ((_b) * 114)) / 1000)
52 /* stores Y in RGBY */
53 #define PALETTE_RGBY(_r, _g, _b) LWSDC_RGBA(_r, _g, _b, (RGB_TO_Y(_r, _g, _b)))
54 
55 typedef struct {
59 
60 /*
61  * When using RGBA to describe native greyscale, R is Y and A is A, GB is ignored
62  */
63 
64 /* composed at start of larger, font-specific glyph struct */
65 
66 typedef struct lws_font_glyph {
68 
73 
74  int8_t x; /* x offset inside the glyph */
75 
77 
79 typedef lws_font_glyph_t * (*lws_dlo_image_glyph_t)(
80  struct lws_dlo_text *text,
81  uint32_t unicode, char attach);
82 typedef void (*lws_dlo_destroy_t)(struct lws_dlo *dlo);
83 
84 typedef struct lws_display_id {
86 
87  char id[16];
88  lws_box_t box; /* taken from DLO after layout */
89 
90  void *priv_user;
91  void *priv_driver;
92 
93  char exists;
94  char iframe; /* 1 = render html as if partial
95  * is the origin, otherwise
96  * render html with surface
97  * (0,0) as origin and rs->box
98  * is a viewport on to that */
100 
101 /*
102  * Common dlo object that joins the display list, composed into a subclass
103  * object like lws_dlo_rect_t etc
104  */
105 
106 typedef struct lws_dlo {
108 
109  lws_dll2_t col_list; /* lws_dlo_t: column-mates */
110  lws_dll2_t row_list; /* lws_dlo_t: row-mates */
111 
112  /* children are rendered "inside" the parent DLO box after allowing
113  * for parent padding */
115 
116  /* only used for dlo rect representing whole table */
117 
118  lws_dll2_owner_t table_cols; /* lhp_table_col_t */
119  lws_dll2_owner_t table_rows; /* lhp_table_row_t */
120 
121  /* may point to dlo whose width or height decides our x or y */
122 
123  struct lws_dlo *abut_x;
124  struct lws_dlo *abut_y;
125 
126  lws_dlo_destroy_t _destroy; /* dlo-type specific cb */
127  lws_dlo_renderer_t render; /* dlo-type specific cb */
128 
130  lws_fx_t padding[4]; /* child origin */
131 
132  lws_display_id_t *id; /* only valid until ids destroyed */
133 
136 
137  uint8_t flag_runon:1; /* continues same line */
139  uint8_t flag_toplevel:1; /* don't scan up with me (different owner) */
140 
141  /* render-specific members ... */
143 
144 typedef struct lws_circle {
146 
147  /* rasterization temps */
148  lws_fx_t orx; /* abs pixel x for centre */
149  lws_fx_t ory; /* abs pixel y for centre */
153 
154 typedef struct lws_dlo_rect {
156  lws_circle_t c[4]; /* t-l, t-r, b-l, b-r */
157  lws_fx_t b[4]; /* border width on t/r/b/l */
158  lws_display_colour_t dcb; /* border colour */
159 
160  /* rasterization temps */
161 
165 
169 
170 typedef struct lws_dlo_circle {
173 
174 typedef struct lws_font_choice {
175  const char *family_name;
176  const char *generic_name;
178  uint16_t style; /* normal, italic, oblique */
181 
182 typedef struct lws_display_font {
184 
186 
187  const uint8_t *data; /* may be cast to imp struct */
188  uint8_t *priv; /* only used by implementation */
189  size_t data_len;
192 
193  lws_fx_t em; /* 1 em in pixels */
194  lws_fx_t ex; /* 1 ex in pixels */
196 
197 typedef struct lws_dlo_filesystem {
199 
200  const char *name;
201  const void *data;
202  size_t len;
204 
205 #define LWSDLO_TEXT_FLAG_WRAP (1 << 0)
206 
207 typedef struct lws_dlo_text {
211  lws_box_t bounding_box; /* { 0, 0, w, h } relative
212  * to and subject to
213  * clipping by .dlo.box */
214 
215  /* referred to by glyphs */
216  const struct lws_surface_info *ic;
217  struct lwsac *ac_glyphs;
220 
221  char *text;
223  size_t text_len;
226 
228 
231  int16_t font_height;
233 
234  int16_t group_height;
236 
239 
240 typedef struct lws_dlo_rasterize {
241  lws_dll2_owner_t owner; /* lws_flow_t */
243  int lines;
245 
246 typedef struct lws_dlo_png {
247  lws_dlo_t dlo; /* ordering: first */
248  lws_flow_t flow; /* ordering: second */
251 
252 typedef struct lws_dlo_jpeg {
253  lws_dlo_t dlo; /* ordering: first */
254  lws_flow_t flow; /* ordering: second */
257 
258 typedef enum {
263 
264 typedef struct {
265  union {
266  lws_dlo_jpeg_t *dlo_jpeg;
267  lws_dlo_png_t *dlo_png;
268  } u;
270  char failed;
272 
273 typedef struct lws_displaylist {
277 
278 typedef struct lws_dl_rend {
280  int w;
281  int h;
283 
284 typedef struct lws_display_render_stack {
285  lws_dlo_t *dlo; /* position in dlo owner */
286  lws_box_t co; /* our origin as parent */
288 
289 typedef struct lws_display_render_state {
290  lws_sorted_usec_list_t sul; /* return to event loop statefully */
291  struct lws_display_state *lds; /* optional, if using lws_display */
292 
294 
295  const struct lws_surface_info *ic; /* display dimensions, palette */
296 
297  lws_display_render_stack_t st[12]; /* DLO child stack */
298  int sp; /* DLO child stack level */
299 
300  uint8_t *line; /* Y or RGB line comp buffer */
301 
303 
306 
307  char html;
308 
310 
311 
314 
316 lws_display_render_add_id(lws_display_render_state_t *rs, const char *id, void *priv);
317 
320 
323 
326 
329 
340 
341 //#if defined(_DEBUG)
344 //#endif
345 
355 
358 
361 
364 
365 /*
366  * lws_display_list_render_line() - render a single raster line of the list
367  *
368  * \param rs: prepared render state object
369  *
370  * Allocates a line pair buffer into ds->line if necessary, and renders the
371  * current line (set by ds->curr) of the display list rasterization into it
372  */
375 
378 
379 /*
380  * rect
381  */
382 
385  lws_box_t *box, const lws_fx_t *radii,
387 
390 
391 /*
392  * dlo text
393  */
394 
397  lws_box_t *box, const lws_display_font_t *font);
398 
401  lws_fx_t indent, const char *utf8, size_t text_len);
402 
405 
406 /*
407  * PNG
408  */
409 
412  lws_box_t *box);
413 
416 
419 
422 
423 /*
424  * JPEG
425  */
426 
429  lws_box_t *box);
430 
433 
436 
439 
440 /*
441  * SS / dlo images
442  */
443 
444 struct lhp_ctx;
445 
446 typedef struct {
447  struct lws_context *cx;
453  const char *url;
454  struct lhp_ctx *lhp;
456  int32_t window;
457 
460 
463 
465 lws_dlo_ss_find(struct lws_context *cx, const char *url, lws_dlo_image_t *u);
466 
468 lhp_displaylist_layout(struct lhp_ctx *ctx, char reason);
469 
470 #define lws_dlo_image_width(_u) ((_u)->failed ? -1 : \
471  ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
472  (int)lws_jpeg_get_width((_u)->u.dlo_jpeg->j) : \
473  (int)lws_upng_get_width((_u)->u.dlo_png->png)))
474 #define lws_dlo_image_height(_u) ((_u)->failed ? -1 : \
475  ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
476  (int)lws_jpeg_get_height((_u)->u.dlo_jpeg->j) : \
477  (int)lws_upng_get_height((_u)->u.dlo_png->png)))
478 
479 #define lws_dlo_image_metadata_scan(_u) ((_u)->failed ? LWS_SRET_FATAL : \
480  ((_u)->type == LWSDLOSS_TYPE_JPEG ? \
481  lws_display_dlo_jpeg_metadata_scan((_u)->u.dlo_jpeg) : \
482  lws_display_dlo_png_metadata_scan((_u)->u.dlo_png)))
483 
484 /*
485  * Font registry
486  *
487  * Register fonts (currently, psfu) to the lws_context, and select the closest
488  * matching. Used to pick fonts from whatever CSS information is available.
489  */
490 
492 lws_font_register(struct lws_context *cx, const uint8_t *data, size_t data_len);
493 
495 lws_font_choose(struct lws_context *cx, const lws_font_choice_t *hints);
496 
498 lws_fonts_destroy(struct lws_context *cx);
499 
500 /*
501  * Static blob registry (built-in, name-accessible blobs)
502  */
503 
505 lws_dlo_file_register(struct lws_context *cx, const lws_dlo_filesystem_t *f);
506 
507 /* only needed if f dynamically heap-allocated... doesn't free data; data
508  * is typically overallocated after the lws_dlo_filesystem_t and freed when
509  * that is freed by this. */
510 
513 
515 lws_dlo_file_unregister_by_name(struct lws_context *cx, const char *name);
516 
518 lws_dlo_file_choose(struct lws_context *cx, const char *name);
519 
521 lws_dlo_file_destroy(struct lws_context *cx);
522 
523 LWS_VISIBLE extern const struct lws_plat_file_ops lws_dlo_fops;
524 #endif
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:254
uint8_t init
Definition: lws-dlo.h:166
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:232
lws_display_colour_t dc
Definition: lws-dlo.h:135
uint8_t * kern
Definition: lws-dlo.h:222
lws_display_render_stack_t st[12]
Definition: lws-dlo.h:297
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:193
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:279
uint16_t curr
Definition: lws-dlo.h:219
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:90
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:302
size_t text_len
Definition: lws-dlo.h:223
struct lws_dlo * abut_x
Definition: lws-dlo.h:123
LWS_VISIBLE LWS_EXTERN void lws_display_dl_dump(lws_displaylist_t *dl)
const char * name
Definition: lws-dlo.h:200
lws_box_t box
Definition: lws-dlo.h:88
const char * url
Definition: lws-dlo.h:453
struct lhp_ctx * lhp
Definition: lws-dlo.h:454
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:249
lws_display_scalar lowest_id_y
Definition: lws-dlo.h:305
lws_fx_t height
Definition: lws-dlo.h:71
lws_fx_t indent
Definition: lws-dlo.h:227
struct lwsac * ac_glyphs
Definition: lws-dlo.h:217
lws_dlo_image_type_t
Definition: lws-dlo.h:258
@ LWSDLOSS_TYPE_JPEG
Definition: lws-dlo.h:259
@ LWSDLOSS_TYPE_CSS
Definition: lws-dlo.h:261
@ LWSDLOSS_TYPE_PNG
Definition: lws-dlo.h:260
uint16_t style
Definition: lws-dlo.h:178
lws_dll2_t list
Definition: lws-dlo.h:198
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_jpeg_destroy(struct lws_dlo *dlo)
lws_sorted_usec_list_t sul
Definition: lws-dlo.h:290
lws_font_glyph_t *(* lws_dlo_image_glyph_t)(struct lws_dlo_text *text, uint32_t unicode, char attach)
Definition: lws-dlo.h:79
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:162
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:183
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:145
int16_t group_height
Definition: lws-dlo.h:234
lws_dlo_renderer_t render
Definition: lws-dlo.h:127
int16_t font_height
Definition: lws-dlo.h:231
uint8_t flag_toplevel
Definition: lws-dlo.h:139
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_text_destroy(struct lws_dlo *dlo)
lws_display_list_coord_t clkernpx
Definition: lws-dlo.h:224
lws_dlo_t dlo
Definition: lws-dlo.h:155
lws_dll2_owner_t dl
Definition: lws-dlo.h:274
lws_dll2_owner_t glyphs
Definition: lws-dlo.h:210
lws_display_id_t * id
Definition: lws-dlo.h:132
const void * data
Definition: lws-dlo.h:201
const struct lws_surface_info * ic
Definition: lws-dlo.h:295
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:447
lws_jpeg_t * j
Definition: lws-dlo.h:255
void(* lws_dlo_destroy_t)(struct lws_dlo *dlo)
Definition: lws-dlo.h:82
lws_fx_t ex
Definition: lws-dlo.h:194
const char * generic_name
Definition: lws-dlo.h:176
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:189
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:187
struct lws_font_choice lws_font_choice_t
uint16_t fixed_height
Definition: lws-dlo.h:179
LWS_VISIBLE LWS_EXTERN void lws_display_dlo_destroy(lws_dlo_t **r)
lws_displaylist_t * dl
Definition: lws-dlo.h:448
lws_dlo_t * dlo_parent
Definition: lws-dlo.h:449
lws_dlo_t dlo
Definition: lws-dlo.h:253
lws_sorted_usec_list_t sul
Definition: lws-dlo.h:242
lws_dll2_t col_list
Definition: lws-dlo.h:109
lws_dll2_owner_t table_rows
Definition: lws-dlo.h:119
lws_sorted_usec_list_t * on_rx_sul
Definition: lws-dlo.h:452
lws_fx_t rsq
Definition: lws-dlo.h:150
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:235
LWS_VISIBLE LWS_EXTERN void lws_dlo_file_unregister(lws_dlo_filesystem_t **f)
lws_fx_t cwidth
Definition: lws-dlo.h:72
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:93
lws_fx_t _cwidth
Definition: lws-dlo.h:237
uint32_t flags
Definition: lws-dlo.h:229
struct lws_dlo_rect lws_dlo_rect_t
lws_dll2_owner_t ids
Definition: lws-dlo.h:293
uint16_t weight
Definition: lws-dlo.h:177
lws_dlo_t dlo
Definition: lws-dlo.h:171
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:67
const struct lws_surface_info * ic
Definition: lws-dlo.h:216
struct lws_display_state * ds
Definition: lws-dlo.h:275
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:167
lws_dlo_t dlo
Definition: lws-dlo.h:208
lws_fx_t w
Definition: lws-dlo.h:56
lws_dlo_image_t * u
Definition: lws-dlo.h:455
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:211
lws_fx_t right
Definition: lws-dlo.h:163
lws_dlo_image_type_t type
Definition: lws-dlo.h:269
lws_fx_t b[4]
Definition: lws-dlo.h:157
lws_box_t db
Definition: lws-dlo.h:164
lws_display_list_coord_t cwidth
Definition: lws-dlo.h:225
const lws_display_font_t * font
Definition: lws-dlo.h:209
lws_fx_t padding[4]
Definition: lws-dlo.h:130
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:304
lws_circle_t c[4]
Definition: lws-dlo.h:156
lws_dlo_destroy_t _destroy
Definition: lws-dlo.h:126
struct lws_display_state * lds
Definition: lws-dlo.h:291
lws_fx_t xpx
Definition: lws-dlo.h:70
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:190
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:247
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:191
uint8_t flag_done_align
Definition: lws-dlo.h:138
lws_font_choice_t choice
Definition: lws-dlo.h:185
int16_t font_y_baseline
Definition: lws-dlo.h:230
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:248
lws_display_colour_t dcb
Definition: lws-dlo.h:158
struct lws_circle lws_circle_t
lws_dll2_owner_t children
Definition: lws-dlo.h:114
lws_stateful_ret_t(* lws_dlo_renderer_t)(struct lws_display_render_state *rs)
Definition: lws-dlo.h:78
lws_fx_t margin[4]
Definition: lws-dlo.h:129
char * text
Definition: lws-dlo.h:221
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:107
lws_fx_t orx
Definition: lws-dlo.h:148
void * priv_driver
Definition: lws-dlo.h:91
lws_dll2_owner_t owner
Definition: lws-dlo.h:241
lws_dll2_t row_list
Definition: lws-dlo.h:110
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:151
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:137
const char * family_name
Definition: lws-dlo.h:175
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:149
lws_box_t box
Definition: lws-dlo.h:134
struct lws_dlo lws_dlo_t
char iframe
Definition: lws-dlo.h:94
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:74
lws_dll2_owner_t table_cols
Definition: lws-dlo.h:118
lws_dll2_t list
Definition: lws-dlo.h:85
uint8_t * priv
Definition: lws-dlo.h:188
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lhp_displaylist_layout(struct lhp_ctx *ctx, char reason)
lws_fx_t h
Definition: lws-dlo.h:57
struct lws_dlo * abut_y
Definition: lws-dlo.h:124
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:218
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:69
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