diff options
author | 2019-12-15 06:45:20 +0100 | |
---|---|---|
committer | 2019-12-15 06:45:20 +0100 | |
commit | 232d4873ba0fb9b87d08c8d70b117e81aa7489b5 (patch) | |
tree | bfaac8e4887bbb0ea4ffa6a687151e13f4ae093e /wgpu | |
parent | aa298499768bb50129cc3bd0dca6f3f858e5802e (diff) | |
download | iced-232d4873ba0fb9b87d08c8d70b117e81aa7489b5.tar.gz iced-232d4873ba0fb9b87d08c8d70b117e81aa7489b5.tar.bz2 iced-232d4873ba0fb9b87d08c8d70b117e81aa7489b5.zip |
Put `svg` rendering behind a feature gate
This reduces binary size when SVG supoprt is not needed.
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/Cargo.toml | 5 | ||||
-rw-r--r-- | wgpu/src/image.rs | 36 | ||||
-rw-r--r-- | wgpu/src/renderer/widget.rs | 4 |
3 files changed, 31 insertions, 14 deletions
diff --git a/wgpu/Cargo.toml b/wgpu/Cargo.toml index e8e9c877..bb241914 100644 --- a/wgpu/Cargo.toml +++ b/wgpu/Cargo.toml @@ -7,6 +7,9 @@ description = "A wgpu renderer for Iced" license = "MIT AND OFL-1.1" repository = "https://github.com/hecrj/iced" +[features] +svg = ["resvg"] + [dependencies] iced_native = { version = "0.1.0", path = "../native" } wgpu = "0.4" @@ -17,4 +20,4 @@ image = "0.22" glam = "0.8" font-kit = "0.4" log = "0.4" -resvg = { version = "0.8", features = ["raqote-backend"] } +resvg = { version = "0.8", features = ["raqote-backend"], optional = true } diff --git a/wgpu/src/image.rs b/wgpu/src/image.rs index 01059d2d..e30f70a7 100644 --- a/wgpu/src/image.rs +++ b/wgpu/src/image.rs @@ -1,4 +1,5 @@ mod raster; +#[cfg(feature = "svg")] mod vector; use crate::Transformation; @@ -9,6 +10,7 @@ use std::{cell::RefCell, mem}; #[derive(Debug)] pub struct Pipeline { raster_cache: RefCell<raster::Cache>, + #[cfg(feature = "svg")] vector_cache: RefCell<vector::Cache>, pipeline: wgpu::RenderPipeline, @@ -190,6 +192,7 @@ impl Pipeline { Pipeline { raster_cache: RefCell::new(raster::Cache::new()), + #[cfg(feature = "svg")] vector_cache: RefCell::new(vector::Cache::new()), pipeline, @@ -209,6 +212,7 @@ impl Pipeline { memory.dimensions() } + #[cfg(feature = "svg")] pub fn viewport_dimensions(&self, handle: &svg::Handle) -> (u32, u32) { let mut cache = self.vector_cache.borrow_mut(); @@ -227,7 +231,7 @@ impl Pipeline { transformation: Transformation, bounds: Rectangle<u32>, target: &wgpu::TextureView, - scale: f32, + _scale: f32, ) { let uniforms_buffer = device .create_buffer_mapped(1, wgpu::BufferUsage::COPY_SRC) @@ -255,17 +259,23 @@ impl Pipeline { memory.upload(device, encoder, &self.texture_layout) } - Handle::Vector(handle) => { - let mut cache = self.vector_cache.borrow_mut(); - - cache.upload( - handle, - image.scale, - scale, - device, - encoder, - &self.texture_layout, - ) + Handle::Vector(_handle) => { + #[cfg(feature = "svg")] + { + let mut cache = self.vector_cache.borrow_mut(); + + cache.upload( + _handle, + image.scale, + _scale, + device, + encoder, + &self.texture_layout, + ) + } + + #[cfg(not(feature = "svg"))] + None } }; @@ -333,6 +343,8 @@ impl Pipeline { pub fn trim_cache(&mut self) { self.raster_cache.borrow_mut().trim(); + + #[cfg(feature = "svg")] self.vector_cache.borrow_mut().trim(); } } diff --git a/wgpu/src/renderer/widget.rs b/wgpu/src/renderer/widget.rs index 65bb3bcd..91f107e8 100644 --- a/wgpu/src/renderer/widget.rs +++ b/wgpu/src/renderer/widget.rs @@ -6,6 +6,8 @@ mod radio; mod row; mod scrollable; mod slider; -mod svg; mod text; mod text_input; + +#[cfg(feature = "svg")] +mod svg; |