aboutsummaryrefslogtreecommitdiffstats
path: root/src/ratatui/widgets/canvas/points.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ratatui/widgets/canvas/points.rs')
-rw-r--r--src/ratatui/widgets/canvas/points.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/ratatui/widgets/canvas/points.rs b/src/ratatui/widgets/canvas/points.rs
new file mode 100644
index 00000000..d9f97522
--- /dev/null
+++ b/src/ratatui/widgets/canvas/points.rs
@@ -0,0 +1,30 @@
+use crate::ratatui::{
+ style::Color,
+ widgets::canvas::{Painter, Shape},
+};
+
+/// A shape to draw a group of points with the given color
+#[derive(Debug, Clone)]
+pub struct Points<'a> {
+ pub coords: &'a [(f64, f64)],
+ pub color: Color,
+}
+
+impl<'a> Shape for Points<'a> {
+ fn draw(&self, painter: &mut Painter) {
+ for (x, y) in self.coords {
+ if let Some((x, y)) = painter.get_point(*x, *y) {
+ painter.paint(x, y, self.color);
+ }
+ }
+ }
+}
+
+impl<'a> Default for Points<'a> {
+ fn default() -> Points<'a> {
+ Points {
+ coords: &[],
+ color: Color::Reset,
+ }
+ }
+}