System/Libraries/Html/Renderer: Refactor grouped margin/padding into separate functions from @apply_css_properties_to_node
This commit is contained in:
parent
61fd349325
commit
75a11896ae
1 changed files with 66 additions and 52 deletions
|
@ -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")) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue