ImageEntry

Struct ImageEntry 

Source
pub struct ImageEntry { /* private fields */ }
Expand description

State of an ImageVar.

Implementations§

Source§

impl ImageEntry

Source

pub fn new_loading() -> ImageEntry

Create a dummy image in the loading state.

This is the same as calling new_error with an empty error.

Source

pub fn new_error(error: Txt) -> ImageEntry

Create a dummy image in the error state.

If the error is empty the image is loading, not an error.

Source

pub fn is_loading(&self) -> bool

Returns true if the is still acquiring or decoding the image bytes.

Source

pub fn is_loaded(&self) -> bool

If the image has finished loading ok or due to error.

The image variable may still update after

Source

pub fn is_error(&self) -> bool

If the image failed to load.

Source

pub fn error(&self) -> Option<Txt>

Returns an error message if the image failed to load.

Source

pub fn size(&self) -> Size2D<Px, Px>

Pixel size of the image after it finishes loading.

Note that this value is set as soon as the header finishes decoding, but the pixels will only be set after it the entire image decodes.

If the view-process implements progressive decoding you can use partial_size and partial_pixels to use the partially decoded image top rows as it decodes.

Source

pub fn partial_size(&self) -> Option<Size2D<Px, Px>>

Size of partial_pixels.

Can be different from size if the image is progressively decoding.

Source

pub fn partial_kind(&self) -> Option<PartialImageKind>

Kind of partial_pixels.

Source

pub fn density(&self) -> Option<Size2D<PxDensity, PxDensity>>

Returns the image pixel density metadata if the image is loaded and the metadata was retrieved.

Source

pub fn original_color_type(&self) -> ColorType

Image color type before it was converted to BGRA8 or A8.

Source

pub fn color_type(&self) -> ColorType

Gets A8 for masks and BGRA8 for others.

Source

pub fn is_opaque(&self) -> bool

Returns true if the image is fully opaque or it is not loaded.

Source

pub fn is_mask(&self) -> bool

Returns true if the image pixels are a single channel (A8).

Source

pub fn has_entries(&self) -> bool

If entries is not empty.

Source

pub fn entries(&self) -> Vec<Var<ImageEntry>>

Other images from the same container that are a child of this image.

Source

pub fn flat_entries(&self) -> Var<Vec<(VarEq<ImageEntry>, usize)>>

All other images from the same container that are a descendant of this image.

The values are a tuple of each entry and the length of descendants entries that follow it.

The returned variable will update every time any entry descendant var updates.

Source

pub fn entry_kind(&self) -> ImageEntryKind

Kind of image entry this image is in the source container.

Source

pub fn entry_index(&self) -> usize

Sort index of the image in the list of entries of the source container.

Source

pub fn with_best_reduce<R>( &self, size: Size2D<Px, Px>, visit: impl FnOnce(&ImageEntry) -> R, ) -> Option<R>

Calls visit with the image or ImageEntryKind::Reduced entry that is nearest to size and greater or equal to it.

Does not call visit if none of the images are loaded, returns None in that case.

Source

pub fn view_handle(&self) -> &ViewImageHandle

Connection to the image resource in the view-process.

Source

pub fn layout_size(&self, ctx: &LayoutMetrics) -> Size2D<Px, Px>

Calculate an ideal layout size for the image.

The image is scaled considering the density and screen scale factor. If the image has no density falls back to the screen_density in both dimensions.

Source

pub fn calc_size( &self, ctx: &LayoutMetrics, fallback_density: Size2D<PxDensity, PxDensity>, ignore_image_density: bool, ) -> Size2D<Px, Px>

Calculate a layout size for the image.

§Parameters
  • ctx: Used to get the screen resolution.
  • fallback_density: Resolution used if density is None.
  • ignore_image_density: If true always uses the fallback_density as the resolution.
Source

pub fn pixels(&self) -> Option<IpcBytes>

Reference the decoded pre-multiplied BGRA8 pixel buffer or A8 if is_mask.

Source

pub fn partial_pixels(&self) -> Option<IpcBytes>

Reference the partially decoded pixels if the image is progressively decoding and has not finished decoding.

Format is BGRA8 for normal images or A8 if is_mask.

Source

pub fn copy_pixels( &self, rect: Rect<Px, Px>, ) -> Option<(Rect<Px, Px>, IpcBytesMut)>

Copy the rect selection from pixels or partial_pixels.

The rect is in pixels, with the origin (0, 0) at the top-left of the image.

Returns the copied selection and the pixel buffer.

Note that the selection can change if rect is not fully contained by the image area.

Source

pub async fn encode(&self, format: Txt) -> Result<IpcBytes, EncodeError>

Encode the image to the format.

Note that entries are ignored, only this image is encoded. Use encode_with_entries to encode multiple images in the same container.

Source

pub async fn encode_with_entries( &self, entries: &[(ImageEntry, ImageEntryKind)], format: Txt, ) -> Result<IpcBytes, EncodeError>

Encode the images to the format.

This image is the first page followed by the entries in the given order.

Source

pub async fn save(&self, path: impl Into<PathBuf>) -> Result<(), Error>

Encode and write the image to path.

The image format is guessed from the file extension. Use save_with_format to specify the format.

Note that entries are ignored, only this image is encoded. Use save_with_entries to encode multiple images in the same container.

Source

pub async fn save_with_format( &self, format: impl Into<Txt>, path: impl Into<PathBuf>, ) -> Result<(), Error>

Encode and write the image to path.

The image is encoded to the format, the file extension can be anything.

Note that entries are ignored, only this image is encoded. Use save_with_entries to encode multiple images in the same container.

Source

pub async fn save_with_entries( &self, entries: &[(ImageEntry, ImageEntryKind)], format: impl Into<Txt>, path: impl Into<PathBuf>, ) -> Result<(), Error>

Encode and write the image to path.

The image is encoded to the format, the file extension can be anything.

This image is the first page followed by the entries in the given order.

Source

pub fn insert_entry(&mut self, entry: Var<ImageEntry>)

Insert entry in entries.

§Parent Metadata

If the entry view-process metadata has another image as parent the metadata is replaced and a warning is logged.

Trait Implementations§

Source§

impl Clone for ImageEntry

Source§

fn clone(&self) -> ImageEntry

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ImageEntry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Img for ImageEntry

Source§

fn renderer_id(&self, renderer: &ViewRenderer) -> ImageTextureId

Gets the image ID in the renderer namespace. Read more
Source§

fn size(&self) -> Size2D<Px, Px>

Image pixel size.
Source§

impl PartialEq for ImageEntry

Source§

fn eq(&self, other: &ImageEntry) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

impl<T> AnyVarValue for T
where T: Debug + PartialEq + Clone + Any + Send + Sync,

Source§

fn clone_boxed(&self) -> BoxAnyVarValue

Clone the value.
Source§

fn eq_any(&self, other: &(dyn AnyVarValue + 'static)) -> bool

Gets if self and other are equal.
Source§

fn type_name(&self) -> &'static str

Value type name. Read more
Source§

fn try_swap(&mut self, other: &mut (dyn AnyVarValue + 'static)) -> bool

Swap value with other if both are of the same type.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

Source§

impl<T> FsChangeNote for T
where T: Debug + Any + Send + Sync,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Access any.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<F, T> IntoSample<T> for F
where T: FromSample<F>,

§

fn into_sample(self) -> T

Source§

impl<T> IntoVar<T> for T
where T: VarValue,

Source§

fn into_var(self) -> Var<T>

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

Source§

impl<T> IntoValue<T> for T
where T: VarValue,

Source§

impl<T> StateValue for T
where T: Any + Send + Sync,

Source§

impl<T> VarValue for T