summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorEvgeniy Reizner <razrfalcon@gmail.com>2019-07-18 12:47:04 +0300
committerEvgeniy Reizner <razrfalcon@gmail.com>2019-07-18 12:47:04 +0300
commit301750bc8a120e3f1c698707ccb8041bdf4d70f5 (patch)
tree7863621e968c2be3c4b49750fe3dd18d7beac672 /tools
parentd0d27aed2140110414ee49b0191f935fc5d9c5bb (diff)
(usvg) The xmlwriter crate is used for SVG generation now.
Diffstat (limited to 'tools')
-rw-r--r--tools/rendersvg/src/main.rs17
-rw-r--r--tools/usvg/src/main.rs43
2 files changed, 19 insertions, 41 deletions
diff --git a/tools/rendersvg/src/main.rs b/tools/rendersvg/src/main.rs
index 2691411..cb80f7b 100644
--- a/tools/rendersvg/src/main.rs
+++ b/tools/rendersvg/src/main.rs
@@ -8,9 +8,6 @@ use std::io::Write;
use std::path;
use resvg::prelude::*;
-use resvg::svgdom;
-
-use svgdom::WriteBuffer;
mod args;
@@ -168,18 +165,8 @@ fn dump_svg(tree: &usvg::Tree, path: &path::Path) -> Result<(), String> {
let mut f = fs::File::create(path)
.map_err(|_| format!("failed to create a file {:?}", path))?;
- let opt = svgdom::WriteOptions {
- indent: svgdom::Indent::Spaces(2),
- attributes_indent: svgdom::Indent::Spaces(3),
- attributes_order: svgdom::AttributesOrder::Specification,
- ..svgdom::WriteOptions::default()
- };
-
- let svgdoc = tree.to_svgdom();
-
- let mut out = Vec::new();
- svgdoc.write_buf_opt(&opt, &mut out);
- f.write_all(&out).map_err(|_| format!("failed to write a file {:?}", path))?;
+ f.write_all(tree.to_string(usvg::XmlOptions::default()).as_bytes())
+ .map_err(|_| format!("failed to write a file {:?}", path))?;
Ok(())
}
diff --git a/tools/usvg/src/main.rs b/tools/usvg/src/main.rs
index cba7c2a..01437c4 100644
--- a/tools/usvg/src/main.rs
+++ b/tools/usvg/src/main.rs
@@ -10,10 +10,6 @@ use std::process;
use pico_args::Arguments;
-use usvg::svgdom;
-
-use svgdom::WriteBuffer;
-
fn print_help() {
print!("\
@@ -78,8 +74,8 @@ struct Args {
shape_rendering: usvg::ShapeRendering,
text_rendering: usvg::TextRendering,
image_rendering: usvg::ImageRendering,
- indent: svgdom::Indent,
- attrs_indent: svgdom::Indent,
+ indent: usvg::XmlIndent,
+ attrs_indent: usvg::XmlIndent,
quiet: bool,
free: Vec<String>,
}
@@ -101,9 +97,9 @@ fn collect_args() -> Result<Args, pico_args::Error> {
text_rendering: input.value_from_str("--text-rendering")?.unwrap_or_default(),
image_rendering: input.value_from_str("--image-rendering")?.unwrap_or_default(),
indent: input.value_from_fn("--indent", parse_indent)?
- .unwrap_or(svgdom::Indent::Spaces(4)),
+ .unwrap_or(usvg::XmlIndent::Spaces(4)),
attrs_indent: input.value_from_fn("--attrs-indent", parse_indent)?
- .unwrap_or(svgdom::Indent::None),
+ .unwrap_or(usvg::XmlIndent::None),
quiet: input.contains("--quiet"),
free: input.free()?,
})
@@ -142,15 +138,15 @@ fn parse_languages(s: &str) -> Result<Vec<String>, String> {
Ok(langs)
}
-fn parse_indent(s: &str) -> Result<svgdom::Indent, String> {
+fn parse_indent(s: &str) -> Result<usvg::XmlIndent, String> {
let indent = match s {
- "none" => svgdom::Indent::None,
- "0" => svgdom::Indent::Spaces(0),
- "1" => svgdom::Indent::Spaces(1),
- "2" => svgdom::Indent::Spaces(2),
- "3" => svgdom::Indent::Spaces(3),
- "4" => svgdom::Indent::Spaces(4),
- "tabs" => svgdom::Indent::Tabs,
+ "none" => usvg::XmlIndent::None,
+ "0" => usvg::XmlIndent::Spaces(0),
+ "1" => usvg::XmlIndent::Spaces(1),
+ "2" => usvg::XmlIndent::Spaces(2),
+ "3" => usvg::XmlIndent::Spaces(3),
+ "4" => usvg::XmlIndent::Spaces(4),
+ "tabs" => usvg::XmlIndent::Tabs,
_ => return Err("invalid INDENT value".to_string()),
};
@@ -257,28 +253,23 @@ fn process(args: &Args) -> Result<(), String> {
let tree = usvg::Tree::from_str(&input_str, &re_opt).map_err(|e| format!("{}", e))?;
- let dom_opt = svgdom::WriteOptions {
+ let xml_opt = usvg::XmlOptions {
+ use_single_quote: false,
indent: args.indent,
attributes_indent: args.attrs_indent,
- attributes_order: svgdom::AttributesOrder::Specification,
- ..svgdom::WriteOptions::default()
};
- let doc = tree.to_svgdom();
-
- let mut output_data = Vec::new();
- doc.write_buf_opt(&dom_opt, &mut output_data);
-
+ let s = tree.to_string(xml_opt);
match out_svg {
OutputTo::Stdout => {
io::stdout()
- .write_all(&output_data)
+ .write_all(s.as_bytes())
.map_err(|_| format!("failed to write to the stdout"))?;
}
OutputTo::File(path) => {
let mut f = File::create(path)
.map_err(|_| format!("failed to create the output file"))?;
- f.write_all(&output_data)
+ f.write_all(s.as_bytes())
.map_err(|_| format!("failed to write to the output file"))?;
}
}