mirror of
https://github.com/cccb/servicepoint.git
synced 2025-01-18 18:10:14 +01:00
fix warnings, minor docs changes
This commit is contained in:
parent
8320ee2d80
commit
dea176d0d9
|
@ -1,5 +1,3 @@
|
||||||
//! Implementation of [Bitmap]
|
|
||||||
|
|
||||||
use crate::data_ref::DataRef;
|
use crate::data_ref::DataRef;
|
||||||
use crate::BitVec;
|
use crate::BitVec;
|
||||||
use crate::*;
|
use crate::*;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
pub use bitvec::prelude::*;
|
pub use bitvec::prelude::*;
|
||||||
|
|
||||||
/// An alias for the specific type of [bitvec::prelude::BitVec] used.
|
/// An alias for the specific type of [bitvec::prelude::BitVec] used.
|
||||||
pub type BitVec = bitvec::prelude::BitVec<u8, Msb0>;
|
pub type BitVec = bitvec::prelude::BitVec<u8, Msb0>;
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
/// A simple grid of bytes - see [primitive_grid::PrimitiveGrid].
|
/// A 2d grid of bytes - see [crate::ValueGrid].
|
||||||
pub type ByteGrid = crate::value_grid::ValueGrid<u8>;
|
pub type ByteGrid = crate::value_grid::ValueGrid<u8>;
|
||||||
|
|
|
@ -1,8 +1,22 @@
|
||||||
use crate::value_grid::{SetValueSeriesError, TryLoadPrimitiveGridError, ValueGrid};
|
use crate::{Grid, SetValueSeriesError, TryLoadValueGridError, ValueGrid};
|
||||||
use crate::Grid;
|
|
||||||
use std::string::FromUtf8Error;
|
use std::string::FromUtf8Error;
|
||||||
|
|
||||||
/// A grid containing UTF-8 characters.
|
/// A grid containing UTF-8 characters.
|
||||||
|
///
|
||||||
|
/// To send a CharGrid to the display, use [crate::Command::Utf8Data].
|
||||||
|
///
|
||||||
|
/// Also see [crate::ValueGrid] for the non-specialized operations and examples.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// # use servicepoint::{CharGrid, Command, Connection, Origin};
|
||||||
|
/// let grid = CharGrid::from("You can\nload multiline\nstrings directly");
|
||||||
|
/// assert_eq!(grid.get_row_str(1), Some("load multiline\0\0".to_string()));
|
||||||
|
///
|
||||||
|
/// # let connection = Connection::Fake;
|
||||||
|
/// let command = Command::Utf8Data(Origin::ZERO, grid);
|
||||||
|
/// ```
|
||||||
pub type CharGrid = ValueGrid<char>;
|
pub type CharGrid = ValueGrid<char>;
|
||||||
|
|
||||||
impl CharGrid {
|
impl CharGrid {
|
||||||
|
@ -64,7 +78,7 @@ pub enum LoadUtf8Error {
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
FromUtf8Error(#[from] FromUtf8Error),
|
FromUtf8Error(#[from] FromUtf8Error),
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
TryLoadError(#[from] TryLoadPrimitiveGridError),
|
TryLoadError(#[from] TryLoadValueGridError),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<&str> for CharGrid {
|
impl From<&str> for CharGrid {
|
||||||
|
|
|
@ -522,7 +522,7 @@ impl Command {
|
||||||
String::from_utf8(payload.clone())?.chars().collect();
|
String::from_utf8(payload.clone())?.chars().collect();
|
||||||
Ok(Command::Utf8Data(
|
Ok(Command::Utf8Data(
|
||||||
Origin::new(*a as usize, *b as usize),
|
Origin::new(*a as usize, *b as usize),
|
||||||
CharGrid::load(*c as usize, *d as usize, &*payload),
|
CharGrid::load(*c as usize, *d as usize, &payload),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ pub use crate::grid::Grid;
|
||||||
pub use crate::origin::{Origin, Pixels, Tiles};
|
pub use crate::origin::{Origin, Pixels, Tiles};
|
||||||
pub use crate::packet::{Header, Packet, Payload};
|
pub use crate::packet::{Header, Packet, Payload};
|
||||||
pub use crate::value_grid::{
|
pub use crate::value_grid::{
|
||||||
IterGridRows, SetValueSeriesError, TryLoadPrimitiveGridError, Value, ValueGrid,
|
IterGridRows, SetValueSeriesError, TryLoadValueGridError, Value, ValueGrid,
|
||||||
};
|
};
|
||||||
|
|
||||||
mod bitmap;
|
mod bitmap;
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
//! This module contains the implementation of the [ValueGrid].
|
|
||||||
|
|
||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
use std::slice::{Iter, IterMut};
|
use std::slice::{Iter, IterMut};
|
||||||
|
|
||||||
|
@ -9,7 +7,12 @@ use crate::*;
|
||||||
pub trait Value: Sized + Default + Copy + Clone + Debug {}
|
pub trait Value: Sized + Default + Copy + Clone + Debug {}
|
||||||
impl<T: Sized + Default + Copy + Clone + Debug> Value for T {}
|
impl<T: Sized + Default + Copy + Clone + Debug> Value for T {}
|
||||||
|
|
||||||
/// A 2D grid of bytes
|
/// A 2D grid of values.
|
||||||
|
///
|
||||||
|
/// The memory layout is the one the display expects in [Command]s.
|
||||||
|
///
|
||||||
|
/// This structure can be used with any type that implements the [Value] trait.
|
||||||
|
/// You can also use the concrete type aliases provided in this crate, e.g. [CharGrid] and [ByteGrid].
|
||||||
#[derive(Debug, Clone, PartialEq)]
|
#[derive(Debug, Clone, PartialEq)]
|
||||||
pub struct ValueGrid<T: Value> {
|
pub struct ValueGrid<T: Value> {
|
||||||
width: usize,
|
width: usize,
|
||||||
|
@ -78,14 +81,14 @@ impl<T: Value> ValueGrid<T> {
|
||||||
|
|
||||||
/// Loads a [ValueGrid] with the specified dimensions from the provided data.
|
/// Loads a [ValueGrid] with the specified dimensions from the provided data.
|
||||||
///
|
///
|
||||||
/// returns: [ValueGrid] that contains a copy of the provided data or [TryLoadPrimitiveGridError].
|
/// returns: [ValueGrid] that contains a copy of the provided data or [TryLoadValueGridError].
|
||||||
pub fn try_load(
|
pub fn try_load(
|
||||||
width: usize,
|
width: usize,
|
||||||
height: usize,
|
height: usize,
|
||||||
data: Vec<T>,
|
data: Vec<T>,
|
||||||
) -> Result<Self, TryLoadPrimitiveGridError> {
|
) -> Result<Self, TryLoadValueGridError> {
|
||||||
if width * height != data.len() {
|
if width * height != data.len() {
|
||||||
return Err(TryLoadPrimitiveGridError::InvalidDimensions);
|
return Err(TryLoadValueGridError::InvalidDimensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
|
@ -159,7 +162,7 @@ impl<T: Value> ValueGrid<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert between PrimitiveGrid types.
|
/// Convert between ValueGrid types.
|
||||||
///
|
///
|
||||||
/// See also [Iterator::map].
|
/// See also [Iterator::map].
|
||||||
///
|
///
|
||||||
|
@ -273,14 +276,16 @@ impl<T: Value> ValueGrid<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Errors that can occur when loading a grid
|
||||||
#[derive(Debug, thiserror::Error)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
pub enum TryLoadPrimitiveGridError {
|
pub enum TryLoadValueGridError {
|
||||||
#[error("The provided dimensions do not match with the data size")]
|
#[error("The provided dimensions do not match with the data size")]
|
||||||
|
/// The provided dimensions do not match with the data size
|
||||||
InvalidDimensions,
|
InvalidDimensions,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Value> Grid<T> for ValueGrid<T> {
|
impl<T: Value> Grid<T> for ValueGrid<T> {
|
||||||
/// Sets the value of the cell at the specified position in the `PrimitiveGrid.
|
/// Sets the value of the cell at the specified position in the `ValueGrid.
|
||||||
///
|
///
|
||||||
/// # Arguments
|
/// # Arguments
|
||||||
///
|
///
|
||||||
|
|
|
@ -8,9 +8,9 @@ use std::convert::Into;
|
||||||
use std::intrinsics::transmute;
|
use std::intrinsics::transmute;
|
||||||
use std::ptr::NonNull;
|
use std::ptr::NonNull;
|
||||||
|
|
||||||
/// see [Brightness::MIN]
|
/// see [servicepoint::Brightness::MIN]
|
||||||
pub const SP_BRIGHTNESS_MIN: u8 = 0;
|
pub const SP_BRIGHTNESS_MIN: u8 = 0;
|
||||||
/// see [Brightness::MAX]
|
/// see [servicepoint::Brightness::MAX]
|
||||||
pub const SP_BRIGHTNESS_MAX: u8 = 11;
|
pub const SP_BRIGHTNESS_MAX: u8 = 11;
|
||||||
/// Count of possible brightness values
|
/// Count of possible brightness values
|
||||||
pub const SP_BRIGHTNESS_LEVELS: u8 = 12;
|
pub const SP_BRIGHTNESS_LEVELS: u8 = 12;
|
||||||
|
|
Loading…
Reference in a new issue