summaryrefslogtreecommitdiff
path: root/dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp')
-rw-r--r--dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp b/dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
index 8f9635a836..9ff1b8163f 100644
--- a/dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
+++ b/dviware/dvisvgm/src/optimizer/SVGOptimizer.cpp
@@ -2,7 +2,7 @@
** SVGOptimizer.cpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2022 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -51,15 +51,21 @@ void SVGOptimizer::execute () {
return;
if (MODULE_SEQUENCE.empty())
MODULE_SEQUENCE = "remove-clippath"; // default behaviour of previous dvisvgm releases
- if (MODULE_SEQUENCE == "all") {
- for (const auto &entry : _moduleEntries)
- entry.module->execute(_svg->defsNode(), _svg->pageNode());
- }
else {
- vector<string> names = util::split(MODULE_SEQUENCE, ",");
- for (const string &name : names) {
- if (OptimizerModule *module = getModule(name))
- module->execute(_svg->defsNode(), _svg->pageNode());
+ if (MODULE_SEQUENCE == "all") {
+ for (const auto &entry: _moduleEntries)
+ entry.module->execute(_svg->defsNode(), _svg->pageNode());
+ }
+ else {
+ vector<string> names = util::split(MODULE_SEQUENCE, ",");
+ auto it = find_if(names.begin(), names.end(), [](const string &name) {
+ return name == "simplify-transform";
+ });
+ GroupCollapser::COMBINE_TRANSFORMS = (it != names.end());
+ for (const string &name: names) {
+ if (OptimizerModule *module = getModule(name))
+ module->execute(_svg->defsNode(), _svg->pageNode());
+ }
}
}
}