mirror of
https://git.checksum.fail/alec/erythros
synced 2025-12-12 05:59:53 +02:00
System/Libraries/Html/Renderer: Refactor grouped margin/padding into separate functions from @apply_css_properties_to_node
This commit is contained in:
@@ -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 @apply_css_properties_to_node(@html_dom_node* node, JsonObject* properties)
|
||||||
{
|
{
|
||||||
Bool should_display = TRUE;
|
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")) {
|
if (!StrICmp(key->name, "margin")) {
|
||||||
switch (values->length) {
|
@css_resolve_margin(node, values);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!StrICmp(key->name, "margin-top")) {
|
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")) {
|
if (!StrICmp(key->name, "padding")) {
|
||||||
switch (values->length) {
|
@css_resolve_padding(node, values);
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!StrICmp(key->name, "padding-top")) {
|
if (!StrICmp(key->name, "padding-top")) {
|
||||||
|
|||||||
Reference in New Issue
Block a user