servicepoint_binding_c 0.15.0

C bindings for the servicepoint crate.
Documentation
use crate::macros::wrap;
use servicepoint::{BrightnessGrid, BrightnessGridCommand, Origin};
use std::ptr::NonNull;

wrap!(
    BrightnessGridCommand {
    derives: crate::commands::derive_command[BrightnessGrid], crate::commands::derive_origin_accessors;
    properties:
        prop grid: BrightnessGrid { get mut; set move; };
    functions:
        /// Set the brightness of individual tiles in a rectangular area of the display.
        ///
        /// The passed [BrightnessGrid] gets consumed.
        ///
        /// Returns: a new [BrightnessGridCommand] instance.
        fn new(
            grid: move NonNull<BrightnessGrid>,
            origin_x: val usize,
            origin_y: val usize
        ) -> move NonNull<BrightnessGridCommand> {
            BrightnessGridCommand {
                grid,
                origin: Origin::new(origin_x, origin_y),
            }
        };

        /// Moves the provided [BrightnessGrid] into a new [BrightnessGridCommand],
        /// leaving other fields as their default values.
        fn from_grid(grid: move NonNull<BrightnessGrid>) -> move NonNull<BrightnessGridCommand> {
            grid.into()
        };
    }
);