use brightness type from base crate
This commit is contained in:
		
							parent
							
								
									0a58bd7303
								
							
						
					
					
						commit
						ae6d527d81
					
				
					 3 changed files with 43 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -20,18 +20,10 @@
 | 
			
		|||
//! ```
 | 
			
		||||
 | 
			
		||||
use crate::SPByteSlice;
 | 
			
		||||
use servicepoint::{BrightnessGrid, DataRef, Grid};
 | 
			
		||||
use std::convert::Into;
 | 
			
		||||
use servicepoint::{Brightness, BrightnessGrid, DataRef, Grid};
 | 
			
		||||
use std::mem::transmute;
 | 
			
		||||
use std::ptr::NonNull;
 | 
			
		||||
 | 
			
		||||
/// see [servicepoint::Brightness::MIN]
 | 
			
		||||
pub const SP_BRIGHTNESS_MIN: u8 = 0;
 | 
			
		||||
/// see [servicepoint::Brightness::MAX]
 | 
			
		||||
pub const SP_BRIGHTNESS_MAX: u8 = 11;
 | 
			
		||||
/// Count of possible brightness values
 | 
			
		||||
pub const SP_BRIGHTNESS_LEVELS: u8 = 12;
 | 
			
		||||
 | 
			
		||||
/// Creates a new [SPBrightnessGrid] with the specified dimensions.
 | 
			
		||||
///
 | 
			
		||||
/// returns: [SPBrightnessGrid] initialized to 0. Will never return NULL.
 | 
			
		||||
| 
						 | 
				
			
			@ -165,8 +157,8 @@ pub unsafe extern "C" fn sp_brightness_grid_get(
 | 
			
		|||
    brightness_grid: NonNull<BrightnessGrid>,
 | 
			
		||||
    x: usize,
 | 
			
		||||
    y: usize,
 | 
			
		||||
) -> u8 {
 | 
			
		||||
    unsafe { brightness_grid.as_ref().get(x, y) }.into()
 | 
			
		||||
) -> Brightness {
 | 
			
		||||
    unsafe { brightness_grid.as_ref().get(x, y) }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Sets the value of the specified position in the [SPBrightnessGrid].
 | 
			
		||||
| 
						 | 
				
			
			@ -196,11 +188,9 @@ pub unsafe extern "C" fn sp_brightness_grid_set(
 | 
			
		|||
    brightness_grid: NonNull<BrightnessGrid>,
 | 
			
		||||
    x: usize,
 | 
			
		||||
    y: usize,
 | 
			
		||||
    value: u8,
 | 
			
		||||
    value: Brightness,
 | 
			
		||||
) {
 | 
			
		||||
    let brightness = servicepoint::Brightness::try_from(value)
 | 
			
		||||
        .expect("invalid brightness value");
 | 
			
		||||
    unsafe { (*brightness_grid.as_ptr()).set(x, y, brightness) };
 | 
			
		||||
    unsafe { (*brightness_grid.as_ptr()).set(x, y, value) };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Sets the value of all cells in the [SPBrightnessGrid].
 | 
			
		||||
| 
						 | 
				
			
			@ -224,11 +214,9 @@ pub unsafe extern "C" fn sp_brightness_grid_set(
 | 
			
		|||
#[no_mangle]
 | 
			
		||||
pub unsafe extern "C" fn sp_brightness_grid_fill(
 | 
			
		||||
    brightness_grid: NonNull<BrightnessGrid>,
 | 
			
		||||
    value: u8,
 | 
			
		||||
    value: Brightness,
 | 
			
		||||
) {
 | 
			
		||||
    let brightness = servicepoint::Brightness::try_from(value)
 | 
			
		||||
        .expect("invalid brightness value");
 | 
			
		||||
    unsafe { (*brightness_grid.as_ptr()).fill(brightness) };
 | 
			
		||||
    unsafe { (*brightness_grid.as_ptr()).fill(value) };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Gets the width of the [SPBrightnessGrid] instance.
 | 
			
		||||
| 
						 | 
				
			
			@ -302,8 +290,9 @@ pub unsafe extern "C" fn sp_brightness_grid_height(
 | 
			
		|||
pub unsafe extern "C" fn sp_brightness_grid_unsafe_data_ref(
 | 
			
		||||
    brightness_grid: NonNull<BrightnessGrid>,
 | 
			
		||||
) -> SPByteSlice {
 | 
			
		||||
    assert_eq!(size_of::<servicepoint::Brightness>(), 1);
 | 
			
		||||
    //noinspection RsAssertEqual
 | 
			
		||||
    const _: () = assert!(size_of::<Brightness>() == 1);
 | 
			
		||||
 | 
			
		||||
    let data = unsafe { (*brightness_grid.as_ptr()).data_ref_mut() };
 | 
			
		||||
    // this assumes more about the memory layout than rust guarantees. yikes!
 | 
			
		||||
    unsafe { SPByteSlice::from_slice(transmute(data)) }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,10 +3,7 @@
 | 
			
		|||
//! prefix `sp_command_`
 | 
			
		||||
 | 
			
		||||
use crate::SPBitVec;
 | 
			
		||||
use servicepoint::{
 | 
			
		||||
    BinaryOperation, Bitmap, BrightnessGrid, CharGrid, CompressionCode,
 | 
			
		||||
    Cp437Grid, GlobalBrightnessCommand, Packet, TypedCommand,
 | 
			
		||||
};
 | 
			
		||||
use servicepoint::{BinaryOperation, Bitmap, Brightness, BrightnessGrid, CharGrid, CompressionCode, Cp437Grid, GlobalBrightnessCommand, Packet, TypedCommand};
 | 
			
		||||
use std::ptr::NonNull;
 | 
			
		||||
 | 
			
		||||
/// A low-level display command.
 | 
			
		||||
| 
						 | 
				
			
			@ -152,10 +149,8 @@ pub unsafe extern "C" fn sp_command_fade_out() -> NonNull<TypedCommand> {
 | 
			
		|||
///   by explicitly calling `sp_command_free`.
 | 
			
		||||
#[no_mangle]
 | 
			
		||||
pub unsafe extern "C" fn sp_command_brightness(
 | 
			
		||||
    brightness: u8,
 | 
			
		||||
    brightness: Brightness,
 | 
			
		||||
) -> NonNull<TypedCommand> {
 | 
			
		||||
    let brightness = servicepoint::Brightness::try_from(brightness)
 | 
			
		||||
        .expect("invalid brightness");
 | 
			
		||||
    let result = Box::new(GlobalBrightnessCommand::from(brightness).into());
 | 
			
		||||
    NonNull::from(Box::leak(result))
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue