Comments (9)
I'm referring to most methods in svg::node::element
.
It would allow writing for example:
let mut document = Document::new();
if cond {
document.add(…);
}
from svg.
I just ran into the same issue. So I'm just here to pile on.
I have a wrapper struct that is meant to hold a Document
and manipulate it.
Since add
takes the Document
by value, this means that a cumbersome dance with Options
or mem::replace
is needed to make this work.
Example:
struct SVGRenderer {
document: Document,
}
impl SVGRenderer {
pub fn new() -> Self {
SVGRenderer {
document: Document::new(),
}
}
fn add_to_doc<T: Node>(&mut self, obj: T) {
self.document = mem::replace(&mut self.document, Document::new()).add(obj);
}
}
impl Renderer for SVGRenderer {
fn draw_point(&mut self, p: &Point) {
let circle = Circle::new()
.set("cx", p.pos.x)
.set("cy", p.pos.y)
.set("r", p.radius)
.set("stroke", "black")
.set("stroke-width", 1);
// Can't do self.document.add(circle)
// Neither self.document = self.document.add(circle)
// Needs to be something like this
self.document = mem::replace(&mut self.document, Document::new()).add(obj);
}
}
from svg.
Could you please be more specific? Which methods are you referring to?
from svg.
I think it’s a good suggestion. I’ve tagged it as “feedback needed” to see if there are other opinions so that we don’t miss anything. If you have time, please feel free to open a pull request.
from svg.
Let us continue this discussion in #23. I need your input. Thanks!
from svg.
@MichaelMauderer, by the way, in your example, would it not work with append
?
from svg.
@frozolotl, can’t append
help you too?
from svg.
Actually, it does! I had completly missed that function. Thanks for pointing it out.
from svg.
I park it for now, as add
and set
are accompanied by append
and assign
, respectively.
from svg.
Related Issues (20)
- Support retrieving content of Event::Comment and Event::Instruction HOT 2
- Implement getBBox HOT 1
- CSS support HOT 2
- How does one add Text? HOT 3
- Label the compliance of this SVG library to W3C's specification (SVG 1, SVG1.1, SVG2) HOT 2
- Escape characters not working HOT 2
- Question: how can I get Text node size (w, h) before adding it?
- How to modify children of `svg::Document`? HOT 3
- How to get large-arc-flag and sweep-flag from Parameters? HOT 1
- Strict Type for `set(name, value)` HOT 4
- How to copy a child into another Element HOT 1
- Update Data Element within a struct HOT 8
- Add support for transformations HOT 2
- How do I get their nested relationship from the parsing, because some properties might be in the parent like g HOT 2
- feature request: expose a way to create arbitrary element? HOT 2
- Add more documentation with examples HOT 2
- Allow for custom formatting HOT 1
- Allow for custom storage of `Attributes` HOT 1
- Avoid string conversion when working with `Value` HOT 1
- The correct way to add elements (paths, lines, etc) in a loop. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from svg.