Added full clay border support to draw #28
+5
-14
@@ -52,15 +52,6 @@ clear_clay_per_frame :: proc() {
|
|||||||
clear(&GLOB.clay_merge_open_stack)
|
clear(&GLOB.clay_merge_open_stack)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
|
||||||
// ----- Conversion helpers ------------
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// Convert clay.Color ([4]c.float in 0–255 range) to Color.
|
|
||||||
color_from_clay :: #force_inline proc(clay_color: clay.Color) -> Color {
|
|
||||||
return Color{u8(clay_color[0]), u8(clay_color[1]), u8(clay_color[2]), u8(clay_color[3])}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
// ----- Image data (Clay RenderCommandType.Image payload) ------------
|
// ----- Image data (Clay RenderCommandType.Image payload) ------------
|
||||||
// ---------------------------------------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------------------------------------
|
||||||
@@ -446,7 +437,7 @@ apply_clay_border_merge_to_primitive :: proc(
|
|||||||
|
|
||||||
// Set the outline bit in the packed flags field (low byte = Shape_Kind, bits 8+ = Shape_Flags).
|
// Set the outline bit in the packed flags field (low byte = Shape_Kind, bits 8+ = Shape_Flags).
|
||||||
prim.flags |= u32(transmute(u8)Shape_Flags{.Outline}) << 8
|
prim.flags |= u32(transmute(u8)Shape_Flags{.Outline}) << 8
|
||||||
prim.effects.outline_color = color_from_clay(border_data.color)
|
prim.effects.outline_color = Color(border_data.color)
|
||||||
prim.effects.outline_packed = pack_f16_pair(f16(uniform_width * dpi_scale), 0)
|
prim.effects.outline_packed = pack_f16_pair(f16(uniform_width * dpi_scale), 0)
|
||||||
|
|
||||||
if candidate.kind == .Fill_Texture {
|
if candidate.kind == .Fill_Texture {
|
||||||
@@ -504,7 +495,7 @@ dispatch_clay_command :: proc(
|
|||||||
c_text,
|
c_text,
|
||||||
get_font(render_data.fontId, render_data.fontSize),
|
get_font(render_data.fontId, render_data.fontSize),
|
||||||
)
|
)
|
||||||
prepare_text(layer, Text{sdl_text, {bounds.x, bounds.y}, color_from_clay(render_data.textColor)})
|
prepare_text(layer, Text{sdl_text, {bounds.x, bounds.y}, Color(render_data.textColor)})
|
||||||
case clay.RenderCommandType.Image:
|
case clay.RenderCommandType.Image:
|
||||||
// Any texture
|
// Any texture
|
||||||
render_data := render_command.renderData.image
|
render_data := render_command.renderData.image
|
||||||
@@ -518,7 +509,7 @@ dispatch_clay_command :: proc(
|
|||||||
bottom_left = corner_radii_clay.bottomLeft,
|
bottom_left = corner_radii_clay.bottomLeft,
|
||||||
}
|
}
|
||||||
|
|
||||||
background_color := color_from_clay(render_data.backgroundColor)
|
background_color := Color(render_data.backgroundColor)
|
||||||
uv_rect, sampler, fit_rect := fit_params(img_data.fit, bounds, img_data.texture_id)
|
uv_rect, sampler, fit_rect := fit_params(img_data.fit, bounds, img_data.texture_id)
|
||||||
|
|
||||||
if background_color.a > 0 {
|
if background_color.a > 0 {
|
||||||
@@ -597,7 +588,7 @@ dispatch_clay_command :: proc(
|
|||||||
case clay.RenderCommandType.Rectangle:
|
case clay.RenderCommandType.Rectangle:
|
||||||
render_data := render_command.renderData.rectangle
|
render_data := render_command.renderData.rectangle
|
||||||
corner_radii_clay := render_data.cornerRadius
|
corner_radii_clay := render_data.cornerRadius
|
||||||
background_color := color_from_clay(render_data.backgroundColor)
|
background_color := Color(render_data.backgroundColor)
|
||||||
radii := Rectangle_Radii {
|
radii := Rectangle_Radii {
|
||||||
top_left = corner_radii_clay.topLeft,
|
top_left = corner_radii_clay.topLeft,
|
||||||
top_right = corner_radii_clay.topRight,
|
top_right = corner_radii_clay.topRight,
|
||||||
@@ -624,7 +615,7 @@ dispatch_clay_command :: proc(
|
|||||||
clay_emit_partial_border(
|
clay_emit_partial_border(
|
||||||
layer,
|
layer,
|
||||||
bounds,
|
bounds,
|
||||||
color_from_clay(render_data.color),
|
Color(render_data.color),
|
||||||
render_data.width,
|
render_data.width,
|
||||||
render_data.cornerRadius,
|
render_data.cornerRadius,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user