From c998d040ed5e90c798638526d7799beed7446f23 Mon Sep 17 00:00:00 2001 From: Alec Murphy Date: Mon, 14 Apr 2025 21:16:04 -0400 Subject: [PATCH] System/Libraries/Html/Renderer: Create background_ctx for each HtmlRenderer instance --- System/Libraries/Html/Renderer.HC | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/System/Libraries/Html/Renderer.HC b/System/Libraries/Html/Renderer.HC index 37066f3..5ff0fd4 100644 --- a/System/Libraries/Html/Renderer.HC +++ b/System/Libraries/Html/Renderer.HC @@ -67,6 +67,7 @@ class @html_renderer VerticalScrollBarWidget* vertical_scroll_widget; TextLabelWidget* status_widget; Context2DWidget* background_widget; + Context2D* background_ctx; Window* win; @window_widgets_list* widgets_base; @window_widgets_list* images; @@ -414,10 +415,16 @@ Bool @apply_css_rules_to_node(@html_dom_node* node, HtmlRenderer* renderer) node->fontSize = ToI64((Str2I64(node_tmpnum_buf) / 3) * 2); } - if (!StrICmp(key->name, "font-size") && !StrICmp(values->@(0) + StrLen(values->@(0)) - 2, "px")) { + if (!StrICmp(key->name, "font-size")) { StrCpy(node_tmpnum_buf, values->@(0)); - node_tmpnum_buf[StrLen(node_tmpnum_buf) - 2] = NULL; - node->fontSize = Str2I64(node_tmpnum_buf); + if (!StrICmp(values->@(0) + StrLen(values->@(0)) - 2, "em")) { + node_tmpnum_buf[StrLen(node_tmpnum_buf) - 2] = NULL; + node->fontSize = ToI64(Str2F64(node_tmpnum_buf) * RENDERER_DEFAULT_MAX_LINE_HEIGHT); + } + if (!StrICmp(values->@(0) + StrLen(values->@(0)) - 2, "px")) { + node_tmpnum_buf[StrLen(node_tmpnum_buf) - 2] = NULL; + node->fontSize = Str2I64(node_tmpnum_buf); + } } if (!StrICmp(key->name, "font-family")) { @@ -843,9 +850,10 @@ U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer) } if (!StrICmp(node->tagName, "body")) { + renderer->background_ctx = NewContext2D(Display.Width(), Display.Height())->fill(@image_pixel_flip_rgb_bgr(node->backgroundColor)); + renderer->background_widget->ctx = renderer->background_ctx; renderer->background_widget->ctx->width = Display.Width(); renderer->background_widget->ctx->height = Display.Height(); - renderer->background_widget->ctx->fill(@image_pixel_flip_rgb_bgr(node->backgroundColor)); } if (!StrICmp(node->tagName, "form")) @@ -917,6 +925,7 @@ U0 @reflow_node_list(HtmlRenderer* renderer) VerticalScrollBarWidget* vscroll = renderer->vertical_scroll_widget; + renderer->background_widget->ctx = renderer->background_ctx; I64 origin_y = renderer->background_widget->y; I64 offset_y = origin_y; I64 line_break_max = 0;