zng_ext_image

Enum ImageSource

source
pub enum ImageSource {
    Read(PathBuf),
    Download(Uri, Option<Txt>),
    Static(ImageHash, &'static [u8], ImageDataFormat),
    Data(ImageHash, Arc<Vec<u8>>, ImageDataFormat),
    Render(Arc<Box<dyn Fn(&ImageRenderArgs) -> Box<dyn ImageRenderWindowRoot> + Send + Sync>>, Option<ImageRenderArgs>),
    Image(ImageVar),
}
Expand description

The different sources of an image resource.

Variants§

§

Read(PathBuf)

A path to an image file in the file system.

Image equality is defined by the path, a copy of the image in another path is a different image.

§

Download(Uri, Option<Txt>)

A uri to an image resource downloaded using HTTP GET with an optional HTTP ACCEPT string.

If the ACCEPT line is not given, all image formats supported by the view-process backend are accepted.

Image equality is defined by the URI and ACCEPT string.

§

Static(ImageHash, &'static [u8], ImageDataFormat)

Static bytes for an encoded or decoded image.

Image equality is defined by the hash, it is usually the hash of the bytes but it does not need to be.

§

Data(ImageHash, Arc<Vec<u8>>, ImageDataFormat)

Shared reference to bytes for an encoded or decoded image.

Image equality is defined by the hash, it is usually the hash of the bytes but it does not need to be.

Inside IMAGES the reference to the bytes is held only until the image finishes decoding.

§

Render(Arc<Box<dyn Fn(&ImageRenderArgs) -> Box<dyn ImageRenderWindowRoot> + Send + Sync>>, Option<ImageRenderArgs>)

A boxed closure that instantiates a WindowRoot that draws the image.

Use the render or render_node functions to construct this variant.

The closure is set by the image widget user, the args is set by the image widget.

§

Image(ImageVar)

Already resolved (loaded or loading) image.

The image is passed-through, not cached.

Implementations§

source§

impl ImageSource

source

pub fn flood( size: impl Into<PxSize>, color: impl Into<Rgba>, ppi: Option<ImagePpi>, ) -> Self

New image data from solid color.

source

pub fn from_data(data: Arc<Vec<u8>>, format: ImageDataFormat) -> Self

New source from data.

source

pub fn from_static(data: &'static [u8], format: ImageDataFormat) -> Self

New source from static data.

source

pub fn hash128( &self, downscale: Option<ImageDownscale>, mask: Option<ImageMaskMode>, ) -> Option<ImageHash>

Returns the image hash, unless the source is Img.

source

pub fn hash128_data( data_hash: ImageHash, downscale: Option<ImageDownscale>, mask: Option<ImageMaskMode>, ) -> ImageHash

Compute hash for a borrowed Static or Data image.

source

pub fn hash128_read( path: &Path, downscale: Option<ImageDownscale>, mask: Option<ImageMaskMode>, ) -> ImageHash

Compute hash for a borrowed Read path.

source

pub fn hash128_download( uri: &Uri, accept: &Option<Txt>, downscale: Option<ImageDownscale>, mask: Option<ImageMaskMode>, ) -> ImageHash

Compute hash for a borrowed Download URI and HTTP-ACCEPT.

source

pub fn hash128_render( rfn: &Arc<Box<dyn Fn(&ImageRenderArgs) -> Box<dyn ImageRenderWindowRoot> + Send + Sync>>, args: &Option<ImageRenderArgs>, downscale: Option<ImageDownscale>, mask: Option<ImageMaskMode>, ) -> ImageHash

Compute hash for a borrowed Render source.

Pointer equality is used to identify the node closure.

source§

impl ImageSource

source

pub fn render<F, R>(new_img: F) -> Self
where F: Fn(&ImageRenderArgs) -> R + Send + Sync + 'static, R: ImageRenderWindowRoot,

New image from a function that generates a headless window.

The function is called every time the image source is resolved and it is not found in the cache.

§Examples
    |args| Window! {
        size = (500, 400);
        parent = args.parent;
        background_color = colors::GREEN;
        child = Text!("Rendered!");
    }
)
source

pub fn render_node<U, N>(render_mode: RenderMode, render: N) -> Self
where U: UiNode, N: Fn(&ImageRenderArgs) -> U + Send + Sync + 'static,

New image from a function that generates a new UiNode.

The function is called every time the image source is resolved and it is not found in the cache.

Note that the generated UiNode is not a child of the widget that renders the image, it is the root widget of a headless surface, not a part of the context where it is rendered. See IMAGES.render for more information.

§Examples
ImageSource::render_node(
    RenderMode::Software,
    |_args| Container! {
        size = (500, 400);
        background_color = colors::GREEN;
        child = Text!("Rendered!");
    }
)

Trait Implementations§

source§

impl Clone for ImageSource

source§

fn clone(&self) -> ImageSource

Returns a copy 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 ImageSource

source§

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

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

impl From<&'static [u8]> for ImageSource

source§

fn from(data: &'static [u8]) -> Self

From encoded data of Unknown format.

source§

impl<const N: usize> From<&'static [u8; N]> for ImageSource

source§

fn from(data: &'static [u8; N]) -> Self

From encoded data of Unknown format.

source§

impl From<&Path> for ImageSource

source§

fn from(path: &Path) -> Self

Converts to this type from the input type.
source§

impl From<&str> for ImageSource

source§

fn from(s: &str) -> Self

Converts http:// and https:// to Download, file:// to Read the path component, and the rest to Read the string as a path.

source§

impl<F: Into<ImageDataFormat>> From<(&'static [u8], F)> for ImageSource

source§

fn from((data, format): (&'static [u8], F)) -> Self

From encoded data of known format.

source§

impl<F: Into<ImageDataFormat>, const N: usize> From<(&'static [u8; N], F)> for ImageSource

source§

fn from((data, format): (&'static [u8; N], F)) -> Self

From encoded data of known format.

source§

impl<F: Into<ImageDataFormat>> From<(Arc<Vec<u8>>, F)> for ImageSource

source§

fn from((data, format): (Arc<Vec<u8>>, F)) -> Self

From encoded data of known format.

source§

impl From<(Uri, &'static str)> for ImageSource

source§

fn from((uri, accept): (Uri, &'static str)) -> Self

From (URI, HTTP-ACCEPT).

source§

impl<F: Into<ImageDataFormat>> From<(Vec<u8>, F)> for ImageSource

source§

fn from((data, format): (Vec<u8>, F)) -> Self

From encoded data of known format.

source§

impl From<Arc<Vec<u8>>> for ImageSource

source§

fn from(data: Arc<Vec<u8>>) -> Self

From encoded data of Unknown format.

source§

impl From<PathBuf> for ImageSource

source§

fn from(path: PathBuf) -> Self

Converts to this type from the input type.
source§

impl From<ReadOnlyVar<Img, ArcVar<Img>>> for ImageSource

source§

fn from(image: ImageVar) -> Self

Converts to this type from the input type.
source§

impl From<String> for ImageSource

source§

fn from(s: String) -> Self

Same as conversion from &str.

source§

impl From<Txt> for ImageSource

source§

fn from(s: Txt) -> Self

Same as conversion from &str.

source§

impl From<Uri> for ImageSource

source§

fn from(uri: Uri) -> Self

Converts to this type from the input type.
source§

impl From<Vec<u8>> for ImageSource

source§

fn from(data: Vec<u8>) -> Self

From encoded data of Unknown format.

source§

impl IntoVar<ImageSource> for &'static [u8]

source§

fn into_var(self) -> Self::Var

From encoded data of Unknown format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<const N: usize> IntoVar<ImageSource> for &'static [u8; N]

source§

fn into_var(self) -> Self::Var

From encoded data of Unknown format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for &Path

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> Self::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for &str

source§

fn into_var(self) -> Self::Var

Converts http:// and https:// to Download, file:// to Read the path component, and the rest to Read the string as a path.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<F: Into<ImageDataFormat>> IntoVar<ImageSource> for (&'static [u8], F)

source§

fn into_var(self) -> Self::Var

From encoded data of known format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<F: Into<ImageDataFormat>, const N: usize> IntoVar<ImageSource> for (&'static [u8; N], F)

source§

fn into_var(self) -> Self::Var

From encoded data of known format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<F: Into<ImageDataFormat>> IntoVar<ImageSource> for (Arc<Vec<u8>>, F)

source§

fn into_var(self) -> Self::Var

From encoded data of known format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for (Uri, &'static str)

source§

fn into_var(self) -> Self::Var

From (URI, HTTP-ACCEPT).

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl<F: Into<ImageDataFormat>> IntoVar<ImageSource> for (Vec<u8>, F)

source§

fn into_var(self) -> Self::Var

From encoded data of known format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for Arc<Vec<u8>>

source§

fn into_var(self) -> Self::Var

From encoded data of Unknown format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for PathBuf

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> Self::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for ImageVar

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> Self::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for String

source§

fn into_var(self) -> Self::Var

Same as conversion from &str.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for Txt

source§

fn into_var(self) -> Self::Var

Same as conversion from &str.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for Uri

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> Self::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl IntoVar<ImageSource> for Vec<u8>

source§

fn into_var(self) -> Self::Var

From encoded data of Unknown format.

source§

type Var = LocalVar<ImageSource>

Variable type that will wrap the T value. Read more
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
source§

impl PartialEq for ImageSource

source§

fn eq(&self, other: &Self) -> 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.
source§

impl IntoValue<ImageSource> for &'static [u8]

source§

impl<const N: usize> IntoValue<ImageSource> for &'static [u8; N]

source§

impl IntoValue<ImageSource> for &Path

source§

impl IntoValue<ImageSource> for &str

source§

impl<F: Into<ImageDataFormat>> IntoValue<ImageSource> for (&'static [u8], F)

source§

impl<F: Into<ImageDataFormat>, const N: usize> IntoValue<ImageSource> for (&'static [u8; N], F)

source§

impl<F: Into<ImageDataFormat>> IntoValue<ImageSource> for (Arc<Vec<u8>>, F)

source§

impl IntoValue<ImageSource> for (Uri, &'static str)

source§

impl<F: Into<ImageDataFormat>> IntoValue<ImageSource> for (Vec<u8>, F)

source§

impl IntoValue<ImageSource> for Arc<Vec<u8>>

source§

impl IntoValue<ImageSource> for PathBuf

source§

impl IntoValue<ImageSource> for ImageVar

source§

impl IntoValue<ImageSource> for String

source§

impl IntoValue<ImageSource> for Txt

source§

impl IntoValue<ImageSource> for Uri

source§

impl IntoValue<ImageSource> for Vec<u8>

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

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

source§

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

Access to dyn Any methods.
source§

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

Access to mut dyn Any methods.
source§

fn clone_boxed(&self) -> Box<dyn AnyVarValue>

Clone the value.
source§

fn clone_boxed_var(&self) -> Box<dyn AnyVar>

Clone the value into a new boxed LocalVar<Self>.
source§

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

Access to Box<dyn Any> methods.
source§

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

Gets if self equals other.
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, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

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> Instrument for T

source§

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

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

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

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

source§

type Var = LocalVar<T>

Variable type that will wrap the T value. Read more
source§

fn into_var(self) -> <T as IntoVar<T>>::Var

Converts the source value into a var.
source§

fn into_boxed_var(self) -> Box<dyn VarBoxed<T>>
where Self: Sized,

Converts into BoxedVar<T>. Read more
§

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

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> ErasedDestructor for T
where T: 'static,

source§

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

§

impl<T> MaybeSendSync for T

source§

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

source§

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