1 个不稳定版本
0.1.0 | 2023年6月28日 |
---|
#329 在 多媒体
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