1 个不稳定版本

0.1.0 2023年6月28日

#329多媒体

MIT 许可证

21KB
149 代码行

概述

micrrou 是一个Rust crate,旨在封装并简化 nannou。虽然 nannou 本身有良好的接口,但 micrrou 旨在结合常用用例以减少样板代码。

micrrou 的另一个目标是提供一些算法,希望有助于通过代码生成艺术。

示例

示例位于 examples 目录中。

创建空白画布示例如下。

use std::slice::Iter;

use micrrou::prelude::*;

struct MyModel {
    drawings: Vec<Box<dyn Drawable>>,
    frame_count: usize,
}

impl Model for MyModel {
    fn create() -> Self {
        Self {
            drawings: Vec::new(),
            frame_count: 0,
        }
    }

    fn get_drawings<'a>(&'a self) -> Iter<'a, Box<dyn Drawable>> {
        self.drawings.iter()
    }

    fn update(&mut self) {
        self.frame_count += 1;
        println!("frame count: {}", self.frame_count);
    }
}

pub fn main() {
    nannou_app::launch::<MyModel, 900, 900>();
}

在这里,我们使用 nannou_app::launch 函数,使用 MyModel 作为模型,创建一个900x900像素的空白画布。

macrrou

maccrou 是一个可选的过程宏,可以作为设置 nannou_app 的替代方案。

use std::slice::Iter;

use micrrou::launch_nannou_app;
use micrrou::{nannou_app::Model, prelude::Drawable};

struct ModelData {
    drawings: Vec<Box<dyn Drawable>>,
}

impl Default for ModelData {
    fn default() -> Self {
        Self {
            drawings: Vec::new(),
        }
    }
}

impl Model for ModelData {
    fn create() -> Self {
        Self::default()
    }

    fn get_drawings(&self) -> Iter<'_, Box<dyn Drawable>> {
        self.drawings.iter()
    }

    fn update(&mut self) {}
}

pub fn main() {
    launch_nannou_app!(for ModelData, canvas(width=900, height=900));
}

在这里,我们使用 launch_nannou_app! 宏,使用 ModelData 作为 Model,创建一个900x900像素的画布。

依赖项

~20–37MB
~565K SLoC