if( parent->mouse_over )
{
- if( ctx->mouse[0] >= node->rect[0] && ctx->mouse[0] <= node->rect[0]+node->rect[2] &&
- ctx->mouse[1] >= node->rect[1] && ctx->mouse[1] <= node->rect[1]+node->rect[3] )
+ if( ctx->mouse[0] >= node->rect[0] && ctx->mouse[0] < node->rect[0]+node->rect[2] &&
+ ctx->mouse[1] >= node->rect[1] && ctx->mouse[1] < node->rect[1]+node->rect[3] )
node->mouse_over = 1;
else
node->mouse_over = 0;
enum text_alignment
{
k_text_alignment_left = 0,
- k_text_alignment_center
+ k_text_alignment_center,
+ k_text_alignment_right
};
-static void ui_text( ui_ctx *ctx, const char *str, ui_px scale, enum text_alignment alignment )
+static ui_px ui_text( ui_ctx *ctx, const char *str, ui_px scale, enum text_alignment alignment )
{
ui_rect text_cursor;
u32 current_colour = ctx->override_colour;
+ ui_px offset = 0;
+ if( alignment != k_text_alignment_left )
+ {
+ const char *pch = str;
+ for(;;)
+ {
+ offset += (ui_glyph_spacing_x*scale)/4;
+ if( !(*pch) || *pch == '\n' )
+ break;
+ pch ++;
+ }
+
+ if( alignment == k_text_alignment_right )
+ text_cursor[0] = ctx->cursor[0]+ctx->cursor[2]-offset;
+ else
+ text_cursor[0] = (ctx->cursor[0]+(ctx->cursor[2]/2))-(offset/2);
+ }
+
const char *_c = str;
char c;
while( (c = *(_c ++)) )
text_cursor[0] += (ui_glyph_spacing_x*scale)/4;
}
+
+ return text_cursor[0];
}
// API control