use maray::*;
use maray::compressor::*;
use maray::grid::*;
fn main() {
let size: [u32; 2] = [1024; 2];
let fx = div(x(), nat(size[0] as u64));
let fy = div(y(), nat(size[1] as u64));
let p = [fx, fy];
let texture = set_unit_square(chess(8));
let grid = Grid2([8, 8]);
let p1 = [recip(nat(5)), recip(nat(2))];
let p2 = [sub(nat(1), recip(nat(5))), recip(nat(2))];
let p3 = [nat(0), sub(nat(1), recip(nat(5)))];
let p4 = [nat(1), sub(nat(1), recip(nat(5)))];
let mut shape = nat(0);
for i in 0..grid.0[0] {
for j in 0..grid.0[1] {
let (quad, uv) = grid.cell([i, j], [p1.clone(), p2.clone(), p3.clone(), p4.clone()]);
let [(tri, uv), (tri2, uv2)] = quad_to_tri(quad, uv);
let get_uv = texture.clone()
.subst2(&to_uv(tri.clone(), uv, [x(), y()]));
let shape1 = mul(inside_triangle(tri, [x(), y()]), get_uv)
.subst2(&p);
let get_uv2 = texture
.subst2(&to_uv(tri2.clone(), uv2, [x(), y()]));
let shape2 = mul(inside_triangle(tri2, [x(), y()]), get_uv2)
.subst2(&p);
shape = set_or(shape, set_or(shape1, shape2));
}
}
let shape = shape.simplify();
let shape = compress(shape);
let r = mul(shape.clone(), nat(255));
let g = mul(shape.clone(), nat(255));
let b = mul(shape.clone(), nat(255));
let color = [r, g, b];
save("data/chess.maray", (size, color)).unwrap();
let shape_str = format!("{}", shape);
println!("\n{}\n\n{}", shape_str, shape_str.len());
}