summaryrefslogtreecommitdiff
path: root/src/select/computed.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/select/computed.h')
-rw-r--r--src/select/computed.h265
1 files changed, 265 insertions, 0 deletions
diff --git a/src/select/computed.h b/src/select/computed.h
index ca9a93b..e77c0cc 100644
--- a/src/select/computed.h
+++ b/src/select/computed.h
@@ -11,6 +11,271 @@
#include <libcss/computed.h>
#include <libcss/hint.h>
+
+
+typedef struct css_computed_uncommon {
+/*
+ * border_spacing 1 + 2(4) 2(4)
+ * clip 2 + 4(4) + 4 4(4)
+ * letter_spacing 2 + 4 4
+ * outline_color 2 4
+ * outline_width 3 + 4 4
+ * word_spacing 2 + 4 4
+ * --- ---
+ * 52 bits 40 bytes
+ *
+ * Encode counter_increment and _reset as an array of name, value pairs,
+ * terminated with a blank entry.
+ *
+ * counter_increment 1 sizeof(ptr)
+ * counter_reset 1 sizeof(ptr)
+ * --- ---
+ * 2 bits 2sizeof(ptr) bytes
+ *
+ * Encode cursor uri(s) as an array of string objects, terminated with a
+ * blank entry.
+ *
+ * cursor 5 sizeof(ptr)
+ * --- ---
+ * 5 bits sizeof(ptr) bytes
+ *
+ * Encode content as an array of content items, terminated with a blank entry.
+ *
+ * content 2 sizeof(ptr)
+ * --- ---
+ * 2 bits sizeof(ptr)
+ *
+ * ___ ___
+ * 61 bits 40 + 4sizeof(ptr) bytes
+ *
+ * 8 bytes 40 + 4sizeof(ptr) bytes
+ * ===================
+ * 48 + 4sizeof(ptr) bytes
+ *
+ * Bit allocations:
+ *
+ * 76543210
+ * 1 llllllcc letter-spacing | outline-color
+ * 2 ooooooob outline-width | border-spacing
+ * 3 bbbbbbbb border-spacing
+ * 4 wwwwwwir word-spacing | counter-increment | counter-reset
+ * 5 uuuuu... cursor | <unused>
+ * 6 cccccccc clip
+ * 7 cccccccc clip
+ * 8 ccccccoo clip | content
+ */
+ uint8_t bits[8];
+
+ css_fixed border_spacing[2];
+
+ css_fixed clip[4];
+
+ css_fixed letter_spacing;
+
+ css_color outline_color;
+ css_fixed outline_width;
+
+ css_fixed word_spacing;
+
+ css_computed_counter *counter_increment;
+ css_computed_counter *counter_reset;
+
+ lwc_string **cursor;
+
+ css_computed_content_item *content;
+} css_computed_uncommon;
+
+struct css_computed_style {
+/*
+ * background_attachment 2
+ * background_repeat 3
+ * border_collapse 2
+ * border_top_style 4
+ * border_right_style 4
+ * border_bottom_style 4
+ * border_left_style 4
+ * caption_side 2
+ * clear 3
+ * direction 2
+ * display 5
+ * empty_cells 2
+ * float 2
+ * font_style 2
+ * font_variant 2
+ * font_weight 4
+ * list_style_position 2
+ * list_style_type 4
+ * overflow 3
+ * outline_style 4
+ * position 3
+ * table_layout 2
+ * text_align 4
+ * text_decoration 5
+ * text_transform 3
+ * unicode_bidi 2
+ * visibility 2
+ * white_space 3
+ * ---
+ * 84 bits
+ *
+ * Colours are 32bits of AARRGGBB
+ * Dimensions are encoded as a fixed point value + 4 bits of unit data
+ *
+ * background_color 2 4
+ * background_image 1 sizeof(ptr)
+ * background_position 1 + 2(4) 2(4)
+ * border_top_color 2 4
+ * border_right_color 2 4
+ * border_bottom_color 2 4
+ * border_left_color 2 4
+ * border_top_width 3 + 4 4
+ * border_right_width 3 + 4 4
+ * border_bottom_width 3 + 4 4
+ * border_left_width 3 + 4 4
+ * top 2 + 4 4
+ * right 2 + 4 4
+ * bottom 2 + 4 4
+ * left 2 + 4 4
+ * color 1 4
+ * font_size 4 + 4 4
+ * height 2 + 4 4
+ * line_height 2 + 4 4
+ * list_style_image 1 sizeof(ptr)
+ * margin_top 2 + 4 4
+ * margin_right 2 + 4 4
+ * margin_bottom 2 + 4 4
+ * margin_left 2 + 4 4
+ * max_height 2 + 4 4
+ * max_width 2 + 4 4
+ * min_height 1 + 4 4
+ * min_width 1 + 4 4
+ * padding_top 1 + 4 4
+ * padding_right 1 + 4 4
+ * padding_bottom 1 + 4 4
+ * padding_left 1 + 4 4
+ * text_indent 1 + 4 4
+ * vertical_align 4 + 4 4
+ * width 2 + 4 4
+ * z_index 2 4
+ * --- ---
+ * 181 bits 140 + 2sizeof(ptr) bytes
+ *
+ * Encode font family as an array of string objects, terminated with a
+ * blank entry.
+ *
+ * font_family 3 sizeof(ptr)
+ * --- ---
+ * 3 bits sizeof(ptr)
+ *
+ * Encode quotes as an array of string objects, terminated with a blank entry.
+ *
+ * quotes 1 sizeof(ptr)
+ * --- ---
+ * 1 bit sizeof(ptr) bytes
+ *
+ * ___ ___
+ * 269 bits 140 + 4sizeof(ptr) bytes
+ *
+ * 34 bytes 140 + 4sizeof(ptr) bytes
+ * ===================
+ * 174 + 4sizeof(ptr) bytes
+ *
+ * Bit allocations:
+ *
+ * 76543210
+ * 1 vvvvvvvv vertical-align
+ * 2 ffffffff font-size
+ * 3 ttttttti border-top-width | background-image
+ * 4 rrrrrrrc border-right-width | color
+ * 5 bbbbbbbl border-bottom-width | list-style-image
+ * 6 lllllllq border-left-width | quotes
+ * 7 ttttttcc top | border-top-color
+ * 8 rrrrrrcc right | border-right-color
+ * 9 bbbbbbcc bottom | border-bottom-color
+ * 10 llllllcc left | border-left-color
+ * 11 hhhhhhbb height | background-color
+ * 12 llllllzz line-height | z-index
+ * 13 ttttttbb margin-top | background-attachment
+ * 14 rrrrrrbb margin-right | border-collapse
+ * 15 bbbbbbcc margin-bottom | caption-side
+ * 16 lllllldd margin-left | direction
+ * 17 mmmmmmee max-height | empty-cells
+ * 18 mmmmmmff max-width | float
+ * 19 wwwwwwff width | font-style
+ * 20 mmmmmbbb min-height | background-repeat
+ * 21 mmmmmccc min-width | clear
+ * 22 tttttooo padding-top | overflow
+ * 23 rrrrrppp padding-right | position
+ * 24 bbbbbo.. padding-bottom | opacity | <unused>
+ * 25 lllllttt padding-left | text-transform
+ * 26 tttttwww text-indent | white-space
+ * 27 bbbbbbbb background-position
+ * 28 bdddddff background-position | display | font-variant
+ * 29 tttttfff text-decoration | font-family
+ * 30 ttttrrrr border-top-style | border-right-style
+ * 31 bbbbllll border-bottom-style | border-left-style
+ * 32 ffffllll font-weight | list-style-type
+ * 33 oooottuu outline-style | table-layout | unicode-bidi
+ * 34 vvlltttt visibility | list-style-position | text-align
+ */
+ uint8_t bits[34];
+
+ uint8_t unused[2];
+
+ css_color background_color;
+ lwc_string *background_image;
+ css_fixed background_position[2];
+
+ css_color border_color[4];
+ css_fixed border_width[4];
+
+ css_fixed top;
+ css_fixed right;
+ css_fixed bottom;
+ css_fixed left;
+
+ css_color color;
+
+ css_fixed font_size;
+
+ css_fixed height;
+
+ css_fixed line_height;
+
+ lwc_string *list_style_image;
+
+ css_fixed margin[4];
+
+ css_fixed max_height;
+ css_fixed max_width;
+
+ css_fixed min_height;
+ css_fixed min_width;
+
+ css_fixed opacity;
+
+ css_fixed padding[4];
+
+ css_fixed text_indent;
+
+ css_fixed vertical_align;
+
+ css_fixed width;
+
+ int32_t z_index;
+
+ lwc_string **font_family;
+
+ lwc_string **quotes;
+
+ css_computed_uncommon *uncommon;/**< Uncommon properties */
+ void *aural; /**< Aural properties */
+ void *page; /**< Page properties */
+
+ css_allocator_fn alloc;
+ void *pw;
+};
+
css_error css__compute_absolute_values(const css_computed_style *parent,
css_computed_style *style,
css_error (*compute_font_size)(void *pw,