[librsvg] Now that nodes know their element name, don't pass it down the rsvg_load_set_node_atts() chain
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] Now that nodes know their element name, don't pass it down the rsvg_load_set_node_atts() chain
- Date: Fri, 21 Sep 2018 12:38:55 +0000 (UTC)
commit 00c880186718be70aeb6a9e031087697f9edef3a
Author: Federico Mena Quintero <federico gnome org>
Date: Fri Sep 14 11:00:49 2018 -0500
Now that nodes know their element name, don't pass it down the rsvg_load_set_node_atts() chain
librsvg/rsvg-load.c | 4 ++--
rsvg_internals/src/load.rs | 13 +++++++++----
rsvg_internals/src/node.rs | 14 +++++++-------
rsvg_internals/src/structure.rs | 2 +-
4 files changed, 19 insertions(+), 14 deletions(-)
---
diff --git a/librsvg/rsvg-load.c b/librsvg/rsvg-load.c
index f3f3bdbe..9287ad0e 100644
--- a/librsvg/rsvg-load.c
+++ b/librsvg/rsvg-load.c
@@ -44,7 +44,7 @@ RsvgNode *rsvg_load_new_node (const char *element_name, RsvgNode *parent, RsvgPr
/* Implemented in rsvg_internals/src/load.rs */
G_GNUC_INTERNAL
-void rsvg_load_set_node_atts (RsvgHandle *handle, RsvgNode *node, const char *element_name, RsvgPropertyBag
atts);
+void rsvg_load_set_node_atts (RsvgHandle *handle, RsvgNode *node, RsvgPropertyBag atts);
/* Implemented in rsvg_internals/src/load.rs */
G_GNUC_INTERNAL
@@ -314,7 +314,7 @@ standard_element_start (RsvgLoad *load, const char *name, RsvgPropertyBag * atts
load->currentnode = rsvg_node_ref (newnode);
- rsvg_load_set_node_atts (load->handle, newnode, name, atts);
+ rsvg_load_set_node_atts (load->handle, newnode, atts);
newnode = rsvg_node_unref (newnode);
}
diff --git a/rsvg_internals/src/load.rs b/rsvg_internals/src/load.rs
index 6880b255..53142970 100644
--- a/rsvg_internals/src/load.rs
+++ b/rsvg_internals/src/load.rs
@@ -45,7 +45,14 @@ macro_rules! node_create_fn {
class: Option<&str>,
parent: *const RsvgNode,
) -> *const RsvgNode {
- boxed_node_new(NodeType::$node_type, parent, element_name, id, class, Box::new($new_fn()))
+ boxed_node_new(
+ NodeType::$node_type,
+ parent,
+ element_name,
+ id,
+ class,
+ Box::new($new_fn()),
+ )
}
};
}
@@ -317,14 +324,12 @@ pub extern "C" fn rsvg_load_new_node(
pub extern "C" fn rsvg_load_set_node_atts(
handle: *const RsvgHandle,
raw_node: *mut RsvgNode,
- tag: *const libc::c_char,
pbag: *const PropertyBag<'_>,
) {
assert!(!raw_node.is_null());
assert!(!pbag.is_null());
let node: &RsvgNode = unsafe { &*raw_node };
- let tag = unsafe { utf8_cstr(tag) };
let pbag = unsafe { &*pbag };
node.set_atts(node, handle, pbag);
@@ -333,7 +338,7 @@ pub extern "C" fn rsvg_load_set_node_atts(
// attributes until the end, when sax_end_element_cb() calls
// rsvg_node_svg_apply_atts()
if node.get_type() != NodeType::Svg {
- node.set_style(handle, tag, pbag);
+ node.set_style(handle, pbag);
}
node.set_overridden_properties();
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index dfb746b8..f0c2c810 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -440,7 +440,7 @@ impl Node {
}
/// Implements a very limited CSS selection engine
- fn set_css_styles(&self, handle: *const RsvgHandle, tag: &str) {
+ fn set_css_styles(&self, handle: *const RsvgHandle) {
// Try to properly support all of the following, including inheritance:
// *
// #id
@@ -458,7 +458,7 @@ impl Node {
rsvg_lookup_apply_css_style(handle, "*".to_glib_none().0, state_ptr);
// tag
- rsvg_lookup_apply_css_style(handle, tag.to_glib_none().0, state_ptr);
+ rsvg_lookup_apply_css_style(handle, self.element_name.to_glib_none().0, state_ptr);
if let Some(klazz) = self.get_class() {
for cls in klazz.split_whitespace() {
@@ -467,7 +467,7 @@ impl Node {
if !cls.is_empty() {
// tag.class#id
if let Some(id) = self.get_id() {
- let target = format!("{}.{}#{}", tag, cls, id);
+ let target = format!("{}.{}#{}", self.element_name, cls, id);
found = found || from_glib(rsvg_lookup_apply_css_style(
handle,
target.to_glib_none().0,
@@ -486,7 +486,7 @@ impl Node {
}
// tag.class
- let target = format!("{}.{}", tag, cls);
+ let target = format!("{}.{}", self.element_name, cls);
found = found || from_glib(rsvg_lookup_apply_css_style(
handle,
target.to_glib_none().0,
@@ -508,7 +508,7 @@ impl Node {
rsvg_lookup_apply_css_style(handle, target.to_glib_none().0, state_ptr);
// tag#id
- let target = format!("{}#{}", tag, id);
+ let target = format!("{}#{}", self.element_name, id);
rsvg_lookup_apply_css_style(handle, target.to_glib_none().0, state_ptr);
}
}
@@ -533,9 +533,9 @@ impl Node {
// Sets the node's state from the style-related attributes in the pbag. Also applies
// CSS rules in our limited way based on the node's tag/class/id.
- pub fn set_style(&self, handle: *const RsvgHandle, tag: &str, pbag: &PropertyBag<'_>) {
+ pub fn set_style(&self, handle: *const RsvgHandle, pbag: &PropertyBag<'_>) {
self.set_presentation_attributes(pbag);
- self.set_css_styles(handle, tag);
+ self.set_css_styles(handle);
self.set_style_attribute(pbag);
}
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index e2a7c2a5..90e435ed 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -119,7 +119,7 @@ impl NodeSvg {
pub fn set_delayed_style(&self, node: &RsvgNode, handle: *const RsvgHandle) {
if let Some(owned_pbag) = self.pbag.borrow().as_ref() {
let pbag = PropertyBag::from_owned(owned_pbag);
- node.set_style(handle, "svg", &pbag);
+ node.set_style(handle, &pbag);
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]