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 * Longest absolute url (including the NUL) for a document or an asset it
39 * refers to. Real pages use urls well over 256 chars, and file:// urls carry
40 * the whole local path. A url that does not fit is refused, with a warning.
41 */
42#if !defined(LHP_URL_LEN)
43#define LHP_URL_LEN 512
44#endif
45/*
46 * How many of an element's closed earlier siblings are remembered (their
47 * attributes) so that the ~ and + selector combinators and :first-child can
48 * be evaluated. Costs the attribute storage of that many elements per open
49 * level.
50 */
51#if !defined(LHP_SIBLING_HISTORY)
52#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
53#define LHP_SIBLING_HISTORY 2
54#else
55#define LHP_SIBLING_HISTORY 8
56#endif
57#endif
58
59/*
60 * Most selectors (each selector of a selector list counts) and custom
61 * properties the document's own css may declare; the user-agent and filter
62 * sheets don't count. Past either, the rest are dropped with a warning.
63 * Cascading each element visits a share of the selectors, and keeps an index
64 * of the declarations that apply to it including custom properties, so these
65 * bound the work and heap a page's css can make each element cost.
66 */
67#if !defined(LHP_MAX_CSS_SELECTORS)
68#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
69#define LHP_MAX_CSS_SELECTORS 4096
70#else
71#define LHP_MAX_CSS_SELECTORS 32768
72#endif
73#endif
74#if !defined(LHP_MAX_CSS_VARS)
75#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
76#define LHP_MAX_CSS_VARS 512
77#else
78#define LHP_MAX_CSS_VARS 4096
79#endif
80#endif
81
82/*
83 * Most steps of css work (ctx->cascade_ops) a document may cost: parsing
84 * its css, style="" attributes included, indexing the selectors and
85 * cascading its elements all count. The limits above bound what one element
86 * can cost, but not the document: css whose selectors all match every
87 * element costs that much again for every element. Once a document has used
88 * this much, its own css (stylesheets and style="" attributes) is ignored for
89 * the rest of its elements, with a warning, and they get only the user-agent
90 * and filter css; any more of it is not kept either. A large real page
91 * (slashdot's front page) costs about 0.5M.
92 */
93#if !defined(LHP_MAX_CSS_CASCADE_OPS)
94#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
95#define LHP_MAX_CSS_CASCADE_OPS 2000000
96#else
97#define LHP_MAX_CSS_CASCADE_OPS 16000000
98#endif
99#endif
100
101/*
102 * Most heap the open elements of a document may hold for their css at once
103 * (ctx->css_level_heap): each keeps an index of the declarations that win for
104 * it, and its parsed style="" attribute, so css that gives every element many
105 * declarations, such as custom properties on *, costs that again for every
106 * level of nesting. Once a document's open elements hold this much, its own
107 * css is ignored for the rest of the document as for LHP_MAX_CSS_CASCADE_OPS.
108 * A large real page (slashdot's front page) holds under 3KB at most.
109 */
110#if !defined(LHP_MAX_CSS_LEVEL_HEAP)
111#if defined(LWS_PLAT_FREERTOS) || defined(LWS_PLAT_BAREMETAL)
112#define LHP_MAX_CSS_LEVEL_HEAP (64 * 1024)
113#else
114#define LHP_MAX_CSS_LEVEL_HEAP (1024 * 1024)
115#endif
116#endif
117
118/*
119 * Most values one css declaration keeps, eg the terms of a shorthand or the
120 * fonts of a font-family list; past it, the rest are ignored with a warning.
121 * Every lookup of a property lists all the values of the declaration that
122 * wins (ctx->active_atr), and inherited properties are looked up from every
123 * element, so this bounds what a lookup costs. Real css needs a few dozen
124 * at most.
125 */
126#if !defined(LHP_MAX_CSS_DECL_VALUES)
127#define LHP_MAX_CSS_DECL_VALUES 64
128#endif
129
151
152/*
153 * CSS v2.1 full property set, taken from
154 *
155 * https://www.w3.org/TR/CSS21/propidx.html
156 */
157
158typedef enum lcsp_props {
281
282 /* appended: the lextable index is the enum value */
296
297 /* logical properties, mapped to the physical sides (ltr, horizontal) */
317
318 LCSP_PROP__COUNT /* always last */
320
321/*
322 * Indexes for the well-known property values
323 */
324
325typedef enum {
453
454 /* appended: the lextable index is the enum value */
472
473 LCSP_PROPVAL__COUNT /* always last */
475
476struct lhp_ctx;
477typedef lws_stateful_ret_t (*lhp_callback)(struct lhp_ctx *ctx, char reason);
478
479/* html attribute */
480
481typedef struct lhp_atr {
483 size_t name_len; /* 0 if it is elem tag */
484 size_t value_len;
485
486 /* name+NUL then value+NUL follow */
488
489/*
490 * An element's attributes as its selectors see them: its tag, and the rest
491 * sorted by the hash of their name ignoring case, then by length and name,
492 * the first of a repeated name first, so a selector finds one by comparing
493 * hashes and then usually a single name. Kept along with the element's
494 * attribute list, private to lhp.c
495 */
496
497typedef struct lhp_atr_ent {
498 const lhp_atr_t *a;
499 uint32_t h; /* hash of its name ignoring case */
501
502typedef struct lhp_atr_idx {
503 const lhp_atr_t *tag; /* NULL until the tag is parsed */
504 lhp_atr_ent_t *a; /* the attributes, sorted */
505 uint32_t tag_h; /* hash of the tag ignoring case */
509
510/* a closed element remembered on its parent for sibling selectors */
511
512typedef struct lhp_sib {
513 lws_dll2_t list; /* parent's sibs, newest last */
514 lws_dll2_owner_t atr; /* lhp_atr_t moved from the level */
515 lhp_atr_idx_t atr_idx; /* and their index, private */
517
518/*
519 * In order to lay out the table, we have to incrementally adjust all foregoing
520 * DLOs as newer cells change the situation. So we have to keep track of all
521 * cell DLOs in a stack of tables until it's all done.
522 */
523
524typedef struct {
525 lws_dll2_t list; /* ps->table_cols */
526
527 lws_dll2_owner_t row_dlos; /* lws_dlo_t in column */
528
529 lws_fx_t height; /* currently computed row height */
531
532typedef struct {
533 lws_dll2_t list; /* ps->table_cols */
534
535 lws_dll2_owner_t col_dlos; /* lws_dlo_t in column */
536
537 lws_fx_t width; /* computed column width */
538 lws_fx_t min_w; /* widest min-content cell */
539 lws_fx_t max_w; /* widest max-content cell */
541
542struct lcsp_atr;
543struct lcsp_match;
544struct lhp_decl;
545
546#define CCPAS_TOP 0
547#define CCPAS_RIGHT 1
548#define CCPAS_BOTTOM 2
549#define CCPAS_LEFT 3
550
551typedef struct lhp_pstack {
553 void *user; /* private to the stack level */
555
556 /* static: x,y: offset from parent, w,h: surface size of this object */
558
559 /*
560 * Layout state for an element that is a block container (has a dlo
561 * and lays its children out inside it). Coordinates are relative to
562 * our dlo box: the content area starts at (ox, oy) and is cw wide;
563 * (curx, cury) is the inline cursor inside it, cury being the top of
564 * the line being built.
565 */
569 lws_fx_t abs_h; /* an absolute box's percentage
570 * height, resolved against its
571 * positioned ancestor's padding
572 * box at open */
573 lws_fx_t abs_bot; /* an absolute box anchored by
574 * bottom: the y of its bottom
575 * margin edge */
578
579 lws_fx_t line_h; /* tallest non-text item on line */
580 lws_dlo_t *line_first; /* first dlo of the open line */
581 int16_t line_asc; /* max ascent above baseline on line */
582 int16_t line_desc; /* max descent below baseline on line */
583 int16_t last_base; /* baseline of our last line, from
584 * our box top (valid if has_base) */
585
586 lws_fx_t maxc; /* max-content width so far */
587 lws_fx_t minc; /* min-content width so far */
588 lws_fx_t nowrap; /* width of current line if unwrapped */
589 lws_fx_t rfloat_w; /* width taken by right floats on line */
590 lws_fx_t pend_mb; /* last block child's bottom margin */
591 int32_t abs_y; /* approx surface y of our box top */
592 uint16_t idx; /* list item / table cell counter */
593 /*
594 * A table cell: its column. A table row: the column of its last cell
595 * so far, so the next cell takes the one after it without a walk
596 */
598
599 lws_dll2_owner_t atr; /* lhp_atr_t */
600 lhp_atr_idx_t atr_idx; /* atr by name, private */
601 lws_dll2_owner_t sibs; /* lhp_sib_t: our closed children */
602 struct lhp_pstack *parent_elem; /* once css_resolved: the
603 * nearest level above
604 * with a tag, private */
605
607
609 const struct lcsp_atr *css_color;
610
611 const struct lcsp_atr *css_position;
612 const struct lcsp_atr *css_display;
613 const struct lcsp_atr *css_width;
614 const struct lcsp_atr *css_height;
617
618 /*
619 * Stanzas whose selector matched this element with a :before / :after
620 * pseudo-element suffix: a generated box for each is added when the
621 * element closes
622 */
625
626 const struct lcsp_atr *css_border_radius[4];
627
628 const struct lcsp_atr *css_pos[4];
629 const struct lcsp_atr *css_margin[4];
630 const struct lcsp_atr *css_padding[4];
631
632 /*
633 * css resolution for this element: the stanzas whose selectors matched
634 * it, lowest precedence first, plus the parsed style="" attribute (in
635 * styleac) as the highest. Properties absent here are looked up on
636 * the parent if the property inherits, else take their initial value.
637 */
639 struct lwsac *styleac;
640 /*
641 * The stanza parsed from our style="" (in styleac), once it has been
642 * parsed: cascading us again reuses it rather than parsing it again,
643 * private
644 */
646 /*
647 * The declaration that wins for each property (and custom property)
648 * among the matched stanzas, sorted for lookup, made when first
649 * needed after the matched stanzas change; private to lhp.c
650 */
651 struct lhp_decl *decl;
653 uint32_t css_heap; /* bytes of matched, decl and
654 * styleac counted in the
655 * ctx's css_level_heap,
656 * private */
657 lws_fx_t font_size; /* computed font-size, px */
659
660 uint8_t is_block:1; /* we are a block container */
664 uint8_t is_inline:1; /* style scope only, no box */
665 uint8_t is_ilevel:1; /* inline-level box (inline-block) */
666 uint8_t is_abs:1; /* absolutely positioned */
669 uint8_t is_flex:1; /* row flex container */
672 uint8_t shrink:1; /* width decided by content at close */
673 uint8_t in_shrink:1; /* auto width inside a shrinking container */
674 uint8_t has_line:1; /* a line is being built */
675 uint8_t has_base:1; /* last_base is valid */
676 uint8_t last_space:1; /* line so far ends with a space */
679 uint8_t abs_h_set:1; /* abs_h is the resolved
680 * percentage height */
681 uint8_t abs_minh_set:1; /* ... or min-height */
682 uint8_t abs_bot_set:1; /* abs_bot places us at
683 * close */
684 uint8_t abs_stretch_set:1; /* top + bottom stretch,
685 * abs_bot the bottom
686 * offset, sized when
687 * the ancestor closes */
689 uint8_t decl_valid:1; /* decl reflects matched */
691 uint8_t hidden:1; /* display: none on us or an ancestor */
692 uint8_t suspicious:1; /* our class or id could not
693 * be held as given, or an
694 * attribute value had a
695 * NUL: a cosmetic filter
696 * hides us */
697 uint8_t ti_done:1; /* applied our text-indent already */
698
699 /* user layout owns these after initial values set */
700
703 uint8_t font_pinned; /* we hold font resident */
704 uint8_t font_waits; /* retries waiting for it */
705
706 /*
707 * A css background-image on this element: its dlo is created when
708 * the element is parsed, before the layout has made the element's
709 * own dlo, so it is parked on the parent block and then moved into
710 * the element's dlo at (bg_ox, bg_oy) when that exists
711 */
715
717
718typedef enum lcsp_css_units {
720
721 LCSP_UNIT_NUM, /* u.i */
722
733 LCSP_UNIT_LENGTH_VW, /* u.i, 1vw is 1% of surface width */
734 LCSP_UNIT_LENGTH_VH, /* u.i, 1vh is 1% of surface height */
735 LCSP_UNIT_LENGTH_VMIN, /* u.i, smaller of vw / vh */
736 LCSP_UNIT_LENGTH_VMAX, /* u.i, larger of vw / vh */
737
738 LCSP_UNIT_CALC, /* u.i is index in string chunk */
739
742
744
745 LCSP_UNIT_RGBA, /* u.rgba */
746
747 LCSP_UNIT_URL, /* string at end of atr */
748 LCSP_UNIT_STRING, /* string at end of atr */
749 LCSP_UNIT_DATA, /* binary data at end of atr */
750
752
753typedef struct lcsp_atr {
755
756 union {
757 lws_fx_t i;
758 uint32_t rgba; /* for colours */
759 } u;
760
761 /*
762 * A page's cascade is thousands of these: the enums and the length
763 * are all small, and stored as int / size_t they cost 8 bytes an
764 * attribute that a small target has better uses for
765 */
766
767 uint16_t propval; /* lcsp_propvals_t LCSP_PROPVAL_ */
768 uint16_t value_len; /* for string . url */
769
770 uint8_t unit; /* lcsp_css_units_t LCSP_UNIT_ */
772
773 /* .value_len bytes follow (for strings and blobs) */
775
776/* css definitions like font-weight: */
777typedef struct lcsp_defs {
779 lws_dll2_owner_t atrs; /* lcsp_atr_t */
780 struct lhp_css_var *var; /* if prop == LCSP_PROP__COUNT:
781 * the --name this declares */
782 uint16_t prop; /* lcsp_props_t, LCSP_PROP_* */
783 uint8_t important; /* declared !important */
785
786/*
787 * One selector of a stanza's selector list, eg, "div.x > p" from
788 * "div.x > p, .y { ... }". Stored normalized: a single space is the
789 * descendant combinator, no spaces around '>', '+', '~' or inside [...].
790 *
791 * The program it is compiled into, and the members compiled with it, are
792 * private to lhp.c, but the user-agent sheet's are generated into
793 * lhp-ua-css.h by lhp-ua-gen: bump this with any change to them, and
794 * regenerate that header.
795 */
796
797#define LHP_SEL_PROG_FORMAT 1
798
799typedef struct lcsp_names {
801 uint32_t specificity; /* (layer << 18) | (ids << 12) |
802 * (classes << 6) | tags */
803 uint32_t key_h; /* the selector index hash of
804 * the key, computed once */
806 uint16_t key_ofs; /* rightmost compound's most
807 * selective simple selector,
808 * for the cascade prefilter */
810 uint16_t prog_len; /* the selector compiled for
811 * matching, private to lhp.c */
812 uint8_t key_kind; /* LHP_SELKEY_ */
813 uint8_t pseudo_elem; /* LHP_PSEUDO_ELEM_: a trailing
814 * :before or :after */
815
816 /* name + NUL, then prog_len bytes of compiled selector follow */
818
819typedef struct lcsp_stanza { /* css stanza, with names and defs */
821
822 lws_dll2_owner_t names; /* lcsp_names_t */
823 lws_dll2_owner_t defs; /* lcsp_defs_t */
824
825 uint32_t seq; /* source order, for cascade ties */
826
827 /*
828 * Nothing else is written to a stanza after the parse that created
829 * it. Keeping it that way is what lets a stylesheet be immutable,
830 * and so live in flash instead of costing heap... the cascade's
831 * per-pass "have I taken this one already, and at what specificity"
832 * lives on ctx->hits instead
833 */
835
836/*
837 * The selector index: every selector of every stanza, bucketed by its key
838 * (see lhp_sel_key()), so the cascade for an element only visits the
839 * selectors whose key it can satisfy plus the keyless ones
840 */
841
847
848#define LHP_SELIDX_BUCKETS 64
849
850/*
851 * A list of stanza references can easily have to bring in the same stanza
852 * multiple times, eg, <div><span class=x><div> won't work unless the div
853 * stanzas are listed twice at different places in the list. It means we can't
854 * use dll2 directly since the number of references is open-ended.
855 *
856 * lcsp_stanza_ptr provides indirection that allows multiple listings.
857 */
858
864
870
871/*
872 * A stanza that matched an element, with the specificity of the best selector
873 * that matched. Each open element keeps a sorted array of these; the last
874 * entry has the highest precedence.
875 */
876
881
882typedef struct lhp_css_var {
884 size_t name_len;
886 /* name+NUL follows */
888
889/*
890 * A cascade layer (@layer): its position in css_layers is its order in the
891 * cascade, with the first-declared layer the weakest. Unlayered rules beat
892 * every layer.
893 */
894
895typedef struct lhp_css_layer {
897 size_t len; /* name length, the name may contain NUL bytes */
898 /* name+NUL follows (empty for an anonymous layer) */
900
901enum {
906};
907
908enum {
912};
913
914/* layer indexes are 1-based, this is the unlayered ("strongest") value */
915#define LHP_CSS_LAYER_NONE 63
916
917#define LHP_FLAG_DOCUMENT_END (1 << 0)
918
919/*
920 * One URL block rule prepared by lws_lhp_set_filter(): a lowercased copy of
921 * the rule text, with host_anchor set if it was "||host..." form. Allocated
922 * in ctx->blockac, on ctx->block_rules.
923 */
924typedef struct lhp_block_rule {
926 size_t len;
928
929 /* lowercased rule text + NUL follows */
931
932struct lhp_cls_tok;
933struct lhp_hits_slot;
934
935typedef struct lhp_ctx {
936 lws_dll2_owner_t stack; /* lhp_pstack_t */
937
938 struct lwsac *cssac; /* css allocations all in an ac */
939 struct lwsac *cascadeac; /* active_stanzas ac */
940 struct lwsac *propatrac; /* prop atr query results ac */
941 lws_dll2_owner_t css; /* lcsp_stanza_t (all in ac) */
942
944
946
947 /*
948 * Somewhere for lws_csp_px_base() to compute a resolved length into
949 * and hand back a pointer to. It used to use a slot on the attribute
950 * itself, which made every attribute 8 bytes bigger and, worse, made
951 * a stylesheet something the layout writes to... callers all consume
952 * the result immediately, so a small ring is plenty
953 */
956 uint8_t cb_depth; /* containing blocks being resolved
957 * for a %, see
958 * lws_css_compute_cascaded_length() */
959 uint8_t calc_nest; /* lws_csp_calc() in progress,
960 * including those a % term drives */
961 int32_t calc_budget; /* calc() steps left for the
962 * outermost lws_csp_calc() */
963
965 lcsp_stanza_t *stz; /* current stanza getting properties */
966 lcsp_defs_t *def; /* current property getting values */
967
968 lws_dll2_owner_t active_stanzas; /* lcsp_stanza_ptr_t allocated
969 * in cascadeac */
970 lws_dll2_owner_t active_atr; /* lcsp_atr_ptr_t allocated in
971 * propatrac */
972
973 lws_dll2_owner_t css_vars; /* lhp_css_var_t allocated in cssac */
974 lws_dll2_owner_t css_layers; /* lhp_css_layer_t allocated in
975 * cascade order */
976
977 struct lwsac *idxac; /* selector index allocations */
979 lhp_selidx_t *selidx_nokey; /* selectors without a key */
980 struct lcsp_match *hits; /* stanzas hit in the current pass,
981 * with the best specificity among the
982 * selectors of theirs that matched */
985 struct lhp_hits_slot *hits_hash; /* stanza -> hits index for the
986 * current pass, private */
987 uint32_t hits_hash_size; /* slots, a power of 2 */
988 uint32_t hits_gen; /* current pass, for hits_hash */
989 uint64_t layout_ops; /* steps of table layout work
990 * done for the document so far,
991 * for tests to bound */
992 uint64_t cascade_ops; /* steps of css work done for
993 * the document so far: bytes of
994 * its css parsed, stanzas and
995 * selectors indexed, index
996 * entries visited, declarations
997 * indexed, lookup steps... what
998 * LHP_MAX_CSS_CASCADE_OPS bounds,
999 * and for tests to bound */
1000 uint64_t sel_work; /* work selector matching really
1001 * did: compounds and simple
1002 * selectors visited, attribute
1003 * index entries probed, bytes of
1004 * names compared and of attribute
1005 * values scanned. Counted where it
1006 * is done, apart from what is
1007 * charged to cascade_ops, so that
1008 * tests can bound the work itself */
1009 uint32_t css_doc_selectors; /* the document's selectors */
1010 uint32_t css_doc_vars; /* and custom properties */
1011 uint8_t css_doc_spent; /* LHP_MAX_CSS_CASCADE_OPS or
1012 * LHP_MAX_CSS_LEVEL_HEAP was
1013 * reached: the document's own
1014 * css is no longer applied */
1015 size_t css_level_heap; /* bytes the open elements
1016 * hold for their css: their
1017 * matched stanzas and
1018 * declaration indexes */
1019 uint8_t css_values_capped; /* a declaration had more
1020 * than
1021 * LHP_MAX_CSS_DECL_VALUES
1022 * values: warned */
1023 struct lhp_cls_tok *ctok; /* the class tokens of the element
1024 * being cascaded, private to lhp.c */
1026 int32_t sel_budget; /* selector match steps left
1027 * for the element being
1028 * cascaded */
1029 struct lws_dll2 *selidx_last; /* the last stanza in css
1030 * indexed, or NULL */
1032
1033 /* ad / junk filtering, see lws_lhp_set_filter() */
1034
1035 char *filter_css; /* strdup of cosmetic filter css */
1036 lws_dll2_owner_t block_rules; /* lhp_block_rule_t in blockac */
1037 struct lwsac *blockac;
1038
1040
1041 const char *base_url; /* strdup of https://x.com/y.html */
1042 sul_cb_t ssevcb; /* callback for ss events */
1043 lws_sorted_usec_list_t *ssevsul; /* sul to use to resume rz */
1044 sul_cb_t sshtmlevcb; /* callback for more html parse */
1045 lws_sorted_usec_list_t *sshtmlevsul; /* sul for more html parse */
1046 lws_font_waiter_t font_wait; /* layout waiting for a font from
1047 * the server */
1048
1049 void *user;
1050 void *user1;
1051 const char *tag; /* private */
1052 size_t tag_len; /* private */
1053
1054 int npos;
1055 int state; /* private */
1056 int state_css_comm; /* private */
1061
1064 int32_t window; /* 0, or ss item flow control limit */
1065 int32_t viewport_h; /* 0, or the css viewport height
1066 * when the surface is taller */
1068
1069 union {
1070 uint32_t s;
1071 struct {
1072 uint32_t first:1;
1073 uint32_t closing:1;
1075 uint32_t doctype:1;
1076 uint32_t inq:1;
1078 uint32_t arg:1;
1080 uint32_t style_attr:1; /* nested parse of a style="" value: declarations only */
1081 uint32_t filter_css:1; /* parsing injected filter css */
1082#define LHP_CSS_PROPVAL_INT_WHOLE 1
1083#define LHP_CSS_PROPVAL_INT_FRAC 2
1084#define LHP_CSS_PROPVAL_INT_UNIT 3
1085 uint32_t integer:2;
1086 uint32_t color:2;
1087 uint32_t infunc:1; /* inside name( ... ) value */
1088 uint32_t negval:1; /* '-' seen, number is negative */
1089 uint32_t sq:1; /* attribute value quoted with ' */
1090 uint32_t atr_drop:1; /* current attribute overflowed
1091 * the chunk and is discarded */
1092 } f;
1093 } u;
1094
1095 int prop; /* lcsp_props_t */
1096 int propval; /* lcsp_propvals_t */
1097 int16_t css_state; /* private */
1098 int16_t cssval_state; /* private */
1099
1100 /*
1101 * The url of the stylesheet <link> the parse is waiting on, so
1102 * streams for stylesheets that are not the awaited one cannot
1103 * complete it early
1104 */
1106
1111 uint8_t await_assets:1; /* doc end deferred for dlo assets */
1112 uint8_t cancelled:1; /* document torn down: assets must
1113 * not resume the parse for it */
1114
1115 uint8_t css_block_depth; /* inside applicable @media */
1116 uint8_t css_skip_depth; /* skipping unusable @-rule */
1117 uint8_t css_layer; /* 0: unlayered, else the
1118 * 1-based @layer index */
1119 uint8_t css_layer_depth; /* css_block_depth of the
1120 * open @layer block */
1121 uint8_t css_lhs_partial:1; /* stanza already created
1122 * for an overlong selector
1123 * list */
1124 uint8_t css_lhs_skip:1; /* selector too long: skip
1125 * its block */
1126
1127 /* at end so we can memset members above it in one go */
1128
1130
1132
1133/*
1134 * lws_lhp_construct() - Construct an lhp context
1135 *
1136 * \param ctx: the lhp context to prepare
1137 * \param cb: the stream parsing callback
1138 * \param user: opaque user pointer available from the lhp context
1139 * \param ic: struct with arguments for lhp context
1140 *
1141 * The lhp context is allocated by the caller (the size is known).
1142 * Prepares an lhp context to parse html. Returns 0 for OK, or nonzero if OOM.
1143 */
1146 const lws_surface_info_t *ic);
1147
1148/*
1149 * lws_lhp_destruct() - Destroy an lhp context
1150 *
1151 * \param ctx: the lhp context to prepare
1152 *
1153 * Destroys an lhp context. The lhp context is allocated by the caller (the
1154 * size is known). But there are suballocations that must be destroyed with
1155 * this.
1156 */
1159
1180typedef struct lws_lhp_filter {
1181 const char *cosmetic_css;
1182 const char *block_rules;
1184
1198
1220 const char *url, sul_cb_t render);
1221
1235lws_lhp_ss_browse_filter(struct lws_context *cx,
1236 lws_display_render_state_t *rs, const char *url,
1237 sul_cb_t render, const lws_lhp_filter_t *filter);
1238
1255
1273lws_lhp_parse(lhp_ctx_t *ctx, const uint8_t **buf, size_t *len);
1274
1296
1306
1328lws_http_rel_to_url(char *dest, size_t len, const char *base, const char *rel);
1329
1332
1333LWS_VISIBLE LWS_EXTERN const char *
1335
1336/*
1337 * The value of element ps's attribute aname, whose name is matched ignoring
1338 * (ascii) case as html attribute names are, or NULL if it has none
1339 */
1340LWS_VISIBLE LWS_EXTERN const char *
1341lws_html_get_atr(lhp_pstack_t *ps, const char *aname, size_t aname_len);
1342
1345
1346/*
1347 * The winning declaration's value for one side (idx 0..3 = T R B L) of a
1348 * shorthand-or-longhand property like border-width / border-color
1349 */
1351lws_css_get_side_atr_ps(lhp_pstack_t *ps, int longhand, int shorthand,
1352 int idx, int radii);
1353
1354/*
1355 * As lws_csp_px(), but lengths in calc() resolve their % terms against base
1356 * (the containing block content width) when it is non-NULL
1357 */
1368 int *unitless);
1369
1372
1375
1376void
1378
1379#define LWS_LHPREF_WIDTH 0
1380#define LWS_LHPREF_HEIGHT 1
1381#define LWS_LHPREF_NONE 2
1382
1385
1388
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_font_waiter lws_font_waiter_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:902
@ LHP_SELKEY_ID
Definition lws-html.h:905
@ LHP_SELKEY_TAG
Definition lws-html.h:903
@ LHP_SELKEY_CLASS
Definition lws-html.h:904
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:599
uint8_t font_waits
Definition lws-html.h:704
lcsp_css_units
Definition lws-html.h:718
@ LCSP_UNIT_LENGTH_MM
Definition lws-html.h:727
@ LCSP_UNIT_LENGTH_PC
Definition lws-html.h:729
@ LCSP_UNIT_LENGTH_REM
Definition lws-html.h:732
@ LCSP_UNIT_CALC
Definition lws-html.h:738
@ LCSP_UNIT_LENGTH_CM
Definition lws-html.h:726
@ LCSP_UNIT_DATA
Definition lws-html.h:749
@ LCSP_UNIT_LENGTH_EX
Definition lws-html.h:724
@ LCSP_UNIT_LENGTH_VMAX
Definition lws-html.h:736
@ LCSP_UNIT_RGBA
Definition lws-html.h:745
@ LCSP_UNIT_LENGTH_VMIN
Definition lws-html.h:735
@ LCSP_UNIT_STRING
Definition lws-html.h:748
@ LCSP_UNIT_LENGTH_PX
Definition lws-html.h:730
@ LCSP_UNIT_LENGTH_VH
Definition lws-html.h:734
@ LCSP_UNIT_NONE
Definition lws-html.h:719
@ LCSP_UNIT_FREQ_HZ
Definition lws-html.h:743
@ LCSP_UNIT_NUM
Definition lws-html.h:721
@ LCSP_UNIT_LENGTH_PERCENT
Definition lws-html.h:731
@ LCSP_UNIT_URL
Definition lws-html.h:747
@ LCSP_UNIT_ANGLE_ABS_DEG
Definition lws-html.h:740
@ LCSP_UNIT_ANGLE_REL_DEG
Definition lws-html.h:741
@ LCSP_UNIT_LENGTH_EM
Definition lws-html.h:723
@ LCSP_UNIT_LENGTH_PT
Definition lws-html.h:728
@ LCSP_UNIT_LENGTH_VW
Definition lws-html.h:733
@ LCSP_UNIT_LENGTH_IN
Definition lws-html.h:725
uint8_t host_anchor
Definition lws-html.h:927
const lhp_atr_t * a
Definition lws-html.h:498
struct lhp_ctx lhp_ctx_t
lws_fx_t minc
Definition lws-html.h:587
lcsp_stanza_t * stz
Definition lws-html.h:862
lws_fx_t min_w
Definition lws-html.h:538
uint8_t abs_h_set
Definition lws-html.h:679
uint8_t has_line
Definition lws-html.h:674
const struct lcsp_atr * css_display
Definition lws-html.h:612
lws_fx_t curx
Definition lws-html.h:576
struct lcsp_stanza * pseudo_after
Definition lws-html.h:624
uint8_t has_base
Definition lws-html.h:675
#define LHP_URL_LEN
Definition lws-html.h:43
lws_fx_t rfloat_w
Definition lws-html.h:589
uint8_t is_float
Definition lws-html.h:667
lws_fx_t bg_oy
Definition lws-html.h:714
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:669
const struct lcsp_atr * css_box_sizing
Definition lws-html.h:616
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:812
uint16_t prog_len
Definition lws-html.h:810
const struct lcsp_atr * css_margin[4]
Definition lws-html.h:629
uint8_t is_table
Definition lws-html.h:661
lws_dll2_t list
Definition lws-html.h:525
lcsp_defs_t * def
Definition lws-html.h:885
size_t name_len
Definition lws-html.h:483
uint16_t name_len
Definition lws-html.h:805
LWS_VISIBLE LWS_EXTERN const char * lws_css_pstack_name(lhp_pstack_t *ps)
uint32_t specificity
Definition lws-html.h:801
uint32_t style_attr
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
uint32_t key_h
Definition lws-html.h:803
lws_fx_t cw
Definition lws-html.h:568
lws_dll2_t list
Definition lws-html.h:552
uint32_t h
Definition lws-html.h:499
uint32_t tag_used
uint32_t specificity
Definition lws-html.h:879
lws_dlo_t * bg_dlo
Definition lws-html.h:712
lws_dll2_t list
Definition lws-html.h:925
lws_dll2_t list
Definition lws-html.h:820
uint8_t last_space
Definition lws-html.h:676
int16_t line_asc
Definition lws-html.h:581
uint16_t key_len
Definition lws-html.h:809
lws_fx_t height
Definition lws-html.h:529
lws_fx_t max_w
Definition lws-html.h:539
uint32_t closing
lhp_atr_idx_t atr_idx
Definition lws-html.h:515
int16_t line_desc
Definition lws-html.h:582
lws_fx_t bg_ox
Definition lws-html.h:713
LWS_VISIBLE LWS_EXTERN int lhp_prop_axis(const lcsp_atr_t *a)
struct lhp_selidx * next
Definition lws-html.h:843
size_t name_len
Definition lws-html.h:884
struct lhp_pstack * parent_elem
Definition lws-html.h:602
struct lcsp_stanza * style_stz
Definition lws-html.h:645
const char * block_rules
Definition lws-html.h:1182
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:878
lws_dll2_t list
Definition lws-html.h:482
const struct lcsp_atr * css_width
Definition lws-html.h:613
lws_fx_t font_size
Definition lws-html.h:657
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)
uint8_t count
Definition lws-html.h:506
LWS_VISIBLE LWS_EXTERN const char * lws_html_get_atr(lhp_pstack_t *ps, const char *aname, size_t aname_len)
uint32_t ndecl
Definition lws-html.h:652
uint32_t seq
Definition lws-html.h:825
lws_dll2_owner_t sibs
Definition lws-html.h:601
struct lws_lhp_filter lws_lhp_filter_t
lws_dll2_owner_t row_dlos
Definition lws-html.h:527
lws_dll2_t list
Definition lws-html.h:883
lcsp_propvals_t
Definition lws-html.h:325
@ LCSP_PROPVAL_LTR
Definition lws-html.h:385
@ LCSP_PROPVAL_BORDER_BOX
Definition lws-html.h:340
@ LCSP_PROPVAL_BLINK
Definition lws-html.h:336
@ LCSP_PROPVAL_REPEAT_Y
Definition lws-html.h:413
@ LCSP_PROPVAL_LEFT
Definition lws-html.h:374
@ LCSP_PROPVAL_LINE_THROUGH
Definition lws-html.h:376
@ LCSP_PROPVAL_TOP
Definition lws-html.h:443
@ LCSP_PROPVAL_STRETCH
Definition lws-html.h:464
@ LCSP_PROPVAL_SMALL_CAPTION
Definition lws-html.h:422
@ LCSP_PROPVAL_RIGHT
Definition lws-html.h:414
@ LCSP_PROPVAL_CODE
Definition lws-html.h:348
@ LCSP_PROPVAL_FIXED
Definition lws-html.h:359
@ LCSP_PROPVAL_SCROLL
Definition lws-html.h:416
@ LCSP_PROPVAL_COLLAPSE
Definition lws-html.h:349
@ LCSP_PROPVAL_SHOW
Definition lws-html.h:419
@ LCSP_PROPVAL_LOWER
Definition lws-html.h:379
@ LCSP_PROPVAL_DECIMAL_LEADING_ZERO
Definition lws-html.h:353
@ LCSP_PROPVAL_OPEN_QUOTE
Definition lws-html.h:402
@ LCSP_PROPVAL_TABLE_COLUMN_GROUP
Definition lws-html.h:435
@ LCSP_PROPVAL_WRAP
Definition lws-html.h:465
@ LCSP_PROPVAL_HIGH
Definition lws-html.h:364
@ LCSP_PROPVAL_PRE
Definition lws-html.h:406
@ LCSP_PROPVAL_ALWAYS
Definition lws-html.h:328
@ LCSP_PROPVAL_BLOCK
Definition lws-html.h:337
@ LCSP_PROPVAL_HIDE
Definition lws-html.h:363
@ LCSP_PROPVAL_INVERT
Definition lws-html.h:371
@ LCSP_PROPVAL_HELP
Definition lws-html.h:361
@ LCSP_PROPVAL_UPPER_ROMAN
Definition lws-html.h:449
@ LCSP_PROPVAL_COLUMN
Definition lws-html.h:458
@ LCSP_PROPVAL_TEXT
Definition lws-html.h:442
@ LCSP_PROPVAL_ABSOLUTE
Definition lws-html.h:327
@ LCSP_PROPVAL_HIGHER
Definition lws-html.h:365
@ LCSP_PROPVAL_TABLE_CELL
Definition lws-html.h:433
@ LCSP_PROPVAL_INLINE_TABLE
Definition lws-html.h:370
@ LCSP_PROPVAL_PRE_LINE
Definition lws-html.h:407
@ LCSP_PROPVAL_SPACE_AROUND
Definition lws-html.h:460
@ LCSP_PROPVAL_ROW
Definition lws-html.h:457
@ LCSP_PROPVAL_TABLE_CAPTION
Definition lws-html.h:432
@ LCSP_PROPVAL_MOVE
Definition lws-html.h:390
@ LCSP_PROPVAL_DIGITS
Definition lws-html.h:355
@ LCSP_PROPVAL_NOWRAP
Definition lws-html.h:397
@ LCSP_PROPVAL_TABLE_FOOTER_GROUP
Definition lws-html.h:436
@ LCSP_PROPVAL_END
Definition lws-html.h:467
@ LCSP_PROPVAL_MENU
Definition lws-html.h:386
@ LCSP_PROPVAL_N_RESIZE
Definition lws-html.h:398
@ LCSP_PROPVAL_NO_CLOSE_QUOTE
Definition lws-html.h:392
@ LCSP_PROPVAL_FLEX_START
Definition lws-html.h:462
@ LCSP_PROPVAL_CENTER
Definition lws-html.h:345
@ LCSP_PROPVAL_COVER
Definition lws-html.h:468
@ LCSP_PROPVAL_LIGHTER
Definition lws-html.h:375
@ LCSP_PROPVAL_BOTTOM
Definition lws-html.h:342
@ LCSP_PROPVAL_EMBED
Definition lws-html.h:357
@ LCSP_PROPVAL_CAPTION
Definition lws-html.h:344
@ LCSP_PROPVAL_WAIT
Definition lws-html.h:451
@ LCSP_PROPVAL_ARMENIAN
Definition lws-html.h:329
@ LCSP_PROPVAL_TRANSPARENT
Definition lws-html.h:444
@ LCSP_PROPVAL_INHERIT
Definition lws-html.h:367
@ LCSP_PROPVAL_BELOW
Definition lws-html.h:334
@ LCSP_PROPVAL_NW_RESIZE
Definition lws-html.h:399
@ LCSP_PROPVAL_TABLE_ROW_GROUP
Definition lws-html.h:439
@ LCSP_PROPVAL_RELATIVE
Definition lws-html.h:410
@ LCSP_PROPVAL_SMALL_CAPS
Definition lws-html.h:421
@ LCSP_PROPVAL_UPPER_ALPHA
Definition lws-html.h:446
@ LCSP_PROPVAL_DECIMAL
Definition lws-html.h:354
@ LCSP_PROPVAL_PRE_WRAP
Definition lws-html.h:408
@ LCSP_PROPVAL_LOWER_ROMAN
Definition lws-html.h:384
@ LCSP_PROPVAL_NE_RESIZE
Definition lws-html.h:391
@ LCSP_PROPVAL_FLEX_END
Definition lws-html.h:463
@ LCSP_PROPVAL_NOT_ALLOWED
Definition lws-html.h:470
@ LCSP_PROPVAL_TABLE_HEADER_GROUP
Definition lws-html.h:437
@ LCSP_PROPVAL_SUB
Definition lws-html.h:428
@ LCSP_PROPVAL_SUPER
Definition lws-html.h:429
@ LCSP_PROPVAL_CIRCLE
Definition lws-html.h:346
@ LCSP_PROPVAL_LOWER_GREEK
Definition lws-html.h:382
@ LCSP_PROPVAL__COUNT
Definition lws-html.h:473
@ LCSP_PROPVAL_CAPITALIZE
Definition lws-html.h:343
@ LCSP_PROPVAL_CONTINUOUS
Definition lws-html.h:351
@ LCSP_PROPVAL_OBLIQUE
Definition lws-html.h:400
@ LCSP_PROPVAL_NO_REPEAT
Definition lws-html.h:395
@ LCSP_PROPVAL_FLEX
Definition lws-html.h:455
@ LCSP_PROPVAL_DEFAULT
Definition lws-html.h:471
@ LCSP_PROPVAL_BOTH
Definition lws-html.h:341
@ LCSP_PROPVAL_INLINE_BLOCK
Definition lws-html.h:369
@ LCSP_PROPVAL_START
Definition lws-html.h:466
@ LCSP_PROPVAL_MIDDLE
Definition lws-html.h:388
@ LCSP_PROPVAL_TEXT_BOTTOM
Definition lws-html.h:440
@ LCSP_PROPVAL_REPEAT_X
Definition lws-html.h:412
@ LCSP_PROPVAL_SW_RESIZE
Definition lws-html.h:430
@ LCSP_PROPVAL_UNDERLINE
Definition lws-html.h:445
@ LCSP_PROPVAL_SPACE_BETWEEN
Definition lws-html.h:459
@ LCSP_PROPVAL_TABLE_ROW
Definition lws-html.h:438
@ LCSP_PROPVAL_GEORGIAN
Definition lws-html.h:360
@ LCSP_PROPVAL_OUTSIDE
Definition lws-html.h:403
@ LCSP_PROPVAL_LOWER_LATIN
Definition lws-html.h:383
@ LCSP_PROPVAL_HIDDEN
Definition lws-html.h:362
@ LCSP_PROPVAL_BASELINE
Definition lws-html.h:332
@ LCSP_PROPVAL_LOW
Definition lws-html.h:378
@ LCSP_PROPVAL_BEHIND
Definition lws-html.h:333
@ LCSP_PROPVAL_OVERLINE
Definition lws-html.h:404
@ LCSP_PROPVAL_UPPER_LATIN
Definition lws-html.h:448
@ LCSP_PROPVAL_POINTER
Definition lws-html.h:405
@ LCSP_PROPVAL_SPELL_OUT
Definition lws-html.h:423
@ LCSP_PROPVAL_NONE
Definition lws-html.h:393
@ LCSP_PROPVAL_LOWER_ALPHA
Definition lws-html.h:380
@ LCSP_PROPVAL_STATIC
Definition lws-html.h:426
@ LCSP_PROPVAL_LOWERCASE
Definition lws-html.h:381
@ LCSP_PROPVAL_UPPERCASE
Definition lws-html.h:447
@ LCSP_PROPVAL_PROGRESS
Definition lws-html.h:409
@ LCSP_PROPVAL_JUSTIFY
Definition lws-html.h:373
@ LCSP_PROPVAL_TABLE
Definition lws-html.h:431
@ LCSP_PROPVAL_W_RESIZE
Definition lws-html.h:452
@ LCSP_PROPVAL_STATUS_BAR
Definition lws-html.h:427
@ LCSP_PROPVAL_SPACE_EVENLY
Definition lws-html.h:461
@ LCSP_PROPVAL_NO_OPEN_QUOTE
Definition lws-html.h:394
@ LCSP_PROPVAL_DISC
Definition lws-html.h:356
@ LCSP_PROPVAL_ITALIC
Definition lws-html.h:372
@ LCSP_PROPVAL_INLINE
Definition lws-html.h:368
@ LCSP_PROPVAL_VISIBLE
Definition lws-html.h:450
@ LCSP_PROPVAL_SE_RESIZE
Definition lws-html.h:418
@ LCSP_PROPVAL_ONCE
Definition lws-html.h:401
@ LCSP_PROPVAL_RTL
Definition lws-html.h:415
@ LCSP_PROPVAL_REPEAT
Definition lws-html.h:411
@ LCSP_PROPVAL_SEPARATE
Definition lws-html.h:417
@ LCSP_PROPVAL_TABLE_COLUMN
Definition lws-html.h:434
@ LCSP_PROPVAL_S_RESIZE
Definition lws-html.h:425
@ LCSP_PROPVAL_MIX
Definition lws-html.h:389
@ LCSP_PROPVAL_BIDI_OVERRIDE
Definition lws-html.h:335
@ LCSP_PROPVAL_SILENT
Definition lws-html.h:420
@ LCSP_PROPVAL_CONTENT_BOX
Definition lws-html.h:350
@ LCSP_PROPVAL_MESSAGE_BOX
Definition lws-html.h:387
@ LCSP_PROPVAL_AUTO
Definition lws-html.h:330
@ LCSP_PROPVAL_LIST_ITEM
Definition lws-html.h:377
@ LCSP_PROPVAL_TEXT_TOP
Definition lws-html.h:441
@ LCSP_PROPVAL_ABOVE
Definition lws-html.h:326
@ LCSP_PROPVAL_E_RESIZE
Definition lws-html.h:358
@ LCSP_PROPVAL_BOLD
Definition lws-html.h:338
@ LCSP_PROPVAL_CROSSHAIR
Definition lws-html.h:352
@ LCSP_PROPVAL_AVOID
Definition lws-html.h:331
@ LCSP_PROPVAL_CLOSE_QUOTE
Definition lws-html.h:347
@ LCSP_PROPVAL_CONTAIN
Definition lws-html.h:469
@ LCSP_PROPVAL_NORMAL
Definition lws-html.h:396
@ LCSP_PROPVAL_INLINE_FLEX
Definition lws-html.h:456
@ LCSP_PROPVAL_SQUARE
Definition lws-html.h:424
@ LCSP_PROPVAL_ICON
Definition lws-html.h:366
@ LCSP_PROPVAL_BOLDER
Definition lws-html.h:339
uint8_t is_cell
Definition lws-html.h:663
lws_fx_t width
Definition lws-html.h:537
lws_fx_t abs_h
Definition lws-html.h:569
uint32_t arg
int16_t last_base
Definition lws-html.h:583
#define LHP_SELIDX_BUCKETS
Definition lws-html.h:848
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:668
uint8_t alloc
Definition lws-html.h:507
lws_dll2_t list
Definition lws-html.h:800
#define LHP_STRING_CHUNK
Definition lws-html.h:35
lws_fx_t nowrap
Definition lws-html.h:588
uint32_t rgba
lws_dll2_owner_t atr
Definition lws-html.h:514
struct lhp_block_rule lhp_block_rule_t
lcsp_names_t * nm
Definition lws-html.h:844
uint16_t idx
Definition lws-html.h:592
@ LHP_PSEUDO_ELEM_BEFORE
Definition lws-html.h:910
@ LHP_PSEUDO_ELEM_AFTER
Definition lws-html.h:911
@ LHP_PSEUDO_ELEM_NONE
Definition lws-html.h:909
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:638
void * user
Definition lws-html.h:553
lws_fx_t i
uint32_t filter_css
uint8_t is_block
Definition lws-html.h:660
const struct lcsp_atr * css_padding[4]
Definition lws-html.h:630
uint32_t first
lws_stateful_ret_t(* lhp_callback)(struct lhp_ctx *ctx, char reason)
Definition lws-html.h:477
lws_fx_t line_h
Definition lws-html.h:579
lws_dll2_t list
Definition lws-html.h:778
uint32_t void_element
struct lcsp_match lcsp_match_t
const lws_display_font_t * font
Definition lws-html.h:702
uint32_t tag_h
Definition lws-html.h:505
struct lcsp_stanza lcsp_stanza_t
lcsp_props
Definition lws-html.h:158
@ LCSP_PROP_OVERFLOW
Definition lws-html.h:240
@ LCSP_PROP_INSET_BLOCK_END
Definition lws-html.h:316
@ LCSP_PROP_POSITION
Definition lws-html.h:255
@ LCSP_PROP_Z_INDEX
Definition lws-html.h:280
@ LCSP_PROP_TEXT_ALIGN
Definition lws-html.h:266
@ LCSP_PROP_LETTER_SPACING
Definition lws-html.h:220
@ LCSP_PROP_PADDING_INLINE_START
Definition lws-html.h:305
@ LCSP_PROP_HEIGHT
Definition lws-html.h:218
@ LCSP_PROP_INSET_BLOCK
Definition lws-html.h:314
@ LCSP_PROP_BACKGROUND_REPEAT
Definition lws-html.h:164
@ LCSP_PROP_MARGIN_BOTTOM
Definition lws-html.h:229
@ LCSP_PROP_TOP
Definition lws-html.h:270
@ LCSP_PROP_BACKGROUND_IMAGE
Definition lws-html.h:162
@ LCSP_PROP_PADDING_BLOCK
Definition lws-html.h:307
@ LCSP_PROP_BACKGROUND_POSITION
Definition lws-html.h:163
@ LCSP_PROP_BORDER_RIGHT_WIDTH
Definition lws-html.h:184
@ LCSP_PROP_FLEX_GROW
Definition lws-html.h:286
@ LCSP_PROP_FONT_WEIGHT
Definition lws-html.h:216
@ LCSP_PROP_FONT_VARAIANT
Definition lws-html.h:215
@ LCSP_PROP_PAUSE
Definition lws-html.h:251
@ LCSP_PROP_BORDER_TOP_STYLE
Definition lws-html.h:179
@ LCSP_PROP_EMPTY_CELLS
Definition lws-html.h:210
@ LCSP_PROP_ALIGN_ITEMS
Definition lws-html.h:290
@ LCSP_PROP_JUSTIFY_CONTENT
Definition lws-html.h:292
@ LCSP_PROP_BORDER_RIGHT
Definition lws-html.h:172
@ LCSP_PROP_SPEAK_HEADER
Definition lws-html.h:259
@ LCSP_PROP_BORDER_COLLAPSE
Definition lws-html.h:167
@ LCSP_PROP_BACKGROUND_COLOR
Definition lws-html.h:161
@ LCSP_PROP_WHITE_SPACE
Definition lws-html.h:276
@ LCSP_PROP_SPEAK
Definition lws-html.h:262
@ LCSP_PROP_BACKGROUND_ATTACHMENT
Definition lws-html.h:160
@ LCSP_PROP_ROW_GAP
Definition lws-html.h:295
@ LCSP_PROP_VERTICAL_ALIGN
Definition lws-html.h:272
@ LCSP_PROP_SPEAK_NUMERAL
Definition lws-html.h:260
@ LCSP_PROP_LIST_STYLE_POSITION
Definition lws-html.h:223
@ LCSP_PROP_PADDING_INLINE
Definition lws-html.h:304
@ LCSP_PROP_MARGIN_TOP
Definition lws-html.h:228
@ LCSP_PROP_BORDER_RIGHT_STYLE
Definition lws-html.h:180
@ LCSP_PROP_MIN_WIDTH
Definition lws-html.h:234
@ LCSP_PROP_BORDER_BOTTOM_LEFT_RADIUS
Definition lws-html.h:190
@ LCSP_PROP_BORDER_SPACING
Definition lws-html.h:169
@ LCSP_PROP_TEXT_DECORATION
Definition lws-html.h:267
@ LCSP_PROP_VISIBILITY
Definition lws-html.h:273
@ LCSP_PROP_PADDING_BOTTOM
Definition lws-html.h:243
@ LCSP_PROP_CURSOR
Definition lws-html.h:206
@ LCSP_PROP_DISPLAY
Definition lws-html.h:208
@ LCSP_PROP_INSET_INLINE_START
Definition lws-html.h:312
@ LCSP_PROP_COLOR
Definition lws-html.h:199
@ LCSP_PROP_UNICODE_BIDI
Definition lws-html.h:271
@ LCSP_PROP_MAX_HEIGHT
Definition lws-html.h:231
@ LCSP_PROP_MARGIN_BLOCK_END
Definition lws-html.h:303
@ LCSP_PROP_BORDER_COLOR
Definition lws-html.h:168
@ LCSP_PROP_COUNTER_INCREMENT
Definition lws-html.h:201
@ LCSP_PROP_CONTENT
Definition lws-html.h:200
@ LCSP_PROP_OUTLINE_COLOR
Definition lws-html.h:236
@ LCSP_PROP_BOTTOM
Definition lws-html.h:194
@ LCSP_PROP_SPEAK_PUNCTUATION
Definition lws-html.h:261
@ LCSP_PROP_BORDER_TOP_COLOR
Definition lws-html.h:175
@ LCSP_PROP_PADDING_TOP
Definition lws-html.h:241
@ LCSP_PROP_MARGIN_INLINE
Definition lws-html.h:298
@ LCSP_PROP_BORDER_WIDTH
Definition lws-html.h:187
@ LCSP_PROP_BORDER_TOP_LEFT_RADIUS
Definition lws-html.h:188
@ LCSP_PROP_FLEX_BASIS
Definition lws-html.h:288
@ LCSP_PROP_ALIGN_SELF
Definition lws-html.h:291
@ LCSP_PROP_INSET_INLINE
Definition lws-html.h:311
@ LCSP_PROP_BORDER_BOTTOM_WIDTH
Definition lws-html.h:185
@ LCSP_PROP_VOLUME
Definition lws-html.h:275
@ LCSP_PROP_CUE_AFTER
Definition lws-html.h:203
@ LCSP_PROP_BORDER_LEFT_STYLE
Definition lws-html.h:182
@ LCSP_PROP_BORDER_STYLE
Definition lws-html.h:170
@ LCSP_PROP_BORDER_LEFT_COLOR
Definition lws-html.h:178
@ LCSP_PROP_FLEX
Definition lws-html.h:284
@ LCSP_PROP_BORDER_RADIUS
Definition lws-html.h:192
@ LCSP_PROP_TEXT_INDENT
Definition lws-html.h:268
@ LCSP_PROP_OUTLINE_STYLE
Definition lws-html.h:237
@ LCSP_PROP_FONT
Definition lws-html.h:217
@ LCSP_PROP_PADDING
Definition lws-html.h:245
@ LCSP_PROP_PAUSE_AFTER
Definition lws-html.h:249
@ LCSP_PROP_FONT_FAMILY
Definition lws-html.h:212
@ LCSP_PROP_TEXT_TRANSFORM
Definition lws-html.h:269
@ LCSP_PROP_MARGIN_BLOCK
Definition lws-html.h:301
@ LCSP_PROP_PLAY_DURING
Definition lws-html.h:254
@ LCSP_PROP_MAX_WIDTH
Definition lws-html.h:232
@ LCSP_PROP_QUOTES
Definition lws-html.h:256
@ LCSP_PROP_BORDER_LEFT_WIDTH
Definition lws-html.h:186
@ LCSP_PROP_FONT_STYLE
Definition lws-html.h:214
@ LCSP_PROP_LIST_STYLE
Definition lws-html.h:225
@ LCSP_PROP_OUTLINE_WIDTH
Definition lws-html.h:238
@ LCSP_PROP_PITCH
Definition lws-html.h:253
@ LCSP_PROP_CUE
Definition lws-html.h:205
@ LCSP_PROP_MARGIN_RIGHT
Definition lws-html.h:226
@ LCSP_PROP_MARGIN_LEFT
Definition lws-html.h:227
@ LCSP_PROP_BORDER_BOTTOM
Definition lws-html.h:173
@ LCSP_PROP_WIDOWS
Definition lws-html.h:277
@ LCSP_PROP_PAGE_BREAK_BEFORE
Definition lws-html.h:247
@ LCSP_PROP_RIGHT
Definition lws-html.h:258
@ LCSP_PROP_BORDER_BOTTOM_COLOR
Definition lws-html.h:177
@ LCSP_PROP_MARGIN_INLINE_START
Definition lws-html.h:299
@ LCSP_PROP_PAGE_BREAK_INSIDE
Definition lws-html.h:248
@ LCSP_PROP_MARGIN
Definition lws-html.h:230
@ LCSP_PROP_BORDER_RIGHT_COLOR
Definition lws-html.h:176
@ LCSP_PROP_DIRECTION
Definition lws-html.h:207
@ LCSP_PROP_FLEX_WRAP
Definition lws-html.h:289
@ LCSP_PROP_PADDING_INLINE_END
Definition lws-html.h:306
@ LCSP_PROP_CUE_BEFORE
Definition lws-html.h:204
@ LCSP_PROP_CLIP
Definition lws-html.h:198
@ LCSP_PROP_COLUMN_GAP
Definition lws-html.h:294
@ LCSP_PROP_FONT_SIZE
Definition lws-html.h:213
@ LCSP_PROP_ELEVATION
Definition lws-html.h:209
@ LCSP_PROP_PADDING_BLOCK_END
Definition lws-html.h:309
@ LCSP_PROP_FLEX_DIRECTION
Definition lws-html.h:285
@ LCSP_PROP_WIDTH
Definition lws-html.h:278
@ LCSP_PROP_CAPTION_SIDE
Definition lws-html.h:196
@ LCSP_PROP_BORDER_TOP_WIDTH
Definition lws-html.h:183
@ LCSP_PROP_LEFT
Definition lws-html.h:219
@ LCSP_PROP_LINE_HEIGHT
Definition lws-html.h:221
@ LCSP_PROP_STRESS
Definition lws-html.h:264
@ LCSP_PROP_PADDING_LEFT
Definition lws-html.h:244
@ LCSP_PROP_CLEAR
Definition lws-html.h:197
@ LCSP_PROP_PADDING_RIGHT
Definition lws-html.h:242
@ LCSP_PROP_PITCH_RANGE
Definition lws-html.h:252
@ LCSP_PROP_WORD_SPACING
Definition lws-html.h:279
@ LCSP_PROP_FLOAT
Definition lws-html.h:211
@ LCSP_PROP__COUNT
Definition lws-html.h:318
@ LCSP_PROP_BOX_SIZING
Definition lws-html.h:195
@ LCSP_PROP_BORDER
Definition lws-html.h:193
@ LCSP_PROP_INSET_BLOCK_START
Definition lws-html.h:315
@ LCSP_PROP_ORPHANS
Definition lws-html.h:235
@ LCSP_PROP_FLEX_SHRINK
Definition lws-html.h:287
@ LCSP_PROP_AZIMUTH
Definition lws-html.h:159
@ LCSP_PROP_PADDING_BLOCK_START
Definition lws-html.h:308
@ LCSP_PROP_BORDER_LEFT
Definition lws-html.h:174
@ LCSP_PROP_INSET_INLINE_END
Definition lws-html.h:313
@ LCSP_PROP_COUNTER_RESET
Definition lws-html.h:202
@ LCSP_PROP_INSET
Definition lws-html.h:310
@ LCSP_PROP_MIN_HEIGHT
Definition lws-html.h:233
@ LCSP_PROP_LIST_STYLE_TYPE
Definition lws-html.h:224
@ LCSP_PROP_SPEECH_RATE
Definition lws-html.h:263
@ LCSP_PROP_RICHNESS
Definition lws-html.h:257
@ LCSP_PROP_BORDER_BOTTOM_STYLE
Definition lws-html.h:181
@ LCSP_PROP_OPACITY
Definition lws-html.h:283
@ LCSP_PROP_GAP
Definition lws-html.h:293
@ LCSP_PROP_PAUSE_BEFORE
Definition lws-html.h:250
@ LCSP_PROP_OUTLINE
Definition lws-html.h:239
@ LCSP_PROP_MARGIN_INLINE_END
Definition lws-html.h:300
@ LCSP_PROP_TABLE_LAYOUT
Definition lws-html.h:265
@ LCSP_PROP_BACKGROUND
Definition lws-html.h:166
@ LCSP_PROP_MARGIN_BLOCK_START
Definition lws-html.h:302
@ LCSP_PROP_BORDER_TOP_RIGHT_RADIUS
Definition lws-html.h:189
@ LCSP_PROP_PAGE_BREAK_AFTER
Definition lws-html.h:246
@ LCSP_PROP_BACKGROUND_SIZE
Definition lws-html.h:165
@ LCSP_PROP_BORDER_BOTTOM_RIGHT_RADIUS
Definition lws-html.h:191
@ LCSP_PROP_BORDER_TOP
Definition lws-html.h:171
@ LCSP_PROP_LIST_STYLE_IMAGE
Definition lws-html.h:222
@ LCSP_PROP_VOICE_FAMILY
Definition lws-html.h:274
lws_dll2_t list
Definition lws-html.h:533
uint8_t abs_stretch_set
Definition lws-html.h:684
lhp_atr_idx_t atr_idx
Definition lws-html.h:600
lws_fx_t pend_mb
Definition lws-html.h:590
struct lcsp_stanza * pseudo_before
Definition lws-html.h:623
uint8_t flex_wrap
Definition lws-html.h:671
LWS_VISIBLE LWS_EXTERN void lws_lhp_tag_dlo_id(lhp_ctx_t *ctx, lhp_pstack_t *ps, lws_dlo_t *dlo)
uint8_t font_pinned
Definition lws-html.h:703
uint8_t is_row
Definition lws-html.h:662
lws_fx_t ox
Definition lws-html.h:566
uint8_t explicit_h
Definition lws-html.h:678
struct lhp_pstack lhp_pstack_t
uint8_t decl_valid
Definition lws-html.h:689
const struct lcsp_atr * css_position
Definition lws-html.h:611
lws_dll2_owner_t names
Definition lws-html.h:822
lws_dlo_t * dlo
Definition lws-html.h:701
lhp_callbacks
Definition lws-html.h:130
@ LHPCB_COMPLETE
Definition lws-html.h:141
@ LHPCB_ERR_ELEM_DEPTH
Definition lws-html.h:135
@ LHPCB_ELEMENT_START
Definition lws-html.h:144
@ LHPCB_ERR_ATTRIB_SYNTAX
Definition lws-html.h:132
@ LHPCB_ERR_OOM
Definition lws-html.h:134
@ LHPCB_CONTENT
Definition lws-html.h:147
@ LHPCB_DESTRUCTED
Definition lws-html.h:139
@ LHPCB_COMMENT
Definition lws-html.h:149
@ LHPCB_CONSTRUCTED
Definition lws-html.h:138
@ LHPCB_FAILED
Definition lws-html.h:142
@ LHPCB_ELEMENT_END
Definition lws-html.h:145
@ LHPCB_ERR_ATTRIB_LEN
Definition lws-html.h:133
@ LHPCB_CONTINUE
Definition lws-html.h:136
lws_dll2_owner_t col_dlos
Definition lws-html.h:535
uint32_t doctype
enum lcsp_css_units lcsp_css_units_t
uint8_t hidden
Definition lws-html.h:691
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:567
uint16_t prop
Definition lws-html.h:782
struct lhp_decl * decl
Definition lws-html.h:651
size_t value_len
Definition lws-html.h:484
lws_dlo_t * line_first
Definition lws-html.h:580
const lws_display_font_t * f
Definition lws-html.h:606
lws_fx_t cury
Definition lws-html.h:577
uint8_t shrink
Definition lws-html.h:672
LWS_VISIBLE LWS_EXTERN void lws_lhp_destruct(lhp_ctx_t *ctx)
uint16_t key_ofs
Definition lws-html.h:806
int32_t abs_y
Definition lws-html.h:591
lws_fx_t maxc
Definition lws-html.h:586
LWS_VISIBLE LWS_EXTERN lws_stateful_ret_t lws_lhp_parse(lhp_ctx_t *ctx, const uint8_t **buf, size_t *len)
struct lhp_atr_idx lhp_atr_idx_t
lws_dll2_owner_t defs
Definition lws-html.h:823
uint8_t is_inline
Definition lws-html.h:664
uint8_t pseudo_elem
Definition lws-html.h:813
uint8_t suspicious
Definition lws-html.h:692
const struct lcsp_atr * css_height
Definition lws-html.h:614
uint8_t important
Definition lws-html.h:783
struct lwsac * styleac
Definition lws-html.h:639
lhp_callback cb
Definition lws-html.h:554
lws_dll2_t list
Definition lws-html.h:896
uint32_t default_css
uint16_t nmatched
Definition lws-html.h:658
const struct lcsp_atr * css_background_color
Definition lws-html.h:608
uint32_t css_heap
Definition lws-html.h:653
lcsp_stanza_t * stz
Definition lws-html.h:845
uint8_t ti_done
Definition lws-html.h:697
const struct lcsp_atr * css_color
Definition lws-html.h:609
struct lcsp_defs lcsp_defs_t
struct lcsp_atr_ptr lcsp_atr_ptr_t
uint8_t css_resolved
Definition lws-html.h:688
struct lhp_atr_ent lhp_atr_ent_t
uint8_t abs_minh_set
Definition lws-html.h:681
uint8_t is_ilevel
Definition lws-html.h:665
uint8_t explicit_w
Definition lws-html.h:677
enum lcsp_props lcsp_props_t
const struct lcsp_atr * css_text_indent
Definition lws-html.h:615
void lhp_set_dlo_padding_margin(lhp_pstack_t *ps, lws_dlo_t *dlo)
lws_dll2_t list
Definition lws-html.h:866
uint32_t inq
uint8_t is_abs
Definition lws-html.h:666
lws_box_t drt
Definition lws-html.h:557
uint8_t in_shrink
Definition lws-html.h:673
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)
const lhp_atr_t * tag
Definition lws-html.h:503
struct lhp_css_var lhp_css_var_t
uint8_t is_flex_item
Definition lws-html.h:670
struct lhp_css_layer lhp_css_layer_t
const struct lcsp_atr * css_pos[4]
Definition lws-html.h:628
struct lcsp_names lcsp_names_t
struct lhp_sib lhp_sib_t
lhp_table_col_t * table_col
Definition lws-html.h:597
lcsp_atr_t * atr
Definition lws-html.h:868
struct lhp_css_var * var
Definition lws-html.h:780
struct lcsp_stanza_ptr lcsp_stanza_ptr_t
const char * cosmetic_css
Definition lws-html.h:1181
lws_dll2_t list
Definition lws-html.h:860
lws_fx_t abs_bot
Definition lws-html.h:573
uint8_t abs_bot_set
Definition lws-html.h:682
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)
lhp_atr_ent_t * a
Definition lws-html.h:504
lws_dll2_t list
Definition lws-html.h:513
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:779
const struct lcsp_atr * css_border_radius[4]
Definition lws-html.h:626
uint8_t in_body
Definition lws-html.h:690
void(* sul_cb_t)(struct lws_sorted_usec_list *sul)
struct lws_sorted_usec_list lws_sorted_usec_list_t
union lcsp_atr::@311003342135116017074105067137247155112136133110 u
uint16_t value_len
Definition lws-html.h:768
uint8_t unit
Definition lws-html.h:770
uint16_t propval
Definition lws-html.h:767
uint8_t op
Definition lws-html.h:771
lws_dll2_t list
Definition lws-html.h:754
int32_t sel_budget
Definition lws-html.h:1026
char await_css_url[LHP_URL_LEN]
Definition lws-html.h:1105
int16_t css_state
Definition lws-html.h:1097
uint8_t css_layer_depth
Definition lws-html.h:1119
uint8_t css_lhs_partial
Definition lws-html.h:1121
sul_cb_t ssevcb
Definition lws-html.h:1042
size_t css_level_heap
Definition lws-html.h:1015
lws_fx_t fxs[8]
Definition lws-html.h:954
struct lwsac * blockac
Definition lws-html.h:1037
lhp_selidx_t * selidx[LHP_SELIDX_BUCKETS]
Definition lws-html.h:978
uint8_t css_skip_depth
Definition lws-html.h:1116
uint8_t await_css_done
Definition lws-html.h:1110
uint32_t css_doc_selectors
Definition lws-html.h:1009
uint8_t cb_depth
Definition lws-html.h:956
uint8_t is_css
Definition lws-html.h:1109
struct lwsac * idxac
Definition lws-html.h:977
lws_dll2_owner_t css_layers
Definition lws-html.h:974
lws_font_waiter_t font_wait
Definition lws-html.h:1046
uint8_t finish_css
Definition lws-html.h:1108
union lhp_ctx::@313012322054160254166174133215050156320073307327 u
uint32_t hits_alloc
Definition lws-html.h:983
void * user1
Definition lws-html.h:1050
int prop
Definition lws-html.h:1095
struct lhp_cls_tok * ctok
Definition lws-html.h:1023
uint8_t await_assets
Definition lws-html.h:1111
struct lwsac * cssac
Definition lws-html.h:938
uint64_t layout_ops
Definition lws-html.h:989
lws_dll2_owner_t active_stanzas
Definition lws-html.h:968
size_t tag_len
Definition lws-html.h:1052
lws_dll2_owner_t * ids
Definition lws-html.h:943
lws_sorted_usec_list_t * sshtmlevsul
Definition lws-html.h:1045
int32_t viewport_h
Definition lws-html.h:1065
int entity_start
Definition lws-html.h:1060
struct lwsac * cascadeac
Definition lws-html.h:939
int state
Definition lws-html.h:1055
int32_t window
Definition lws-html.h:1064
uint8_t css_block_depth
Definition lws-html.h:1115
lws_fx_t tf
Definition lws-html.h:945
lws_dll2_owner_t stack
Definition lws-html.h:936
struct lcsp_match * hits
Definition lws-html.h:980
uint32_t ctok_alloc
Definition lws-html.h:1025
sul_cb_t sshtmlevcb
Definition lws-html.h:1044
int nl_temp
Definition lws-html.h:1057
uint8_t cancelled
Definition lws-html.h:1112
lws_surface_info_t ic
Definition lws-html.h:1039
uint32_t hits_count
Definition lws-html.h:984
uint32_t css_doc_vars
Definition lws-html.h:1010
const char * tag
Definition lws-html.h:1051
lws_sorted_usec_list_t * ssevsul
Definition lws-html.h:1043
struct lws_dll2 * selidx_last
Definition lws-html.h:1029
char * filter_css
Definition lws-html.h:1035
int16_t cssval_state
Definition lws-html.h:1098
uint32_t temp
Definition lws-html.h:1063
uint8_t css_layer
Definition lws-html.h:1117
int saved_state
Definition lws-html.h:1059
uint32_t hits_gen
Definition lws-html.h:988
struct lwsac * propatrac
Definition lws-html.h:940
uint8_t in_body
Definition lws-html.h:1107
lws_fx_t viewport_h_fx
Definition lws-html.h:1067
int temp_count
Definition lws-html.h:1058
lcsp_defs_t * def
Definition lws-html.h:966
lws_dll2_owner_t css
Definition lws-html.h:941
uint32_t hits_hash_size
Definition lws-html.h:987
int state_css_comm
Definition lws-html.h:1056
int npos
Definition lws-html.h:1054
uint32_t flags
Definition lws-html.h:1062
int32_t calc_budget
Definition lws-html.h:961
lcsp_css_units_t unit
Definition lws-html.h:964
struct lhp_hits_slot * hits_hash
Definition lws-html.h:985
int propval
Definition lws-html.h:1096
lhp_selidx_t * selidx_nokey
Definition lws-html.h:979
uint8_t css_values_capped
Definition lws-html.h:1019
lws_dll2_owner_t css_vars
Definition lws-html.h:973
const char * base_url
Definition lws-html.h:1041
uint8_t css_lhs_skip
Definition lws-html.h:1124
uint8_t calc_nest
Definition lws-html.h:959
lws_dll2_owner_t active_atr
Definition lws-html.h:970
uint8_t fxsi
Definition lws-html.h:955
uint8_t css_doc_spent
Definition lws-html.h:1011
lws_dll2_owner_t block_rules
Definition lws-html.h:1036
uint64_t sel_work
Definition lws-html.h:1000
uint32_t stz_seq
Definition lws-html.h:1031
char buf[LHP_STRING_CHUNK+1]
Definition lws-html.h:1129
uint64_t cascade_ops
Definition lws-html.h:992
void * user
Definition lws-html.h:1049
lcsp_stanza_t * stz
Definition lws-html.h:965
uint32_t s