diff --git a/System/Libraries/Html/Renderer.HC b/System/Libraries/Html/Renderer.HC index 2c6eb4f..879b3b8 100644 --- a/System/Libraries/Html/Renderer.HC +++ b/System/Libraries/Html/Renderer.HC @@ -1687,6 +1687,53 @@ U0 @render_internal_text_node(@html_dom_node* node, HtmlRenderer* renderer) } } +Context2D* @create_bordered_rect_from_resolved_node(@html_dom_node* node) +{ + if (!node) + return NULL; + + I64 rw = node->border.left.value + node->border.right.value; + rw += node->padding.left.value + node->padding.right.value; + rw += node->width; + + I64 rh = node->border.top.value + node->border.bottom.value; + rh += node->padding.top.value + node->padding.bottom.value; + rh += node->height; + + Context2D* ctx = NewContext2D(rw, rh); + ctx->fill(node->backgroundColor); + + // Draw borders + // FIXME: style + if (node->border.top.value) { + ctx->fill_rect(0, 0, ctx->width, node->border.top.value, node->border.topColor); + } + if (node->border.bottom.value) { + ctx->fill_rect(0, ctx->height - node->border.bottom.value, ctx->width, node->border.bottom.value, node->border.bottomColor); + } + if (node->border.left.value) { + ctx->fill_rect(0, 0, node->border.left.value, ctx->height, node->border.leftColor); + } + if (node->border.right.value) { + ctx->fill_rect(ctx->width - node->border.right.value, 0, node->border.right.value, ctx->height, node->border.rightColor); + } + + return ctx; +} + +U0 @render_image_element(@html_dom_node* node, HtmlRenderer* renderer) +{ + Context2DWidget* img_widget = NULL; + img_widget = Gui.CreateWidget(renderer->win, WIDGET_TYPE_CONTEXT2D, + U64_MAX, U64_MAX, node->width, node->height); + if (node->widthDistanceType == CSS_DISTANCE_PIXELS && node->heightDistanceType == CSS_DISTANCE_PIXELS) { + img_widget->width = node->width; + img_widget->height = node->height; + } + img_widget->data = node; + @renderer_append_image(renderer, img_widget); +} + U0 @render_node_list(@html_dom_node* node, HtmlRenderer* renderer) { if (!node || !renderer)