pub trait RenderContext {
    // Required methods
    fn fill(&mut self, layer: &str, path: BezPath, brush: &PaintBrush);
    fn stroke(
        &mut self,
        layer: &str,
        path: BezPath,
        brush: &PaintBrush,
        width: f64
    );
    fn save(&mut self, layer: &str);
    fn restore(&mut self, layer: &str);
    fn clip(&mut self, layer: &str, path: BezPath);
    fn load_image(
        &mut self,
        path: &str,
        image: &[u8],
        width: usize,
        height: usize
    );
    fn draw_image(&mut self, layer: &str, image_path: &str, rect: Rect);
    fn transform(&mut self, layer: &str, affine: Affine);
    fn layers(&self) -> Vec<&str>;
}