//! This example shows painting quadratic bezier curve using common-piet crate and //! kurbo rough shape generator use euclid::Point2D; use palette::Srgba; use piet::{Color, RenderContext}; use piet_common::kurbo::Rect; use piet_common::Device; use rough_piet::KurboGenerator; use roughr::core::{FillStyle, OptionsBuilder}; const WIDTH: usize = 250; const HEIGHT: usize = 200; /// For now, assume pixel density (dots per inch) const DPI: f32 = 96.; fn main() { let mut device = Device::new().unwrap(); let mut bitmap = device.bitmap_target(WIDTH, HEIGHT, 1.0).unwrap(); let mut rc = bitmap.render_context(); let options = OptionsBuilder::default() .stroke(Srgba::from_components((114u8, 87u8, 82u8, 255u8)).into_format()) .fill(Srgba::from_components((254u8, 246u8, 201u8, 255u8)).into_format()) .fill_style(FillStyle::Hachure) .fill_weight(DPI * 0.01) .build() .unwrap(); let generator = KurboGenerator::new(options); let bezier_quadratic = generator.bezier_quadratic::( Point2D::new(WIDTH as f32, HEIGHT as f32), Point2D::new(-(1.0 / 3.0) * WIDTH as f32, HEIGHT as f32 / 2.0), Point2D::new((2.0 / 3.0) * WIDTH as f32, 0.0), ); let background_color = Color::from_hex_str("96C0B7").unwrap(); rc.fill( Rect::new(0.0, 0.0, WIDTH as f64, HEIGHT as f64), &background_color, ); bezier_quadratic.draw(&mut rc); rc.finish().unwrap(); std::mem::drop(rc); bitmap .save_to_file("bezier_quadratic.png") .expect("file save error"); }