Draft first-class Theme support
RFC: https://github.com/iced-rs/rfcs/pull/6
This commit is contained in:
parent
5de337f214
commit
664251f3f5
113 changed files with 767 additions and 878 deletions
|
|
@ -39,6 +39,7 @@ mod quad;
|
|||
mod text;
|
||||
|
||||
pub use iced_graphics::{Antialiasing, Color, Error, Primitive, Viewport};
|
||||
pub use iced_native::Theme;
|
||||
pub use wgpu;
|
||||
|
||||
pub use backend::Backend;
|
||||
|
|
@ -53,4 +54,5 @@ mod image;
|
|||
///
|
||||
/// [`wgpu`]: https://github.com/gfx-rs/wgpu-rs
|
||||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
pub type Renderer = iced_graphics::Renderer<Backend>;
|
||||
pub type Renderer<Theme = iced_native::Theme> =
|
||||
iced_graphics::Renderer<Backend, Theme>;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@ use iced_graphics::compositor;
|
|||
use iced_native::futures;
|
||||
use raw_window_handle::HasRawWindowHandle;
|
||||
|
||||
use std::marker::PhantomData;
|
||||
|
||||
/// A window graphics backend for iced powered by `wgpu`.
|
||||
#[allow(missing_debug_implementations)]
|
||||
pub struct Compositor {
|
||||
pub struct Compositor<Theme> {
|
||||
settings: Settings,
|
||||
instance: wgpu::Instance,
|
||||
adapter: wgpu::Adapter,
|
||||
|
|
@ -16,9 +18,10 @@ pub struct Compositor {
|
|||
staging_belt: wgpu::util::StagingBelt,
|
||||
local_pool: futures::executor::LocalPool,
|
||||
format: wgpu::TextureFormat,
|
||||
theme: PhantomData<Theme>,
|
||||
}
|
||||
|
||||
impl Compositor {
|
||||
impl<Theme> Compositor<Theme> {
|
||||
const CHUNK_SIZE: u64 = 10 * 1024;
|
||||
|
||||
/// Requests a new [`Compositor`] with the given [`Settings`].
|
||||
|
|
@ -101,6 +104,7 @@ impl Compositor {
|
|||
staging_belt,
|
||||
local_pool,
|
||||
format,
|
||||
theme: PhantomData,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -110,15 +114,15 @@ impl Compositor {
|
|||
}
|
||||
}
|
||||
|
||||
impl iced_graphics::window::Compositor for Compositor {
|
||||
impl<Theme> iced_graphics::window::Compositor for Compositor<Theme> {
|
||||
type Settings = Settings;
|
||||
type Renderer = Renderer;
|
||||
type Renderer = Renderer<Theme>;
|
||||
type Surface = wgpu::Surface;
|
||||
|
||||
fn new<W: HasRawWindowHandle>(
|
||||
settings: Self::Settings,
|
||||
compatible_window: Option<&W>,
|
||||
) -> Result<(Self, Renderer), Error> {
|
||||
) -> Result<(Self, Self::Renderer), Error> {
|
||||
let compositor = futures::executor::block_on(Self::request(
|
||||
settings,
|
||||
compatible_window,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue