Struct egui_winit::State
source · pub struct State {Show 13 fields
pub(crate) egui_ctx: Context,
pub(crate) viewport_id: ViewportId,
pub(crate) start_time: Instant,
pub(crate) egui_input: RawInput,
pub(crate) pointer_pos_in_points: Option<Pos2>,
pub(crate) any_pointer_button_down: bool,
pub(crate) current_cursor_icon: Option<CursorIcon>,
pub(crate) clipboard: Clipboard,
pub(crate) simulate_touch_screen: bool,
pub(crate) pointer_touch_id: Option<u64>,
pub(crate) has_sent_ime_enabled: bool,
pub(crate) allow_ime: bool,
pub(crate) ime_rect_px: Option<Rect>,
}
Expand description
Handles the integration between egui and a winit Window.
Instantiate one of these per viewport/window.
Fields§
§egui_ctx: Context
Shared clone.
viewport_id: ViewportId
§start_time: Instant
§egui_input: RawInput
§pointer_pos_in_points: Option<Pos2>
§current_cursor_icon: Option<CursorIcon>
§clipboard: Clipboard
§simulate_touch_screen: bool
If true
, mouse inputs will be treated as touches.
Useful for debugging touch support in egui.
Creates duplicate touches, if real touch inputs are coming.
pointer_touch_id: Option<u64>
Is Some(…) when a touch is being translated to a pointer.
Only one touch will be interpreted as pointer at any time.
has_sent_ime_enabled: bool
track ime state
allow_ime: bool
§ime_rect_px: Option<Rect>
Implementations§
source§impl State
impl State
sourcepub fn new(
egui_ctx: Context,
viewport_id: ViewportId,
display_target: &dyn HasDisplayHandle,
native_pixels_per_point: Option<f32>,
max_texture_side: Option<usize>,
) -> Self
pub fn new( egui_ctx: Context, viewport_id: ViewportId, display_target: &dyn HasDisplayHandle, native_pixels_per_point: Option<f32>, max_texture_side: Option<usize>, ) -> Self
Construct a new instance
sourcepub fn set_max_texture_side(&mut self, max_texture_side: usize)
pub fn set_max_texture_side(&mut self, max_texture_side: usize)
Call this once a graphics context has been created to update the maximum texture dimensions that egui will use.
sourcepub fn clipboard_text(&mut self) -> Option<String>
pub fn clipboard_text(&mut self) -> Option<String>
Fetches text from the clipboard and returns it.
sourcepub fn set_clipboard_text(&mut self, text: String)
pub fn set_clipboard_text(&mut self, text: String)
Places the text onto the clipboard.
sourcepub fn allow_ime(&self) -> bool
pub fn allow_ime(&self) -> bool
Returns false
or the last value that Window::set_ime_allowed()
was called with, used for debouncing.
sourcepub fn set_allow_ime(&mut self, allow: bool)
pub fn set_allow_ime(&mut self, allow: bool)
Set the last value that Window::set_ime_allowed()
was called with.
pub fn egui_ctx(&self) -> &Context
sourcepub fn egui_input(&self) -> &RawInput
pub fn egui_input(&self) -> &RawInput
The current input state.
This is changed by Self::on_window_event
and cleared by Self::take_egui_input
.
sourcepub fn egui_input_mut(&mut self) -> &mut RawInput
pub fn egui_input_mut(&mut self) -> &mut RawInput
The current input state.
This is changed by Self::on_window_event
and cleared by Self::take_egui_input
.
sourcepub fn take_egui_input(&mut self, window: &Window) -> RawInput
pub fn take_egui_input(&mut self, window: &Window) -> RawInput
Prepare for a new frame by extracting the accumulated input,
as well as setting the time and screen rectangle.
You need to set egui::RawInput::viewports
yourself though.
Use update_viewport_info
to update the info for each
viewport.
sourcepub fn on_window_event(
&mut self,
window: &Window,
event: &WindowEvent,
) -> EventResponse
pub fn on_window_event( &mut self, window: &Window, event: &WindowEvent, ) -> EventResponse
Call this when there is a new event.
The result can be found in Self::egui_input
and be extracted with Self::take_egui_input
.
pub fn ime_event_enable(&mut self)
pub fn ime_event_disable(&mut self)
pub fn on_mouse_motion(&mut self, delta: (f64, f64))
pub(crate) fn on_cursor_moved( &mut self, window: &Window, pos_in_pixels: PhysicalPosition<f64>, )
pub(crate) fn on_touch(&mut self, window: &Window, touch: &Touch)
pub(crate) fn on_mouse_wheel( &mut self, window: &Window, delta: MouseScrollDelta, )
pub(crate) fn on_keyboard_input(&mut self, event: &KeyEvent)
sourcepub fn handle_platform_output(
&mut self,
window: &Window,
platform_output: PlatformOutput,
)
pub fn handle_platform_output( &mut self, window: &Window, platform_output: PlatformOutput, )
Call with the output given by egui
.
This will, if needed:
- update the cursor
- copy text to the clipboard
- open any clicked urls
- update the IME
pub(crate) fn set_cursor_icon( &mut self, window: &Window, cursor_icon: CursorIcon, )
Auto Trait Implementations§
impl Freeze for State
impl !RefUnwindSafe for State
impl Send for State
impl !Sync for State
impl Unpin for State
impl !UnwindSafe for State
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> 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