diff options
-rw-r--r-- | core/src/length.rs | 6 | ||||
-rw-r--r-- | core/src/point.rs | 12 | ||||
-rw-r--r-- | examples/counter.rs | 56 | ||||
-rw-r--r-- | native/src/size.rs | 12 |
4 files changed, 86 insertions, 0 deletions
diff --git a/core/src/length.rs b/core/src/length.rs index 63ba6207..10873e89 100644 --- a/core/src/length.rs +++ b/core/src/length.rs @@ -27,3 +27,9 @@ impl Length { } } } + +impl From<u16> for Length { + fn from(units: u16) -> Self { + Length::Units(units) + } +} diff --git a/core/src/point.rs b/core/src/point.rs index 183998dd..47c8b142 100644 --- a/core/src/point.rs +++ b/core/src/point.rs @@ -19,6 +19,18 @@ impl Point { } } +impl From<[f32; 2]> for Point { + fn from([x, y]: [f32; 2]) -> Self { + Point { x, y } + } +} + +impl From<[u16; 2]> for Point { + fn from([x, y]: [u16; 2]) -> Self { + Point::new(x.into(), y.into()) + } +} + impl std::ops::Add<Vector> for Point { type Output = Self; diff --git a/examples/counter.rs b/examples/counter.rs new file mode 100644 index 00000000..b85db70d --- /dev/null +++ b/examples/counter.rs @@ -0,0 +1,56 @@ +use iced::{button, Button, Column, Element, Sandbox, Settings, Text}; + +pub fn main() { + Counter::run(Settings::default()) +} + +#[derive(Default)] +struct Counter { + value: i32, + increment_button: button::State, + decrement_button: button::State, +} + +#[derive(Debug, Clone, Copy)] +enum Message { + IncrementPressed, + DecrementPressed, +} + +impl Sandbox for Counter { + type Message = Message; + + fn new() -> Self { + Self::default() + } + + fn title(&self) -> String { + String::from("A simple counter") + } + + fn update(&mut self, message: Message) { + match message { + Message::IncrementPressed => { + self.value += 1; + } + Message::DecrementPressed => { + self.value -= 1; + } + } + } + + fn view(&mut self) -> Element<Message> { + Column::new() + .padding(20) + .push( + Button::new(&mut self.increment_button, Text::new("Increment")) + .on_press(Message::IncrementPressed), + ) + .push(Text::new(self.value.to_string()).size(50)) + .push( + Button::new(&mut self.decrement_button, Text::new("Decrement")) + .on_press(Message::DecrementPressed), + ) + .into() + } +} diff --git a/native/src/size.rs b/native/src/size.rs index 30e2a57e..389b3247 100644 --- a/native/src/size.rs +++ b/native/src/size.rs @@ -37,3 +37,15 @@ impl Size { } } } + +impl From<[f32; 2]> for Size { + fn from([width, height]: [f32; 2]) -> Self { + Size { width, height } + } +} + +impl From<[u16; 2]> for Size { + fn from([width, height]: [u16; 2]) -> Self { + Size::new(width.into(), height.into()) + } +} |