Write missing documentation in `iced_winit`

This commit is contained in:
Héctor Ramón Jiménez 2020-11-06 02:25:56 +01:00
parent e966cd5b59
commit 631c9e4a21
4 changed files with 72 additions and 3 deletions

View File

@ -1,9 +1,10 @@
//! Create interactive, native cross-platform applications. //! Create interactive, native cross-platform applications.
use crate::{mouse, Error, Executor, Runtime}; use crate::{mouse, Error, Executor, Runtime};
pub use iced_winit::application::{self, Application}; pub use iced_winit::Application;
use iced_graphics::window; use iced_graphics::window;
use iced_winit::application;
use iced_winit::conversion; use iced_winit::conversion;
use iced_winit::futures; use iced_winit::futures;
use iced_winit::futures::channel::mpsc; use iced_winit::futures::channel::mpsc;

View File

@ -377,8 +377,10 @@ async fn run_instance<A, E, C>(
drop(ManuallyDrop::into_inner(user_interface)); drop(ManuallyDrop::into_inner(user_interface));
} }
/// Returns true if the provided event should cause the [`Application`] to /// Returns true if the provided event should cause an [`Application`] to
/// exit. /// exit.
///
/// [`Application`]: trait.Application.html
pub fn requests_exit( pub fn requests_exit(
event: &winit::event::WindowEvent<'_>, event: &winit::event::WindowEvent<'_>,
_modifiers: winit::event::ModifiersState, _modifiers: winit::event::ModifiersState,
@ -401,6 +403,12 @@ pub fn requests_exit(
} }
} }
/// Builds a [`UserInterface`] for the provided [`Application`], logging
/// [`Debug`] information accordingly.
///
/// [`UserInterface`]: struct.UserInterface.html
/// [`Application`]: trait.Application.html
/// [`Debug`]: struct.Debug.html
pub fn build_user_interface<'a, A: Application>( pub fn build_user_interface<'a, A: Application>(
application: &'a mut A, application: &'a mut A,
cache: Cache, cache: Cache,
@ -419,6 +427,12 @@ pub fn build_user_interface<'a, A: Application>(
user_interface user_interface
} }
/// Updates an [`Application`] by feeding it the provided messages, spawning any
/// resulting [`Command`], and tracking its [`Subscription`].
///
/// [`Application`]: trait.Application.html
/// [`Command`]: struct.Command.html
/// [`Subscription`]: struct.Subscription.html
pub fn update<A: Application, E: Executor>( pub fn update<A: Application, E: Executor>(
application: &mut A, application: &mut A,
runtime: &mut Runtime<E, Proxy<A::Message>, A::Message>, runtime: &mut Runtime<E, Proxy<A::Message>, A::Message>,

View File

@ -5,6 +5,9 @@ use std::marker::PhantomData;
use winit::event::WindowEvent; use winit::event::WindowEvent;
use winit::window::Window; use winit::window::Window;
/// The state of a windowed [`Application`].
///
/// [`Application`]: ../trait.Application.html
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct State<A: Application> { pub struct State<A: Application> {
title: String, title: String,
@ -19,6 +22,10 @@ pub struct State<A: Application> {
} }
impl<A: Application> State<A> { impl<A: Application> State<A> {
/// Creates a new [`State`] for the provided [`Application`] and window.
///
/// [`State`]: struct.State.html
/// [`Application`]: ../trait.Application.html
pub fn new(application: &A, window: &Window) -> Self { pub fn new(application: &A, window: &Window) -> Self {
let title = application.title(); let title = application.title();
let mode = application.mode(); let mode = application.mode();
@ -48,30 +55,61 @@ impl<A: Application> State<A> {
} }
} }
/// Returns the current background [`Color`] of the [`State`].
///
/// [`Color`]: ../struct.Color.html
/// [`State`]: struct.State.html
pub fn background_color(&self) -> Color { pub fn background_color(&self) -> Color {
self.background_color self.background_color
} }
/// Returns the current [`Viewport`] of the [`State`].
///
/// [`Viewport`]: ../struct.Viewport.html
/// [`State`]: struct.State.html
pub fn viewport(&self) -> &Viewport { pub fn viewport(&self) -> &Viewport {
&self.viewport &self.viewport
} }
/// Returns the version of the [`Viewport`] of the [`State`].
///
/// The version is incremented every time the [`Viewport`] changes.
///
/// [`Viewport`]: ../struct.Viewport.html
/// [`State`]: struct.State.html
pub fn viewport_version(&self) -> usize { pub fn viewport_version(&self) -> usize {
self.viewport_version self.viewport_version
} }
/// Returns the physical [`Size`] of the [`Viewport`] of the [`State`].
///
/// [`Size`]: ../struct.Size.html
/// [`Viewport`]: ../struct.Viewport.html
/// [`State`]: struct.State.html
pub fn physical_size(&self) -> Size<u32> { pub fn physical_size(&self) -> Size<u32> {
self.viewport.physical_size() self.viewport.physical_size()
} }
/// Returns the logical [`Size`] of the [`Viewport`] of the [`State`].
///
/// [`Size`]: ../struct.Size.html
/// [`Viewport`]: ../struct.Viewport.html
/// [`State`]: struct.State.html
pub fn logical_size(&self) -> Size<f32> { pub fn logical_size(&self) -> Size<f32> {
self.viewport.logical_size() self.viewport.logical_size()
} }
/// Returns the current scale factor of the [`Viewport`] of the [`State`].
///
/// [`Viewport`]: ../struct.Viewport.html
/// [`State`]: struct.State.html
pub fn scale_factor(&self) -> f64 { pub fn scale_factor(&self) -> f64 {
self.viewport.scale_factor() self.viewport.scale_factor()
} }
/// Returns the current cursor position of the [`State`].
///
/// [`State`]: struct.State.html
pub fn cursor_position(&self) -> Point { pub fn cursor_position(&self) -> Point {
conversion::cursor_position( conversion::cursor_position(
self.cursor_position, self.cursor_position,
@ -79,10 +117,17 @@ impl<A: Application> State<A> {
) )
} }
/// Returns the current keyboard modifiers of the [`State`].
///
/// [`State`]: struct.State.html
pub fn modifiers(&self) -> winit::event::ModifiersState { pub fn modifiers(&self) -> winit::event::ModifiersState {
self.modifiers self.modifiers
} }
/// Processes the provided window event and updates the [`State`]
/// accordingly.
///
/// [`State`]: struct.State.html
pub fn update( pub fn update(
&mut self, &mut self,
window: &Window, window: &Window,
@ -139,6 +184,15 @@ impl<A: Application> State<A> {
} }
} }
/// Synchronizes the [`State`] with its [`Application`] and its respective
/// window.
///
/// Normally an [`Application`] should be synchronized with its [`State`]
/// and window after calling [`Application::update`].
///
/// [`State`]: struct.State.html
/// [`Application`]: ../trait.Application.html
/// [`Application::update`]: ../trait.Application.html#tymethod.update
pub fn synchronize(&mut self, application: &A, window: &Window) { pub fn synchronize(&mut self, application: &A, window: &Window) {
// Update window title // Update window title
let new_title = application.title(); let new_title = application.title();

View File

@ -15,7 +15,7 @@
//! [`winit`]: https://github.com/rust-windowing/winit //! [`winit`]: https://github.com/rust-windowing/winit
//! [`Application`]: trait.Application.html //! [`Application`]: trait.Application.html
//! [`conversion`]: conversion //! [`conversion`]: conversion
//#![deny(missing_docs)] #![deny(missing_docs)]
#![deny(missing_debug_implementations)] #![deny(missing_debug_implementations)]
#![deny(unused_results)] #![deny(unused_results)]
#![forbid(unsafe_code)] #![forbid(unsafe_code)]