add examples for brightness, replace ByteGrid with PrimitiveGrid
This commit is contained in:
		
							parent
							
								
									52080c0ad0
								
							
						
					
					
						commit
						e3c418efcf
					
				
					 2 changed files with 31 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
use crate::{Grid, PrimitiveGrid};
 | 
			
		||||
 | 
			
		||||
#[cfg(feature = "rand")]
 | 
			
		||||
use rand::{
 | 
			
		||||
    distributions::{Distribution, Standard},
 | 
			
		||||
| 
						 | 
				
			
			@ -6,10 +7,34 @@ use rand::{
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
/// A display brightness value, checked for correct value range
 | 
			
		||||
///
 | 
			
		||||
/// # Examples
 | 
			
		||||
///
 | 
			
		||||
/// ```
 | 
			
		||||
/// # use servicepoint::{Brightness, Command, Connection};
 | 
			
		||||
/// let b = Brightness::MAX;
 | 
			
		||||
/// let val: u8 = b.into();
 | 
			
		||||
///
 | 
			
		||||
/// let b = Brightness::try_from(7).unwrap();
 | 
			
		||||
/// # let connection = Connection::open("127.0.0.1:2342").unwrap();
 | 
			
		||||
/// let result = connection.send(Command::Brightness(b));
 | 
			
		||||
/// ```
 | 
			
		||||
#[derive(Debug, Copy, Clone, PartialEq)]
 | 
			
		||||
pub struct Brightness(u8);
 | 
			
		||||
 | 
			
		||||
/// A grid containing brightness values.
 | 
			
		||||
///
 | 
			
		||||
/// # Examples
 | 
			
		||||
///
 | 
			
		||||
/// ```rust
 | 
			
		||||
/// # use servicepoint::{Brightness, BrightnessGrid, Command, Connection, Grid, Origin};
 | 
			
		||||
/// let mut grid = BrightnessGrid::new(2,2);
 | 
			
		||||
/// grid.set(0, 0, Brightness::MIN);
 | 
			
		||||
/// grid.set(1, 1, Brightness::MIN);
 | 
			
		||||
///
 | 
			
		||||
/// # let connection = Connection::open("127.0.0.1:2342").unwrap();
 | 
			
		||||
/// connection.send(Command::CharBrightness(Origin::new(3, 7), grid)).unwrap()
 | 
			
		||||
/// ```
 | 
			
		||||
pub type BrightnessGrid = PrimitiveGrid<Brightness>;
 | 
			
		||||
 | 
			
		||||
impl From<Brightness> for u8 {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,7 @@ impl<T: PrimitiveGridType> PrimitiveGrid<T> {
 | 
			
		|||
    /// - width: size in x-direction
 | 
			
		||||
    /// - height: size in y-direction
 | 
			
		||||
    ///
 | 
			
		||||
    /// returns: `ByteGrid` initialized to default value.
 | 
			
		||||
    /// returns: `PrimitiveGrid` initialized to default value.
 | 
			
		||||
    pub fn new(width: usize, height: usize) -> Self {
 | 
			
		||||
        Self {
 | 
			
		||||
            data: vec![Default::default(); width * height],
 | 
			
		||||
| 
						 | 
				
			
			@ -30,9 +30,9 @@ impl<T: PrimitiveGridType> PrimitiveGrid<T> {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Loads a `ByteGrid` with the specified dimensions from the provided data.
 | 
			
		||||
    /// Loads a `PrimitiveGrid` with the specified dimensions from the provided data.
 | 
			
		||||
    ///
 | 
			
		||||
    /// returns: `ByteGrid` that contains a copy of the provided data
 | 
			
		||||
    /// returns: `PrimitiveGrid` that contains a copy of the provided data
 | 
			
		||||
    ///
 | 
			
		||||
    /// # Panics
 | 
			
		||||
    ///
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ impl<T: PrimitiveGridType> PrimitiveGrid<T> {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Iterate over all cells in `ByteGrid`.
 | 
			
		||||
    /// Iterate over all cells in `PrimitiveGrid`.
 | 
			
		||||
    ///
 | 
			
		||||
    /// Order is equivalent to the following loop:
 | 
			
		||||
    /// ```
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +63,7 @@ impl<T: PrimitiveGridType> PrimitiveGrid<T> {
 | 
			
		|||
        self.data.iter()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Iterate over all rows in `ByteGrid` top to bottom.
 | 
			
		||||
    /// Iterate over all rows in `PrimitiveGrid` top to bottom.
 | 
			
		||||
    pub fn iter_rows(&self) -> IterRows<T> {
 | 
			
		||||
        IterRows {
 | 
			
		||||
            byte_grid: self,
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +113,7 @@ impl<T: PrimitiveGridType> PrimitiveGrid<T> {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
impl<T: PrimitiveGridType> Grid<T> for PrimitiveGrid<T> {
 | 
			
		||||
    /// Sets the value of the cell at the specified position in the `ByteGrid.
 | 
			
		||||
    /// Sets the value of the cell at the specified position in the `PrimitiveGrid.
 | 
			
		||||
    ///
 | 
			
		||||
    /// # Arguments
 | 
			
		||||
    ///
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue