pub struct CompositorView<'a> {
pub index: u8,
pub window: &'a mut Compositor,
pub layer0: &'a mut Compositor,
pub layer1: &'a mut Compositor,
pub clipstack: &'a mut Vec<AbsRect>,
pub offset: Vec2,
pub surface_dim: Vec2,
pub pass: u8,
pub slice: u8,
}
Expand description
A Compositor is associated with a render target, which is usually a window, but can also be an intermediate buffer, used for Layers. As a result, a compositor does not control the clipping rect stack, the window itself does. This associates a compositor with a clipstack and any other information it might need to properly append data during a render, such as the offset. Because of this auxillairy information, you cannot append directly to a compositor, only to a CompositorView.
Fields§
§index: u8
§window: &'a mut Compositor
§layer0: &'a mut Compositor
§layer1: &'a mut Compositor
§clipstack: &'a mut Vec<AbsRect>
§offset: Vec2
§surface_dim: Vec2
§pass: u8
§slice: u8
Implementations§
Source§impl<'a> CompositorView<'a>
impl<'a> CompositorView<'a>
pub fn with_clip<T>( &mut self, clip: AbsRect, f: impl FnOnce(&mut Self) -> Result<T, Error>, ) -> Result<T, Error>
pub fn current_clip(&self) -> AbsRect
pub fn segment(&mut self) -> &mut Segment
pub fn compositor(&mut self) -> &mut Compositor
pub fn append_data( &mut self, pos: Vec2, dim: Vec2, uv: Vec2, uvdim: Vec2, color: u32, rotation: f32, tex: u8, raw: bool, ) -> u32
pub fn preprocessed(&mut self, data: Data) -> u32
pub fn defer( &mut self, f: impl FnOnce(&Driver, &mut Data) + Send + Sync + 'static, )
pub fn append_custom( &mut self, f: impl FnMut(&Driver, &mut RenderPass<'_>, Vec2) + Send + Sync + 'static, )
Sourcepub fn get_compute_buffer(&mut self) -> (&Buffer, u32)
pub fn get_compute_buffer(&mut self) -> (&Buffer, u32)
Returns the GPU buffer and the current offset, which allows a compute shader to accumulate commands in the GPU buffer directly, provided it calls set_compute_buffer afterwards with the command count. Attempting to insert a non-GPU command before calling set_compute_buffer will panic.
Sourcepub fn set_compute_buffer(&mut self, count: u32)
pub fn set_compute_buffer(&mut self, count: u32)
After executing a compute shader that added a series of compositor commands to the command buffer, this must be called with the number of commands that were contiguously inserted into the buffer.
pub fn reserve(&mut self, driver: &Driver)
Auto Trait Implementations§
impl<'a> Freeze for CompositorView<'a>
impl<'a> !RefUnwindSafe for CompositorView<'a>
impl<'a> Send for CompositorView<'a>
impl<'a> Sync for CompositorView<'a>
impl<'a> Unpin for CompositorView<'a>
impl<'a> !UnwindSafe for CompositorView<'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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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