Skip to main content

OverlayState

Struct OverlayState 

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

The watermark’s uploaded pixels plus its current placement and bounce state, kept across frames so a moving (bouncing) watermark can be advanced and re-placed each tick without re-reading or re-uploading the image.

Implementations§

Source§

impl OverlayState

Source

pub fn load_watermark(&mut self, path: &str, output_scale: f64)

Load the watermark image from disk; output_scale is the output’s fractional scale, ceiled to the integer buffer scale of the upload. A failed load clears the overlay.

Source

pub fn blend_bgra( &self, frame: &mut [u8], stride: usize, frame_w: i32, frame_h: i32, )

Alpha-blend the watermark into a BGRA frame (row stride in bytes) at its current position. Clips per pixel at the frame bounds because the animated position — or a watermark larger than the capture — can leave part of the image off-frame, and only the in-frame portion may be written.

Source

pub fn damage_rect( &self, frame_w: i32, frame_h: i32, ) -> Option<Rectangle<i32, Physical>>

Frame-clipped union of the watermark’s current and previous rectangles — the region a damage-gated encoder must repaint after a bounce step moved the image (the vacated area needs repainting as much as the new one).

Source

pub fn is_active(&self) -> bool

True once a watermark image has been loaded.

Source

pub fn is_animated(&self) -> bool

True when the watermark moves and must be re-rendered every frame.

Source

pub fn update_position( &mut self, frame_width: i32, frame_height: i32, loc_enum: i32, )

Place the watermark for the current frame size. Fixed anchors (corners / middle) are pure geometry, but the AN anchor makes the watermark bounce, so each call also advances that animation one step and reflects it off the frame edges — which is precisely why an AN watermark has to be re-rendered every frame (see is_animated). loc_enum is the i32 form of WatermarkLocation.

Source

pub fn get_watermark_element<R>( &self, renderer: &mut R, ) -> Option<MemoryRenderBufferRenderElement<R>>
where R: Renderer + ImportMem, R::TextureId: Texture + Clone + Send + 'static,

Render element for the watermark; None when no watermark is loaded.

Source

pub fn get_cursor_element<R>( &self, renderer: &mut R, image: Image, pos: Point<f64, Logical>, scale: f64, ) -> Option<MemoryRenderBufferRenderElement<R>>
where R: Renderer + ImportMem, R::TextureId: Texture + Clone + Send + 'static,

Render element for a software cursor image at logical pos on an output with fractional scale; the position converts to physical here so the composited cursor lands where the damage tracker and clients (which work in physical pixels) expect it.

Trait Implementations§

Source§

impl Default for OverlayState

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

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

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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> Ungil for T
where T: Send,

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

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