1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
//! A renderer-agnostic native GUI runtime. //! //! ![`iced_native` crate graph](https://github.com/hecrj/iced/blob/cae26cb7bc627f4a5b3bcf1cd023a0c552e8c65e/docs/graphs/native.png?raw=true) //! //! `iced_native` takes [`iced_core`] and builds a native runtime on top of it, //! featuring: //! //! - A custom layout engine, greatly inspired by [`druid`] //! - Event handling for all the built-in widgets //! - A renderer-agnostic API //! //! To achieve this, it introduces a couple of reusable interfaces: //! //! - A [`Widget`] trait, which is used to implement new widgets: from layout //! requirements to event and drawing logic. //! - A bunch of `Renderer` traits, meant to keep the crate renderer-agnostic. //! //! # Usage //! The strategy to use this crate depends on your particular use case. If you //! want to: //! - Implement a custom shell or integrate it in your own system, check out the //! [`UserInterface`] type. //! - Build a new renderer, see the [renderer] module. //! - Build a custom widget, start at the [`Widget`] trait. //! //! [`iced_core`]: https://github.com/hecrj/iced/tree/master/core //! [`iced_winit`]: https://github.com/hecrj/iced/tree/master/winit //! [`druid`]: https://github.com/xi-editor/druid //! [`raw-window-handle`]: https://github.com/rust-windowing/raw-window-handle //! [`Widget`]: widget/trait.Widget.html //! [`UserInterface`]: struct.UserInterface.html //! [renderer]: renderer/index.html #![deny(missing_docs)] #![deny(missing_debug_implementations)] #![deny(unused_results)] #![forbid(unsafe_code)] #![forbid(rust_2018_idioms)] pub mod keyboard; pub mod layout; pub mod mouse; pub mod overlay; pub mod program; pub mod renderer; pub mod subscription; pub mod widget; pub mod window; mod clipboard; mod element; mod event; mod hasher; mod runtime; mod user_interface; // We disable debug capabilities on release builds unless the `debug` feature // is explicitly enabled. #[cfg(feature = "debug")] #[path = "debug/basic.rs"] mod debug; #[cfg(not(feature = "debug"))] #[path = "debug/null.rs"] mod debug; pub use iced_core::{ Align, Background, Color, Font, HorizontalAlignment, Length, Point, Rectangle, Size, Vector, VerticalAlignment, }; pub use iced_futures::{executor, futures, Command}; #[doc(no_inline)] pub use executor::Executor; pub use clipboard::Clipboard; pub use debug::Debug; pub use element::Element; pub use event::Event; pub use hasher::Hasher; pub use layout::Layout; pub use overlay::Overlay; pub use program::Program; pub use renderer::Renderer; pub use runtime::Runtime; pub use subscription::Subscription; pub use user_interface::{Cache, UserInterface}; pub use widget::*;