add DynImage::pixel

This commit is contained in:
bendn 2023-11-13 08:12:03 +07:00
parent f7b1c2100f
commit 3b69335dcd
No known key found for this signature in database
GPG key ID: 0D9D3A2A3B2A93D6
2 changed files with 21 additions and 2 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "fimg"
version = "0.4.24"
version = "0.4.25"
authors = ["bend-n <bend.n@outlook.com>"]
license = "MIT"
edition = "2021"

View file

@ -1,4 +1,4 @@
use crate::Image;
use crate::{pixels::convert::PFrom, Image};
mod affine;
mod convert;
#[cfg(feature = "scale")]
@ -68,6 +68,25 @@ impl<T: AsRef<[u8]>> DynImage<T> {
e!(self => |i| i.as_ref())
}
/// Get a pixel, of a type.
/// ```
/// # use fimg::{Image, DynImage};
/// let i = DynImage::Rgb(Image::alloc(50, 50));
/// assert_eq!(unsafe { i.pixel::<4>(25, 25) }, [0, 0, 0, 255]);
/// ```
/// # Safety
///
/// undefined behaviour if pixel is out of bounds.
pub unsafe fn pixel<const P: usize>(&self, x: u32, y: u32) -> [u8; P]
where
[u8; P]: PFrom<1>,
[u8; P]: PFrom<2>,
[u8; P]: PFrom<3>,
[u8; P]: PFrom<4>,
{
e!(self, |i| PFrom::pfrom(unsafe { i.pixel(x, y) }))
}
/// Bytes of this image.
pub fn bytes(&self) -> &[u8] {
e!(self, |i| i.bytes())