Struct wayland_cursor::CursorTheme
source · pub struct CursorTheme {
pub(crate) name: String,
pub(crate) cursors: Vec<Cursor>,
pub(crate) size: u32,
pub(crate) pool: WlShmPool,
pub(crate) pool_size: i32,
pub(crate) file: File,
pub(crate) backend: WeakBackend,
pub(crate) fallback: Option<FallBack>,
}
Expand description
Represents a cursor theme loaded from the system.
Fields§
§name: String
§cursors: Vec<Cursor>
§size: u32
§pool: WlShmPool
§pool_size: i32
§file: File
§backend: WeakBackend
§fallback: Option<FallBack>
Implementations§
source§impl CursorTheme
impl CursorTheme
sourcepub fn load(conn: &Connection, shm: WlShm, size: u32) -> Result<Self, InvalidId>
pub fn load(conn: &Connection, shm: WlShm, size: u32) -> Result<Self, InvalidId>
Load a cursor theme from system defaults.
Same as calling the following:
CursorTheme::load_or(conn, shm, "default", size)
sourcepub fn load_or(
conn: &Connection,
shm: WlShm,
name: &str,
size: u32,
) -> Result<Self, InvalidId>
pub fn load_or( conn: &Connection, shm: WlShm, name: &str, size: u32, ) -> Result<Self, InvalidId>
Load a cursor theme, using name
as fallback.
The theme name and cursor size are read from the XCURSOR_THEME
and
XCURSOR_SIZE
environment variables, respectively, or from the provided variables
if those are invalid.
sourcepub fn load_from_name(
conn: &Connection,
shm: WlShm,
name: &str,
size: u32,
) -> Result<Self, InvalidId>
pub fn load_from_name( conn: &Connection, shm: WlShm, name: &str, size: u32, ) -> Result<Self, InvalidId>
Create a new cursor theme, ignoring the system defaults.
sourcepub fn get_cursor(&mut self, name: &str) -> Option<&Cursor>
pub fn get_cursor(&mut self, name: &str) -> Option<&Cursor>
Retrieve a cursor from the theme.
This method returns None
if this cursor is not provided either by the theme, or by one of its parents.
If a fallback is set, it will use the data returned by the fallback.
sourcepub fn set_fallback<F>(&mut self, fallback: F)
pub fn set_fallback<F>(&mut self, fallback: F)
Set a fallback to load the cursor data, in case the system theme is missing a cursor that you need.
Your fallback will be invoked with the name and size of the requested cursor and should return a byte
array with the contents of an xcursor
file, or None
if you don’t provide a fallback for this cursor.
For example, this defines a generic fallback cursor image and uses it for all missing cursors:
use wayland_cursor::CursorTheme;
use wayland_client::{Connection, backend::InvalidId, protocol::wl_shm};
fn example(conn: &Connection, shm: wl_shm::WlShm, size: u32) -> Result<CursorTheme, InvalidId> {
let mut theme = CursorTheme::load_or(conn, shm, "default", size)?;
theme.set_fallback(|name, size| {
include_bytes!("./icons/default")
});
Ok(theme)
}
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CursorTheme
impl !RefUnwindSafe for CursorTheme
impl Send for CursorTheme
impl Sync for CursorTheme
impl Unpin for CursorTheme
impl !UnwindSafe for CursorTheme
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.