diff options
| author | 2023-09-10 00:34:21 +0200 | |
|---|---|---|
| committer | 2023-09-10 00:34:21 +0200 | |
| commit | b8e5693a3089d728b4f8d4b3b0b7197202ebd732 (patch) | |
| tree | 79a9f84f9920525657fbe03d53ce33bab09053d7 /core | |
| parent | 956512338905bac0b156fdaf16fe3c3e07e97a84 (diff) | |
| parent | a3489e4af960388e9f73988b88df361022a654a4 (diff) | |
| download | iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.tar.gz iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.tar.bz2 iced-b8e5693a3089d728b4f8d4b3b0b7197202ebd732.zip  | |
Merge branch 'master' into explicit-text-caching
Diffstat (limited to 'core')
| -rw-r--r-- | core/Cargo.toml | 31 | ||||
| -rw-r--r-- | core/src/angle.rs | 62 | ||||
| -rw-r--r-- | core/src/gradient.rs | 4 | ||||
| -rw-r--r-- | core/src/lib.rs | 5 | ||||
| -rw-r--r-- | core/src/shell.rs | 4 | ||||
| -rw-r--r-- | core/src/window/icon.rs | 2 | ||||
| -rw-r--r-- | core/src/window/redraw_request.rs | 2 | 
7 files changed, 76 insertions, 34 deletions
diff --git a/core/Cargo.toml b/core/Cargo.toml index 8bb37309..7acb7511 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -1,24 +1,27 @@  [package]  name = "iced_core" -version = "0.10.0" -authors = ["Héctor Ramón Jiménez <hector0193@gmail.com>"] -edition = "2021" -description = "The essential concepts of Iced" -license = "MIT" -repository = "https://github.com/iced-rs/iced" +description = "The essential ideas of iced" +version.workspace = true +edition.workspace = true +authors.workspace = true +license.workspace = true +repository.workspace = true +homepage.workspace = true +categories.workspace = true +keywords.workspace = true  [dependencies] -bitflags = "1.2" -thiserror = "1" -log = "0.4.17" -twox-hash = { version = "1.5", default-features = false } +bitflags.workspace = true +log.workspace = true +thiserror.workspace = true +twox-hash.workspace = true +num-traits.workspace = true -[dependencies.palette] -version = "0.7" -optional = true +palette.workspace = true +palette.optional = true  [target.'cfg(target_arch = "wasm32")'.dependencies] -instant = "0.1" +instant.workspace = true  [dev-dependencies]  approx = "0.5" diff --git a/core/src/angle.rs b/core/src/angle.rs index 75a57c76..102b69cf 100644 --- a/core/src/angle.rs +++ b/core/src/angle.rs @@ -1,32 +1,72 @@  use crate::{Point, Rectangle, Vector}; -use std::f32::consts::PI; -#[derive(Debug, Copy, Clone, PartialEq)] +use std::f32::consts::{FRAC_PI_2, PI}; +use std::ops::RangeInclusive; +  /// Degrees +#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]  pub struct Degrees(pub f32); -#[derive(Debug, Copy, Clone, PartialEq)]  /// Radians +#[derive(Debug, Copy, Clone, PartialEq, PartialOrd)]  pub struct Radians(pub f32); +impl Radians { +    /// The range of radians of a circle. +    pub const RANGE: RangeInclusive<Radians> = Radians(0.0)..=Radians(2.0 * PI); +} +  impl From<Degrees> for Radians {      fn from(degrees: Degrees) -> Self { -        Radians(degrees.0 * PI / 180.0) +        Self(degrees.0 * PI / 180.0) +    } +} + +impl From<f32> for Radians { +    fn from(radians: f32) -> Self { +        Self(radians) +    } +} + +impl From<u8> for Radians { +    fn from(radians: u8) -> Self { +        Self(f32::from(radians)) +    } +} + +impl From<Radians> for f64 { +    fn from(radians: Radians) -> Self { +        Self::from(radians.0) +    } +} + +impl num_traits::FromPrimitive for Radians { +    fn from_i64(n: i64) -> Option<Self> { +        Some(Self(n as f32)) +    } + +    fn from_u64(n: u64) -> Option<Self> { +        Some(Self(n as f32)) +    } + +    fn from_f64(n: f64) -> Option<Self> { +        Some(Self(n as f32))      }  }  impl Radians { -    /// Calculates the line in which the [`Angle`] intercepts the `bounds`. +    /// Calculates the line in which the angle intercepts the `bounds`.      pub fn to_distance(&self, bounds: &Rectangle) -> (Point, Point) { -        let v1 = Vector::new(f32::cos(self.0), f32::sin(self.0)); +        let angle = self.0 - FRAC_PI_2; +        let r = Vector::new(f32::cos(angle), f32::sin(angle)); -        let distance_to_rect = f32::min( -            f32::abs((bounds.y - bounds.center().y) / v1.y), -            f32::abs(((bounds.x + bounds.width) - bounds.center().x) / v1.x), +        let distance_to_rect = f32::max( +            f32::abs(r.x * bounds.width / 2.0), +            f32::abs(r.y * bounds.height / 2.0),          ); -        let start = bounds.center() + v1 * distance_to_rect; -        let end = bounds.center() - v1 * distance_to_rect; +        let start = bounds.center() - r * distance_to_rect; +        let end = bounds.center() + r * distance_to_rect;          (start, end)      } diff --git a/core/src/gradient.rs b/core/src/gradient.rs index e19622fb..4a0d5ea0 100644 --- a/core/src/gradient.rs +++ b/core/src/gradient.rs @@ -6,10 +6,8 @@ use std::cmp::Ordering;  #[derive(Debug, Clone, Copy, PartialEq)]  /// A fill which transitions colors progressively along a direction, either linearly, radially (TBD),  /// or conically (TBD). -/// -/// For a gradient which can be used as a fill on a canvas, see [`iced_graphics::Gradient`].  pub enum Gradient { -    /// A linear gradient interpolates colors along a direction at a specific [`Angle`]. +    /// A linear gradient interpolates colors along a direction at a specific angle.      Linear(Linear),  } diff --git a/core/src/lib.rs b/core/src/lib.rs index c1c8424b..1bfba7bd 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -9,6 +9,7 @@  #![doc(      html_logo_url = "https://raw.githubusercontent.com/iced-rs/iced/9ab6923e943f784985e9ef9ca28b10278297225d/docs/logo.svg"  )] +#![forbid(unsafe_code, rust_2018_idioms)]  #![deny(      missing_debug_implementations,      missing_docs, @@ -17,9 +18,9 @@      clippy::from_over_into,      clippy::needless_borrow,      clippy::new_without_default, -    clippy::useless_conversion +    clippy::useless_conversion, +    rustdoc::broken_intra_doc_links  )] -#![forbid(unsafe_code, rust_2018_idioms)]  #![allow(clippy::inherent_to_string, clippy::type_complexity)]  pub mod alignment;  pub mod clipboard; diff --git a/core/src/shell.rs b/core/src/shell.rs index 74a5c616..246c937a 100644 --- a/core/src/shell.rs +++ b/core/src/shell.rs @@ -35,7 +35,7 @@ impl<'a, Message> Shell<'a, Message> {          self.messages.push(message);      } -    /// Requests a new frame to be drawn at the given [`Instant`]. +    /// Requests a new frame to be drawn.      pub fn request_redraw(&mut self, request: window::RedrawRequest) {          match self.redraw_request {              None => { @@ -48,7 +48,7 @@ impl<'a, Message> Shell<'a, Message> {          }      } -    /// Returns the requested [`Instant`] a redraw should happen, if any. +    /// Returns the request a redraw should happen, if any.      pub fn redraw_request(&self) -> Option<window::RedrawRequest> {          self.redraw_request      } diff --git a/core/src/window/icon.rs b/core/src/window/icon.rs index 31868ecf..2fc48e3b 100644 --- a/core/src/window/icon.rs +++ b/core/src/window/icon.rs @@ -49,7 +49,7 @@ impl Icon {  }  #[derive(Debug, thiserror::Error)] -/// An error produced when using [`Icon::from_rgba`] with invalid arguments. +/// An error produced when using [`from_rgba`] with invalid arguments.  pub enum Error {      /// Produced when the length of the `rgba` argument isn't divisible by 4, thus `rgba` can't be      /// safely interpreted as 32bpp RGBA pixels. diff --git a/core/src/window/redraw_request.rs b/core/src/window/redraw_request.rs index 3b4f0fd3..8a59e83c 100644 --- a/core/src/window/redraw_request.rs +++ b/core/src/window/redraw_request.rs @@ -13,7 +13,7 @@ pub enum RedrawRequest {  #[cfg(test)]  mod tests {      use super::*; -    use std::time::{Duration, Instant}; +    use crate::time::{Duration, Instant};      #[test]      fn ordering() {  | 
