From a088df9795e10c94faad2182d83e972023ef9cc0 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 22 Oct 2024 12:29:41 -0600 Subject: [PATCH] Implement fill_raw --- tiny_skia/src/layer.rs | 11 ++++++++++- tiny_skia/src/lib.rs | 5 ++++- wgpu/src/layer.rs | 11 ++++++++++- wgpu/src/lib.rs | 3 ++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/tiny_skia/src/layer.rs b/tiny_skia/src/layer.rs index 3df644a2d3..b4e9286f45 100644 --- a/tiny_skia/src/layer.rs +++ b/tiny_skia/src/layer.rs @@ -4,7 +4,7 @@ use crate::core::{ }; use crate::graphics::damage; use crate::graphics::layer; -use crate::graphics::text::{Editor, Paragraph, Text}; +use crate::graphics::text::{Editor, Paragraph, Raw, Text}; use crate::graphics::{self, Image}; use crate::Primitive; @@ -115,6 +115,15 @@ impl Layer { .push(Item::Cached(text, clip_bounds, transformation)); } + pub fn draw_raw(&mut self, raw: Raw, transformation: Transformation) { + let text = Text::Raw { + raw, + transformation, + }; + + self.text.push(Item::Live(text)); + } + pub fn draw_image(&mut self, image: Image, transformation: Transformation) { match image { Image::Raster { handle, bounds } => { diff --git a/tiny_skia/src/lib.rs b/tiny_skia/src/lib.rs index 9085045790..5fa8fe75cd 100644 --- a/tiny_skia/src/lib.rs +++ b/tiny_skia/src/lib.rs @@ -314,7 +314,10 @@ impl core::text::Renderer for Renderer { layer.draw_text(text, position, color, clip_bounds, transformation); } - fn fill_raw(&mut self, _raw: Self::Raw) {} + fn fill_raw(&mut self, raw: Self::Raw) { + let (layer, transformation) = self.layers.current_mut(); + layer.draw_raw(raw, transformation); + } } #[cfg(feature = "geometry")] diff --git a/wgpu/src/layer.rs b/wgpu/src/layer.rs index 5340a66b90..f62f04835f 100644 --- a/wgpu/src/layer.rs +++ b/wgpu/src/layer.rs @@ -5,7 +5,7 @@ use crate::core::{ use crate::graphics; use crate::graphics::color; use crate::graphics::layer; -use crate::graphics::text::{Editor, Paragraph}; +use crate::graphics::text::{Editor, Paragraph, Raw}; use crate::graphics::Mesh; use crate::image::{self, Image}; use crate::primitive::{self, Primitive}; @@ -113,6 +113,15 @@ impl Layer { self.pending_text.push(text); } + pub fn draw_raw(&mut self, raw: Raw, transformation: Transformation) { + let text = Text::Raw { + raw, + transformation, + }; + + self.pending_text.push(text); + } + pub fn draw_image(&mut self, image: Image, transformation: Transformation) { match image { Image::Raster { handle, bounds } => { diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index c0703996c1..06c8a1d841 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -522,7 +522,8 @@ impl core::text::Renderer for Renderer { } fn fill_raw(&mut self, raw: Self::Raw) { - // TODO + let (layer, transformation) = self.layers.current_mut(); + layer.draw_raw(raw, transformation); } }