mirror of
https://github.com/ratatui/ratatui.git
synced 2025-09-30 06:21:31 +00:00
fix for canvas rendering edge cases causing overflow errors
This commit is contained in:
parent
2a7eec816a
commit
47c68e40a2
@ -99,7 +99,7 @@ impl<'a> Context<'a> {
|
||||
let top = self.y_bounds[1];
|
||||
for (x, y) in shape
|
||||
.points()
|
||||
.filter(|&(x, y)| !(x < left || x > right || y < bottom || y > top))
|
||||
.filter(|&(x, y)| !(x <= left || x >= right || y <= bottom || y >= top))
|
||||
{
|
||||
let dy = ((top - y) * f64::from(self.height - 1) * 4.0 / (top - bottom)) as usize;
|
||||
let dx = ((x - left) * f64::from(self.width - 1) * 2.0 / (right - left)) as usize;
|
||||
|
37
tests/chart.rs
Normal file
37
tests/chart.rs
Normal file
@ -0,0 +1,37 @@
|
||||
use tui::backend::TestBackend;
|
||||
use tui::layout::Rect;
|
||||
use tui::style::{Color, Style};
|
||||
use tui::widgets::{Axis, Block, Borders, Chart, Dataset, Marker, Widget};
|
||||
use tui::Terminal;
|
||||
|
||||
#[test]
|
||||
fn zero_axes_ok() {
|
||||
let backend = TestBackend::new(100, 100);
|
||||
let mut terminal = Terminal::new(backend).unwrap();
|
||||
|
||||
terminal
|
||||
.draw(|mut f| {
|
||||
Chart::default()
|
||||
.block(Block::default().title("Plot").borders(Borders::ALL))
|
||||
.x_axis(
|
||||
Axis::default()
|
||||
.bounds([ 0.0, 0.0, ])
|
||||
.labels(&["0.0", "1.0"])
|
||||
)
|
||||
.y_axis(
|
||||
Axis::default()
|
||||
.bounds([ 0.0, 1.0, ])
|
||||
.labels(&["0.0", "1.0"])
|
||||
)
|
||||
.datasets(&[Dataset::default()
|
||||
.marker(Marker::Braille)
|
||||
.style(Style::default().fg(Color::Magenta))
|
||||
.data(&[(0.0, 0.0)])])
|
||||
.render(&mut f, Rect {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 100,
|
||||
height: 100,
|
||||
});
|
||||
}).unwrap();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user