1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::shapes::circle::Circle;
use crate::shapes::line::Line;
use crate::shapes::rect::Rect;
use crate::shapes::{DrawType, Shape};
impl From<Circle> for Rect {
fn from(circle: Circle) -> Self {
let center = circle.center();
let r = circle.radius() as isize;
Rect::new(
(center.x - r, center.y - r),
(center.x + r, center.y + r),
circle.draw_type(),
)
}
}
impl From<Line> for Rect {
fn from(line: Line) -> Self {
Rect::new(line.points()[0], line.points()[1], line.draw_type())
}
}
impl From<Rect> for Line {
fn from(rect: Rect) -> Self {
let color = match rect.draw_type() {
DrawType::Stroke(c) => c,
DrawType::Fill(c) => c,
};
Line::new(rect.points()[0], rect.points()[1], color)
}
}