Skip to main content

ferroui_base/rendering/composition/drawing/
i_composition_render_resource.rs

1use crate::rendering::composition::server::ServerObjectId;
2use crate::rendering::composition::Compositor;
3use std::rc::Rc;
4
5/// A mutable media object (brush, pen, geometry, transform) that has a
6/// server-side counterpart on every compositor it is used with.
7///
8/// The counterpart is reference counted per compositor: each render data
9/// that draws with the object holds a reference until it is disposed.
10/// `get_for_compositor` is the generic `GetForCompositor` of upstream; the
11/// id refers to a server object that exposes the resource's interface
12/// (`IServerObject::as_brush`, `as_pen`, `as_render_data_geometry`).
13pub trait ICompositionRenderResource {
14    fn add_ref_on_compositor(&self, c: &Rc<Compositor>);
15    fn release_on_compositor(&self, c: &Rc<Compositor>);
16
17    /// The server-side counterpart on compositor `c`. Panics if the
18    /// resource is not attached to that compositor.
19    fn get_for_compositor(&self, c: &Compositor) -> ServerObjectId;
20}