summaryrefslogtreecommitdiffstats
path: root/wgpu
diff options
context:
space:
mode:
authorLibravatar Malte Veerman <malte.veerman@gmail.com>2019-12-12 00:20:06 +0100
committerLibravatar Malte Veerman <malte.veerman@gmail.com>2019-12-12 00:20:06 +0100
commitf737c6da24d5c75e3efa92c0fd9d0d11fbd715c1 (patch)
treef37701f8ff84a5800a6f47ae95ea2d31c058df97 /wgpu
parent5696afcadd5b3b89a532f4205efac30d8a24d558 (diff)
downloadiced-f737c6da24d5c75e3efa92c0fd9d0d11fbd715c1.tar.gz
iced-f737c6da24d5c75e3efa92c0fd9d0d11fbd715c1.tar.bz2
iced-f737c6da24d5c75e3efa92c0fd9d0d11fbd715c1.zip
Improved dpi handling
Diffstat (limited to 'wgpu')
-rw-r--r--wgpu/src/renderer.rs3
-rw-r--r--wgpu/src/svg.rs59
2 files changed, 8 insertions, 54 deletions
diff --git a/wgpu/src/renderer.rs b/wgpu/src/renderer.rs
index 92e24933..3eb8c5ca 100644
--- a/wgpu/src/renderer.rs
+++ b/wgpu/src/renderer.rs
@@ -370,8 +370,7 @@ impl Renderer {
translated,
bounds,
target,
- (dpi * 96.0) as u16,
- (dpi * 20.0) as u16,
+ dpi,
);
}
diff --git a/wgpu/src/svg.rs b/wgpu/src/svg.rs
index 755303a5..f2161489 100644
--- a/wgpu/src/svg.rs
+++ b/wgpu/src/svg.rs
@@ -216,8 +216,6 @@ impl Pipeline {
let mut opt = resvg::Options::default();
opt.usvg.path = Some(handle.path.clone());
- opt.usvg.dpi = handle.dpi as f64;
- opt.usvg.font_size = handle.font_size as f64;
let mem =
match resvg::usvg::Tree::from_file(&handle.path, &opt.usvg) {
@@ -237,8 +235,7 @@ impl Pipeline {
transformation: Transformation,
bounds: Rectangle<u32>,
target: &wgpu::TextureView,
- dpi: u16,
- font_size: u16,
+ dpi: f32,
) {
let uniforms_buffer = device
.create_buffer_mapped(1, wgpu::BufferUsage::COPY_SRC)
@@ -259,19 +256,15 @@ impl Pipeline {
//
// [1]: https://github.com/nical/guillotiere
for svg in svgs {
- let mut handle = svg.handle.clone();
- handle.set_dpi(dpi);
- handle.set_font_size(font_size);
-
- self.load(&handle);
+ self.load(&svg.handle);
if let Some(texture) =
- self.cache.borrow_mut().get(&handle).unwrap().upload(
+ self.cache.borrow_mut().get(&svg.handle).unwrap().upload(
device,
encoder,
&self.texture_layout,
- svg.scale[0] as u32,
- svg.scale[1] as u32,
+ (svg.scale[0] * dpi) as u32,
+ (svg.scale[1] * dpi) as u32,
)
{
let instance_buffer = device
@@ -339,8 +332,6 @@ impl Pipeline {
pub struct Handle {
id: u64,
path: PathBuf,
- dpi: u16,
- font_size: u16,
}
impl Handle {
@@ -356,57 +347,19 @@ impl Handle {
/// [`Handle`]: struct.Handle.html
pub fn from_path<T: Into<PathBuf>>(path: T) -> Handle {
let path = path.into();
- let dpi = 96;
- let font_size = 20;
let mut hasher = Hasher::default();
path.hash(&mut hasher);
- dpi.hash(&mut hasher);
- font_size.hash(&mut hasher);
Self {
id: hasher.finish(),
path,
- dpi,
- font_size,
- }
- }
-
- fn set_dpi(&mut self, dpi: u16) {
- if self.dpi == dpi {
- return;
- }
-
- self.dpi = dpi;
-
- let mut hasher = Hasher::default();
- self.path.hash(&mut hasher);
- self.dpi.hash(&mut hasher);
- self.font_size.hash(&mut hasher);
-
- self.id = hasher.finish();
- }
-
- fn set_font_size(&mut self, font_size: u16) {
- if self.font_size == font_size {
- return;
}
-
- self.font_size = font_size;
-
- let mut hasher = Hasher::default();
- self.path.hash(&mut hasher);
- self.dpi.hash(&mut hasher);
- self.font_size.hash(&mut hasher);
-
- self.id = hasher.finish();
}
}
impl Hash for Handle {
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
self.id.hash(state);
- self.dpi.hash(state);
- self.font_size.hash(state);
}
}
@@ -428,6 +381,8 @@ impl Memory {
) -> Option<Rc<wgpu::BindGroup>> {
match self {
Memory::Host { tree } => {
+ println!("{} {}", width, height);
+
let extent = wgpu::Extent3d {
width,
height,