summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-04 05:37:11 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-04 05:37:11 +0100
commit3a0d34c0240f4421737a6a08761f99d6f8140d02 (patch)
treec9a4a6b8e9c1db1b8fcd05bc98e3f131d5ef4bd5 /graphics
parentc54409d1711e1f615c7ea4b02c082954e340632a (diff)
downloadiced-3a0d34c0240f4421737a6a08761f99d6f8140d02.tar.gz
iced-3a0d34c0240f4421737a6a08761f99d6f8140d02.tar.bz2
iced-3a0d34c0240f4421737a6a08761f99d6f8140d02.zip
Create `iced_widget` subcrate and re-organize the whole codebase
Diffstat (limited to '')
-rw-r--r--graphics/Cargo.toml10
-rw-r--r--graphics/src/backend.rs8
-rw-r--r--graphics/src/compositor.rs (renamed from graphics/src/window/compositor.rs)6
-rw-r--r--graphics/src/geometry.rs4
-rw-r--r--graphics/src/geometry/fill.rs2
-rw-r--r--graphics/src/geometry/path.rs2
-rw-r--r--graphics/src/geometry/path/arc.rs2
-rw-r--r--graphics/src/geometry/path/builder.rs3
-rw-r--r--graphics/src/geometry/stroke.rs2
-rw-r--r--graphics/src/geometry/style.rs2
-rw-r--r--graphics/src/geometry/text.rs4
-rw-r--r--graphics/src/image/raster.rs4
-rw-r--r--graphics/src/image/storage.rs2
-rw-r--r--graphics/src/image/vector.rs5
-rw-r--r--graphics/src/lib.rs11
-rw-r--r--graphics/src/overlay.rs2
-rw-r--r--graphics/src/overlay/menu.rs3
-rw-r--r--graphics/src/primitive.rs9
-rw-r--r--graphics/src/renderer.rs20
-rw-r--r--graphics/src/viewport.rs4
-rw-r--r--graphics/src/window.rs10
-rw-r--r--graphics/src/window/gl_compositor.rs71
22 files changed, 47 insertions, 139 deletions
diff --git a/graphics/Cargo.toml b/graphics/Cargo.toml
index 98e6f474..4bb22b6c 100644
--- a/graphics/Cargo.toml
+++ b/graphics/Cargo.toml
@@ -39,13 +39,9 @@ bitflags = "1.2"
version = "1.4"
features = ["derive"]
-[dependencies.iced_native]
-version = "0.9"
-path = "../native"
-
-[dependencies.iced_style]
-version = "0.7"
-path = "../style"
+[dependencies.iced_core]
+version = "0.8"
+path = "../core"
[dependencies.tiny-skia]
version = "0.8"
diff --git a/graphics/src/backend.rs b/graphics/src/backend.rs
index 8658cffe..dd2888ab 100644
--- a/graphics/src/backend.rs
+++ b/graphics/src/backend.rs
@@ -1,8 +1,8 @@
//! Write a graphics backend.
-use iced_native::image;
-use iced_native::svg;
-use iced_native::text;
-use iced_native::{Font, Point, Size};
+use iced_core::image;
+use iced_core::svg;
+use iced_core::text;
+use iced_core::{Font, Point, Size};
use std::borrow::Cow;
diff --git a/graphics/src/window/compositor.rs b/graphics/src/compositor.rs
index 15f8dab5..d55e801a 100644
--- a/graphics/src/window/compositor.rs
+++ b/graphics/src/compositor.rs
@@ -1,6 +1,8 @@
//! A compositor is responsible for initializing a renderer and managing window
//! surfaces.
-use crate::{Color, Error, Viewport};
+use crate::{Error, Viewport};
+
+use iced_core::Color;
use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle};
use thiserror::Error;
@@ -11,7 +13,7 @@ pub trait Compositor: Sized {
type Settings: Default;
/// The iced renderer of the backend.
- type Renderer: iced_native::Renderer;
+ type Renderer: iced_core::Renderer;
/// The surface of the backend.
type Surface;
diff --git a/graphics/src/geometry.rs b/graphics/src/geometry.rs
index 29ac84d6..8db1594a 100644
--- a/graphics/src/geometry.rs
+++ b/graphics/src/geometry.rs
@@ -16,7 +16,7 @@ pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
pub use style::Style;
pub use text::Text;
-pub use iced_native::gradient::{self, Gradient};
+pub use iced_core::gradient::{self, Gradient};
use crate::Primitive;
@@ -29,7 +29,7 @@ impl From<Geometry> for Primitive {
}
}
-pub trait Renderer: iced_native::Renderer {
+pub trait Renderer: iced_core::Renderer {
type Geometry;
fn draw(&mut self, geometry: Vec<Self::Geometry>);
diff --git a/graphics/src/geometry/fill.rs b/graphics/src/geometry/fill.rs
index 109d5e99..2e8c1669 100644
--- a/graphics/src/geometry/fill.rs
+++ b/graphics/src/geometry/fill.rs
@@ -1,5 +1,5 @@
//! Fill [crate::widget::canvas::Geometry] with a certain style.
-use crate::{Color, Gradient};
+use iced_core::{Color, Gradient};
pub use crate::geometry::Style;
diff --git a/graphics/src/geometry/path.rs b/graphics/src/geometry/path.rs
index 30c387c5..c3127bdf 100644
--- a/graphics/src/geometry/path.rs
+++ b/graphics/src/geometry/path.rs
@@ -9,7 +9,7 @@ pub use builder::Builder;
pub use lyon_path;
-use crate::{Point, Size};
+use iced_core::{Point, Size};
/// An immutable set of points that may or may not be connected.
///
diff --git a/graphics/src/geometry/path/arc.rs b/graphics/src/geometry/path/arc.rs
index e0747d3e..2cdebb66 100644
--- a/graphics/src/geometry/path/arc.rs
+++ b/graphics/src/geometry/path/arc.rs
@@ -1,5 +1,5 @@
//! Build and draw curves.
-use crate::{Point, Vector};
+use iced_core::{Point, Vector};
/// A segment of a differentiable curve.
#[derive(Debug, Clone, Copy)]
diff --git a/graphics/src/geometry/path/builder.rs b/graphics/src/geometry/path/builder.rs
index 4a9c5e36..794dd3bc 100644
--- a/graphics/src/geometry/path/builder.rs
+++ b/graphics/src/geometry/path/builder.rs
@@ -1,5 +1,6 @@
use crate::geometry::path::{arc, Arc, Path};
-use crate::{Point, Size};
+
+use iced_core::{Point, Size};
use lyon_path::builder::{self, SvgPathBuilder};
use lyon_path::geom;
diff --git a/graphics/src/geometry/stroke.rs b/graphics/src/geometry/stroke.rs
index b551a9c9..2d760a6c 100644
--- a/graphics/src/geometry/stroke.rs
+++ b/graphics/src/geometry/stroke.rs
@@ -1,7 +1,7 @@
//! Create lines from a [crate::widget::canvas::Path] and assigns them various attributes/styles.
pub use crate::geometry::Style;
-use crate::Color;
+use iced_core::Color;
/// The style of a stroke.
#[derive(Debug, Clone)]
diff --git a/graphics/src/geometry/style.rs b/graphics/src/geometry/style.rs
index 6794f2e7..be9ee376 100644
--- a/graphics/src/geometry/style.rs
+++ b/graphics/src/geometry/style.rs
@@ -1,4 +1,4 @@
-use crate::{Color, Gradient};
+use iced_core::{Color, Gradient};
/// The coloring style of some drawing.
#[derive(Debug, Clone, PartialEq)]
diff --git a/graphics/src/geometry/text.rs b/graphics/src/geometry/text.rs
index 8c0b2dfb..06e0b4d0 100644
--- a/graphics/src/geometry/text.rs
+++ b/graphics/src/geometry/text.rs
@@ -1,5 +1,5 @@
-use crate::alignment;
-use crate::{Color, Font, Point};
+use iced_core::alignment;
+use iced_core::{Color, Font, Point};
/// A bunch of text that can be drawn to a canvas
#[derive(Debug, Clone)]
diff --git a/graphics/src/image/raster.rs b/graphics/src/image/raster.rs
index da46c30f..03211160 100644
--- a/graphics/src/image/raster.rs
+++ b/graphics/src/image/raster.rs
@@ -1,8 +1,8 @@
//! Raster image loading and caching.
use crate::image::Storage;
-use crate::Size;
-use iced_native::image;
+use iced_core::image;
+use iced_core::Size;
use bitflags::bitflags;
use std::collections::{HashMap, HashSet};
diff --git a/graphics/src/image/storage.rs b/graphics/src/image/storage.rs
index 1b5b5c35..4caa6141 100644
--- a/graphics/src/image/storage.rs
+++ b/graphics/src/image/storage.rs
@@ -1,5 +1,5 @@
//! Store images.
-use crate::Size;
+use iced_core::Size;
use std::fmt::Debug;
diff --git a/graphics/src/image/vector.rs b/graphics/src/image/vector.rs
index c950ccd6..32729acd 100644
--- a/graphics/src/image/vector.rs
+++ b/graphics/src/image/vector.rs
@@ -1,9 +1,8 @@
//! Vector image loading and caching
use crate::image::Storage;
-use crate::Color;
-use iced_native::svg;
-use iced_native::Size;
+use iced_core::svg;
+use iced_core::{Color, Size};
use resvg::tiny_skia;
use resvg::usvg;
diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs
index e56f8ad8..c6f9cf57 100644
--- a/graphics/src/lib.rs
+++ b/graphics/src/lib.rs
@@ -27,17 +27,17 @@ mod transformation;
mod viewport;
pub mod backend;
+pub mod compositor;
pub mod image;
-pub mod overlay;
pub mod primitive;
pub mod renderer;
-pub mod window;
#[cfg(feature = "geometry")]
pub mod geometry;
pub use antialiasing::Antialiasing;
pub use backend::Backend;
+pub use compositor::Compositor;
pub use error::Error;
pub use primitive::Primitive;
pub use renderer::Renderer;
@@ -47,9 +47,4 @@ pub use viewport::Viewport;
#[cfg(feature = "geometry")]
pub use geometry::Geometry;
-pub use iced_native::alignment;
-pub use iced_native::text;
-pub use iced_native::{
- Alignment, Background, Color, Font, Gradient, Point, Rectangle, Size,
- Vector,
-};
+pub use iced_core as core;
diff --git a/graphics/src/overlay.rs b/graphics/src/overlay.rs
deleted file mode 100644
index bc0ed744..00000000
--- a/graphics/src/overlay.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-//! Display interactive elements on top of other widgets.
-pub mod menu;
diff --git a/graphics/src/overlay/menu.rs b/graphics/src/overlay/menu.rs
deleted file mode 100644
index 8b489e5e..00000000
--- a/graphics/src/overlay/menu.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-//! Build and show dropdown menus.
-
-pub use iced_style::menu::{Appearance, StyleSheet};
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs
index f900b3fd..195b62da 100644
--- a/graphics/src/primitive.rs
+++ b/graphics/src/primitive.rs
@@ -1,8 +1,7 @@
-use crate::alignment;
-
-use iced_native::image;
-use iced_native::svg;
-use iced_native::{Background, Color, Font, Gradient, Rectangle, Size, Vector};
+use iced_core::alignment;
+use iced_core::image;
+use iced_core::svg;
+use iced_core::{Background, Color, Font, Gradient, Rectangle, Size, Vector};
use bytemuck::{Pod, Zeroable};
use std::sync::Arc;
diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs
index cb57f429..7bc462ef 100644
--- a/graphics/src/renderer.rs
+++ b/graphics/src/renderer.rs
@@ -1,15 +1,15 @@
//! Create a renderer from a [`Backend`].
use crate::backend::{self, Backend};
-use crate::{Primitive, Vector};
+use crate::Primitive;
-use iced_native::image;
-use iced_native::layout;
-use iced_native::renderer;
-use iced_native::svg;
-use iced_native::text::{self, Text};
-use iced_native::{Background, Color, Element, Font, Point, Rectangle, Size};
-
-pub use iced_native::renderer::Style;
+use iced_core::image;
+use iced_core::layout;
+use iced_core::renderer;
+use iced_core::svg;
+use iced_core::text::{self, Text};
+use iced_core::{
+ Background, Color, Element, Font, Point, Rectangle, Size, Vector,
+};
use std::borrow::Cow;
use std::marker::PhantomData;
@@ -52,7 +52,7 @@ impl<B: Backend, T> Renderer<B, T> {
}
}
-impl<B, T> iced_native::Renderer for Renderer<B, T>
+impl<B, T> iced_core::Renderer for Renderer<B, T>
where
B: Backend,
{
diff --git a/graphics/src/viewport.rs b/graphics/src/viewport.rs
index 2c0b541a..5792555d 100644
--- a/graphics/src/viewport.rs
+++ b/graphics/src/viewport.rs
@@ -1,4 +1,6 @@
-use crate::{Size, Transformation};
+use crate::Transformation;
+
+use iced_core::Size;
/// A viewing region for displaying computer graphics.
#[derive(Debug, Clone)]
diff --git a/graphics/src/window.rs b/graphics/src/window.rs
deleted file mode 100644
index a38b81f3..00000000
--- a/graphics/src/window.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//! Draw graphics to window surfaces.
-pub mod compositor;
-
-#[cfg(feature = "opengl")]
-pub mod gl_compositor;
-
-pub use compositor::Compositor;
-
-#[cfg(feature = "opengl")]
-pub use gl_compositor::GLCompositor;
diff --git a/graphics/src/window/gl_compositor.rs b/graphics/src/window/gl_compositor.rs
deleted file mode 100644
index 3e6dfd9e..00000000
--- a/graphics/src/window/gl_compositor.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-//! A compositor is responsible for initializing a renderer and managing window
-//! surfaces.
-use crate::window::compositor::Information;
-use crate::{Color, Error, Size, Viewport};
-
-use core::ffi::c_void;
-
-/// A basic OpenGL compositor.
-///
-/// A compositor is responsible for initializing a renderer and managing window
-/// surfaces.
-///
-/// For now, this compositor only deals with a single global surface
-/// for drawing. However, the trait will most likely change in the near future
-/// to handle multiple surfaces at once.
-///
-/// If you implement an OpenGL renderer, you can implement this trait to ease
-/// integration with existing windowing shells, like `iced_glutin`.
-pub trait GLCompositor: Sized {
- /// The renderer of the [`GLCompositor`].
- ///
- /// This should point to your renderer type, which could be a type alias
- /// of the [`Renderer`] provided in this crate with with a specific
- /// [`Backend`].
- ///
- /// [`Renderer`]: crate::Renderer
- /// [`Backend`]: crate::Backend
- type Renderer: iced_native::Renderer;
-
- /// The settings of the [`GLCompositor`].
- ///
- /// It's up to you to decide the configuration supported by your renderer!
- type Settings: Default;
-
- /// Creates a new [`GLCompositor`] and [`Renderer`] with the given
- /// [`Settings`] and an OpenGL address loader function.
- ///
- /// # Safety
- /// The `loader_function` should resolve to valid OpenGL bindings.
- ///
- /// [`Renderer`]: crate::Renderer
- /// [`Backend`]: crate::Backend
- /// [`Settings`]: Self::Settings
- #[allow(unsafe_code)]
- unsafe fn new(
- settings: Self::Settings,
- loader_function: impl FnMut(&str) -> *const c_void,
- ) -> Result<(Self, Self::Renderer), Error>;
-
- /// Returns the amount of samples that should be used when configuring
- /// an OpenGL context for this [`GLCompositor`].
- fn sample_count(settings: &Self::Settings) -> u32;
-
- /// Resizes the viewport of the [`GLCompositor`].
- fn resize_viewport(&mut self, physical_size: Size<u32>);
-
- /// Returns [`Information`] used by this [`GLCompositor`].
- fn fetch_information(&self) -> Information;
-
- /// Presents the primitives of the [`Renderer`] to the next frame of the
- /// [`GLCompositor`].
- ///
- /// [`Renderer`]: crate::Renderer
- fn present<T: AsRef<str>>(
- &mut self,
- renderer: &mut Self::Renderer,
- viewport: &Viewport,
- background_color: Color,
- overlay: &[T],
- );
-}