From 1072f3225c84025440e1fbfa09ca2016721df9cf Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 27 May 2025 02:10:18 -0500 Subject: [PATCH] xform_from_rect --- src/draw.c | 3 +-- src/math.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/draw.c b/src/draw.c index 339e5653..85385abb 100644 --- a/src/draw.c +++ b/src/draw.c @@ -437,8 +437,7 @@ struct rect draw_text(struct gpu_cmd_store store, struct draw_text_params params struct drawable_glyph *tg = &line->glyphs[i]; struct v2 pos = V2(draw_pos.x + tg->off_x, draw_pos.y + tg->off_y); struct v2 size = V2(tg->width, tg->height); - struct v2 pos_center = v2_add(pos, v2_mul(size, 0.5)); - struct xform xf = XFORM_TRS(.t = pos_center, size); + struct xform xf = xform_from_rect(RECT_FROM_V2(pos, size)); draw_texture(store, DRAW_TEXTURE_PARAMS(.xf = xf, .texture = params.font->texture, .tint = params.color, .clip = tg->clip)); draw_pos.x += tg->advance; diff --git a/src/math.h b/src/math.h index cc1ecff8..8b0f31e0 100644 --- a/src/math.h +++ b/src/math.h @@ -986,6 +986,16 @@ INLINE struct xform xform_from_trs(struct trs trs) return xf; } +INLINE struct xform xform_from_rect(struct rect rect) +{ + struct v2 half_size = v2_mul(rect.size, 0.5); + struct xform xf = ZI; + xf.bx = V2(rect.size.x, 0); + xf.by = V2(0, rect.size.y); + xf.og = v2_add(rect.pos, half_size); + return xf; +} + INLINE struct xform xform_translated(struct xform xf, struct v2 v) { xf.og = V2(xf.bx.x * v.x + xf.by.x * v.y + xf.og.x, xf.bx.y * v.x + xf.by.y * v.y + xf.og.y);