System/Libraries/Html/Renderer: Render LI ordered/unordered items
This commit is contained in:
parent
0b381bf119
commit
60606317b2
1 changed files with 28 additions and 11 deletions
|
@ -710,6 +710,16 @@ Bool @code_point_is_whitespace(I32 code_point)
|
|||
}
|
||||
}
|
||||
|
||||
@html_dom_node* @self_or_ancestor_matches_tag_name(@html_dom_node* node, U8* tagName)
|
||||
{
|
||||
while (node) {
|
||||
if (!StrICmp(node->tagName, tagName))
|
||||
return node;
|
||||
node = node->parentNode;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
U8* @resolved_font_weight_for_node(@html_dom_node* node)
|
||||
{
|
||||
U8 buf[128];
|
||||
|
@ -785,7 +795,6 @@ U0 @render_node_text(@html_dom_node* node, HtmlRenderer* renderer)
|
|||
|
||||
U32 fragment_bounding_box_color = Color(0x00, 0xff, 0x00);
|
||||
U8* font_name = @resolved_font_weight_for_node(node->parentNode);
|
||||
"font_name: %s\n", font_name;
|
||||
|
||||
for (i = 0; i < fragment_count; i++) {
|
||||
if (fragments[i] && *fragments[i]) {
|
||||
|
@ -939,6 +948,24 @@ U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer)
|
|||
@renderer_append_image(renderer, img_widget);
|
||||
}
|
||||
|
||||
if (!StrICmp(node->tagName, "li")) {
|
||||
@html_dom_node* prepend_text_node = NULL;
|
||||
if (@self_or_ancestor_matches_tag_name(node, "ol")) {
|
||||
I64 ordered_list_index = @self_or_ancestor_matches_tag_name(node, "ol")->attributes->@("orderedListIndex") + 1;
|
||||
@self_or_ancestor_matches_tag_name(node, "ol")->attributes->set("orderedListIndex", ordered_list_index, JSON_NUMBER);
|
||||
prepend_text_node = @create_new_node("InternalTextNode", renderer->task);
|
||||
prepend_text_node->parentNode = node;
|
||||
prepend_text_node->text = CAlloc(16, renderer->task);
|
||||
StrPrint(prepend_text_node->text, "%d.", ordered_list_index);
|
||||
node->children->prepend(prepend_text_node);
|
||||
} else if (@self_or_ancestor_matches_tag_name(node, "ul")) {
|
||||
prepend_text_node = @create_new_node("InternalTextNode", renderer->task);
|
||||
prepend_text_node->parentNode = node;
|
||||
prepend_text_node->text = StrNew("\xe2\x80\xa2", renderer->task);
|
||||
node->children->prepend(prepend_text_node);
|
||||
}
|
||||
}
|
||||
|
||||
if (node->children->length) {
|
||||
for (i = 0; i < node->children->length; i++)
|
||||
@render_node_list(node->children->@(i), renderer);
|
||||
|
@ -954,16 +981,6 @@ U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer)
|
|||
--renderer->indent;
|
||||
}
|
||||
|
||||
@html_dom_node* @self_or_ancestor_matches_tag_name(@html_dom_node* node, U8* tagName)
|
||||
{
|
||||
while (node) {
|
||||
if (!StrICmp(node->tagName, tagName))
|
||||
return node;
|
||||
node = node->parentNode;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
U0 @reflow_node_list(HtmlRenderer* renderer)
|
||||
{
|
||||
if (!renderer)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue