simplify rectangles

This commit is contained in:
AF 2023-08-01 21:05:53 +00:00
parent a9f1134556
commit f9727d3117
3 changed files with 35 additions and 13 deletions

1
clippy.toml Normal file
View File

@ -0,0 +1 @@
cognitive-complexity-threshold = 3

View File

@ -1,6 +1,8 @@
//! # RADN
//! Rainbow something something Network.
#![warn(clippy::cognitive_complexity)]
pub mod atomic;
pub mod flow;
pub mod func;

View File

@ -207,25 +207,44 @@ impl WithLengthAndWidth<RenderedAny> {
match self.value {
RenderedAny::Common(common) => common.rectangles(vec, t, c),
RenderedAny::Wide(rendereds) => {
let mut c = c;
for rendered in rendereds.into_iter().map(|x| x.map(RenderedLong::any)) {
let rw = rendered.width;
rendered.rectangles(vec, t, c);
c += 2 * rw;
}
Self::wide_rectangles(c, rendereds, vec, t);
}
RenderedAny::Long(rendereds) => {
let mut t = t;
for rendered in rendereds.into_iter().map(|x| x.map(RenderedWide::any)) {
let rl = rendered.length;
let rw = rendered.width;
rendered.rectangles(vec, t, c + (self.width - rw) / 2);
t += rl;
}
Self::long_rectangles(t, rendereds, vec, c, self.width);
}
}
}
fn wide_rectangles(
c: usize,
rendereds: Vec<WithLengthAndWidth<RenderedLong>>,
vec: &mut Vec<(usize, usize)>,
t: usize,
) {
let mut c = c;
for rendered in rendereds.into_iter().map(|x| x.map(RenderedLong::any)) {
let rw = rendered.width;
rendered.rectangles(vec, t, c);
c += 2 * rw;
}
}
fn long_rectangles(
t: usize,
rendereds: Vec<WithLengthAndWidth<RenderedWide>>,
vec: &mut Vec<(usize, usize)>,
c: usize,
width: usize,
) {
let mut t = t;
for rendered in rendereds.into_iter().map(|x| x.map(RenderedWide::any)) {
let rl = rendered.length;
let rw = rendered.width;
rendered.rectangles(vec, t, c + (width - rw) / 2);
t += rl;
}
}
pub fn to_vec(self) -> Vec<(usize, usize)> {
let mut vec = Vec::new();
self.rectangles(&mut vec, 0, 0);