libwebsockets
Lightweight C library for HTML5 websockets
Loading...
Searching...
No Matches
lws-html.h
Go to the documentation of this file.
1/*
2 * libwebsockets - small server side websockets and web server implementation
3 *
4 * Copyright (C) 2010 - 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 * Extremely Lightweight HTML5 Stream Parser, same approach as lecp but for
25 * html5.
26 */
27
28#if !defined(LHP_MAX_ELEMS_NEST)
29#define LHP_MAX_ELEMS_NEST 128
30#endif
31#if !defined(LHP_MAX_DEPTH)
32#define LHP_MAX_DEPTH 64
33#endif
34#if !defined(LHP_STRING_CHUNK)
35#define LHP_STRING_CHUNK 2048
36#endif
37/*
38 * How many of an element's closed earlier siblings are remembered (their
39 * attributes) so that the ~ and + selector combinators and :first-child can
40 * be evaluated. Costs the attribute storage of that many elements per open
41 * level.
42 */
43#if !defined(LHP_SIBLING_HISTORY)
44#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
45#define LHP_SIBLING_HISTORY 2
46#else
47#define LHP_SIBLING_HISTORY 8
48#endif
49#endif
50
72
73/*
74 * CSS v2.1 full property set, taken from
75 *
76 * https://www.w3.org/TR/CSS21/propidx.html
77 */
78
79typedef enum lcsp_props {
202
203 /* appended: the lextable index is the enum value */
217
218 /* logical properties, mapped to the physical sides (ltr, horizontal) */
238
239 LCSP_PROP__COUNT /* always last */
241
242/*
243 * Indexes for the well-known property values
244 */
245
246typedef enum {
374
375 /* appended: the lextable index is the enum value */
393
394 LCSP_PROPVAL__COUNT /* always last */
396
397struct lhp_ctx;
398typedef lws_stateful_ret_t (*lhp_callback)(struct lhp_ctx *ctx, char reason);
399
400/* html attribute */
401
402typedef struct lhp_atr {
404 size_t name_len; /* 0 if it is elem tag */
405 size_t value_len;
406
407 /* name+NUL then value+NUL follow */
409
410/* a closed element remembered on its parent for sibling selectors */
411
412typedef struct lhp_sib {
413 lws_dll2_t list; /* parent's sibs, newest last */
414 lws_dll2_owner_t atr; /* lhp_atr_t moved from the level */
416
417/*
418 * In order to lay out the table, we have to incrementally adjust all foregoing
419 * DLOs as newer cells change the situation. So we have to keep track of all
420 * cell DLOs in a stack of tables until it's all done.
421 */
422
423typedef struct {
424 lws_dll2_t list; /* ps->table_cols */
425
426 lws_dll2_owner_t row_dlos; /* lws_dlo_t in column */
427
428 lws_fx_t height; /* currently computed row height */
430
431typedef struct {
432 lws_dll2_t list; /* ps->table_cols */
433
434 lws_dll2_owner_t col_dlos; /* lws_dlo_t in column */
435
436 lws_fx_t width; /* computed column width */
437 lws_fx_t min_w; /* widest min-content cell */
438 lws_fx_t max_w; /* widest max-content cell */
440
441struct lcsp_atr;
442struct lcsp_match;
443
444#define CCPAS_TOP 0
445#define CCPAS_RIGHT 1
446#define CCPAS_BOTTOM 2
447#define CCPAS_LEFT 3
448
449typedef struct lhp_pstack {
451 void *user; /* private to the stack level */
453
454 /* static: x,y: offset from parent, w,h: surface size of this object */
456
457 /*
458 * Layout state for an element that is a block container (has a dlo
459 * and lays its children out inside it). Coordinates are relative to
460 * our dlo box: the content area starts at (ox, oy) and is cw wide;
461 * (curx, cury) is the inline cursor inside it, cury being the top of
462 * the line being built.
463 */
467 lws_fx_t abs_h; /* an absolute box's percentage
468 * height, resolved against its
469 * positioned ancestor's padding
470 * box at open */
471 lws_fx_t abs_bot; /* an absolute box anchored by
472 * bottom: the y of its bottom
473 * margin edge */
476
477 lws_fx_t line_h; /* tallest non-text item on line */
478 lws_dlo_t *line_first; /* first dlo of the open line */
479 int16_t line_asc; /* max ascent above baseline on line */
480 int16_t line_desc; /* max descent below baseline on line */
481 int16_t last_base; /* baseline of our last line, from
482 * our box top (valid if has_base) */
483
484 lws_fx_t maxc; /* max-content width so far */
485 lws_fx_t minc; /* min-content width so far */
486 lws_fx_t nowrap; /* width of current line if unwrapped */
487 lws_fx_t rfloat_w; /* width taken by right floats on line */
488 lws_fx_t pend_mb; /* last block child's bottom margin */
489 int32_t abs_y; /* approx surface y of our box top */
490 uint16_t idx; /* list item / table cell counter */
491
492 lws_dll2_owner_t atr; /* lhp_atr_t */
493 lws_dll2_owner_t sibs; /* lhp_sib_t: our closed children */
494
496
498 const struct lcsp_atr *css_color;
499
500 const struct lcsp_atr *css_position;
501 const struct lcsp_atr *css_display;
502 const struct lcsp_atr *css_width;
503 const struct lcsp_atr *css_height;
506
507 /*
508 * Stanzas whose selector matched this element with a :before / :after
509 * pseudo-element suffix: a generated box for each is added when the
510 * element closes
511 */
514
515 const struct lcsp_atr *css_border_radius[4];
516
517 const struct lcsp_atr *css_pos[4];
518 const struct lcsp_atr *css_margin[4];
519 const struct lcsp_atr *css_padding[4];
520
521 /*
522 * css resolution for this element: the stanzas whose selectors matched
523 * it, lowest precedence first, plus the parsed style="" attribute (in
524 * styleac) as the highest. Properties absent here are looked up on
525 * the parent if the property inherits, else take their initial value.
526 */
528 struct lwsac *styleac;
529 lws_fx_t font_size; /* computed font-size, px */
531
532 uint8_t is_block:1; /* we are a block container */
536 uint8_t is_inline:1; /* style scope only, no box */
537 uint8_t is_ilevel:1; /* inline-level box (inline-block) */
538 uint8_t is_abs:1; /* absolutely positioned */
541 uint8_t is_flex:1; /* row flex container */
544 uint8_t shrink:1; /* width decided by content at close */
545 uint8_t in_shrink:1; /* auto width inside a shrinking container */
546 uint8_t has_line:1; /* a line is being built */
547 uint8_t has_base:1; /* last_base is valid */
548 uint8_t last_space:1; /* line so far ends with a space */
551 uint8_t abs_h_set:1; /* abs_h is the resolved
552 * percentage height */
553 uint8_t abs_minh_set:1; /* ... or min-height */
554 uint8_t abs_bot_set:1; /* abs_bot places us at
555 * close */
556 uint8_t abs_stretch_set:1; /* top + bottom stretch,
557 * abs_bot the bottom
558 * offset, sized when
559 * the ancestor closes */
562 uint8_t hidden:1; /* display: none on us or an ancestor */
563 uint8_t ti_done:1; /* applied our text-indent already */
564
565 /* user layout owns these after initial values set */
566
569
570 /*
571 * A css background-image on this element: its dlo is created when
572 * the element is parsed, before the layout has made the element's
573 * own dlo, so it is parked on the parent block and then moved into
574 * the element's dlo at (bg_ox, bg_oy) when that exists
575 */
579
581
582typedef enum lcsp_css_units {
584
585 LCSP_UNIT_NUM, /* u.i */
586
597 LCSP_UNIT_LENGTH_VW, /* u.i, 1vw is 1% of surface width */
598 LCSP_UNIT_LENGTH_VH, /* u.i, 1vh is 1% of surface height */
599 LCSP_UNIT_LENGTH_VMIN, /* u.i, smaller of vw / vh */
600 LCSP_UNIT_LENGTH_VMAX, /* u.i, larger of vw / vh */
601
602 LCSP_UNIT_CALC, /* u.i is index in string chunk */
603
606
608
609 LCSP_UNIT_RGBA, /* u.rgba */
610
611 LCSP_UNIT_URL, /* string at end of atr */
612 LCSP_UNIT_STRING, /* string at end of atr */
613 LCSP_UNIT_DATA, /* binary data at end of atr */
614
616
617typedef struct lcsp_atr {
619
620 union {
621 lws_fx_t i;
622 uint32_t rgba; /* for colours */
623 } u;
624
625 /*
626 * A page's cascade is thousands of these: the enums and the length
627 * are all small, and stored as int / size_t they cost 8 bytes an
628 * attribute that a small target has better uses for
629 */
630
631 uint16_t propval; /* lcsp_propvals_t LCSP_PROPVAL_ */
632 uint16_t value_len; /* for string . url */
633
634 uint8_t unit; /* lcsp_css_units_t LCSP_UNIT_ */
636
637 /* .value_len bytes follow (for strings and blobs) */
639
640/* css definitions like font-weight: */
641typedef struct lcsp_defs {
643 lws_dll2_owner_t atrs; /* lcsp_atr_t */
644 struct lhp_css_var *var; /* if prop == LCSP_PROP__COUNT:
645 * the --name this declares */
646 uint16_t prop; /* lcsp_props_t, LCSP_PROP_* */
647 uint8_t important; /* declared !important */
649
650/*
651 * One selector of a stanza's selector list, eg, "div.x > p" from
652 * "div.x > p, .y { ... }". Stored normalized: a single space is the
653 * descendant combinator, no spaces around '>', '+', '~' or inside [...].
654 */
655
656typedef struct lcsp_names {
658 uint32_t specificity; /* (layer << 18) | (ids << 12) |
659 * (classes << 6) | tags */
661 uint16_t key_ofs; /* rightmost compound's most
662 * selective simple selector,
663 * for the cascade prefilter */
665 uint8_t key_kind; /* LHP_SELKEY_ */
666
667 /* name + NUL follow */
669
670typedef struct lcsp_stanza { /* css stanza, with names and defs */
672
673 lws_dll2_owner_t names; /* lcsp_names_t */
674 lws_dll2_owner_t defs; /* lcsp_defs_t */
675
676 uint32_t seq; /* source order, for cascade ties */
677
678 /*
679 * Nothing else is written to a stanza after the parse that created
680 * it. Keeping it that way is what lets a stylesheet be immutable,
681 * and so live in flash instead of costing heap... the cascade's
682 * per-pass "have I taken this one already, and at what specificity"
683 * lives on ctx->hits instead
684 */
686
687/*
688 * The selector index: every selector of every stanza, bucketed by its key
689 * (see lhp_sel_key()), so the cascade for an element only visits the
690 * selectors whose key it can satisfy plus the keyless ones
691 */
692
698
699#define LHP_SELIDX_BUCKETS 64
700
701/*
702 * A list of stanza references can easily have to bring in the same stanza
703 * multiple times, eg, <div><span class=x><div> won't work unless the div
704 * stanzas are listed twice at different places in the list. It means we can't
705 * use dll2 directly since the number of references is open-ended.
706 *
707 * lcsp_stanza_ptr provides indirection that allows multiple listings.
708 */
709
715
721
722/*
723 * A stanza that matched an element, with the specificity of the best selector
724 * that matched. Each open element keeps a sorted array of these; the last
725 * entry has the highest precedence.
726 */
727
732
733typedef struct lhp_css_var {
735 size_t name_len;
737 /* name+NUL follows */
739
740/*
741 * A cascade layer (@layer): its position in css_layers is its order in the
742 * cascade, with the first-declared layer the weakest. Unlayered rules beat
743 * every layer.
744 */
745
746typedef struct lhp_css_layer {
748 size_t len; /* name length, the name may contain NUL bytes */
749 /* name+NUL follows (empty for an anonymous layer) */
751
752enum {
757};
758
759/* layer indexes are 1-based, this is the unlayered ("strongest") value */
760#define LHP_CSS_LAYER_NONE 63
761
762#define LHP_FLAG_DOCUMENT_END (1 << 0)
763
764/*
765 * One URL block rule prepared by lws_lhp_set_filter(): a lowercased copy of
766 * the rule text, with host_anchor set if it was "||host..." form. Allocated
767 * in ctx->blockac, on ctx->block_rules.
768 */
769typedef struct lhp_block_rule {
771 size_t len;
773
774 /* lowercased rule text + NUL follows */
776
777typedef struct lhp_ctx {
778 lws_dll2_owner_t stack; /* lhp_pstack_t */
779
780 struct lwsac *cssac; /* css allocations all in an ac */
781 struct lwsac *cascadeac; /* active_stanzas ac */
782 struct lwsac *propatrac; /* prop atr query results ac */
783 lws_dll2_owner_t css; /* lcsp_stanza_t (all in ac) */
784
786
788
789 /*
790 * Somewhere for lws_csp_px_base() to compute a resolved length into
791 * and hand back a pointer to. It used to use a slot on the attribute
792 * itself, which made every attribute 8 bytes bigger and, worse, made
793 * a stylesheet something the layout writes to... callers all consume
794 * the result immediately, so a small ring is plenty
795 */
798 uint8_t cb_depth; /* containing blocks being resolved
799 * for a %, see
800 * lws_css_compute_cascaded_length() */
801
803 lcsp_stanza_t *stz; /* current stanza getting properties */
804 lcsp_defs_t *def; /* current property getting values */
805
806 lws_dll2_owner_t active_stanzas; /* lcsp_stanza_ptr_t allocated
807 * in cascadeac */
808 lws_dll2_owner_t active_atr; /* lcsp_atr_ptr_t allocated in
809 * propatrac */
810
811 lws_dll2_owner_t css_vars; /* lhp_css_var_t allocated in cssac */
812 lws_dll2_owner_t css_layers; /* lhp_css_layer_t allocated in
813 * cascade order */
814
815 struct lwsac *idxac; /* selector index allocations */
817 lhp_selidx_t *selidx_nokey; /* selectors without a key */
818 struct lcsp_match *hits; /* stanzas hit in the current pass,
819 * with the best specificity among the
820 * selectors of theirs that matched */
823 uint32_t selidx_count; /* stanzas indexed */
825
826 /* ad / junk filtering, see lws_lhp_set_filter() */
827
828 char *filter_css; /* strdup of cosmetic filter css */
829 lws_dll2_owner_t block_rules; /* lhp_block_rule_t in blockac */
830 struct lwsac *blockac;
831
833
834 const char *base_url; /* strdup of https://x.com/y.html */
835 sul_cb_t ssevcb; /* callback for ss events */
836 lws_sorted_usec_list_t *ssevsul; /* sul to use to resume rz */
837 sul_cb_t sshtmlevcb; /* callback for more html parse */
838 lws_sorted_usec_list_t *sshtmlevsul; /* sul for more html parse */
839
840 void *user;
841 void *user1;
842 const char *tag; /* private */
843 size_t tag_len; /* private */
844
845 int npos;
846 int state; /* private */
847 int state_css_comm; /* private */
852
855 int32_t window; /* 0, or ss item flow control limit */
856 int32_t viewport_h; /* 0, or the css viewport height
857 * when the surface is taller */
859
860 union {
861 uint32_t s;
862 struct {
863 uint32_t first:1;
867 uint32_t inq:1;
869 uint32_t arg:1;
871 uint32_t style_attr:1; /* nested parse of a style="" value: declarations only */
872 uint32_t filter_css:1; /* parsing injected filter css */
873#define LHP_CSS_PROPVAL_INT_WHOLE 1
874#define LHP_CSS_PROPVAL_INT_FRAC 2
875#define LHP_CSS_PROPVAL_INT_UNIT 3
876 uint32_t integer:2;
877 uint32_t color:2;
878 uint32_t infunc:1; /* inside name( ... ) value */
879 uint32_t negval:1; /* '-' seen, number is negative */
880 uint32_t sq:1; /* attribute value quoted with ' */
881 uint32_t atr_drop:1; /* current attribute overflowed
882 * the chunk and is discarded */
883 } f;
884 } u;
885
886 int prop; /* lcsp_props_t */
887 int propval; /* lcsp_propvals_t */
888 int16_t css_state; /* private */
889 int16_t cssval_state; /* private */
890
891 /*
892 * The url of the stylesheet <link> the parse is waiting on, so
893 * streams for stylesheets that are not the awaited one cannot
894 * complete it early
895 */
896 char await_css_url[240]; /* LHP_URL_LEN */
897
902 uint8_t await_assets:1; /* doc end deferred for dlo assets */
903 uint8_t cancelled:1; /* document torn down: assets must
904 * not resume the parse for it */
905
906 uint8_t css_block_depth; /* inside applicable @media */
907 uint8_t css_skip_depth; /* skipping unusable @-rule */
908 uint8_t css_layer; /* 0: unlayered, else the
909 * 1-based @layer index */
910 uint8_t css_layer_depth; /* css_block_depth of the
911 * open @layer block */
912 uint8_t css_lhs_partial:1; /* stanza already created
913 * for an overlong selector
914 * list */
915 uint8_t css_lhs_skip:1; /* selector too long: skip
916 * its block */
917
918 /* at end so we can memset members above it in one go */
919
921
923
924/*
925 * lws_lhp_construct() - Construct an lhp context
926 *
927 * \param ctx: the lhp context to prepare
928 * \param cb: the stream parsing callback
929 * \param user: opaque user pointer available from the lhp context
930 * \param ic: struct with arguments for lhp context
931 *
932 * The lhp context is allocated by the caller (the size is known).
933 * Prepares an lhp context to parse html. Returns 0 for OK, or nonzero if OOM.
934 */
937 const lws_surface_info_t *ic);
938
939/*
940 * lws_lhp_destruct() - Destroy an lhp context
941 *
942 * \param ctx: the lhp context to prepare
943 *
944 * Destroys an lhp context. The lhp context is allocated by the caller (the
945 * size is known). But there are suballocations that must be destroyed with
946 * this.
947 */
950
966typedef struct lws_lhp_filter {
967 const char *cosmetic_css;
968 const char *block_rules;
970
984
1006 const char *url, sul_cb_t render);
1007
1021lws_lhp_ss_browse_filter(struct lws_context *cx,
1022 lws_display_render_state_t *rs, const char *url,
1023 sul_cb_t render, const lws_lhp_filter_t *filter);
1024
1041
1059lws_lhp_parse(lhp_ctx_t *ctx, const uint8_t **buf, size_t *len);
1060
1082
1092
1111lws_http_rel_to_url(char *dest, size_t len, const char *base, const char *rel);
1112
1115
1116LWS_VISIBLE LWS_EXTERN const char *
1118
1119LWS_VISIBLE LWS_EXTERN const char *
1120lws_html_get_atr(lhp_pstack_t *ps, const char *aname, size_t aname_len);
1121
1124
1125/*
1126 * The winning declaration's value for one side (idx 0..3 = T R B L) of a
1127 * shorthand-or-longhand property like border-width / border-color
1128 */
1130lws_css_get_side_atr_ps(lhp_pstack_t *ps, int longhand, int shorthand,
1131 int idx, int radii);
1132
1133/*
1134 * As lws_csp_px(), but lengths in calc() resolve their % terms against base
1135 * (the containing block content width) when it is non-NULL
1136 */
1147 int *unitless);
1148
1151
1154
1155void
1157
1158#define LWS_LHPREF_WIDTH 0
1159#define LWS_LHPREF_HEIGHT 1
1160#define LWS_LHPREF_NONE 2
1161
1164
1167
struct lws_dll2 lws_dll2_t
struct lws_dll2_owner lws_dll2_owner_t
unsigned short uint16_t
unsigned int uint32_t
#define LWS_EXTERN
unsigned char uint8_t
struct lws_fixed3232 lws_fx_t
lws_stateful_ret_t
#define LWS_VISIBLE
struct lws_surface_info lws_surface_info_t
struct lws_box lws_box_t
struct lws_display_font lws_display_font_t
struct lws_dlo lws_dlo_t
struct lws_display_render_state lws_display_render_state_t
LWS_VISIBLE LWS_EXTERN int lws_lhp_ss_browse(struct lws_context *cx, lws_display_render_state_t *rs, const char *url, sul_cb_t render)
@ LHP_SELKEY_NONE
Definition lws-html.h:753
@ LHP_SELKEY_ID
Definition lws-html.h:756
@ LHP_SELKEY_TAG
Definition lws-html.h:754
@ LHP_SELKEY_CLASS
Definition lws-html.h:755
LWS_VISIBLE LWS_EXTERN lhp_pstack_t * lws_css_get_parent_block(lhp_ctx_t *ctx, lhp_pstack_t *ps)
LWS_VISIBLE LWS_EXTERN const lcsp_atr_t * lws_css_get_prop_atr_ps(lhp_ctx_t *ctx, lhp_pstack_t *ps, lcsp_props_t prop)
lws_dll2_owner_t atr
Definition lws-html.h:492
lcsp_css_units
Definition lws-html.h:582
@ LCSP_UNIT_LENGTH_MM
Definition lws-html.h:591
@ LCSP_UNIT_LENGTH_PC
Definition lws-html.h:593
@ LCSP_UNIT_LENGTH_REM
Definition lws-html.h:596
@ LCSP_UNIT_CALC
Definition lws-html.h:602
@ LCSP_UNIT_LENGTH_CM
Definition lws-html.h:590
@ LCSP_UNIT_DATA
Definition lws-html.h:613
@ LCSP_UNIT_LENGTH_EX
Definition lws-html.h:588
@ LCSP_UNIT_LENGTH_VMAX
Definition lws-html.h:600
@ LCSP_UNIT_RGBA
Definition lws-html.h:609
@ LCSP_UNIT_LENGTH_VMIN
Definition lws-html.h:599
@ LCSP_UNIT_STRING
Definition lws-html.h:612
@ LCSP_UNIT_LENGTH_PX
Definition lws-html.h:594
@ LCSP_UNIT_LENGTH_VH
Definition lws-html.h:598
@ LCSP_UNIT_NONE
Definition lws-html.h:583
@ LCSP_UNIT_FREQ_HZ
Definition lws-html.h:607
@ LCSP_UNIT_NUM
Definition lws-html.h:585
@ LCSP_UNIT_LENGTH_PERCENT
Definition lws-html.h:595
@ LCSP_UNIT_URL
Definition lws-html.h:611
@ LCSP_UNIT_ANGLE_ABS_DEG
Definition lws-html.h:604
@ LCSP_UNIT_ANGLE_REL_DEG
Definition lws-html.h:605
@ LCSP_UNIT_LENGTH_EM
Definition lws-html.h:587
@ LCSP_UNIT_LENGTH_PT
Definition lws-html.h:592
@ LCSP_UNIT_LENGTH_VW
Definition lws-html.h:597
@ LCSP_UNIT_LENGTH_IN
Definition lws-html.h:589
uint8_t host_anchor
Definition lws-html.h:772
struct lhp_ctx lhp_ctx_t
lws_fx_t minc
Definition lws-html.h:485
lcsp_stanza_t * stz
Definition lws-html.h:713
lws_fx_t min_w
Definition lws-html.h:437
uint8_t abs_h_set
Definition lws-html.h:551
uint8_t has_line
Definition lws-html.h:546
const struct lcsp_atr * css_display
Definition lws-html.h:501
lws_fx_t curx
Definition lws-html.h:474
struct lcsp_stanza * pseudo_after
Definition lws-html.h:513
uint8_t has_base
Definition lws-html.h:547
lws_fx_t rfloat_w
Definition lws-html.h:487
uint8_t is_float
Definition lws-html.h:539
lws_fx_t bg_oy
Definition lws-html.h:578
LWS_VISIBLE LWS_EXTERN int lws_http_rel_to_url(char *dest, size_t len, const char *base, const char *rel)
uint8_t is_flex
Definition lws-html.h:541
const struct lcsp_atr * css_box_sizing
Definition lws-html.h:505
LWS_VISIBLE LWS_EXTERN const lws_fx_t * lws_csp_px(const lcsp_atr_t *a, lhp_pstack_t *ps)
uint8_t key_kind
Definition lws-html.h:665
const struct lcsp_atr * css_margin[4]
Definition lws-html.h:518
uint8_t is_table
Definition lws-html.h:533
lws_dll2_t list
Definition lws-html.h:424
lcsp_defs_t * def
Definition lws-html.h:736
size_t name_len
Definition lws-html.h:404
uint16_t name_len
Definition lws-html.h:660
LWS_VISIBLE LWS_EXTERN const char * lws_css_pstack_name(lhp_pstack_t *ps)
uint32_t specificity
Definition lws-html.h:658
LWS_VISIBLE LWS_EXTERN const lcsp_atr_t * lhp_resolve_var_color(lhp_ctx_t *ctx, const lcsp_atr_t *a)
struct lcsp_atr lcsp_atr_t
lws_fx_t cw
Definition lws-html.h:466
lws_dll2_t list
Definition lws-html.h:450
uint32_t specificity
Definition lws-html.h:730
lws_dlo_t * bg_dlo
Definition lws-html.h:576
lws_dll2_t list
Definition lws-html.h:770
lws_dll2_t list
Definition lws-html.h:671
uint8_t last_space
Definition lws-html.h:548
int16_t line_asc
Definition lws-html.h:479
uint16_t key_len
Definition lws-html.h:664
lws_fx_t height
Definition lws-html.h:428
lws_fx_t max_w
Definition lws-html.h:438
int16_t line_desc
Definition lws-html.h:480
lws_fx_t bg_ox
Definition lws-html.h:577
LWS_VISIBLE LWS_EXTERN int lhp_prop_axis(const lcsp_atr_t *a)
struct lhp_selidx * next
Definition lws-html.h:694
size_t name_len
Definition lws-html.h:735
const char * block_rules
Definition lws-html.h:968
LWS_VISIBLE LWS_EXTERN int lws_lhp_construct(lhp_ctx_t *ctx, lhp_callback cb, void *user, const lws_surface_info_t *ic)
LWS_VISIBLE LWS_EXTERN const lws_fx_t * lws_csp_px_base(const lcsp_atr_t *a, lhp_pstack_t *ps, const lws_fx_t *base)
lcsp_stanza_t * stz
Definition lws-html.h:729
lws_dll2_t list
Definition lws-html.h:403
const struct lcsp_atr * css_width
Definition lws-html.h:502
lws_fx_t font_size
Definition lws-html.h:529
LWS_VISIBLE LWS_EXTERN const lcsp_atr_t * lws_css_get_side_atr_ps(lhp_pstack_t *ps, int longhand, int shorthand, int idx, int radii)
LWS_VISIBLE LWS_EXTERN const char * lws_html_get_atr(lhp_pstack_t *ps, const char *aname, size_t aname_len)
uint32_t seq
Definition lws-html.h:676
lws_dll2_owner_t sibs
Definition lws-html.h:493
struct lws_lhp_filter lws_lhp_filter_t
lws_dll2_owner_t row_dlos
Definition lws-html.h:426
lws_dll2_t list
Definition lws-html.h:734
lcsp_propvals_t
Definition lws-html.h:246
@ LCSP_PROPVAL_LTR
Definition lws-html.h:306
@ LCSP_PROPVAL_BORDER_BOX
Definition lws-html.h:261
@ LCSP_PROPVAL_BLINK
Definition lws-html.h:257
@ LCSP_PROPVAL_REPEAT_Y
Definition lws-html.h:334
@ LCSP_PROPVAL_LEFT
Definition lws-html.h:295
@ LCSP_PROPVAL_LINE_THROUGH
Definition lws-html.h:297
@ LCSP_PROPVAL_TOP
Definition lws-html.h:364
@ LCSP_PROPVAL_STRETCH
Definition lws-html.h:385
@ LCSP_PROPVAL_SMALL_CAPTION
Definition lws-html.h:343
@ LCSP_PROPVAL_RIGHT
Definition lws-html.h:335
@ LCSP_PROPVAL_CODE
Definition lws-html.h:269
@ LCSP_PROPVAL_FIXED
Definition lws-html.h:280
@ LCSP_PROPVAL_SCROLL
Definition lws-html.h:337
@ LCSP_PROPVAL_COLLAPSE
Definition lws-html.h:270
@ LCSP_PROPVAL_SHOW
Definition lws-html.h:340
@ LCSP_PROPVAL_LOWER
Definition lws-html.h:300
@ LCSP_PROPVAL_DECIMAL_LEADING_ZERO
Definition lws-html.h:274
@ LCSP_PROPVAL_OPEN_QUOTE
Definition lws-html.h:323
@ LCSP_PROPVAL_TABLE_COLUMN_GROUP
Definition lws-html.h:356
@ LCSP_PROPVAL_WRAP
Definition lws-html.h:386
@ LCSP_PROPVAL_HIGH
Definition lws-html.h:285
@ LCSP_PROPVAL_PRE
Definition lws-html.h:327
@ LCSP_PROPVAL_ALWAYS
Definition lws-html.h:249
@ LCSP_PROPVAL_BLOCK
Definition lws-html.h:258
@ LCSP_PROPVAL_HIDE
Definition lws-html.h:284
@ LCSP_PROPVAL_INVERT
Definition lws-html.h:292
@ LCSP_PROPVAL_HELP
Definition lws-html.h:282
@ LCSP_PROPVAL_UPPER_ROMAN
Definition lws-html.h:370
@ LCSP_PROPVAL_COLUMN
Definition lws-html.h:379
@ LCSP_PROPVAL_TEXT
Definition lws-html.h:363
@ LCSP_PROPVAL_ABSOLUTE
Definition lws-html.h:248
@ LCSP_PROPVAL_HIGHER
Definition lws-html.h:286
@ LCSP_PROPVAL_TABLE_CELL
Definition lws-html.h:354
@ LCSP_PROPVAL_INLINE_TABLE
Definition lws-html.h:291
@ LCSP_PROPVAL_PRE_LINE
Definition lws-html.h:328
@ LCSP_PROPVAL_SPACE_AROUND
Definition lws-html.h:381
@ LCSP_PROPVAL_ROW
Definition lws-html.h:378
@ LCSP_PROPVAL_TABLE_CAPTION
Definition lws-html.h:353
@ LCSP_PROPVAL_MOVE
Definition lws-html.h:311
@ LCSP_PROPVAL_DIGITS
Definition lws-html.h:276
@ LCSP_PROPVAL_NOWRAP
Definition lws-html.h:318
@ LCSP_PROPVAL_TABLE_FOOTER_GROUP
Definition lws-html.h:357
@ LCSP_PROPVAL_END
Definition lws-html.h:388
@ LCSP_PROPVAL_MENU
Definition lws-html.h:307
@ LCSP_PROPVAL_N_RESIZE
Definition lws-html.h:319
@ LCSP_PROPVAL_NO_CLOSE_QUOTE
Definition lws-html.h:313
@ LCSP_PROPVAL_FLEX_START
Definition lws-html.h:383
@ LCSP_PROPVAL_CENTER
Definition lws-html.h:266
@ LCSP_PROPVAL_COVER
Definition lws-html.h:389
@ LCSP_PROPVAL_LIGHTER
Definition lws-html.h:296
@ LCSP_PROPVAL_BOTTOM
Definition lws-html.h:263
@ LCSP_PROPVAL_EMBED
Definition lws-html.h:278
@ LCSP_PROPVAL_CAPTION
Definition lws-html.h:265
@ LCSP_PROPVAL_WAIT
Definition lws-html.h:372
@ LCSP_PROPVAL_ARMENIAN
Definition lws-html.h:250
@ LCSP_PROPVAL_TRANSPARENT
Definition lws-html.h:365
@ LCSP_PROPVAL_INHERIT
Definition lws-html.h:288
@ LCSP_PROPVAL_BELOW
Definition lws-html.h:255
@ LCSP_PROPVAL_NW_RESIZE
Definition lws-html.h:320
@ LCSP_PROPVAL_TABLE_ROW_GROUP
Definition lws-html.h:360
@ LCSP_PROPVAL_RELATIVE
Definition lws-html.h:331
@ LCSP_PROPVAL_SMALL_CAPS
Definition lws-html.h:342
@ LCSP_PROPVAL_UPPER_ALPHA
Definition lws-html.h:367
@ LCSP_PROPVAL_DECIMAL
Definition lws-html.h:275
@ LCSP_PROPVAL_PRE_WRAP
Definition lws-html.h:329
@ LCSP_PROPVAL_LOWER_ROMAN
Definition lws-html.h:305
@ LCSP_PROPVAL_NE_RESIZE
Definition lws-html.h:312
@ LCSP_PROPVAL_FLEX_END
Definition lws-html.h:384
@ LCSP_PROPVAL_NOT_ALLOWED
Definition lws-html.h:391
@ LCSP_PROPVAL_TABLE_HEADER_GROUP
Definition lws-html.h:358
@ LCSP_PROPVAL_SUB
Definition lws-html.h:349
@ LCSP_PROPVAL_SUPER
Definition lws-html.h:350
@ LCSP_PROPVAL_CIRCLE
Definition lws-html.h:267
@ LCSP_PROPVAL_LOWER_GREEK
Definition lws-html.h:303
@ LCSP_PROPVAL__COUNT
Definition lws-html.h:394
@ LCSP_PROPVAL_CAPITALIZE
Definition lws-html.h:264
@ LCSP_PROPVAL_CONTINUOUS
Definition lws-html.h:272
@ LCSP_PROPVAL_OBLIQUE
Definition lws-html.h:321
@ LCSP_PROPVAL_NO_REPEAT
Definition lws-html.h:316
@ LCSP_PROPVAL_FLEX
Definition lws-html.h:376
@ LCSP_PROPVAL_DEFAULT
Definition lws-html.h:392
@ LCSP_PROPVAL_BOTH
Definition lws-html.h:262
@ LCSP_PROPVAL_INLINE_BLOCK
Definition lws-html.h:290
@ LCSP_PROPVAL_START
Definition lws-html.h:387
@ LCSP_PROPVAL_MIDDLE
Definition lws-html.h:309
@ LCSP_PROPVAL_TEXT_BOTTOM
Definition lws-html.h:361
@ LCSP_PROPVAL_REPEAT_X
Definition lws-html.h:333
@ LCSP_PROPVAL_SW_RESIZE
Definition lws-html.h:351
@ LCSP_PROPVAL_UNDERLINE
Definition lws-html.h:366
@ LCSP_PROPVAL_SPACE_BETWEEN
Definition lws-html.h:380
@ LCSP_PROPVAL_TABLE_ROW
Definition lws-html.h:359
@ LCSP_PROPVAL_GEORGIAN
Definition lws-html.h:281
@ LCSP_PROPVAL_OUTSIDE
Definition lws-html.h:324
@ LCSP_PROPVAL_LOWER_LATIN
Definition lws-html.h:304
@ LCSP_PROPVAL_HIDDEN
Definition lws-html.h:283
@ LCSP_PROPVAL_BASELINE
Definition lws-html.h:253
@ LCSP_PROPVAL_LOW
Definition lws-html.h:299
@ LCSP_PROPVAL_BEHIND
Definition lws-html.h:254
@ LCSP_PROPVAL_OVERLINE
Definition lws-html.h:325
@ LCSP_PROPVAL_UPPER_LATIN
Definition lws-html.h:369
@ LCSP_PROPVAL_POINTER
Definition lws-html.h:326
@ LCSP_PROPVAL_SPELL_OUT
Definition lws-html.h:344
@ LCSP_PROPVAL_NONE
Definition lws-html.h:314
@ LCSP_PROPVAL_LOWER_ALPHA
Definition lws-html.h:301
@ LCSP_PROPVAL_STATIC
Definition lws-html.h:347
@ LCSP_PROPVAL_LOWERCASE
Definition lws-html.h:302
@ LCSP_PROPVAL_UPPERCASE
Definition lws-html.h:368
@ LCSP_PROPVAL_PROGRESS
Definition lws-html.h:330
@ LCSP_PROPVAL_JUSTIFY
Definition lws-html.h:294
@ LCSP_PROPVAL_TABLE
Definition lws-html.h:352
@ LCSP_PROPVAL_W_RESIZE
Definition lws-html.h:373
@ LCSP_PROPVAL_STATUS_BAR
Definition lws-html.h:348
@ LCSP_PROPVAL_SPACE_EVENLY
Definition lws-html.h:382
@ LCSP_PROPVAL_NO_OPEN_QUOTE
Definition lws-html.h:315
@ LCSP_PROPVAL_DISC
Definition lws-html.h:277
@ LCSP_PROPVAL_ITALIC
Definition lws-html.h:293
@ LCSP_PROPVAL_INLINE
Definition lws-html.h:289
@ LCSP_PROPVAL_VISIBLE
Definition lws-html.h:371
@ LCSP_PROPVAL_SE_RESIZE
Definition lws-html.h:339
@ LCSP_PROPVAL_ONCE
Definition lws-html.h:322
@ LCSP_PROPVAL_RTL
Definition lws-html.h:336
@ LCSP_PROPVAL_REPEAT
Definition lws-html.h:332
@ LCSP_PROPVAL_SEPARATE
Definition lws-html.h:338
@ LCSP_PROPVAL_TABLE_COLUMN
Definition lws-html.h:355
@ LCSP_PROPVAL_S_RESIZE
Definition lws-html.h:346
@ LCSP_PROPVAL_MIX
Definition lws-html.h:310
@ LCSP_PROPVAL_BIDI_OVERRIDE
Definition lws-html.h:256
@ LCSP_PROPVAL_SILENT
Definition lws-html.h:341
@ LCSP_PROPVAL_CONTENT_BOX
Definition lws-html.h:271
@ LCSP_PROPVAL_MESSAGE_BOX
Definition lws-html.h:308
@ LCSP_PROPVAL_AUTO
Definition lws-html.h:251
@ LCSP_PROPVAL_LIST_ITEM
Definition lws-html.h:298
@ LCSP_PROPVAL_TEXT_TOP
Definition lws-html.h:362
@ LCSP_PROPVAL_ABOVE
Definition lws-html.h:247
@ LCSP_PROPVAL_E_RESIZE
Definition lws-html.h:279
@ LCSP_PROPVAL_BOLD
Definition lws-html.h:259
@ LCSP_PROPVAL_CROSSHAIR
Definition lws-html.h:273
@ LCSP_PROPVAL_AVOID
Definition lws-html.h:252
@ LCSP_PROPVAL_CLOSE_QUOTE
Definition lws-html.h:268
@ LCSP_PROPVAL_CONTAIN
Definition lws-html.h:390
@ LCSP_PROPVAL_NORMAL
Definition lws-html.h:317
@ LCSP_PROPVAL_INLINE_FLEX
Definition lws-html.h:377
@ LCSP_PROPVAL_SQUARE
Definition lws-html.h:345
@ LCSP_PROPVAL_ICON
Definition lws-html.h:287
@ LCSP_PROPVAL_BOLDER
Definition lws-html.h:260
uint8_t is_cell
Definition lws-html.h:535
lws_fx_t width
Definition lws-html.h:436
lws_fx_t abs_h
Definition lws-html.h:467
int16_t last_base
Definition lws-html.h:481
#define LHP_SELIDX_BUCKETS
Definition lws-html.h:699
LWS_VISIBLE LWS_EXTERN int lws_lhp_set_filter(lhp_ctx_t *ctx, const lws_lhp_filter_t *filter)
uint8_t is_float_right
Definition lws-html.h:540
lws_dll2_t list
Definition lws-html.h:657
#define LHP_STRING_CHUNK
Definition lws-html.h:35
lws_fx_t nowrap
Definition lws-html.h:486
lws_dll2_owner_t atr
Definition lws-html.h:414
struct lhp_block_rule lhp_block_rule_t
lcsp_names_t * nm
Definition lws-html.h:695
uint16_t idx
Definition lws-html.h:490
LWS_VISIBLE LWS_EXTERN void lws_lhp_ss_cancel(lws_display_render_state_t *rs)
struct lhp_atr lhp_atr_t
struct lcsp_match * matched
Definition lws-html.h:527
void * user
Definition lws-html.h:451
uint8_t is_block
Definition lws-html.h:532
const struct lcsp_atr * css_padding[4]
Definition lws-html.h:519
lws_stateful_ret_t(* lhp_callback)(struct lhp_ctx *ctx, char reason)
Definition lws-html.h:398
lws_fx_t line_h
Definition lws-html.h:477
lws_dll2_t list
Definition lws-html.h:642
struct lcsp_match lcsp_match_t
const lws_display_font_t * font
Definition lws-html.h:568
struct lcsp_stanza lcsp_stanza_t
lcsp_props
Definition lws-html.h:79
@ LCSP_PROP_OVERFLOW
Definition lws-html.h:161
@ LCSP_PROP_INSET_BLOCK_END
Definition lws-html.h:237
@ LCSP_PROP_POSITION
Definition lws-html.h:176
@ LCSP_PROP_Z_INDEX
Definition lws-html.h:201
@ LCSP_PROP_TEXT_ALIGN
Definition lws-html.h:187
@ LCSP_PROP_LETTER_SPACING
Definition lws-html.h:141
@ LCSP_PROP_PADDING_INLINE_START
Definition lws-html.h:226
@ LCSP_PROP_HEIGHT
Definition lws-html.h:139
@ LCSP_PROP_INSET_BLOCK
Definition lws-html.h:235
@ LCSP_PROP_BACKGROUND_REPEAT
Definition lws-html.h:85
@ LCSP_PROP_MARGIN_BOTTOM
Definition lws-html.h:150
@ LCSP_PROP_TOP
Definition lws-html.h:191
@ LCSP_PROP_BACKGROUND_IMAGE
Definition lws-html.h:83
@ LCSP_PROP_PADDING_BLOCK
Definition lws-html.h:228
@ LCSP_PROP_BACKGROUND_POSITION
Definition lws-html.h:84
@ LCSP_PROP_BORDER_RIGHT_WIDTH
Definition lws-html.h:105
@ LCSP_PROP_FLEX_GROW
Definition lws-html.h:207
@ LCSP_PROP_FONT_WEIGHT
Definition lws-html.h:137
@ LCSP_PROP_FONT_VARAIANT
Definition lws-html.h:136
@ LCSP_PROP_PAUSE
Definition lws-html.h:172
@ LCSP_PROP_BORDER_TOP_STYLE
Definition lws-html.h:100
@ LCSP_PROP_EMPTY_CELLS
Definition lws-html.h:131
@ LCSP_PROP_ALIGN_ITEMS
Definition lws-html.h:211
@ LCSP_PROP_JUSTIFY_CONTENT
Definition lws-html.h:213
@ LCSP_PROP_BORDER_RIGHT
Definition lws-html.h:93
@ LCSP_PROP_SPEAK_HEADER
Definition lws-html.h:180
@ LCSP_PROP_BORDER_COLLAPSE
Definition lws-html.h:88
@ LCSP_PROP_BACKGROUND_COLOR
Definition lws-html.h:82
@ LCSP_PROP_WHITE_SPACE
Definition lws-html.h:197
@ LCSP_PROP_SPEAK
Definition lws-html.h:183
@ LCSP_PROP_BACKGROUND_ATTACHMENT
Definition lws-html.h:81
@ LCSP_PROP_ROW_GAP
Definition lws-html.h:216
@ LCSP_PROP_VERTICAL_ALIGN
Definition lws-html.h:193
@ LCSP_PROP_SPEAK_NUMERAL
Definition lws-html.h:181
@ LCSP_PROP_LIST_STYLE_POSITION
Definition lws-html.h:144
@ LCSP_PROP_PADDING_INLINE
Definition lws-html.h:225
@ LCSP_PROP_MARGIN_TOP
Definition lws-html.h:149
@ LCSP_PROP_BORDER_RIGHT_STYLE
Definition lws-html.h:101
@ LCSP_PROP_MIN_WIDTH
Definition lws-html.h:155
@ LCSP_PROP_BORDER_BOTTOM_LEFT_RADIUS
Definition lws-html.h:111
@ LCSP_PROP_BORDER_SPACING
Definition lws-html.h:90
@ LCSP_PROP_TEXT_DECORATION
Definition lws-html.h:188
@ LCSP_PROP_VISIBILITY
Definition lws-html.h:194
@ LCSP_PROP_PADDING_BOTTOM
Definition lws-html.h:164
@ LCSP_PROP_CURSOR
Definition lws-html.h:127
@ LCSP_PROP_DISPLAY
Definition lws-html.h:129
@ LCSP_PROP_INSET_INLINE_START
Definition lws-html.h:233
@ LCSP_PROP_COLOR
Definition lws-html.h:120
@ LCSP_PROP_UNICODE_BIDI
Definition lws-html.h:192
@ LCSP_PROP_MAX_HEIGHT
Definition lws-html.h:152
@ LCSP_PROP_MARGIN_BLOCK_END
Definition lws-html.h:224
@ LCSP_PROP_BORDER_COLOR
Definition lws-html.h:89
@ LCSP_PROP_COUNTER_INCREMENT
Definition lws-html.h:122
@ LCSP_PROP_CONTENT
Definition lws-html.h:121
@ LCSP_PROP_OUTLINE_COLOR
Definition lws-html.h:157
@ LCSP_PROP_BOTTOM
Definition lws-html.h:115
@ LCSP_PROP_SPEAK_PUNCTUATION
Definition lws-html.h:182
@ LCSP_PROP_BORDER_TOP_COLOR
Definition lws-html.h:96
@ LCSP_PROP_PADDING_TOP
Definition lws-html.h:162
@ LCSP_PROP_MARGIN_INLINE
Definition lws-html.h:219
@ LCSP_PROP_BORDER_WIDTH
Definition lws-html.h:108
@ LCSP_PROP_BORDER_TOP_LEFT_RADIUS
Definition lws-html.h:109
@ LCSP_PROP_FLEX_BASIS
Definition lws-html.h:209
@ LCSP_PROP_ALIGN_SELF
Definition lws-html.h:212
@ LCSP_PROP_INSET_INLINE
Definition lws-html.h:232
@ LCSP_PROP_BORDER_BOTTOM_WIDTH
Definition lws-html.h:106
@ LCSP_PROP_VOLUME
Definition lws-html.h:196
@ LCSP_PROP_CUE_AFTER
Definition lws-html.h:124
@ LCSP_PROP_BORDER_LEFT_STYLE
Definition lws-html.h:103
@ LCSP_PROP_BORDER_STYLE
Definition lws-html.h:91
@ LCSP_PROP_BORDER_LEFT_COLOR
Definition lws-html.h:99
@ LCSP_PROP_FLEX
Definition lws-html.h:205
@ LCSP_PROP_BORDER_RADIUS
Definition lws-html.h:113
@ LCSP_PROP_TEXT_INDENT
Definition lws-html.h:189
@ LCSP_PROP_OUTLINE_STYLE
Definition lws-html.h:158
@ LCSP_PROP_FONT
Definition lws-html.h:138
@ LCSP_PROP_PADDING
Definition lws-html.h:166
@ LCSP_PROP_PAUSE_AFTER
Definition lws-html.h:170
@ LCSP_PROP_FONT_FAMILY
Definition lws-html.h:133
@ LCSP_PROP_TEXT_TRANSFORM
Definition lws-html.h:190
@ LCSP_PROP_MARGIN_BLOCK
Definition lws-html.h:222
@ LCSP_PROP_PLAY_DURING
Definition lws-html.h:175
@ LCSP_PROP_MAX_WIDTH
Definition lws-html.h:153
@ LCSP_PROP_QUOTES
Definition lws-html.h:177
@ LCSP_PROP_BORDER_LEFT_WIDTH
Definition lws-html.h:107
@ LCSP_PROP_FONT_STYLE
Definition lws-html.h:135
@ LCSP_PROP_LIST_STYLE
Definition lws-html.h:146
@ LCSP_PROP_OUTLINE_WIDTH
Definition lws-html.h:159
@ LCSP_PROP_PITCH
Definition lws-html.h:174
@ LCSP_PROP_CUE
Definition lws-html.h:126
@ LCSP_PROP_MARGIN_RIGHT
Definition lws-html.h:147
@ LCSP_PROP_MARGIN_LEFT
Definition lws-html.h:148
@ LCSP_PROP_BORDER_BOTTOM
Definition lws-html.h:94
@ LCSP_PROP_WIDOWS
Definition lws-html.h:198
@ LCSP_PROP_PAGE_BREAK_BEFORE
Definition lws-html.h:168
@ LCSP_PROP_RIGHT
Definition lws-html.h:179
@ LCSP_PROP_BORDER_BOTTOM_COLOR
Definition lws-html.h:98
@ LCSP_PROP_MARGIN_INLINE_START
Definition lws-html.h:220
@ LCSP_PROP_PAGE_BREAK_INSIDE
Definition lws-html.h:169
@ LCSP_PROP_MARGIN
Definition lws-html.h:151
@ LCSP_PROP_BORDER_RIGHT_COLOR
Definition lws-html.h:97
@ LCSP_PROP_DIRECTION
Definition lws-html.h:128
@ LCSP_PROP_FLEX_WRAP
Definition lws-html.h:210
@ LCSP_PROP_PADDING_INLINE_END
Definition lws-html.h:227
@ LCSP_PROP_CUE_BEFORE
Definition lws-html.h:125
@ LCSP_PROP_CLIP
Definition lws-html.h:119
@ LCSP_PROP_COLUMN_GAP
Definition lws-html.h:215
@ LCSP_PROP_FONT_SIZE
Definition lws-html.h:134
@ LCSP_PROP_ELEVATION
Definition lws-html.h:130
@ LCSP_PROP_PADDING_BLOCK_END
Definition lws-html.h:230
@ LCSP_PROP_FLEX_DIRECTION
Definition lws-html.h:206
@ LCSP_PROP_WIDTH
Definition lws-html.h:199
@ LCSP_PROP_CAPTION_SIDE
Definition lws-html.h:117
@ LCSP_PROP_BORDER_TOP_WIDTH
Definition lws-html.h:104
@ LCSP_PROP_LEFT
Definition lws-html.h:140
@ LCSP_PROP_LINE_HEIGHT
Definition lws-html.h:142
@ LCSP_PROP_STRESS
Definition lws-html.h:185
@ LCSP_PROP_PADDING_LEFT
Definition lws-html.h:165
@ LCSP_PROP_CLEAR
Definition lws-html.h:118
@ LCSP_PROP_PADDING_RIGHT
Definition lws-html.h:163
@ LCSP_PROP_PITCH_RANGE
Definition lws-html.h:173
@ LCSP_PROP_WORD_SPACING
Definition lws-html.h:200
@ LCSP_PROP_FLOAT
Definition lws-html.h:132
@ LCSP_PROP__COUNT
Definition lws-html.h:239
@ LCSP_PROP_BOX_SIZING
Definition lws-html.h:116
@ LCSP_PROP_BORDER
Definition lws-html.h:114
@ LCSP_PROP_INSET_BLOCK_START
Definition lws-html.h:236
@ LCSP_PROP_ORPHANS
Definition lws-html.h:156
@ LCSP_PROP_FLEX_SHRINK
Definition lws-html.h:208
@ LCSP_PROP_AZIMUTH
Definition lws-html.h:80
@ LCSP_PROP_PADDING_BLOCK_START
Definition lws-html.h:229
@ LCSP_PROP_BORDER_LEFT
Definition lws-html.h:95
@ LCSP_PROP_INSET_INLINE_END
Definition lws-html.h:234
@ LCSP_PROP_COUNTER_RESET
Definition lws-html.h:123
@ LCSP_PROP_INSET
Definition lws-html.h:231
@ LCSP_PROP_MIN_HEIGHT
Definition lws-html.h:154
@ LCSP_PROP_LIST_STYLE_TYPE
Definition lws-html.h:145
@ LCSP_PROP_SPEECH_RATE
Definition lws-html.h:184
@ LCSP_PROP_RICHNESS
Definition lws-html.h:178
@ LCSP_PROP_BORDER_BOTTOM_STYLE
Definition lws-html.h:102
@ LCSP_PROP_OPACITY
Definition lws-html.h:204
@ LCSP_PROP_GAP
Definition lws-html.h:214
@ LCSP_PROP_PAUSE_BEFORE
Definition lws-html.h:171
@ LCSP_PROP_OUTLINE
Definition lws-html.h:160
@ LCSP_PROP_MARGIN_INLINE_END
Definition lws-html.h:221
@ LCSP_PROP_TABLE_LAYOUT
Definition lws-html.h:186
@ LCSP_PROP_BACKGROUND
Definition lws-html.h:87
@ LCSP_PROP_MARGIN_BLOCK_START
Definition lws-html.h:223
@ LCSP_PROP_BORDER_TOP_RIGHT_RADIUS
Definition lws-html.h:110
@ LCSP_PROP_PAGE_BREAK_AFTER
Definition lws-html.h:167
@ LCSP_PROP_BACKGROUND_SIZE
Definition lws-html.h:86
@ LCSP_PROP_BORDER_BOTTOM_RIGHT_RADIUS
Definition lws-html.h:112
@ LCSP_PROP_BORDER_TOP
Definition lws-html.h:92
@ LCSP_PROP_LIST_STYLE_IMAGE
Definition lws-html.h:143
@ LCSP_PROP_VOICE_FAMILY
Definition lws-html.h:195
lws_dll2_t list
Definition lws-html.h:432
uint8_t abs_stretch_set
Definition lws-html.h:556
lws_fx_t pend_mb
Definition lws-html.h:488
struct lcsp_stanza * pseudo_before
Definition lws-html.h:512
uint8_t flex_wrap
Definition lws-html.h:543
LWS_VISIBLE LWS_EXTERN void lws_lhp_tag_dlo_id(lhp_ctx_t *ctx, lhp_pstack_t *ps, lws_dlo_t *dlo)
uint8_t is_row
Definition lws-html.h:534
lws_fx_t ox
Definition lws-html.h:464
uint8_t explicit_h
Definition lws-html.h:550
struct lhp_pstack lhp_pstack_t
const struct lcsp_atr * css_position
Definition lws-html.h:500
lws_dll2_owner_t names
Definition lws-html.h:673
lws_dlo_t * dlo
Definition lws-html.h:567
lhp_callbacks
Definition lws-html.h:51
@ LHPCB_COMPLETE
Definition lws-html.h:62
@ LHPCB_ERR_ELEM_DEPTH
Definition lws-html.h:56
@ LHPCB_ELEMENT_START
Definition lws-html.h:65
@ LHPCB_ERR_ATTRIB_SYNTAX
Definition lws-html.h:53
@ LHPCB_ERR_OOM
Definition lws-html.h:55
@ LHPCB_CONTENT
Definition lws-html.h:68
@ LHPCB_DESTRUCTED
Definition lws-html.h:60
@ LHPCB_COMMENT
Definition lws-html.h:70
@ LHPCB_CONSTRUCTED
Definition lws-html.h:59
@ LHPCB_FAILED
Definition lws-html.h:63
@ LHPCB_ELEMENT_END
Definition lws-html.h:66
@ LHPCB_ERR_ATTRIB_LEN
Definition lws-html.h:54
@ LHPCB_CONTINUE
Definition lws-html.h:57
lws_dll2_owner_t col_dlos
Definition lws-html.h:434
enum lcsp_css_units lcsp_css_units_t
uint8_t hidden
Definition lws-html.h:562
LWS_VISIBLE LWS_EXTERN const lcsp_atr_t * lws_css_cascade_get_prop_atr(lhp_ctx_t *ctx, lcsp_props_t prop)
lws_fx_t oy
Definition lws-html.h:465
uint16_t prop
Definition lws-html.h:646
size_t value_len
Definition lws-html.h:405
lws_dlo_t * line_first
Definition lws-html.h:478
const lws_display_font_t * f
Definition lws-html.h:495
lws_fx_t cury
Definition lws-html.h:475
uint8_t shrink
Definition lws-html.h:544
LWS_VISIBLE LWS_EXTERN void lws_lhp_destruct(lhp_ctx_t *ctx)
uint16_t key_ofs
Definition lws-html.h:661
int32_t abs_y
Definition lws-html.h:489
lws_fx_t maxc
Definition lws-html.h:484
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_lhp_parse(lhp_ctx_t *ctx, const uint8_t **buf, size_t *len)
lws_dll2_owner_t defs
Definition lws-html.h:674
uint8_t is_inline
Definition lws-html.h:536
const struct lcsp_atr * css_height
Definition lws-html.h:503
uint8_t important
Definition lws-html.h:647
struct lwsac * styleac
Definition lws-html.h:528
lhp_callback cb
Definition lws-html.h:452
lws_dll2_t list
Definition lws-html.h:747
uint16_t nmatched
Definition lws-html.h:530
const struct lcsp_atr * css_background_color
Definition lws-html.h:497
lcsp_stanza_t * stz
Definition lws-html.h:696
uint8_t ti_done
Definition lws-html.h:563
const struct lcsp_atr * css_color
Definition lws-html.h:498
struct lcsp_defs lcsp_defs_t
struct lcsp_atr_ptr lcsp_atr_ptr_t
uint8_t css_resolved
Definition lws-html.h:560
uint8_t abs_minh_set
Definition lws-html.h:553
uint8_t is_ilevel
Definition lws-html.h:537
uint8_t explicit_w
Definition lws-html.h:549
enum lcsp_props lcsp_props_t
const struct lcsp_atr * css_text_indent
Definition lws-html.h:504
void lhp_set_dlo_padding_margin(lhp_pstack_t *ps, lws_dlo_t *dlo)
lws_dll2_t list
Definition lws-html.h:717
uint8_t is_abs
Definition lws-html.h:538
lws_box_t drt
Definition lws-html.h:455
uint8_t in_shrink
Definition lws-html.h:545
LWS_VISIBLE LWS_EXTERN int lws_lhp_ss_browse_filter(struct lws_context *cx, lws_display_render_state_t *rs, const char *url, sul_cb_t render, const lws_lhp_filter_t *filter)
struct lhp_css_var lhp_css_var_t
uint8_t is_flex_item
Definition lws-html.h:542
struct lhp_css_layer lhp_css_layer_t
const struct lcsp_atr * css_pos[4]
Definition lws-html.h:517
struct lcsp_names lcsp_names_t
struct lhp_sib lhp_sib_t
lcsp_atr_t * atr
Definition lws-html.h:719
struct lhp_css_var * var
Definition lws-html.h:644
struct lcsp_stanza_ptr lcsp_stanza_ptr_t
const char * cosmetic_css
Definition lws-html.h:967
lws_dll2_t list
Definition lws-html.h:711
lws_fx_t abs_bot
Definition lws-html.h:471
uint8_t abs_bot_set
Definition lws-html.h:554
struct lhp_selidx lhp_selidx_t
LWS_VISIBLE LWS_EXTERN const lcsp_atr_t * lhp_resolve_var(lhp_ctx_t *ctx, const lcsp_atr_t *a)
lws_dll2_t list
Definition lws-html.h:413
LWS_VISIBLE LWS_EXTERN lws_fx_t lws_csp_calc(const lcsp_atr_t *a, lhp_pstack_t *ps, const lws_fx_t *base, int *unitless)
lws_dll2_owner_t atrs
Definition lws-html.h:643
const struct lcsp_atr * css_border_radius[4]
Definition lws-html.h:515
uint8_t in_body
Definition lws-html.h:561
void(* sul_cb_t)(struct lws_sorted_usec_list *sul)
struct lws_sorted_usec_list lws_sorted_usec_list_t
uint16_t value_len
Definition lws-html.h:632
uint8_t unit
Definition lws-html.h:634
uint16_t propval
Definition lws-html.h:631
uint8_t op
Definition lws-html.h:635
union lcsp_atr::@177372350175354365242210324107053033053136025331 u
lws_dll2_t list
Definition lws-html.h:618
int16_t css_state
Definition lws-html.h:888
uint8_t css_layer_depth
Definition lws-html.h:910
uint8_t css_lhs_partial
Definition lws-html.h:912
sul_cb_t ssevcb
Definition lws-html.h:835
char await_css_url[240]
Definition lws-html.h:896
lws_fx_t fxs[8]
Definition lws-html.h:796
struct lwsac * blockac
Definition lws-html.h:830
lhp_selidx_t * selidx[LHP_SELIDX_BUCKETS]
Definition lws-html.h:816
uint8_t css_skip_depth
Definition lws-html.h:907
uint8_t await_css_done
Definition lws-html.h:901
uint8_t cb_depth
Definition lws-html.h:798
uint8_t is_css
Definition lws-html.h:900
struct lwsac * idxac
Definition lws-html.h:815
lws_dll2_owner_t css_layers
Definition lws-html.h:812
uint8_t finish_css
Definition lws-html.h:899
uint32_t hits_alloc
Definition lws-html.h:821
void * user1
Definition lws-html.h:841
int prop
Definition lws-html.h:886
uint8_t await_assets
Definition lws-html.h:902
struct lwsac * cssac
Definition lws-html.h:780
lws_dll2_owner_t active_stanzas
Definition lws-html.h:806
size_t tag_len
Definition lws-html.h:843
lws_dll2_owner_t * ids
Definition lws-html.h:785
lws_sorted_usec_list_t * sshtmlevsul
Definition lws-html.h:838
int32_t viewport_h
Definition lws-html.h:856
int entity_start
Definition lws-html.h:851
struct lwsac * cascadeac
Definition lws-html.h:781
int state
Definition lws-html.h:846
int32_t window
Definition lws-html.h:855
uint8_t css_block_depth
Definition lws-html.h:906
lws_fx_t tf
Definition lws-html.h:787
lws_dll2_owner_t stack
Definition lws-html.h:778
struct lcsp_match * hits
Definition lws-html.h:818
sul_cb_t sshtmlevcb
Definition lws-html.h:837
int nl_temp
Definition lws-html.h:848
uint8_t cancelled
Definition lws-html.h:903
lws_surface_info_t ic
Definition lws-html.h:832
uint32_t hits_count
Definition lws-html.h:822
const char * tag
Definition lws-html.h:842
lws_sorted_usec_list_t * ssevsul
Definition lws-html.h:836
char * filter_css
Definition lws-html.h:828
int16_t cssval_state
Definition lws-html.h:889
uint32_t temp
Definition lws-html.h:854
uint8_t css_layer
Definition lws-html.h:908
int saved_state
Definition lws-html.h:850
struct lwsac * propatrac
Definition lws-html.h:782
uint8_t in_body
Definition lws-html.h:898
lws_fx_t viewport_h_fx
Definition lws-html.h:858
uint32_t selidx_count
Definition lws-html.h:823
int temp_count
Definition lws-html.h:849
lcsp_defs_t * def
Definition lws-html.h:804
lws_dll2_owner_t css
Definition lws-html.h:783
int state_css_comm
Definition lws-html.h:847
int npos
Definition lws-html.h:845
uint32_t flags
Definition lws-html.h:853
lcsp_css_units_t unit
Definition lws-html.h:802
int propval
Definition lws-html.h:887
lhp_selidx_t * selidx_nokey
Definition lws-html.h:817
lws_dll2_owner_t css_vars
Definition lws-html.h:811
const char * base_url
Definition lws-html.h:834
uint8_t css_lhs_skip
Definition lws-html.h:915
lws_dll2_owner_t active_atr
Definition lws-html.h:808
uint8_t fxsi
Definition lws-html.h:797
lws_dll2_owner_t block_rules
Definition lws-html.h:829
union lhp_ctx::@311003342135116017074105067137247155112136133110 u
uint32_t stz_seq
Definition lws-html.h:824
char buf[LHP_STRING_CHUNK+1]
Definition lws-html.h:920
void * user
Definition lws-html.h:840
lcsp_stanza_t * stz
Definition lws-html.h:803