Struct ccthw::application::GlfwWindow
source · pub struct GlfwWindow { /* private fields */ }
Expand description
All resources required for running a single-windowed GLFW application which renders graphics using Vulkan.
GlfwWindow derefs as a raw GLFW window handle so application state can configure the window however is convenient.
Implementations§
source§impl GlfwWindow
impl GlfwWindow
sourcepub fn new(window_title: impl AsRef<str>) -> Result<Self>
pub fn new(window_title: impl AsRef<str>) -> Result<Self>
Create a new GLFW window.
The window starts in “windowed” mode and can be toggled into fullscreen or resized by the application.
Params
window_title
- The title shown on the window’s top bar.
sourcepub fn toggle_fullscreen(&mut self) -> Result<()>
pub fn toggle_fullscreen(&mut self) -> Result<()>
Toggle application fullscreen.
If the window is currently windowed then swap to fullscreen using whatever the primary monitor advertises as the primary video mode.
If the window is currently fullscreen, then swap to windowed and restore the window’s previous size and location.
sourcepub unsafe fn create_default_render_device(
&self,
physical_device_features: PhysicalDeviceFeatures
) -> Result<Arc<RenderDevice>>
pub unsafe fn create_default_render_device( &self, physical_device_features: PhysicalDeviceFeatures ) -> Result<Arc<RenderDevice>>
sourcepub unsafe fn create_render_device(
&self,
instance_extensions: &[String],
instance_layers: &[String],
features: PhysicalDeviceFeatures
) -> Result<Arc<RenderDevice>>
pub unsafe fn create_render_device( &self, instance_extensions: &[String], instance_layers: &[String], features: PhysicalDeviceFeatures ) -> Result<Arc<RenderDevice>>
Create a render device for the application.
Params
instance_extensions
- Any extensions to enable when creating the instance. Extensions for the swapchain on the current platform are added automatically and do not need to be provided.instance_layers
- Any additional layers to provide. The khronos validation layer is added automatically when debug assertions are enabled.features
- The physical device features required by the application.
Safety
The application is responsible for synchronizing access to all Vulkan resources and destroying the render device at exit.
sourcepub unsafe fn create_vulkan_instance(
&self,
instance_extensions: &[String],
instance_layers: &[String]
) -> Result<VulkanInstance>
pub unsafe fn create_vulkan_instance( &self, instance_extensions: &[String], instance_layers: &[String] ) -> Result<VulkanInstance>
Create a Vulkan instance with extensions and layers configured to such that it can present swapchain frames to the window.
Params
instance_extensions
- Any extensions to enable when creating the instance. Extensions for the swapchain on the current platform are added automatically and do not need to be provided.instance_layers
- Any additional layers to provide. The khronos validation layer is added automatically when debug assertions are enabled.
Safety
The application is responsible for synchronizing access to all Vulkan resources and destroying the Vulkan instance at exit.
Methods from Deref<Target = Window>§
sourcepub fn get_proc_address(&mut self, procname: &str) -> *const c_void
pub fn get_proc_address(&mut self, procname: &str) -> *const c_void
Returns the address of the specified client API or extension function if it is supported by the context associated with this Window. If this Window is not the current context, it will make it the current context.
Wrapper for glfwGetProcAddress
.
sourcepub fn get_instance_proc_address(
&mut self,
instance: usize,
procname: &str
) -> *const c_void
pub fn get_instance_proc_address( &mut self, instance: usize, procname: &str ) -> *const c_void
This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to NULL it can return any function exported from the Vulkan loader, including at least the following functions:
vkEnumerateInstanceExtensionProperties
vkEnumerateInstanceLayerProperties
vkCreateInstance
vkGetInstanceProcAddr
If Vulkan is not available on the machine, this function returns NULL
Wrapper for glfwGetInstanceProcAddress
sourcepub fn get_physical_device_presentation_support(
&self,
instance: usize,
device: usize,
queue_family: u32
) -> bool
pub fn get_physical_device_presentation_support( &self, instance: usize, device: usize, queue_family: u32 ) -> bool
This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.
Wrapper for glfwGetPhysicalDevicePresentationSupport
sourcepub fn create_window_surface(
&self,
instance: usize,
allocator: *const AllocationCallbacks,
surface: *mut u64
) -> u32
pub fn create_window_surface( &self, instance: usize, allocator: *const AllocationCallbacks, surface: *mut u64 ) -> u32
wrapper for glfwCreateWindowSurface
Wrapper for glfwCreateWindow
.
sourcepub fn render_context(&mut self) -> RenderContext
pub fn render_context(&mut self) -> RenderContext
Returns a render context that can be shared between tasks, allowing for concurrent rendering.
sourcepub fn should_close(&self) -> bool
pub fn should_close(&self) -> bool
Wrapper for glfwWindowShouldClose
.
sourcepub fn set_should_close(&mut self, value: bool)
pub fn set_should_close(&mut self, value: bool)
Wrapper for glfwSetWindowShouldClose
.
sourcepub fn set_title(&mut self, title: &str)
pub fn set_title(&mut self, title: &str)
Sets the title of the window.
Wrapper for glfwSetWindowTitle
.
sourcepub fn get_frame_size(&self) -> (i32, i32, i32, i32)
pub fn get_frame_size(&self) -> (i32, i32, i32, i32)
Wrapper for glfwGetWindowFrameSize
Returns (left, top, right, bottom)
edge window frame sizes, in screen coordinates.
sourcepub fn get_framebuffer_size(&self) -> (i32, i32)
pub fn get_framebuffer_size(&self) -> (i32, i32)
Wrapper for glfwGetFramebufferSize
.
sourcepub fn set_aspect_ratio(&mut self, numer: u32, denum: u32)
pub fn set_aspect_ratio(&mut self, numer: u32, denum: u32)
Wrapper for glfwSetWindowAspectRatio
.
sourcepub fn set_size_limits(
&mut self,
minwidth: Option<u32>,
minheight: Option<u32>,
maxwidth: Option<u32>,
maxheight: Option<u32>
)
pub fn set_size_limits( &mut self, minwidth: Option<u32>, minheight: Option<u32>, maxwidth: Option<u32>, maxheight: Option<u32> )
Wrapper for glfwSetWindowSizeLimits
.
A value of None
is equivalent to GLFW_DONT_CARE
.
If minwidth
or minheight
are None
, no minimum size is enforced.
If maxwidth
or maxheight
are None
, no maximum size is enforced.
sourcepub fn with_window_mode<T, F>(&self, f: F) -> Twhere
F: Fn(WindowMode<'_>) -> T,
pub fn with_window_mode<T, F>(&self, f: F) -> Twhere F: Fn(WindowMode<'_>) -> T,
sourcepub fn with_window_mode_mut<T, F>(&self, f: F) -> Twhere
F: FnMut(WindowMode<'_>) -> T,
pub fn with_window_mode_mut<T, F>(&self, f: F) -> Twhere F: FnMut(WindowMode<'_>) -> T,
sourcepub fn set_monitor(
&mut self,
mode: WindowMode<'_>,
xpos: i32,
ypos: i32,
width: u32,
height: u32,
refresh_rate: Option<u32>
)
pub fn set_monitor( &mut self, mode: WindowMode<'_>, xpos: i32, ypos: i32, width: u32, height: u32, refresh_rate: Option<u32> )
Wrapper for glfwSetWindowMonitor
sourcepub fn focus(&mut self)
pub fn focus(&mut self)
Wrapper for glfwFocusWindow
It is NOT recommended to use this function, as it steals focus from other applications and can be extremely disruptive to the user.
sourcepub fn is_focused(&self) -> bool
pub fn is_focused(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with FOCUSED
.
sourcepub fn is_iconified(&self) -> bool
pub fn is_iconified(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with ICONIFIED
.
sourcepub fn is_maximized(&self) -> bool
pub fn is_maximized(&self) -> bool
Wrapper for glfwGetWindowattrib
called with MAXIMIZED
.
sourcepub fn get_client_api(&self) -> i32
pub fn get_client_api(&self) -> i32
Wrapper for glfwGetWindowAttrib
called with CLIENT_API
.
sourcepub fn get_context_version(&self) -> Version
pub fn get_context_version(&self) -> Version
Wrapper for glfwGetWindowAttrib
called with
CONTEXT_VERSION_MAJOR
, CONTEXT_VERSION_MINOR
and CONTEXT_REVISION
.
Returns
The client API version of the window’s context in a version struct.
sourcepub fn get_context_robustness(&self) -> i32
pub fn get_context_robustness(&self) -> i32
Wrapper for glfwGetWindowAttrib
called with CONTEXT_ROBUSTNESS
.
sourcepub fn is_opengl_forward_compat(&self) -> bool
pub fn is_opengl_forward_compat(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with OPENGL_FORWARD_COMPAT
.
sourcepub fn is_opengl_debug_context(&self) -> bool
pub fn is_opengl_debug_context(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with OPENGL_DEBUG_CONTEXT
.
sourcepub fn get_opengl_profile(&self) -> i32
pub fn get_opengl_profile(&self) -> i32
Wrapper for glfwGetWindowAttrib
called with OPENGL_PROFILE
.
sourcepub fn is_resizable(&self) -> bool
pub fn is_resizable(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with RESIZABLE
.
sourcepub fn set_resizable(&mut self, resizable: bool)
pub fn set_resizable(&mut self, resizable: bool)
Wrapper for glfwSetWindowAttrib
called with RESIZABLE
.
sourcepub fn is_visible(&self) -> bool
pub fn is_visible(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with VISIBLE
.
sourcepub fn is_decorated(&self) -> bool
pub fn is_decorated(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with DECORATED
.
sourcepub fn set_decorated(&mut self, decorated: bool)
pub fn set_decorated(&mut self, decorated: bool)
Wrapper for glfwSetWindowAttrib
called with DECORATED
.
sourcepub fn is_auto_iconify(&self) -> bool
pub fn is_auto_iconify(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with AUTO_ICONIFY
.
sourcepub fn set_auto_iconify(&mut self, auto_iconify: bool)
pub fn set_auto_iconify(&mut self, auto_iconify: bool)
Wrapper for glfwSetWindowAttrib
called with AUTO_ICONIFY
.
sourcepub fn is_floating(&self) -> bool
pub fn is_floating(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with FLOATING
.
sourcepub fn set_floating(&mut self, floating: bool)
pub fn set_floating(&mut self, floating: bool)
Wrapper for glfwSetWindowAttrib
called with FLOATING
.
sourcepub fn is_framebuffer_transparent(&self) -> bool
pub fn is_framebuffer_transparent(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with TRANSPARENT_FRAMEBUFFER
.
sourcepub fn is_focus_on_show(&self) -> bool
pub fn is_focus_on_show(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with FOCUS_ON_SHOW
.
sourcepub fn set_focus_on_show(&mut self, focus_on_show: bool)
pub fn set_focus_on_show(&mut self, focus_on_show: bool)
Wrapper for glfwSetWindowAttrib
called with FOCUS_ON_SHOW
.
sourcepub fn is_hovered(&self) -> bool
pub fn is_hovered(&self) -> bool
Wrapper for glfwGetWindowAttrib
called with HOVERED
.
sourcepub fn set_pos_polling(&mut self, should_poll: bool)
pub fn set_pos_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowPosCallback
.
sourcepub fn set_all_polling(&mut self, should_poll: bool)
pub fn set_all_polling(&mut self, should_poll: bool)
Starts or stops polling for all available events
sourcepub fn set_size_polling(&mut self, should_poll: bool)
pub fn set_size_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowSizeCallback
.
sourcepub fn set_close_polling(&mut self, should_poll: bool)
pub fn set_close_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowCloseCallback
.
sourcepub fn set_refresh_polling(&mut self, should_poll: bool)
pub fn set_refresh_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowRefreshCallback
.
sourcepub fn set_focus_polling(&mut self, should_poll: bool)
pub fn set_focus_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowFocusCallback
.
sourcepub fn set_iconify_polling(&mut self, should_poll: bool)
pub fn set_iconify_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowIconifyCallback
.
sourcepub fn set_framebuffer_size_polling(&mut self, should_poll: bool)
pub fn set_framebuffer_size_polling(&mut self, should_poll: bool)
Wrapper for glfwSetFramebufferSizeCallback
.
sourcepub fn set_drag_and_drop_polling(&mut self, should_poll: bool)
pub fn set_drag_and_drop_polling(&mut self, should_poll: bool)
Wrapper for glfwSetDropCallback
.
sourcepub fn set_maximize_polling(&mut self, should_poll: bool)
pub fn set_maximize_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowMaximizeCallback
.
sourcepub fn set_content_scale_polling(&mut self, should_poll: bool)
pub fn set_content_scale_polling(&mut self, should_poll: bool)
Wrapper for glfwSetWindowContentScaleCallback
.
sourcepub fn get_cursor_mode(&self) -> CursorMode
pub fn get_cursor_mode(&self) -> CursorMode
Wrapper for glfwGetInputMode
called with CURSOR
.
sourcepub fn set_cursor_mode(&mut self, mode: CursorMode)
pub fn set_cursor_mode(&mut self, mode: CursorMode)
Wrapper for glfwSetInputMode
called with CURSOR
.
sourcepub fn set_cursor(&mut self, cursor: Option<Cursor>) -> Option<Cursor>
pub fn set_cursor(&mut self, cursor: Option<Cursor>) -> Option<Cursor>
Wrapper for glfwSetCursor
using Cursor
The window will take ownership of the cursor, and will not Drop it until it is replaced or the window itself is destroyed.
Returns the previously set Cursor or None if no cursor was set.
sourcepub fn set_icon_from_pixels(&mut self, images: Vec<PixelImage, Global>)
pub fn set_icon_from_pixels(&mut self, images: Vec<PixelImage, Global>)
Sets the window icon via glfwSetWindowIcon
from a set a set of vectors
containing pixels in RGBA format (one pixel per 32-bit integer)
sourcepub fn has_sticky_keys(&self) -> bool
pub fn has_sticky_keys(&self) -> bool
Wrapper for glfwGetInputMode
called with STICKY_KEYS
.
sourcepub fn set_sticky_keys(&mut self, value: bool)
pub fn set_sticky_keys(&mut self, value: bool)
Wrapper for glfwSetInputMode
called with STICKY_KEYS
.
Wrapper for glfwGetInputMode
called with STICKY_MOUSE_BUTTONS
.
Wrapper for glfwSetInputMode
called with STICKY_MOUSE_BUTTONS
.
sourcepub fn does_store_lock_key_mods(&self) -> bool
pub fn does_store_lock_key_mods(&self) -> bool
Wrapper for glfwGetInputMode
called with LOCK_KEY_MODS
sourcepub fn set_store_lock_key_mods(&mut self, value: bool)
pub fn set_store_lock_key_mods(&mut self, value: bool)
Wrapper for glfwSetInputMode
called with LOCK_KEY_MODS
sourcepub fn uses_raw_mouse_motion(&self) -> bool
pub fn uses_raw_mouse_motion(&self) -> bool
Wrapper for glfwGetInputMode
called with RAW_MOUSE_MOTION
sourcepub fn set_raw_mouse_motion(&mut self, value: bool)
pub fn set_raw_mouse_motion(&mut self, value: bool)
Wrapper for glfwSetInputMode
called with RAW_MOUSE_MOTION
Wrapper for glfwGetMouseButton
.
sourcepub fn get_cursor_pos(&self) -> (f64, f64)
pub fn get_cursor_pos(&self) -> (f64, f64)
Wrapper for glfwGetCursorPos
.
sourcepub fn set_cursor_pos(&mut self, xpos: f64, ypos: f64)
pub fn set_cursor_pos(&mut self, xpos: f64, ypos: f64)
Wrapper for glfwSetCursorPos
.
sourcepub fn set_key_polling(&mut self, should_poll: bool)
pub fn set_key_polling(&mut self, should_poll: bool)
Wrapper for glfwSetKeyCallback
.
sourcepub fn set_char_polling(&mut self, should_poll: bool)
pub fn set_char_polling(&mut self, should_poll: bool)
Wrapper for glfwSetCharCallback
.
sourcepub fn set_char_mods_polling(&mut self, should_poll: bool)
pub fn set_char_mods_polling(&mut self, should_poll: bool)
Wrapper for glfwSetCharModsCallback
Wrapper for glfwSetMouseButtonCallback
.
sourcepub fn set_cursor_pos_polling(&mut self, should_poll: bool)
pub fn set_cursor_pos_polling(&mut self, should_poll: bool)
Wrapper for glfwSetCursorPosCallback
.
sourcepub fn set_cursor_enter_polling(&mut self, should_poll: bool)
pub fn set_cursor_enter_polling(&mut self, should_poll: bool)
Wrapper for glfwSetCursorEnterCallback
.
sourcepub fn set_scroll_polling(&mut self, should_poll: bool)
pub fn set_scroll_polling(&mut self, should_poll: bool)
Wrapper for glfwSetScrollCallback
.
sourcepub fn set_clipboard_string(&mut self, string: &str)
pub fn set_clipboard_string(&mut self, string: &str)
Wrapper for glfwGetClipboardString
.
sourcepub fn get_clipboard_string(&self) -> Option<String>
pub fn get_clipboard_string(&self) -> Option<String>
Wrapper for glfwGetClipboardString
.
sourcepub fn get_opacity(&self) -> f32
pub fn get_opacity(&self) -> f32
Wrapper for ‘glfwGetWindowOpacity’.
sourcepub fn set_opacity(&mut self, opacity: f32)
pub fn set_opacity(&mut self, opacity: f32)
Wrapper for ‘glfwSetWindowOpacity’.
sourcepub fn request_attention(&mut self)
pub fn request_attention(&mut self)
Wrapper for glfwRequestWindowAttention
.
sourcepub fn get_content_scale(&self) -> (f32, f32)
pub fn get_content_scale(&self) -> (f32, f32)
Wrapper for glfwGetWindowContentScale
.
sourcepub fn get_x11_window(&self) -> *mut c_void
pub fn get_x11_window(&self) -> *mut c_void
Wrapper for glfwGetX11Window
sourcepub fn get_glx_context(&self) -> *mut c_void
pub fn get_glx_context(&self) -> *mut c_void
Wrapper for glfwGetGLXContext
Trait Implementations§
source§impl Deref for GlfwWindow
impl Deref for GlfwWindow
Auto Trait Implementations§
impl RefUnwindSafe for GlfwWindow
impl !Send for GlfwWindow
impl !Sync for GlfwWindow
impl Unpin for GlfwWindow
impl UnwindSafe for GlfwWindow
Blanket Implementations§
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read moresource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.