diff --git a/System/Libraries/Html/Renderer.HC b/System/Libraries/Html/Renderer.HC
index c6a2fdb..af50953 100644
--- a/System/Libraries/Html/Renderer.HC
+++ b/System/Libraries/Html/Renderer.HC
@@ -388,6 +388,70 @@ U0 @set_css_distance(U8* str, F64* value, I64* type)
}
}
+U0 @css_resolve_margin(@html_dom_node* node, JsonArray* values)
+{
+ if (!node || !values || !values->length)
+ return;
+ switch (values->length) {
+ case 2:
+ @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
+ @set_css_distance(values->@(0), &node->margin.bottom.value, &node->margin.bottom.type);
+ @set_css_distance(values->@(1), &node->margin.left.value, &node->margin.left.type);
+ @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
+ break;
+ case 3:
+ @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
+ @set_css_distance(values->@(1), &node->margin.left.value, &node->margin.left.type);
+ @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
+ @set_css_distance(values->@(2), &node->margin.bottom.value, &node->margin.bottom.type);
+ break;
+ case 4:
+ @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
+ @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
+ @set_css_distance(values->@(2), &node->margin.bottom.value, &node->margin.bottom.type);
+ @set_css_distance(values->@(3), &node->margin.left.value, &node->margin.left.type);
+ break;
+ default:
+ @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
+ @set_css_distance(values->@(0), &node->margin.right.value, &node->margin.right.type);
+ @set_css_distance(values->@(0), &node->margin.bottom.value, &node->margin.bottom.type);
+ @set_css_distance(values->@(0), &node->margin.left.value, &node->margin.left.type);
+ break;
+ }
+}
+
+U0 @css_resolve_padding(@html_dom_node* node, JsonArray* values)
+{
+ if (!node || !values || !values->length)
+ return;
+ switch (values->length) {
+ case 2:
+ @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
+ @set_css_distance(values->@(0), &node->padding.bottom.value, &node->padding.bottom.type);
+ @set_css_distance(values->@(1), &node->padding.left.value, &node->padding.left.type);
+ @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
+ break;
+ case 3:
+ @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
+ @set_css_distance(values->@(1), &node->padding.left.value, &node->padding.left.type);
+ @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
+ @set_css_distance(values->@(2), &node->padding.bottom.value, &node->padding.bottom.type);
+ break;
+ case 4:
+ @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
+ @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
+ @set_css_distance(values->@(2), &node->padding.bottom.value, &node->padding.bottom.type);
+ @set_css_distance(values->@(3), &node->padding.left.value, &node->padding.left.type);
+ break;
+ default:
+ @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
+ @set_css_distance(values->@(0), &node->padding.right.value, &node->padding.right.type);
+ @set_css_distance(values->@(0), &node->padding.bottom.value, &node->padding.bottom.type);
+ @set_css_distance(values->@(0), &node->padding.left.value, &node->padding.left.type);
+ break;
+ }
+}
+
Bool @apply_css_properties_to_node(@html_dom_node* node, JsonObject* properties)
{
Bool should_display = TRUE;
@@ -434,32 +498,7 @@ Bool @apply_css_properties_to_node(@html_dom_node* node, JsonObject* properties)
}
if (!StrICmp(key->name, "margin")) {
- switch (values->length) {
- case 2:
- @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
- @set_css_distance(values->@(0), &node->margin.bottom.value, &node->margin.bottom.type);
- @set_css_distance(values->@(1), &node->margin.left.value, &node->margin.left.type);
- @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
- break;
- case 3:
- @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
- @set_css_distance(values->@(1), &node->margin.left.value, &node->margin.left.type);
- @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
- @set_css_distance(values->@(2), &node->margin.bottom.value, &node->margin.bottom.type);
- break;
- case 4:
- @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
- @set_css_distance(values->@(1), &node->margin.right.value, &node->margin.right.type);
- @set_css_distance(values->@(2), &node->margin.bottom.value, &node->margin.bottom.type);
- @set_css_distance(values->@(3), &node->margin.left.value, &node->margin.left.type);
- break;
- default:
- @set_css_distance(values->@(0), &node->margin.top.value, &node->margin.top.type);
- @set_css_distance(values->@(0), &node->margin.right.value, &node->margin.right.type);
- @set_css_distance(values->@(0), &node->margin.bottom.value, &node->margin.bottom.type);
- @set_css_distance(values->@(0), &node->margin.left.value, &node->margin.left.type);
- break;
- }
+ @css_resolve_margin(node, values);
}
if (!StrICmp(key->name, "margin-top")) {
@@ -476,32 +515,7 @@ Bool @apply_css_properties_to_node(@html_dom_node* node, JsonObject* properties)
}
if (!StrICmp(key->name, "padding")) {
- switch (values->length) {
- case 2:
- @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
- @set_css_distance(values->@(0), &node->padding.bottom.value, &node->padding.bottom.type);
- @set_css_distance(values->@(1), &node->padding.left.value, &node->padding.left.type);
- @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
- break;
- case 3:
- @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
- @set_css_distance(values->@(1), &node->padding.left.value, &node->padding.left.type);
- @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
- @set_css_distance(values->@(2), &node->padding.bottom.value, &node->padding.bottom.type);
- break;
- case 4:
- @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
- @set_css_distance(values->@(1), &node->padding.right.value, &node->padding.right.type);
- @set_css_distance(values->@(2), &node->padding.bottom.value, &node->padding.bottom.type);
- @set_css_distance(values->@(3), &node->padding.left.value, &node->padding.left.type);
- break;
- default:
- @set_css_distance(values->@(0), &node->padding.top.value, &node->padding.top.type);
- @set_css_distance(values->@(0), &node->padding.right.value, &node->padding.right.type);
- @set_css_distance(values->@(0), &node->padding.bottom.value, &node->padding.bottom.type);
- @set_css_distance(values->@(0), &node->padding.left.value, &node->padding.left.type);
- break;
- }
+ @css_resolve_padding(node, values);
}
if (!StrICmp(key->name, "padding-top")) {