rog-anime
is a crate for use with ASUS laptops that have an AniMe matrix display built in to them. The crate can be used with zbus to communicate with the asusd
daemon from the project this crate is part of, or it can be used standalone to write the data directly to USB by transforming the data to USB HID packets using builtin functions.
dbus
is enabled by default - this uses zvariant
to enable sending some types over dbus interfaces.
```rust use std::{ env, error::Error, f32::consts::PI, path::Path, process::exit, thread::sleep, time::Duration, };
use roganime::{ AniMeDataBuffer, {AniMeImage, Vec2}, }; use rogdbus::AuraDbusClient;
fn main() -> Result<(), Box
let mut image = AniMeImage::from_png(
Path::new("./doom.png"),
0.9, // scale
0.0, // rotation
Vec2::new(0.0, 0.0), // position
0.3, // brightness
)?;
loop {
image.angle += 0.05;
if image.angle > PI * 2.0 {
image.angle = 0.0
}
image.update();
client
.proxies()
.anime()
.write(<AniMeDataBuffer>::from(&image))
.unwrap();
sleep(Duration::from_micros(500));
}
} ```
```rust let mut image = AniMeImage::from_png( Path::new("./doom.png"), 0.9, // scale 0.0, // rotation Vec2::new(0.0, 0.0), // position 0.3, // brightness )?;
// convert to intermediate packet format
let buffer =
data/controller.gif
is an example ASUS diagonally orientated gif.data/diagonal-template.*
are templates for diagonal images or gifs.See https://blog.joshwalsh.me/asus-anime-matrix/ for details on how the diagonal layout works.
diagonal-template.*
is provided from the website above. It is best to
export the final file to 36px height - no scaling is done in asusd or
rog-anime crate for diagonal displays.