first commit
commit
d80952ac92
|
|
@ -0,0 +1 @@
|
|||
/target
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,7 @@
|
|||
[package]
|
||||
name = "printstick"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
printpdf = "0.8.2"
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
pub struct Config {
|
||||
pub bleed_mm: f64,
|
||||
pub page_width_mm: f64,
|
||||
pub page_height_mm: f64,
|
||||
pub spacing_mm: f64
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub fn load_a4() -> Config {
|
||||
Config {
|
||||
bleed_mm: 5.0,
|
||||
page_width_mm: 297.0,
|
||||
page_height_mm: 420.0,
|
||||
spacing_mm: 5.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
use crate::config::Config;
|
||||
use crate::stickers::Sticker;
|
||||
|
||||
pub fn stickers_placement() -> Vec<Sticker> {
|
||||
let config = Config::load_a4();
|
||||
|
||||
let mut positions: Vec<Sticker> = vec![];
|
||||
|
||||
let sticker_width = 50.0;
|
||||
let sticker_height = 50.0;
|
||||
|
||||
let usable_width: f64 = config.page_width_mm - 2.0 * config.bleed_mm;
|
||||
let usable_height: f64 = config.page_height_mm - 2.0 * config.bleed_mm;
|
||||
let total_width = sticker_width + config.spacing_mm;
|
||||
let total_height = sticker_height + config.spacing_mm;
|
||||
|
||||
|
||||
let row = (usable_width / total_width).floor() as usize;
|
||||
let col = (usable_height / total_height).floor() as usize;
|
||||
|
||||
for i in 0..col {
|
||||
for j in 0..row {
|
||||
let x = config.bleed_mm + (j as f64) * total_width;
|
||||
let y = config.bleed_mm + (i as f64) * total_height;
|
||||
|
||||
positions.push(
|
||||
Sticker {
|
||||
path: String::from("Bonjour"),
|
||||
position: (x, y),
|
||||
width: sticker_width,
|
||||
height: sticker_height
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
positions
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
pub mod layout;
|
||||
pub mod config;
|
||||
pub mod stickers;
|
||||
pub mod pdf;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
use printstick::layout::stickers_placement;
|
||||
use printstick::stickers::Sticker;
|
||||
|
||||
fn main() {
|
||||
let positions: Vec<Sticker> = stickers_placement();
|
||||
|
||||
println!("Generated positions: {:?}", positions);
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
// pub fn generate_pdf(output_path: &str, positions: Vec<(Mm, Mm)>, stickers: &[Sticker]) {
|
||||
|
||||
// }
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
#[derive(Debug)]
|
||||
pub struct Sticker {
|
||||
pub path: String,
|
||||
pub position: (f64, f64), // (x, y)
|
||||
pub width: f64,
|
||||
pub height: f64
|
||||
}
|
||||
Loading…
Reference in New Issue