feat(ui): nine-slice corners clamped to half the box in each direction, cut on whole pixels
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
12f4ba8431
commit
cf8b9e425e
9 changed files with 53 additions and 7 deletions
|
|
@ -1,14 +1,16 @@
|
|||
# render3d_nine.ludic - border-image for the render3d backend: a nine-slice of a texture
|
||||
module ludic_ui
|
||||
# border-image: the texture's `slice`-pixel corners kept, the rest stretched, drawn `dst` wide; the
|
||||
# slice is a share of the texture's own width across and its own height down, so it need not be square
|
||||
# border-image: the texture's `slice`-pixel corners kept, the rest stretched, drawn `dst` wide (at
|
||||
# most half the box each way, ui_nine_cuts); the slice is a share of the texture's own width across
|
||||
# and its own height down, so it need not be square
|
||||
function r3u_nine(src: string, slice: float, x: float, y: float, w: float, h: float, dst: float, c: int, a: float) -> void {
|
||||
let t = r3u_tex(src)
|
||||
if t == 0 { return }
|
||||
let su = slice / float(Math.max(tex_width(t), 1))
|
||||
let sv = slice / float(Math.max(tex_height(t), 1))
|
||||
let xs = r3u_four(x, x + dst, x + w - dst, x + w)
|
||||
let ys = r3u_four(y, y + dst, y + h - dst, y + h)
|
||||
let cut = ui_nine_cuts(x, y, w, h, dst)
|
||||
let xs = r3u_four(cut[0], cut[1], cut[2], cut[3])
|
||||
let ys = r3u_four(cut[4], cut[5], cut[6], cut[7])
|
||||
let us = r3u_four(0.0, su, 1.0 - su, 1.0)
|
||||
let vs = r3u_four(0.0, sv, 1.0 - sv, 1.0)
|
||||
for j in 0 .. 3 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue