From a97401aed2a173260a4abfdb65a77975ce6c0f01 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sat, 14 Sep 2019 19:16:06 +0200 Subject: Rethink workspace structure --- core/src/widget.rs | 114 ----------------------------------------------------- 1 file changed, 114 deletions(-) delete mode 100644 core/src/widget.rs (limited to 'core/src/widget.rs') diff --git a/core/src/widget.rs b/core/src/widget.rs deleted file mode 100644 index 30606934..00000000 --- a/core/src/widget.rs +++ /dev/null @@ -1,114 +0,0 @@ -//! Use the built-in widgets or create your own. -//! -//! # Built-in widgets -//! Every built-in drawable widget has its own module with a `Renderer` trait -//! that must be implemented by a [renderer] before being able to use it as -//! a [`Widget`]. -//! -//! # Custom widgets -//! If you want to implement a custom widget, you simply need to implement the -//! [`Widget`] trait. You can use the API of the built-in widgets as a guide or -//! source of inspiration. -//! -//! # Re-exports -//! For convenience, the contents of this module are available at the root -//! module. Therefore, you can directly type: -//! -//! ``` -//! use iced::{button, Button, Widget}; -//! ``` -//! -//! [`Widget`]: trait.Widget.html -//! [renderer]: ../renderer/index.html -mod column; -mod row; - -pub mod button; -pub mod checkbox; -pub mod image; -//pub mod progress_bar; -pub mod radio; -pub mod slider; -pub mod text; - -pub use button::Button; -pub use checkbox::Checkbox; -pub use column::Column; -pub use image::Image; -//pub use progress_bar::ProgressBar; -pub use radio::Radio; -pub use row::Row; -pub use slider::Slider; -pub use text::Text; - -use crate::{Event, Hasher, Layout, MouseCursor, Node, Point}; - -/// A component that displays information and allows interaction. -/// -/// If you want to build your own widgets, you will need to implement this -/// trait. -/// -/// [`Widget`]: trait.Widget.html -/// [`Element`]: ../struct.Element.html -pub trait Widget: std::fmt::Debug { - /// Returns the [`Node`] of the [`Widget`]. - /// - /// This [`Node`] is used by the runtime to compute the [`Layout`] of the - /// user interface. - /// - /// [`Node`]: ../struct.Node.html - /// [`Widget`]: trait.Widget.html - /// [`Layout`]: ../struct.Layout.html - fn node(&self, renderer: &Renderer) -> Node; - - /// Draws the [`Widget`] using the associated `Renderer`. - /// - /// It must return the [`MouseCursor`] state for the [`Widget`]. - /// - /// [`Widget`]: trait.Widget.html - /// [`MouseCursor`]: ../enum.MouseCursor.html - fn draw( - &self, - renderer: &mut Renderer, - layout: Layout<'_>, - cursor_position: Point, - ) -> MouseCursor; - - /// Computes the _layout_ hash of the [`Widget`]. - /// - /// The produced hash is used by the runtime to decide if the [`Layout`] - /// needs to be recomputed between frames. Therefore, to ensure maximum - /// efficiency, the hash should only be affected by the properties of the - /// [`Widget`] that can affect layouting. - /// - /// For example, the [`Text`] widget does not hash its color property, as - /// its value cannot affect the overall [`Layout`] of the user interface. - /// - /// [`Widget`]: trait.Widget.html - /// [`Layout`]: ../struct.Layout.html - /// [`Text`]: text/struct.Text.html - fn hash_layout(&self, state: &mut Hasher); - - /// Processes a runtime [`Event`]. - /// - /// It receives: - /// * an [`Event`] describing user interaction - /// * the computed [`Layout`] of the [`Widget`] - /// * the current cursor position - /// * a mutable `Message` list, allowing the [`Widget`] to produce - /// new messages based on user interaction. - /// - /// By default, it does nothing. - /// - /// [`Event`]: ../enum.Event.html - /// [`Widget`]: trait.Widget.html - /// [`Layout`]: ../struct.Layout.html - fn on_event( - &mut self, - _event: Event, - _layout: Layout<'_>, - _cursor_position: Point, - _messages: &mut Vec, - ) { - } -} -- cgit