This commit is contained in:
ntr 2019-10-25 16:09:30 +11:00
parent 91501428ef
commit d8bad68216

View File

@ -267,8 +267,15 @@ pub fn smiley(id: Uuid) -> Result<Uuid, Error> {
let l_dist = Normal::new(50.0, 10.0); let l_dist = Normal::new(50.0, 10.0);
let s_dist = Normal::new(50.0, 20.0); let s_dist = Normal::new(50.0, 20.0);
let eyes = [
("50 800, 300 550, 550 800", 1),
("50 550, 300 800, 550 550", 1),
];
let shape_dist = WeightedIndex::new(eyes.iter().map(|v| v.1))?;
// basic layout is 2000x1000 box w/ 50 padding
// basic layout is 2000x2000 box w/ 50 padding
// 2:1 for each x,y // 2:1 for each x,y
// left eye is top left // left eye is top left
@ -283,60 +290,31 @@ pub fn smiley(id: Uuid) -> Result<Uuid, Error> {
// x = 50 + 500 + xoffset // x = 50 + 500 + xoffset
// y = 50 + 750 + yoffset // y = 50 + 750 + yoffset
write!(&mut svg, "<svg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 2100 1100' width='2000' height='2000' background=\"black\" ><g>")?; write!(&mut svg, "<svg xmlns='http://www.w3.org/2000/svg' version='1.1' viewBox='0 0 2100 2100' width='2000' height='2000' background=\"black\" ><g>")?;
let n_points = rng.gen_range(3, 5); let left_eye_path = "50 800, 300 550, 550 800";
let left_eye_path: String = std::iter::repeat(())
.map(|()| {
let x = 50 + (rng.gen_range(0, 5) * 100);
let y = 50 + (rng.gen_range(0, 5) * 50);
format!("{} {}", x, y)
})
.take(n_points)
.collect::<Vec<String>>()
.join(",");
// left eye // left eye
write!(&mut svg, write!(&mut svg,
"<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"15px\" x=\"50\" y=\"50\" points=\"{:}\" />", "<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"30px\" x=\"50\" y=\"50\" points=\"{:}\" />",
left_eye_path)?; left_eye_path)?;
let n_points = rng.gen_range(3, 5); let right_eye_path = "1550 800, 1800 550, 2050 800";
let right_eye_path: String = std::iter::repeat(())
.map(|()| {
let x = 50 + 1500 + (rng.gen_range(0, 5) * 100);
let y = 50 + (rng.gen_range(0, 5) * 50);
format!("{} {}", x, y)
})
.take(n_points)
.collect::<Vec<String>>()
.join(",");
// right eye // right eye
write!(&mut svg, write!(&mut svg,
"<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"15px\" x=\"1550\" y=\"50\" points=\"{:}\" />", "<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"30px\" x=\"1550\" y=\"50\" points=\"{:}\" />",
right_eye_path)?; right_eye_path)?;
let n_points = rng.gen_range(3, 5); let mouth_path = "550 1550, 1550 1550";
let mouth_path: String = std::iter::repeat(())
.map(|()| {
let x = 50 + 500 + (rng.gen_range(0, 10) * 100);
let y = 50 + 750 + (rng.gen_range(0, 5) * 50);
format!("{} {}", x, y)
})
.take(n_points)
.collect::<Vec<String>>()
.join(",");
// mouth // mouth
write!(&mut svg, write!(&mut svg,
"<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"15px\" x=\"550\" y=\"800\" points=\"{:}\" />", "<polyline fill=\"none\" stroke=\"whitesmoke\" stroke-width=\"30px\" x=\"550\" y=\"800\" points=\"{:}\" />",
mouth_path)?; mouth_path)?;
write!(&mut svg, "</g></svg>")?; write!(&mut svg, "</g></svg>")?;
// let dest = format!("/var/lib/mnml/face.svg");
let dest = format!("/var/lib/mnml/public/imgs/{}.svg", id); let dest = format!("/var/lib/mnml/public/imgs/{}.svg", id);
println!("/var/lib/mnml/public/imgs/{}.svg", id);
let mut file = File::create(dest)?; let mut file = File::create(dest)?;
file.write_all(&svg)?; file.write_all(&svg)?;