servicepoint_binding_c/commands/
brightness_grid_command.rs

1use crate::macros::wrap;
2use servicepoint::{BrightnessGrid, BrightnessGridCommand, Origin};
3use std::ptr::NonNull;
4
5wrap!(
6    BrightnessGridCommand {
7    derives: crate::commands::derive_command[BrightnessGrid], crate::commands::derive_origin_accessors;
8    properties:
9        prop grid: BrightnessGrid { get mut; set move; };
10    functions:
11        /// Set the brightness of individual tiles in a rectangular area of the display.
12        ///
13        /// The passed [BrightnessGrid] gets consumed.
14        ///
15        /// Returns: a new [BrightnessGridCommand] instance.
16        fn new(
17            grid: move NonNull<BrightnessGrid>,
18            origin_x: val usize,
19            origin_y: val usize
20        ) -> move NonNull<BrightnessGridCommand> {
21            BrightnessGridCommand {
22                grid,
23                origin: Origin::new(origin_x, origin_y),
24            }
25        };
26
27        /// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
28        /// leaving other fields as their default values.
29        fn from_grid(grid: move NonNull<BrightnessGrid>) -> move NonNull<BrightnessGridCommand> {
30            grid.into()
31        };
32    }
33);