add push_sprite()

font_atlas
Alessandro Mauri 2 weeks ago
parent c880c2b26e
commit 5c687bd24e
  1. 11
      src/ugui_cmd.c3
  2. 27
      src/ugui_text.c3

@ -32,3 +32,14 @@ fn void! Ctx.push_rect(&ctx, Rect rect, Color color, bool do_border = false, boo
};
ctx.cmd_queue.enqueue(&cmd)!;
}
// TODO: add texture id
fn void! Ctx.push_sprite(&ctx, Rect bounds, Rect texture)
{
Cmd cmd = {
.type = CMD_SPRITE,
.sprite.rect = bounds,
.sprite.texture_rect = texture,
};
ctx.cmd_queue.enqueue(&cmd)!;
}

@ -89,23 +89,20 @@ fn void! Ctx.text_unbounded(&ctx, String label, String text)
Codepoint cp = (Codepoint)c;
if (cp != '\n') {
gp = ctx.font.get_glyph(cp)!;
Cmd cmd = {
.type = CMD_SPRITE,
.sprite.rect = {
.x = orig.x + line_len + gp.ox,
.y = orig.y + gp.oy + baseline,
.w = gp.w,
.h = gp.h,
},
.sprite.texture_rect = {
.x = gp.u,
.y = gp.v,
.w = gp.w,
.h = gp.h,
},
Rect gb = {
.x = orig.x + line_len + gp.ox,
.y = orig.y + gp.oy + baseline,
.w = gp.w,
.h = gp.h,
};
Rect gt = {
.x = gp.u,
.y = gp.v,
.w = gp.w,
.h = gp.h,
};
ctx.push_sprite(gb, gt)!;
line_len += gp.adv;
ctx.cmd_queue.enqueue(&cmd)!;
} else {
orig.y += line_height + line_gap;
line_len = 0;

Loading…
Cancel
Save