}
}
-fn ratatui_set_string(buf: &mut Buffer, y: usize, x: usize,
+fn ratatui_set_string(buf: &mut Buffer, x: usize, y: usize,
text: &ColouredStringSlice<'_>) {
let mut x = x;
if let Ok(y) = y.try_into() {
self.terminal.draw(|frame| {
let area = frame.size();
let buf = frame.buffer_mut();
- if let Some((y, x)) = self.state.draw_frame(area, buf) {
- if let (Ok(y), Ok(x)) = (y.try_into(), x.try_into()) {
+ if let Some((x, y)) = self.state.draw_frame(area, buf) {
+ if let (Ok(x), Ok(y)) = (x.try_into(), y.try_into()) {
frame.set_cursor(x, y);
}
}
pub enum CursorPosition {
None, // cursor is hidden
End, // cursor at the end of the last drawn line (quite common in this UI)
- At(usize, usize), // (y,x)
+ At(usize, usize), // (x,y)
}
pub trait ActivityState {
- fn draw(&self, h: usize, w: usize) -> (Vec<ColouredString>, CursorPosition);
+ fn draw(&self, w: usize, h: usize) -> (Vec<ColouredString>, CursorPosition);
fn handle_keypress(&mut self, key: OurKey) -> HandleEventResult;
}
fn draw_frame(&self, area: Rect, buf: &mut Buffer)
-> Option<(usize, usize)> {
let (lines, cursorpos) = self.activity_state.draw(
- area.height as usize, area.width as usize);
+ area.width as usize, area.height as usize);
buf.reset();
let mut last_x = 0;
let mut last_y = 0;
for (y, line) in lines.iter().enumerate() {
- ratatui_set_string(buf, y, 0, &line.slice());
+ ratatui_set_string(buf, 0, y, &line.slice());
last_y = y;
last_x = line.width();
}
match cursorpos {
CursorPosition::None => None,
- CursorPosition::At(y, x) => Some((y, x)),
- CursorPosition::End => Some((last_y, last_x)),
+ CursorPosition::At(x, y) => Some((x, y)),
+ CursorPosition::End => Some((last_x, last_y)),
}
}