textSize
handles multiple lines
Only valid between Window.beginand Window.end.
Parameters
- self:Font
- Font
- text:[]const u8
- []const u8
Source
Implementation
pub fn textSize(self: Font, text: []const u8) Size {
if (text.len == 0) {
// just want the normal text height
return .{ .w = 0, .h = self.textHeight() };
}
var ret = Size{};
var line_height_adj: f32 = 0.0;
var end: usize = 0;
while (end < text.len) {
if (end > 0) {
ret.h += line_height_adj;
}
var end_idx: usize = undefined;
var s = self.textSizeEx(text[end..], .{ .end_idx = &end_idx, .end_metric = .before });
if (self.line_height_factor >= 1.0) {
line_height_adj = s.h * (self.line_height_factor - 1.0);
} else {
s.h *= self.line_height_factor;
}
ret.h += s.h;
ret.w = @max(ret.w, s.w);
end += end_idx;
}
return ret;
}