Struct nannou::app::App
[−]
[src]
pub struct App { pub audio: Audio, pub mouse: Mouse, pub window: Window, pub keys: Keys, pub duration: Time, // some fields omitted }
An App represents the entire context of your application.
The App owns and manages:
- The window and input event loop used to drive the application forward.
- All OpenGL windows for graphics and user input. Windows can be referenced via their IDs.
- The audio event loop from which you can receive or send audio via streams.
Fields
audio: Audio
The App
's audio-related API.
mouse: Mouse
The current state of the Mouse
.
window: Window
State of the window currently in focus.
keys: Keys
State of the keyboard keys.
mods
provides state of each of the modifier keys: shift
, ctrl
, alt
, logo
.
down
is the set of keys that are currently pressed.
NOTE: down
this is tracked by the nannou App
so issues might occur if e.g. a key is
pressed while the app is in focus and then released when out of focus. Eventually we should
change this to query the OS somehow, but I don't think winit
provides a way to do this
yet.
duration: Time
Key time measurements tracked by the App.
duration.since_start
specifies the duration since the app started running.
duration.since_prev_update
specifies the duration since the previous update event.
Methods
impl App
[src]
pub const ASSETS_DIRECTORY_NAME: &'static str
ASSETS_DIRECTORY_NAME: &'static str = "assets"
pub const DEFAULT_EXIT_ON_ESCAPE: bool
DEFAULT_EXIT_ON_ESCAPE: bool = true
pub fn assets_path(&self) -> Result<PathBuf, Error>
[src]
Find and return the absolute path to the project's assets
directory.
This method looks for the assets directory in the following order:
- Checks the same directory as the executable.
- Recursively checks exe's parent directories (to a max depth of 5).
- Recursively checks exe's children directories (to a max depth of 3).
pub fn new_window<'a>(&'a self) -> Builder<'a, 'static>
[src]
Begin building a new OpenGL window.
pub fn window_count(&self) -> usize
[src]
The number of windows currently in the application.
pub fn window(&self, id: Id) -> Option<Ref<Window>>
[src]
A reference to the window with the given Id
.
pub fn main_window(&self) -> Ref<Window>
[src]
A reference to the window currently in focus.
Panics if their are no windows open in the App.
Uses the App::window method internally.
TODO: Currently this produces a reference to the focused window, but this behaviour should be changed to track the "main" window (the first window created?).
pub fn exit_on_escape(&self) -> bool
[src]
Return whether or not the App
is currently set to exit when the Escape
key is pressed.
pub fn set_exit_on_escape(&self, b: bool)
[src]
Specify whether or not the app should close when the Escape
key is pressed.
By default this is true
.
pub fn loop_mode(&self) -> LoopMode
[src]
Returns the App's current LoopMode.
pub fn set_loop_mode(&self, mode: LoopMode)
[src]
Sets the loop mode of the App.
Note: Setting the loop mode will not affect anything until the end of the current loop iteration. The behaviour of a single loop iteration is described under each of the LoopMode variants.
pub fn create_proxy(&self) -> Proxy
[src]
A handle to the App that can be shared across threads.
This can be used to "wake up" the App's inner event loop.
pub fn new_ui(&self, window_id: Id) -> Builder
[src]
Create a new Ui
for the window with the given Id
.
Returns None
if there is no window for the given window_id
.
pub fn draw_for_window(&self, window_id: Id) -> Option<Draw>
[src]
Produce the App's Draw API for drawing geometry and text with colors and textures.
Note: There may only be a single app::Draw instance at any point in time. If this method is called while there is a pre-existing instance of app::Draw this method will panic.
Returns None if there is no window for the given window::Id.
pub fn draw(&self) -> Draw
[src]
Produce the App's Draw API for drawing geometry and text with colors and textures.
This is a simplified wrapper around the App::draw_for_window method that draws to the window currently in focus.
Panics if there are no windows open.
Note: There may only be a single app::Draw instance at any point in time. If this method is called while there is a pre-existing instance of app::Draw this method will panic.