A simple CPU rendered GUI IDE experience.
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/src/main.rs b/src/main.rs index c0a0e7f..92e95b5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -380,23 +380,18 @@ pub(crate) fn entry(event_loop: EventLoop<()>) { (&mut cells, (c, r)), (t_ox, 0), x, - |(c, r), text, x| { + |(c, r), text, mut x| { if let State::Search(re, j, _) = &state { re.find_iter(&text.rope.to_string()) .enumerate() .for_each(|(i, m)| { - for x in text.slice( - (c, r), - x, - text.rope.byte_to_char( - m.start(), - ) - ..text + for x in x.get_char_range( + text.rope.byte_to_char(m.start()), text .rope .byte_to_char( m.end(), - ), - ) { + )) + { x.style.bg = if i == *j { [105, 83, 128] } else { @@ -437,7 +432,6 @@ pub(crate) fn entry(event_loop: EventLoop<()>) { &cells, (c, r), ppem, - BG, &mut fonts, ls, true, @@ -449,7 +443,7 @@ pub(crate) fn entry(event_loop: EventLoop<()>) { let fac = ppem / met.units_per_em as f32; let [(_x, _y), (_x2, _)] = text.position(sp); let [_x, _x2] = [_x, _x2].add(text.line_number_offset()+1); - let _y = _y - text.vo; + let _y = _y.wrapping_sub(text.vo); if !(cursor_position.1 == _y && (_x..=_x2).contains(&cursor_position.0)) { return; } @@ -460,21 +454,23 @@ pub(crate) fn entry(event_loop: EventLoop<()>) { let ppem = 18.0; let ls = 10.0; - let r = x.item.l().min(15); - let c = x.item.displayable(r); + let mut r = x.item.l().min(15); let (w, h) = dsb::size(&fonts.regular, ppem, ls, (x.item.c, r)); let top = position.1.checked_sub(h).unwrap_or((((_y + 1) as f32) * (fh + ls * fac)).round() as usize,); + let (_, y) = dsb::fit(&fonts.regular, ppem, ls, (window.inner_size().width as _ /* - left */,( window.inner_size().height as usize - top ) )); + r = r.min(y); + let c = x.item.displayable(r); let left = if position.0 + w as usize > window.inner_size().width as usize { window.inner_size().width as usize- w as usize } else { position.0 }; + let (w, h) = dsb::size(&fonts.regular, ppem, ls, (x.item.c, r)); // let mut i2 = Image::build(w as _, h as _).fill(BG); unsafe{ dsb::render( &c, (x.item.c, 0), ppem, - hov::BG, &mut fonts, ls, true, |