[librsvg: 4/15] Test an element for visibility before drawing in the element code, not in draw_node_from_stack
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 4/15] Test an element for visibility before drawing in the element code, not in draw_node_from_stack
- Date: Tue, 24 Nov 2020 18:09:14 +0000 (UTC)
commit 4005a0fee4d2e3b03adfe8b96e616d10175c0d79
Author: Federico Mena Quintero <federico gnome org>
Date: Tue Nov 17 17:45:44 2020 -0600
Test an element for visibility before drawing in the element code, not in draw_node_from_stack
The call chain was this:
draw_node_from_stack:
if (visible)
Node.draw
Element.draw
ElementInner.draw
draw...
Now it is:
draw_node_from_stack:
Node.draw
Element.draw
ElementInner.draw
if (visible)
draw...
src/drawing_ctx.rs | 3 +--
src/element.rs | 13 +++++++++----
2 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index 309d99d3..3a331e5b 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -1616,8 +1616,7 @@ impl DrawingCtx {
true
};
- let values = cascaded.get();
- let res = if draw && values.is_visible() {
+ let res = if draw {
node.draw(acquired_nodes, cascaded, self, clipping)
} else {
Ok(self.empty_bbox())
diff --git a/src/element.rs b/src/element.rs
index f169f7fe..3e463280 100644
--- a/src/element.rs
+++ b/src/element.rs
@@ -308,10 +308,15 @@ impl<T: SetAttributes + Draw> Draw for ElementInner<T> {
clipping: bool,
) -> Result<BoundingBox, RenderingError> {
if !self.is_in_error() {
- draw_ctx.with_saved_transform(Some(self.get_transform()), &mut |dc| {
- self.element_impl
- .draw(node, acquired_nodes, cascaded, dc, clipping)
- })
+ let values = cascaded.get();
+ if values.is_visible() {
+ draw_ctx.with_saved_transform(Some(self.get_transform()), &mut |dc| {
+ self.element_impl
+ .draw(node, acquired_nodes, cascaded, dc, clipping)
+ })
+ } else {
+ Ok(draw_ctx.empty_bbox())
+ }
} else {
rsvg_log!("(not rendering element {} because it is in error)", self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]