use mr_pdf::{Color, Pdf};
fn main() -> std::io::Result<()> {
let bytes = Pdf::render(|pdf| {
pdf.set_title("Linear Gradients Showcase");
pdf.fill_gradient_rect(
0.0,
750.0,
595.0,
92.0,
Color::Rgb(41, 128, 185),
Color::Rgb(142, 68, 173),
false, )?;
pdf.set_cursor(50.0, 810.0);
pdf.set_fill_color(Color::Rgb(255, 255, 255))?;
pdf.text("PREMIUM GRADIENTS").size(24.0);
pdf.set_cursor(50.0, 720.0);
pdf.set_fill_color(Color::Rgb(0, 0, 0))?;
pdf.text("Horizontal Gradients Showcase:").size(16.0);
let colors = [
(Color::Rgb(255, 0, 0), Color::Rgb(255, 255, 0)), (Color::Rgb(0, 255, 0), Color::Rgb(0, 255, 255)), (Color::Rgb(0, 0, 255), Color::Rgb(255, 0, 255)), (Color::Rgb(52, 73, 94), Color::Rgb(44, 62, 80)), ];
let mut start_y = 650.0;
for (c1, c2) in colors {
pdf.fill_gradient_rect(50.0, start_y, 500.0, 40.0, c1, c2, true)?;
start_y -= 60.0;
}
pdf.set_cursor(50.0, start_y);
pdf.text("Gradients + Rounded Corners:").size(16.0);
start_y -= 40.0;
let bx = 50.0;
let by = start_y - 40.0;
let bw = 150.0;
let bh = 40.0;
let br = 20.0;
pdf.ensure_page()?;
let stream = pdf.get_stream();
stream.push_str("q\n");
pdf.fill_gradient_rect(
bx,
by,
bw,
bh,
Color::Rgb(230, 126, 34),
Color::Rgb(211, 84, 0),
false,
)?;
pdf.set_stroke_color(Color::Rgb(0, 0, 0))?;
pdf.rounded_rect(bx, by, bw, bh, br)?;
pdf.set_cursor(bx + 35.0, by + 25.0);
pdf.set_fill_color(Color::Rgb(255, 255, 255))?;
pdf.text("GRADIANT").size(12.0);
Ok(())
})?;
std::fs::create_dir_all("preview")?;
std::fs::write("preview/gradient_showcase.pdf", bytes)?;
println!("Successfully generated preview/gradient_showcase.pdf!");
Ok(())
}