From 2a129b7bbd1f9b986c0320dea6e9595f876aaedf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Mon, 24 Jun 2019 16:12:05 +0300 Subject: [PATCH 1/9] =?UTF-8?q?add=20CanvasRenderingContext2D::fill=5Flayo?= =?UTF-8?q?ut=20=E2=80=93=20a=20method=20to=20draw=20layouts=20directly,?= =?UTF-8?q?=20without=20using=20skribo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- canvas/src/lib.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index 9f710dd0..fc1ae1dc 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -101,7 +101,17 @@ impl CanvasRenderingContext2D { pub fn measure_text(&self, string: &str) -> TextMetrics { TextMetrics { width: self.layout_text(string).width() } } - + + pub fn fill_layout(&mut self, layout: &Layout, transform: Transform2DF) { + let paint_id = self.scene.push_paint(&self.current_state.fill_paint); + drop(self.scene.push_layout(&layout, + &TextStyle { size: self.current_state.font_size }, + &transform.post_mul(&self.current_state.transform), + TextRenderMode::Fill, + HintingOptions::None, + paint_id)); + } + fn fill_or_stroke_text(&mut self, string: &str, mut position: Vector2F, @@ -114,7 +124,7 @@ impl CanvasRenderingContext2D { TextAlign::Right => position.set_x(position.x() - layout.width()), TextAlign::Center => position.set_x(position.x() - layout.width() * 0.5), } - + let transform = Transform2DF::from_translation(position).post_mul(&self.current_state .transform); @@ -127,7 +137,7 @@ impl CanvasRenderingContext2D { paint_id)); } - fn layout_text(&self, string: &str) -> Layout { + pub fn layout_text(&self, string: &str) -> Layout { skribo::layout(&TextStyle { size: self.current_state.font_size }, &self.current_state.font_collection, string) From 251785db679d316c03d4ad7a2029de155ca40538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 25 Jun 2019 11:39:31 +0300 Subject: [PATCH 2/9] cleanup --- canvas/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index 648379fd..58279c39 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -101,7 +101,7 @@ impl CanvasRenderingContext2D { pub fn measure_text(&self, string: &str) -> TextMetrics { TextMetrics { width: self.layout_text(string).width() } } - + pub fn fill_layout(&mut self, layout: &Layout, transform: Transform2DF) { let paint_id = self.scene.push_paint(&self.current_state.fill_paint); drop(self.scene.push_layout(&layout, @@ -124,7 +124,7 @@ impl CanvasRenderingContext2D { TextAlign::Right => position.set_x(position.x() - layout.width()), TextAlign::Center => position.set_x(position.x() - layout.width() * 0.5), } - + let transform = Transform2DF::from_translation(position).post_mul(&self.current_state .transform); @@ -137,7 +137,7 @@ impl CanvasRenderingContext2D { paint_id)); } - pub fn layout_text(&self, string: &str) -> Layout { + fn layout_text(&self, string: &str) -> Layout { skribo::layout(&TextStyle { size: self.current_state.font_size }, &self.current_state.font_collection, string) From ed1d75fdc65298ac0c2328fa56040d9565d5ec36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 09:54:50 +0300 Subject: [PATCH 3/9] fix swf --- swf/src/shapes.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/swf/src/shapes.rs b/swf/src/shapes.rs index 6dbe6a0e..45308b4e 100644 --- a/swf/src/shapes.rs +++ b/swf/src/shapes.rs @@ -93,12 +93,12 @@ impl Shape { } #[inline] - fn first(&self) -> LineSegment { + fn first(&self) -> &LineSegment { self.outline.first().unwrap() } #[inline] - fn last(&self) -> LineSegment { + fn last(&self) -> &LineSegment { self.outline.last().unwrap() } From e12821350e08a598c6a58a982eb5807ec6737a36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 09:55:01 +0300 Subject: [PATCH 4/9] fix canvas --- canvas/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index d048c34b..013203b1 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -102,11 +102,11 @@ impl CanvasRenderingContext2D { TextMetrics { width: self.layout_text(string).width() } } - pub fn fill_layout(&mut self, layout: &Layout, transform: Transform2DF) { + pub fn fill_layout(&mut self, layout: &Layout, transform: Transform2F) { let paint_id = self.scene.push_paint(&self.current_state.fill_paint); drop(self.scene.push_layout(&layout, &TextStyle { size: self.current_state.font_size }, - &transform.post_mul(&self.current_state.transform), + &(transform * self.current_state.transform), TextRenderMode::Fill, HintingOptions::None, paint_id)); From bd12de8234321105fbd359c680f754fe9618d39f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 09:55:50 +0300 Subject: [PATCH 5/9] add default-members (and exclude metal). fixes #217 --- Cargo.toml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index aefdaa99..6bac7360 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,3 +31,32 @@ members = [ "utils/svg-to-skia", "utils/convert", ] + +default-members = [ + "c", + "canvas", + "content", + "demo/common", + "demo/native", + "examples/canvas_glutin_minimal", + "examples/canvas_minimal", + "examples/canvas_moire", + "examples/canvas_text", + "examples/lottie_basic", + "examples/swf_basic", + "geometry", + "gl", + "gpu", + "lottie", + "export", + "renderer", + "simd", + "svg", + "swf", + "text", + "ui", + "utils/area-lut", + "utils/gamma-lut", + "utils/svg-to-skia", + "utils/convert", +] From 5589c80dd1d119e65f452bb4bc535ac7c2bdeaad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 13:07:19 +0300 Subject: [PATCH 6/9] hopefully make harfbuzz build --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index da749f5e..2c42bfb3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,7 @@ addons: - cmake script: - cargo build - # - cargo test # todo: fix tests \ No newline at end of file + # - cargo test # todo: fix tests +env: + global: + - HARFBUZZ_SYS_NO_PKG_CONFIG=true From d3b7d9c0aa47e4b1e046282db78f29a82caa15dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 13:19:07 +0300 Subject: [PATCH 7/9] add tests back to CI --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2c42bfb3..030d05f3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ addons: - cmake script: - cargo build - # - cargo test # todo: fix tests + - cargo test env: global: - HARFBUZZ_SYS_NO_PKG_CONFIG=true From 47e77f251330279017684a648ba095106d44369b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Tue, 16 Jul 2019 13:53:03 +0300 Subject: [PATCH 8/9] don't run doc code --- renderer/src/concurrent/executor.rs | 4 +++- renderer/src/concurrent/scene_proxy.rs | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/renderer/src/concurrent/executor.rs b/renderer/src/concurrent/executor.rs index e6b0932e..0ed50bae 100644 --- a/renderer/src/concurrent/executor.rs +++ b/renderer/src/concurrent/executor.rs @@ -14,7 +14,9 @@ pub trait Executor { /// Like the Rayon snippet: /// - /// (0..length).into_par_iter().flat_map(builder).collect() + /// ```norun + /// (0..length).into_par_iter().flat_map(builder).collect() + /// ``` fn flatten_into_vector(&self, length: usize, builder: F) -> Vec where T: Send, F: Fn(usize) -> Vec + Send + Sync; } diff --git a/renderer/src/concurrent/scene_proxy.rs b/renderer/src/concurrent/scene_proxy.rs index 075e25ce..861e7444 100644 --- a/renderer/src/concurrent/scene_proxy.rs +++ b/renderer/src/concurrent/scene_proxy.rs @@ -77,9 +77,11 @@ impl SceneProxy { /// /// Exactly equivalent to: /// - /// for command in scene_proxy.build_with_stream(options) { - /// renderer.render_command(&command) - /// } + /// ```norun + /// for command in scene_proxy.build_with_stream(options) { + /// renderer.render_command(&command) + /// } + /// ``` #[inline] pub fn build_and_render(&self, renderer: &mut Renderer, build_options: BuildOptions) where D: Device { From f00038eac16185f161e16f2206d9e04077435c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=B6ln?= Date: Fri, 19 Jul 2019 20:57:15 +0300 Subject: [PATCH 9/9] don't return a reference --- swf/src/shapes.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/swf/src/shapes.rs b/swf/src/shapes.rs index 45308b4e..2348672f 100644 --- a/swf/src/shapes.rs +++ b/swf/src/shapes.rs @@ -93,13 +93,13 @@ impl Shape { } #[inline] - fn first(&self) -> &LineSegment { - self.outline.first().unwrap() + fn first(&self) -> LineSegment { + *self.outline.first().unwrap() } #[inline] - fn last(&self) -> &LineSegment { - self.outline.last().unwrap() + fn last(&self) -> LineSegment { + *self.outline.last().unwrap() } #[inline]