1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- extern crate cairo;
- extern crate pango;
- extern crate pangocairo;
- extern crate rand;
- extern crate serde_json;
- use rand::Rng;
- use pango::LayoutExt;
- fn main() {
- let surf = cairo::ImageSurface::create(
- cairo::Format::Rgb24,
- 3840,
- 2160
- ).unwrap();
- let mut rng = rand::thread_rng();
- let ctx = cairo::Context::new(&surf);
- let w = rng.gen::<u8>() % 3;
- ctx.set_source_rgb(
- if w == 0 { 0.4 } else { 0.2 },
- if w == 1 { 0.4 } else { 0.2 },
- if w == 2 { 0.4 } else { 0.2 },
- );
- ctx.paint();
- let quips: Vec<String> = serde_json::from_str(include_str!("../quips.json")).unwrap();
- let quip: &str = &quips[rng.gen::<usize>() % quips.len()];
- println!("{}", quip);
- ctx.set_source_rgb(1.0, 1.0, 1.0);
- let layout = pangocairo::functions::create_layout(&ctx).unwrap();
- layout.set_width(2880 * 1024);
- let mut font = pango::FontDescription::from_string("Fira Sans 92");
- font.set_weight(pango::Weight::Bold);
- layout.set_font_description(&font);
- ctx.move_to(480.0, 480.0);
- layout.set_text(quip);
- pangocairo::functions::show_layout(&ctx, &layout);
- {
- let mut f = std::fs::File::create("/home/gdritter/.background.png").unwrap();
- surf.write_to_png(&mut f).unwrap();
- }
- }
|