pub struct ColorImage {
pub size: [usize; 2],
pub source_size: Vec2,
pub pixels: Vec<Color32>,
}Expand description
A 2D RGBA color image in RAM.
Fields§
§size: [usize; 2]width, height in texels.
source_size: Vec2Size of the original SVG image (if any), or just the texel size of the image.
pixels: Vec<Color32>The pixels, row by row, from top to bottom.
Implementations§
Source§impl ColorImage
impl ColorImage
Sourcepub fn new(size: [usize; 2], pixels: Vec<Color32>) -> ColorImage
pub fn new(size: [usize; 2], pixels: Vec<Color32>) -> ColorImage
Create an image filled with the given color.
Sourcepub fn filled(size: [usize; 2], color: Color32) -> ColorImage
pub fn filled(size: [usize; 2], color: Color32) -> ColorImage
Create an image filled with the given color.
Sourcepub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
pub fn from_rgba_unmultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
Create a ColorImage from flat un-multiplied RGBA data.
This is usually what you want to use after having loaded an image file.
Panics if size[0] * size[1] * 4 != rgba.len().
§Example using the image crate:
fn load_image_from_path(path: &std::path::Path) -> Result<egui::ColorImage, image::ImageError> {
let image = image::io::Reader::open(path)?.decode()?;
let size = [image.width() as _, image.height() as _];
let image_buffer = image.to_rgba8();
let pixels = image_buffer.as_flat_samples();
Ok(egui::ColorImage::from_rgba_unmultiplied(
size,
pixels.as_slice(),
))
}
fn load_image_from_memory(image_data: &[u8]) -> Result<ColorImage, image::ImageError> {
let image = image::load_from_memory(image_data)?;
let size = [image.width() as _, image.height() as _];
let image_buffer = image.to_rgba8();
let pixels = image_buffer.as_flat_samples();
Ok(ColorImage::from_rgba_unmultiplied(
size,
pixels.as_slice(),
))
}pub fn from_rgba_premultiplied(size: [usize; 2], rgba: &[u8]) -> ColorImage
Sourcepub fn from_gray(size: [usize; 2], gray: &[u8]) -> ColorImage
pub fn from_gray(size: [usize; 2], gray: &[u8]) -> ColorImage
Create a ColorImage from flat opaque gray data.
Panics if size[0] * size[1] != gray.len().
Sourcepub fn from_gray_iter(
size: [usize; 2],
gray_iter: impl Iterator<Item = u8>,
) -> ColorImage
pub fn from_gray_iter( size: [usize; 2], gray_iter: impl Iterator<Item = u8>, ) -> ColorImage
Alternative method to from_gray.
Create a ColorImage from iterator over flat opaque gray data.
Panics if size[0] * size[1] != gray_iter.len().
Sourcepub fn as_raw_mut(&mut self) -> &mut [u8] ⓘ
pub fn as_raw_mut(&mut self) -> &mut [u8] ⓘ
A view of the underlying data as &mut [u8]
Sourcepub fn from_rgb(size: [usize; 2], rgb: &[u8]) -> ColorImage
pub fn from_rgb(size: [usize; 2], rgb: &[u8]) -> ColorImage
Create a ColorImage from flat RGB data.
This is what you want to use after having loaded an image file (and if you are ignoring the alpha channel - considering it to always be 0xff)
Panics if size[0] * size[1] * 3 != rgb.len().
Sourcepub fn example() -> ColorImage
pub fn example() -> ColorImage
An example color image, useful for tests.
Sourcepub fn with_source_size(self, source_size: Vec2) -> ColorImage
pub fn with_source_size(self, source_size: Vec2) -> ColorImage
Set the source size of e.g. the original SVG image.
pub fn width(&self) -> usize
pub fn height(&self) -> usize
Sourcepub fn region(&self, region: &Rect, pixels_per_point: Option<f32>) -> ColorImage
pub fn region(&self, region: &Rect, pixels_per_point: Option<f32>) -> ColorImage
Create a new image from a patch of the current image.
This method is especially convenient for screenshotting a part of the app
since region can be interpreted as screen coordinates of the entire screenshot if pixels_per_point is provided for the native application.
The floats of emath::Rect are cast to usize, rounding them down in order to interpret them as indices to the image data.
Panics if region.min.x > region.max.x || region.min.y > region.max.y, or if a region larger than the image is passed.
Sourcepub fn region_by_pixels(&self, _: [usize; 2], _: [usize; 2]) -> ColorImage
pub fn region_by_pixels(&self, _: [usize; 2], _: [usize; 2]) -> ColorImage
Clone a sub-region as a new image.
Trait Implementations§
Source§impl Clone for ColorImage
impl Clone for ColorImage
Source§fn clone(&self) -> ColorImage
fn clone(&self) -> ColorImage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ColorImage
impl Debug for ColorImage
Source§impl Default for ColorImage
impl Default for ColorImage
Source§fn default() -> ColorImage
fn default() -> ColorImage
Source§impl<'de> Deserialize<'de> for ColorImage
impl<'de> Deserialize<'de> for ColorImage
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColorImage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ColorImage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl From<&IconData> for ColorImage
impl From<&IconData> for ColorImage
Source§impl From<ColorImage> for ImageData
impl From<ColorImage> for ImageData
Source§fn from(image: ColorImage) -> ImageData
fn from(image: ColorImage) -> ImageData
Source§impl From<IconData> for ColorImage
impl From<IconData> for ColorImage
Source§impl PartialEq for ColorImage
impl PartialEq for ColorImage
Source§impl Serialize for ColorImage
impl Serialize for ColorImage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Eq for ColorImage
impl StructuralPartialEq for ColorImage
Auto Trait Implementations§
impl Freeze for ColorImage
impl RefUnwindSafe for ColorImage
impl Send for ColorImage
impl Sync for ColorImage
impl Unpin for ColorImage
impl UnwindSafe for ColorImage
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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