refactor: add egc_chunk_col_pos function
This commit is contained in:
parent
660449c1c0
commit
42ddbe5f2f
2 changed files with 19 additions and 0 deletions
|
|
@ -482,6 +482,21 @@ pub fn egc_chunk_width(self: *const Plane, chunk_: []const u8, abs_col_: usize,
|
||||||
return colcount;
|
return colcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn egc_chunk_col_pos(self: *const Plane, chunk_: []const u8, abs_col_: usize, tab_width: usize, col: usize) usize {
|
||||||
|
var abs_col = abs_col_;
|
||||||
|
var chunk = chunk_;
|
||||||
|
var colcount: usize = 0;
|
||||||
|
var cols: c_int = 0;
|
||||||
|
while (chunk.len > 0 and colcount < col) {
|
||||||
|
const bytes = self.egc_length(chunk, &cols, abs_col, tab_width);
|
||||||
|
colcount += @intCast(cols);
|
||||||
|
abs_col += @intCast(cols);
|
||||||
|
if (chunk.len < bytes) break;
|
||||||
|
chunk = chunk[bytes..];
|
||||||
|
}
|
||||||
|
return chunk_.len - chunk.len;
|
||||||
|
}
|
||||||
|
|
||||||
pub fn egc_last(egcs: []const u8) []const u8 {
|
pub fn egc_last(egcs: []const u8) []const u8 {
|
||||||
var iter = vaxis.unicode.graphemeIterator(egcs);
|
var iter = vaxis.unicode.graphemeIterator(egcs);
|
||||||
var last: []const u8 = egcs[0..0];
|
var last: []const u8 = egcs[0..0];
|
||||||
|
|
|
||||||
|
|
@ -1749,6 +1749,10 @@ pub fn egc_chunk_width(chunk: []const u8, abs_col: usize, tab_width: usize) usiz
|
||||||
return plane().egc_chunk_width(chunk, abs_col, tab_width);
|
return plane().egc_chunk_width(chunk, abs_col, tab_width);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn egc_chunk_col_pos(chunk: []const u8, abs_col: usize, tab_width: usize, col: usize) usize {
|
||||||
|
return plane().egc_chunk_col_pos(chunk, abs_col, tab_width, col);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn egc_last(egcs: []const u8) []const u8 {
|
pub fn egc_last(egcs: []const u8) []const u8 {
|
||||||
return renderer.Plane.egc_last(egcs);
|
return renderer.Plane.egc_last(egcs);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue