pub struct ImageData<'a> {
pub width: usize,
pub height: usize,
pub bytes: Cow<'a, [u8]>,
}
Expand description
Stores pixel data of an image.
Each element in bytes
stores the value of a channel of a single pixel.
This struct stores four channels (red, green, blue, alpha) so
a 3*3
image is going to be stored on 3*3*4 = 36
bytes of data.
The pixels are in row-major order meaning that the second pixel
in bytes
(starting at the fifth byte) corresponds to the pixel that’s
sitting to the right side of the top-left pixel (x=1, y=0)
Assigning a 2*1
image would for example look like this
use arboard::ImageData;
use std::borrow::Cow;
let bytes = [
// A red pixel
255, 0, 0, 255,
// A green pixel
0, 255, 0, 255,
];
let img = ImageData {
width: 2,
height: 1,
bytes: Cow::from(bytes.as_ref())
};
Fields§
§width: usize
§height: usize
§bytes: Cow<'a, [u8]>
Implementations§
source§impl<'a> ImageData<'a>
impl<'a> ImageData<'a>
sourcepub fn into_owned_bytes(self) -> Cow<'static, [u8]>
pub fn into_owned_bytes(self) -> Cow<'static, [u8]>
Returns a the bytes field in a way that it’s guaranteed to be owned. It moves the bytes if they are already owned and clones them if they are borrowed.
sourcepub fn to_owned_img(&self) -> ImageData<'static>
pub fn to_owned_img(&self) -> ImageData<'static>
Returns an image data that is guaranteed to own its bytes. It moves the bytes if they are already owned and clones them if they are borrowed.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for ImageData<'a>
impl<'a> RefUnwindSafe for ImageData<'a>
impl<'a> Send for ImageData<'a>
impl<'a> Sync for ImageData<'a>
impl<'a> Unpin for ImageData<'a>
impl<'a> UnwindSafe for ImageData<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more