58 lines
1.6 KiB
Rust
58 lines
1.6 KiB
Rust
use crate::mem::{heap_clone, heap_drop, heap_move_nonnull, heap_remove};
|
|
use servicepoint::{
|
|
BitmapCommand, Brightness, GlobalBrightnessCommand, Packet,
|
|
};
|
|
use std::ptr::NonNull;
|
|
|
|
/// Set the brightness of all tiles to the same value.
|
|
///
|
|
/// Returns: a new [GlobalBrightnessCommand] instance.
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_new(
|
|
brightness: Brightness,
|
|
) -> NonNull<GlobalBrightnessCommand> {
|
|
heap_move_nonnull(GlobalBrightnessCommand::from(brightness))
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_into_packet(
|
|
command: NonNull<GlobalBrightnessCommand>,
|
|
) -> NonNull<Packet> {
|
|
heap_move_nonnull(unsafe { heap_remove(command) }.into())
|
|
}
|
|
|
|
/// Clones an [GlobalBrightnessCommand] instance.
|
|
///
|
|
/// returns: a new [GlobalBrightnessCommand] instance.
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_clone(
|
|
command: NonNull<GlobalBrightnessCommand>,
|
|
) -> NonNull<GlobalBrightnessCommand> {
|
|
unsafe { heap_clone(command) }
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_free(
|
|
command: NonNull<BitmapCommand>,
|
|
) {
|
|
unsafe { heap_drop(command) }
|
|
}
|
|
|
|
/// Moves the provided bitmap to be contained in the command.
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_set(
|
|
mut command: NonNull<GlobalBrightnessCommand>,
|
|
brightness: Brightness,
|
|
) {
|
|
unsafe {
|
|
command.as_mut().brightness = brightness;
|
|
}
|
|
}
|
|
|
|
#[no_mangle]
|
|
pub unsafe extern "C" fn sp_cmd_brightness_global_get(
|
|
mut command: NonNull<GlobalBrightnessCommand>,
|
|
) -> Brightness {
|
|
unsafe { command.as_mut().brightness }
|
|
}
|