summaryrefslogtreecommitdiff
path: root/src/attributes/rectangle.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/attributes/rectangle.rs')
-rw-r--r--src/attributes/rectangle.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/attributes/rectangle.rs b/src/attributes/rectangle.rs
new file mode 100644
index 0000000..9b36ee2
--- /dev/null
+++ b/src/attributes/rectangle.rs
@@ -0,0 +1,33 @@
+use crate::attributes::point::Point;
+use crate::dot::DotString;
+use std::borrow::Cow;
+
+pub struct Rectangle {
+ lower_left: Point,
+ upper_right: Point,
+}
+
+impl<'a> DotString<'a> for Rectangle {
+ fn dot_string(&self) -> Cow<'a, str> {
+ format!(
+ "{:.1},{:.1},{:.1},{:.1}",
+ self.lower_left.x, self.lower_left.y, self.upper_right.x, self.upper_right.y
+ )
+ .into()
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use crate::attributes::{Rectangle, Point};
+ use crate::DotString;
+
+ #[test]
+ fn dot_string() {
+ assert_eq!("0.0,0.0,1.0,1.0", Rectangle {
+ lower_left: Point::new_2d(0.0, 0.0),
+ upper_right: Point::new_2d(1.0, 1.0)
+ }.dot_string());
+ }
+
+} \ No newline at end of file