encode origin unit in type
This commit is contained in:
		
							parent
							
								
									672b5e0581
								
							
						
					
					
						commit
						e0647bacd6
					
				
					 10 changed files with 120 additions and 76 deletions
				
			
		|  | @ -44,6 +44,6 @@ fn main() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     connection |     connection | ||||||
|         .send(Command::Cp437Data(Origin(0, 0), chars)) |         .send(Command::Cp437Data(Origin::new(0, 0), chars)) | ||||||
|         .expect("sending text failed"); |         .expect("sending text failed"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ fn main() { | ||||||
| 
 | 
 | ||||||
|     connection |     connection | ||||||
|         .send(BitmapLinearWin( |         .send(BitmapLinearWin( | ||||||
|             Origin(0, 0), |             Origin::new(0, 0), | ||||||
|             pixels, |             pixels, | ||||||
|             CompressionCode::Uncompressed, |             CompressionCode::Uncompressed, | ||||||
|         )) |         )) | ||||||
|  | @ -33,6 +33,6 @@ fn main() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     connection |     connection | ||||||
|         .send(Command::CharBrightness(Origin(0, 0), brightnesses)) |         .send(Command::CharBrightness(Origin::new(0, 0), brightnesses)) | ||||||
|         .expect("send failed"); |         .expect("send failed"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ fn main() { | ||||||
|     loop { |     loop { | ||||||
|         connection |         connection | ||||||
|             .send(Command::BitmapLinearWin( |             .send(Command::BitmapLinearWin( | ||||||
|                 Origin(0, 0), |                 Origin::new(0, 0), | ||||||
|                 field.clone(), |                 field.clone(), | ||||||
|                 CompressionCode::Lzma, |                 CompressionCode::Lzma, | ||||||
|             )) |             )) | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ fn main() { | ||||||
|         } |         } | ||||||
|         connection |         connection | ||||||
|             .send(Command::BitmapLinearWin( |             .send(Command::BitmapLinearWin( | ||||||
|                 Origin(0, 0), |                 Origin::new(0, 0), | ||||||
|                 pixels.clone(), |                 pixels.clone(), | ||||||
|                 CompressionCode::Lzma, |                 CompressionCode::Lzma, | ||||||
|             )) |             )) | ||||||
|  |  | ||||||
|  | @ -1,26 +1,12 @@ | ||||||
| use bitvec::prelude::BitVec; | use bitvec::prelude::BitVec; | ||||||
| 
 | 
 | ||||||
| use crate::command_code::CommandCode; |  | ||||||
| use crate::compression::{into_compressed, into_decompressed}; |  | ||||||
| use crate::{ | use crate::{ | ||||||
|     Brightness, ByteGrid, CompressionCode, Grid, Header, Packet, PixelGrid, |     command_code::CommandCode, | ||||||
|     SpBitVec, TILE_SIZE, |     compression::{into_compressed, into_decompressed}, | ||||||
|  |     Brightness, ByteGrid, CompressionCode, Grid, Header, Origin, Packet, | ||||||
|  |     PixelGrid, Pixels, SpBitVec, Tiles, TILE_SIZE, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /// An origin marks the top left position of a window sent to the display.
 |  | ||||||
| #[derive(Debug, Clone, Copy, PartialEq)] |  | ||||||
| pub struct Origin(pub usize, pub usize); |  | ||||||
| 
 |  | ||||||
| impl std::ops::Add<Origin> for Origin { |  | ||||||
|     type Output = Origin; |  | ||||||
| 
 |  | ||||||
|     fn add(self, rhs: Origin) -> Self::Output { |  | ||||||
|         let Origin(x1, y1) = self; |  | ||||||
|         let Origin(x2, y2) = rhs; |  | ||||||
|         Origin(x1 + x2, y1 + y2) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /// Type alias for documenting the meaning of the u16 in enum values
 | /// Type alias for documenting the meaning of the u16 in enum values
 | ||||||
| pub type Offset = usize; | pub type Offset = usize; | ||||||
| 
 | 
 | ||||||
|  | @ -32,24 +18,20 @@ pub enum Command { | ||||||
| 
 | 
 | ||||||
|     /// Show text on the screen.
 |     /// Show text on the screen.
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// The origin is in tiles.
 |  | ||||||
|     ///
 |  | ||||||
|     /// <div class="warning">
 |     /// <div class="warning">
 | ||||||
|     ///     The library does not currently convert between UTF-8 and CP-437.
 |     ///     The library does not currently convert between UTF-8 and CP-437.
 | ||||||
|     ///     Because Rust expects UTF-8 strings, it might be necessary to only send ASCII for now.
 |     ///     Because Rust expects UTF-8 strings, it might be necessary to only send ASCII for now.
 | ||||||
|     /// </div>
 |     /// </div>
 | ||||||
|     Cp437Data(Origin, ByteGrid), |     Cp437Data(Origin<Tiles>, ByteGrid), | ||||||
| 
 | 
 | ||||||
|     /// Sets a window of pixels to the specified values
 |     /// Sets a window of pixels to the specified values
 | ||||||
|     BitmapLinearWin(Origin, PixelGrid, CompressionCode), |     BitmapLinearWin(Origin<Pixels>, PixelGrid, CompressionCode), | ||||||
| 
 | 
 | ||||||
|     /// Set the brightness of all tiles to the same value.
 |     /// Set the brightness of all tiles to the same value.
 | ||||||
|     Brightness(Brightness), |     Brightness(Brightness), | ||||||
| 
 | 
 | ||||||
|     /// Set the brightness of individual tiles in a rectangular area of the display.
 |     /// Set the brightness of individual tiles in a rectangular area of the display.
 | ||||||
|     ///
 |     CharBrightness(Origin<Tiles>, ByteGrid), | ||||||
|     /// The origin is in tiles.
 |  | ||||||
|     CharBrightness(Origin, ByteGrid), |  | ||||||
| 
 | 
 | ||||||
|     /// Set pixel data starting at the pixel offset on screen.
 |     /// Set pixel data starting at the pixel offset on screen.
 | ||||||
|     ///
 |     ///
 | ||||||
|  | @ -116,11 +98,11 @@ impl From<Command> for Packet { | ||||||
|             Command::BitmapLegacy => { |             Command::BitmapLegacy => { | ||||||
|                 Command::command_code_only(CommandCode::BitmapLegacy) |                 Command::command_code_only(CommandCode::BitmapLegacy) | ||||||
|             } |             } | ||||||
|             Command::CharBrightness(Origin(x, y), grid) => Packet( |             Command::CharBrightness(origin, grid) => Packet( | ||||||
|                 Header( |                 Header( | ||||||
|                     CommandCode::CharBrightness.into(), |                     CommandCode::CharBrightness.into(), | ||||||
|                     x as u16, |                     origin.x as u16, | ||||||
|                     y as u16, |                     origin.y as u16, | ||||||
|                     grid.width() as u16, |                     grid.width() as u16, | ||||||
|                     grid.height() as u16, |                     grid.height() as u16, | ||||||
|                 ), |                 ), | ||||||
|  | @ -171,11 +153,11 @@ impl From<Command> for Packet { | ||||||
|                     bits.into(), |                     bits.into(), | ||||||
|                 ) |                 ) | ||||||
|             } |             } | ||||||
|             Command::Cp437Data(Origin(x, y), grid) => Packet( |             Command::Cp437Data(origin, grid) => Packet( | ||||||
|                 Header( |                 Header( | ||||||
|                     CommandCode::Cp437Data.into(), |                     CommandCode::Cp437Data.into(), | ||||||
|                     x as u16, |                     origin.x as u16, | ||||||
|                     y as u16, |                     origin.y as u16, | ||||||
|                     grid.width() as u16, |                     grid.width() as u16, | ||||||
|                     grid.height() as u16, |                     grid.height() as u16, | ||||||
|                 ), |                 ), | ||||||
|  | @ -187,15 +169,14 @@ impl From<Command> for Packet { | ||||||
| 
 | 
 | ||||||
| #[allow(clippy::cast_possible_truncation)] | #[allow(clippy::cast_possible_truncation)] | ||||||
| fn bitmap_win_into_packet( | fn bitmap_win_into_packet( | ||||||
|     origin: Origin, |     origin: Origin<Pixels>, | ||||||
|     pixels: PixelGrid, |     pixels: PixelGrid, | ||||||
|     compression: CompressionCode, |     compression: CompressionCode, | ||||||
| ) -> Packet { | ) -> Packet { | ||||||
|     let Origin(pixel_x, pixel_y) = origin; |     debug_assert_eq!(origin.x % 8, 0); | ||||||
|     debug_assert_eq!(pixel_x % 8, 0); |  | ||||||
|     debug_assert_eq!(pixels.width() % 8, 0); |     debug_assert_eq!(pixels.width() % 8, 0); | ||||||
| 
 | 
 | ||||||
|     let tile_x = (pixel_x / TILE_SIZE) as u16; |     let tile_x = (origin.x / TILE_SIZE) as u16; | ||||||
|     let tile_w = (pixels.width() / TILE_SIZE) as u16; |     let tile_w = (pixels.width() / TILE_SIZE) as u16; | ||||||
|     let pixel_h = pixels.height() as u16; |     let pixel_h = pixels.height() as u16; | ||||||
|     let payload = into_compressed(compression, pixels.into()); |     let payload = into_compressed(compression, pixels.into()); | ||||||
|  | @ -214,7 +195,7 @@ fn bitmap_win_into_packet( | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     Packet( |     Packet( | ||||||
|         Header(command.into(), tile_x, pixel_y as u16, tile_w, pixel_h), |         Header(command.into(), tile_x, origin.y as u16, tile_w, pixel_h), | ||||||
|         payload, |         payload, | ||||||
|     ) |     ) | ||||||
| } | } | ||||||
|  | @ -289,14 +270,14 @@ impl TryFrom<Packet> for Command { | ||||||
|             CommandCode::Cp437Data => { |             CommandCode::Cp437Data => { | ||||||
|                 let Packet(_, payload) = packet; |                 let Packet(_, payload) = packet; | ||||||
|                 Ok(Command::Cp437Data( |                 Ok(Command::Cp437Data( | ||||||
|                     Origin(a as usize, b as usize), |                     Origin::new(a as usize, b as usize), | ||||||
|                     ByteGrid::load(c as usize, d as usize, &payload), |                     ByteGrid::load(c as usize, d as usize, &payload), | ||||||
|                 )) |                 )) | ||||||
|             } |             } | ||||||
|             CommandCode::CharBrightness => { |             CommandCode::CharBrightness => { | ||||||
|                 let Packet(_, payload) = packet; |                 let Packet(_, payload) = packet; | ||||||
|                 Ok(Command::CharBrightness( |                 Ok(Command::CharBrightness( | ||||||
|                     Origin(a as usize, b as usize), |                     Origin::new(a as usize, b as usize), | ||||||
|                     ByteGrid::load(c as usize, d as usize, &payload), |                     ByteGrid::load(c as usize, d as usize, &payload), | ||||||
|                 )) |                 )) | ||||||
|             } |             } | ||||||
|  | @ -362,7 +343,7 @@ impl Command { | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         Ok(Command::BitmapLinearWin( |         Ok(Command::BitmapLinearWin( | ||||||
|             Origin(tiles_x as usize * TILE_SIZE, pixels_y as usize), |             Origin::new(tiles_x as usize * TILE_SIZE, pixels_y as usize), | ||||||
|             PixelGrid::load( |             PixelGrid::load( | ||||||
|                 tile_w as usize * TILE_SIZE, |                 tile_w as usize * TILE_SIZE, | ||||||
|                 pixel_h as usize, |                 pixel_h as usize, | ||||||
|  | @ -441,13 +422,10 @@ impl Command { | ||||||
| 
 | 
 | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use bitvec::prelude::BitVec; |  | ||||||
| 
 |  | ||||||
|     use crate::command::TryFromPacketError; |  | ||||||
|     use crate::command_code::CommandCode; |  | ||||||
|     use crate::{ |     use crate::{ | ||||||
|         Brightness, ByteGrid, Command, CompressionCode, Header, Origin, Packet, |         bitvec::prelude::BitVec, command::TryFromPacketError, | ||||||
|         PixelGrid, |         command_code::CommandCode, origin::Pixels, Brightness, ByteGrid, | ||||||
|  |         Command, CompressionCode, Header, Origin, Packet, PixelGrid, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     fn round_trip(original: Command) { |     fn round_trip(original: Command) { | ||||||
|  | @ -501,12 +479,15 @@ mod tests { | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn round_trip_char_brightness() { |     fn round_trip_char_brightness() { | ||||||
|         round_trip(Command::CharBrightness(Origin(5, 2), ByteGrid::new(7, 5))); |         round_trip(Command::CharBrightness( | ||||||
|  |             Origin::new(5, 2), | ||||||
|  |             ByteGrid::new(7, 5), | ||||||
|  |         )); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn round_trip_cp437_data() { |     fn round_trip_cp437_data() { | ||||||
|         round_trip(Command::Cp437Data(Origin(5, 2), ByteGrid::new(7, 5))); |         round_trip(Command::Cp437Data(Origin::new(5, 2), ByteGrid::new(7, 5))); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|  | @ -533,7 +514,7 @@ mod tests { | ||||||
|                 compression, |                 compression, | ||||||
|             )); |             )); | ||||||
|             round_trip(Command::BitmapLinearWin( |             round_trip(Command::BitmapLinearWin( | ||||||
|                 Origin(0, 0), |                 Origin::new(0, 0), | ||||||
|                 PixelGrid::max_sized(), |                 PixelGrid::max_sized(), | ||||||
|                 compression, |                 compression, | ||||||
|             )); |             )); | ||||||
|  | @ -619,7 +600,7 @@ mod tests { | ||||||
|     fn error_decompression_failed_win() { |     fn error_decompression_failed_win() { | ||||||
|         for compression in all_compressions().to_owned() { |         for compression in all_compressions().to_owned() { | ||||||
|             let p: Packet = Command::BitmapLinearWin( |             let p: Packet = Command::BitmapLinearWin( | ||||||
|                 Origin(16, 8), |                 Origin::new(16, 8), | ||||||
|                 PixelGrid::new(8, 8), |                 PixelGrid::new(8, 8), | ||||||
|                 compression, |                 compression, | ||||||
|             ) |             ) | ||||||
|  | @ -743,6 +724,9 @@ mod tests { | ||||||
| 
 | 
 | ||||||
|     #[test] |     #[test] | ||||||
|     fn origin_add() { |     fn origin_add() { | ||||||
|         assert_eq!(Origin(4, 2), Origin(1, 0) + Origin(3, 2)); |         assert_eq!( | ||||||
|  |             Origin::<Pixels>::new(4, 2), | ||||||
|  |             Origin::new(1, 0) + Origin::new(3, 2) | ||||||
|  |         ); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -46,20 +46,27 @@ impl Connection { | ||||||
|     /// # Examples
 |     /// # Examples
 | ||||||
|     ///
 |     ///
 | ||||||
|     /// ```rust
 |     /// ```rust
 | ||||||
|     /// use servicepoint::{Command, CompressionCode, Grid, PixelGrid};
 |     /// # use servicepoint::{Command, CompressionCode, Grid, PixelGrid};
 | ||||||
|     /// let connection = servicepoint::Connection::open("172.23.42.29:2342")
 |     /// # let connection = servicepoint::Connection::open("172.23.42.29:2342")
 | ||||||
|     ///     .expect("connection failed");
 |     /// #     .expect("connection failed");
 | ||||||
|     ///
 |     ///
 | ||||||
|     ///  // turn off all pixels
 |     ///  // turn off all pixels on display
 | ||||||
|     ///  connection.send(Command::Clear)
 |     ///  connection.send(Command::Clear)
 | ||||||
|     ///     .expect("send failed");
 |     ///     .expect("send failed");
 | ||||||
|     ///
 |     ///
 | ||||||
|     ///  // turn on all pixels
 |     ///  // turn on all pixels in a grid
 | ||||||
|     ///  let mut pixels = PixelGrid::max_sized();
 |     ///  let mut pixels = PixelGrid::max_sized();
 | ||||||
|     ///  pixels.fill(true);
 |     ///  pixels.fill(true);
 | ||||||
|     ///
 |     ///
 | ||||||
|     ///  // send pixels to display
 |     ///  // create command to send pixels
 | ||||||
|     ///  connection.send(Command::BitmapLinearWin(servicepoint::Origin(0, 0), pixels, CompressionCode::Uncompressed))
 |     ///  let command = Command::BitmapLinearWin(
 | ||||||
|  |     ///     servicepoint::Origin::new(0, 0),
 | ||||||
|  |     ///     pixels,
 | ||||||
|  |     ///     CompressionCode::Uncompressed
 | ||||||
|  |     ///  );
 | ||||||
|  |     ///
 | ||||||
|  |     ///  // send command to display
 | ||||||
|  |     ///  connection.send(command)
 | ||||||
|     ///     .expect("send failed");
 |     ///     .expect("send failed");
 | ||||||
|     /// ```
 |     /// ```
 | ||||||
|     pub fn send( |     pub fn send( | ||||||
|  |  | ||||||
|  | @ -7,11 +7,12 @@ use bitvec::prelude::{BitVec, Msb0}; | ||||||
| 
 | 
 | ||||||
| pub use crate::brightness::Brightness; | pub use crate::brightness::Brightness; | ||||||
| pub use crate::byte_grid::ByteGrid; | pub use crate::byte_grid::ByteGrid; | ||||||
| pub use crate::command::{Command, Offset, Origin}; | pub use crate::command::{Command, Offset}; | ||||||
| pub use crate::compression_code::CompressionCode; | pub use crate::compression_code::CompressionCode; | ||||||
| pub use crate::connection::Connection; | pub use crate::connection::Connection; | ||||||
| pub use crate::data_ref::DataRef; | pub use crate::data_ref::DataRef; | ||||||
| pub use crate::grid::Grid; | pub use crate::grid::Grid; | ||||||
|  | pub use crate::origin::{Origin, Pixels, Tiles}; | ||||||
| pub use crate::packet::{Header, Packet, Payload}; | pub use crate::packet::{Header, Packet, Payload}; | ||||||
| pub use crate::pixel_grid::PixelGrid; | pub use crate::pixel_grid::PixelGrid; | ||||||
| 
 | 
 | ||||||
|  | @ -26,6 +27,7 @@ mod compression_code; | ||||||
| mod connection; | mod connection; | ||||||
| mod data_ref; | mod data_ref; | ||||||
| mod grid; | mod grid; | ||||||
|  | mod origin; | ||||||
| mod packet; | mod packet; | ||||||
| mod pixel_grid; | mod pixel_grid; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										48
									
								
								crates/servicepoint/src/origin.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								crates/servicepoint/src/origin.rs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | ||||||
|  | use std::marker::PhantomData; | ||||||
|  | 
 | ||||||
|  | /// An origin marks the top left position of a window sent to the display.
 | ||||||
|  | #[derive(Debug, Copy, Clone, PartialEq)] | ||||||
|  | pub struct Origin<Unit: DisplayUnit> { | ||||||
|  |     /// position in the width direction
 | ||||||
|  |     pub x: usize, | ||||||
|  |     /// position in the height direction
 | ||||||
|  |     pub y: usize, | ||||||
|  |     phantom_data: PhantomData<Unit>, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl<Unit: DisplayUnit> Origin<Unit> { | ||||||
|  |     /// Create a new `Origin` instance for the provided position.
 | ||||||
|  |     pub fn new(x: usize, y: usize) -> Self { | ||||||
|  |         Self { | ||||||
|  |             x, | ||||||
|  |             y, | ||||||
|  |             phantom_data: PhantomData::default(), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | impl<T: DisplayUnit> std::ops::Add<Origin<T>> for Origin<T> { | ||||||
|  |     type Output = Origin<T>; | ||||||
|  | 
 | ||||||
|  |     fn add(self, rhs: Origin<T>) -> Self::Output { | ||||||
|  |         Origin { | ||||||
|  |             x: self.x + rhs.x, | ||||||
|  |             y: self.y + rhs.y, | ||||||
|  |             phantom_data: PhantomData::default(), | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | pub trait DisplayUnit {} | ||||||
|  | 
 | ||||||
|  | /// Marks something to be measured in number of pixels.
 | ||||||
|  | #[derive(Debug, Copy, Clone, PartialEq)] | ||||||
|  | pub struct Pixels(); | ||||||
|  | 
 | ||||||
|  | /// Marks something to be measured in number of iles.
 | ||||||
|  | #[derive(Debug, Copy, Clone, PartialEq)] | ||||||
|  | pub struct Tiles(); | ||||||
|  | 
 | ||||||
|  | impl DisplayUnit for Pixels {} | ||||||
|  | 
 | ||||||
|  | impl DisplayUnit for Tiles {} | ||||||
|  | @ -105,9 +105,9 @@ pub unsafe extern "C" fn sp_command_fade_out() -> *mut Command { | ||||||
| /// - the returned `Command` instance is freed in some way, either by using a consuming function or
 | /// - the returned `Command` instance is freed in some way, either by using a consuming function or
 | ||||||
| ///   by explicitly calling `sp_command_dealloc`.
 | ///   by explicitly calling `sp_command_dealloc`.
 | ||||||
| #[no_mangle] | #[no_mangle] | ||||||
| pub unsafe extern "C" fn sp_command_brightness( | pub unsafe extern "C" fn sp_command_brightness(brightness: u8) -> *mut Command { | ||||||
|     brightness: Brightness, |     let brightness = | ||||||
| ) -> *mut Command { |         Brightness::try_from(brightness).expect("invalid brightness"); | ||||||
|     Box::into_raw(Box::new(Command::Brightness(brightness))) |     Box::into_raw(Box::new(Command::Brightness(brightness))) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -129,7 +129,10 @@ pub unsafe extern "C" fn sp_command_char_brightness( | ||||||
|     byte_grid: *mut ByteGrid, |     byte_grid: *mut ByteGrid, | ||||||
| ) -> *mut Command { | ) -> *mut Command { | ||||||
|     let byte_grid = *Box::from_raw(byte_grid); |     let byte_grid = *Box::from_raw(byte_grid); | ||||||
|     Box::into_raw(Box::new(Command::CharBrightness(Origin(x, y), byte_grid))) |     Box::into_raw(Box::new(Command::CharBrightness( | ||||||
|  |         Origin::new(x, y), | ||||||
|  |         byte_grid, | ||||||
|  |     ))) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Allocates a new `Command::BitmapLinear` instance.
 | /// Allocates a new `Command::BitmapLinear` instance.
 | ||||||
|  | @ -254,7 +257,7 @@ pub unsafe extern "C" fn sp_command_cp437_data( | ||||||
|     byte_grid: *mut ByteGrid, |     byte_grid: *mut ByteGrid, | ||||||
| ) -> *mut Command { | ) -> *mut Command { | ||||||
|     let byte_grid = *Box::from_raw(byte_grid); |     let byte_grid = *Box::from_raw(byte_grid); | ||||||
|     Box::into_raw(Box::new(Command::Cp437Data(Origin(x, y), byte_grid))) |     Box::into_raw(Box::new(Command::Cp437Data(Origin::new(x, y), byte_grid))) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /// Allocates a new `Command::BitmapLinearWin` instance.
 | /// Allocates a new `Command::BitmapLinearWin` instance.
 | ||||||
|  | @ -278,7 +281,7 @@ pub unsafe extern "C" fn sp_command_bitmap_linear_win( | ||||||
| ) -> *mut Command { | ) -> *mut Command { | ||||||
|     let byte_grid = *Box::from_raw(pixel_grid); |     let byte_grid = *Box::from_raw(pixel_grid); | ||||||
|     Box::into_raw(Box::new(Command::BitmapLinearWin( |     Box::into_raw(Box::new(Command::BitmapLinearWin( | ||||||
|         Origin(x, y), |         Origin::new(x, y), | ||||||
|         byte_grid, |         byte_grid, | ||||||
|         compression_code, |         compression_code, | ||||||
|     ))) |     ))) | ||||||
|  |  | ||||||
|  | @ -121,7 +121,7 @@ namespace ServicePoint.BindGen | ||||||
|         [DllImport(__DllName, EntryPoint = "sp_command_fade_out", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] |         [DllImport(__DllName, EntryPoint = "sp_command_fade_out", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] | ||||||
|         public static extern Command* sp_command_fade_out(); |         public static extern Command* sp_command_fade_out(); | ||||||
| 
 | 
 | ||||||
|         /// <summary>Allocates a new `Command::Brightness` instance.  # Safety  The caller has to make sure that:  - the returned `Command` instance is freed in some way, either by using a consuming function or by explicitly calling `sp_command_dealloc`.</summary> |         /// <summary>Allocates a new `Command::Brightness` instance for setting the brightness of all tiles to the same value.  # Panics  - When the provided brightness value is out of range (0-11).  # Safety  The caller has to make sure that:  - the returned `Command` instance is freed in some way, either by using a consuming function or by explicitly calling `sp_command_dealloc`.</summary> | ||||||
|         [DllImport(__DllName, EntryPoint = "sp_command_brightness", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] |         [DllImport(__DllName, EntryPoint = "sp_command_brightness", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)] | ||||||
|         public static extern Command* sp_command_brightness(byte brightness); |         public static extern Command* sp_command_brightness(byte brightness); | ||||||
| 
 | 
 | ||||||
|  | @ -262,17 +262,17 @@ namespace ServicePoint.BindGen | ||||||
|     public enum Command |     public enum Command | ||||||
|     { |     { | ||||||
|         Clear, |         Clear, | ||||||
|         HardReset, |         Cp437Data, | ||||||
|         FadeOut, |         BitmapLinearWin, | ||||||
|         CharBrightness, |  | ||||||
|         Brightness, |         Brightness, | ||||||
|         BitmapLegacy, |         CharBrightness, | ||||||
|         BitmapLinear, |         BitmapLinear, | ||||||
|         BitmapLinearAnd, |         BitmapLinearAnd, | ||||||
|         BitmapLinearOr, |         BitmapLinearOr, | ||||||
|         BitmapLinearXor, |         BitmapLinearXor, | ||||||
|         Cp437Data, |         HardReset, | ||||||
|         BitmapLinearWin, |         FadeOut, | ||||||
|  |         BitmapLegacy, | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public enum CompressionCode : ushort |     public enum CompressionCode : ushort | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter