Struct Window

Source
pub struct Window {
    pub canvas: Canvas,
    pub window: Window,
    /* private fields */
}
Expand description

Window core feature of this library, everything starts here. Only after creating window you can safely use other parts of render module because window also calls gl::load_with() witch makes functions accessible. Little design decision is that (0, 0) is in the middle of screen by default it makes managing gale viewport lot nicer in my opinion. Window also implements Deref to deref inner sdl window.

Fields§

§canvas: Canvas§window: Window

Implementations§

Source§

impl Window

Source

pub fn new<F>(gen: F) -> (Window, EventPump, GLContext, Sdl, VideoSubsystem)

new creates new window. Cosure is just to deffer window creation for internal reasons. function also returns event pump from witch you can poll events like key presses and mouse moves. Third return value is simply here because it cannot be dropped otherwise window would not render.

§Example
use rustbatch::Window;

let (window, event_pump, _gl, _sdl, _video_subsystem) = Window::new(|sys| {
    sys.window("Title", 1000, 600)
    .opengl()
    .build()
    .unwrap()
});

from_buffer creates window with custom buffer. Remember that changing vertex structure requires also batch with custom program

Source

pub fn update(&mut self)

update updates window, just call it at the end

Source

pub fn get_viewport_rect(&self) -> Rect

get_viewport_rect returns rectangle that whole screen fits in and that is even if you rotate camera. Useful when you don’t want to draw sprites that are foo screen

Source

pub fn set_background_color(&mut self, color: &RGBA)

Source

pub fn clear(&self)

Source

pub fn project_mouse(&self, mouse: Vect) -> Vect

Methods from Deref<Target = Window>§

Source

pub fn raw(&self) -> *mut SDL_Window

Source

pub fn subsystem(&self) -> &VideoSubsystem

Source

pub fn context(&self) -> Rc<WindowContext>

Source

pub fn id(&self) -> u32

Source

pub fn gl_create_context(&self) -> Result<GLContext, String>

Source

pub fn gl_set_context_to_current(&self) -> Result<(), String>

Set the window’s OpenGL context to the current context on the thread.

Source

pub fn gl_make_current(&self, context: &GLContext) -> Result<(), String>

Source

pub fn gl_swap_window(&self)

Source

pub fn vulkan_instance_extensions(&self) -> Result<Vec<&'static str>, String>

Get the names of the Vulkan instance extensions needed to create a surface with vulkan_create_surface.

Source

pub fn vulkan_create_surface(&self, instance: usize) -> Result<u64, String>

Create a Vulkan rendering surface for a window.

The VkInstance must be created using a prior call to the vkCreateInstance function in the Vulkan library.

Source

pub fn display_index(&self) -> Result<i32, String>

Source

pub fn display_mode(&self) -> Result<DisplayMode, String>

Source

pub fn window_pixel_format(&self) -> PixelFormatEnum

Source

pub fn window_flags(&self) -> u32

Source

pub fn title(&self) -> &str

Source

pub fn position(&self) -> (i32, i32)

Source

pub fn border_size(&self) -> Result<(u16, u16, u16, u16), String>

Use this function to get the size of a window’s borders (decorations) around the client area.

§Remarks

This function is only supported on X11, otherwise an error is returned.

Source

pub fn size(&self) -> (u32, u32)

Source

pub fn drawable_size(&self) -> (u32, u32)

Source

pub fn vulkan_drawable_size(&self) -> (u32, u32)

Source

pub fn minimum_size(&self) -> (u32, u32)

Source

pub fn maximum_size(&self) -> (u32, u32)

Source

pub fn fullscreen_state(&self) -> FullscreenType

Source

pub fn surface<'a>( &'a self, _e: &'a EventPump, ) -> Result<WindowSurfaceRef<'a>, String>

Returns a WindowSurfaceRef, which can be used like a regular Surface. This is an alternative way to the Renderer (Canvas) way to modify pixels directly in the Window.

For this to happen, simply create a WindowSurfaceRef via this method, use the underlying Surface however you like, and when the changes of the Surface must be applied to the screen, call update_window if you intend to keep using the WindowSurfaceRef afterwards, or finish if you don’t intend to use it afterwards.

The Renderer way is of course much more flexible and recommended; even though you only want to support Software Rendering (which is what using Surface is), you can still create a Renderer which renders in a Software-based manner, so try to rely on a Renderer as much as possible !

Source

pub fn grab(&self) -> bool

Source

pub fn brightness(&self) -> f64

Source

pub fn gamma_ramp(&self) -> Result<(Vec<u16>, Vec<u16>, Vec<u16>), String>

Source

pub fn opacity(&self) -> Result<f32, String>

Returns the transparency of the window, as a value between 0.0 (fully transparent), and 1.0 (fully opaque).

If opacity isn’t supported by the current platform, this method returns Ok(1.0) instead of an error.

Trait Implementations§

Source§

impl Deref for Window

Source§

type Target = Window

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.

Auto Trait Implementations§

§

impl Freeze for Window

§

impl RefUnwindSafe for Window

§

impl !Send for Window

§

impl !Sync for Window

§

impl Unpin for Window

§

impl UnwindSafe for Window

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V