1
0
mirror of https://github.com/svg/svgo.git synced 2025-08-07 15:22:54 +03:00

Smarter transforms collapsing. Fixes #208

This commit is contained in:
GreLI
2015-03-22 22:33:22 +03:00
parent 8bec56fac8
commit f49005c68d
2 changed files with 22 additions and 4 deletions

View File

@@ -80,8 +80,13 @@ function convertTransform(item, attrName, params) {
if (
params.collapseIntoOne &&
(data.length >= 3 ||
data.some(function(i) { return i.name === 'matrix'; })
(
data.length >= 3 ||
data.length == 2 &&
(
data[0].name === 'matrix' || data[1].name === 'matrix' ||
data[0].name == data[1].name
)
)
) {
data = [transformsMultiply(data, params)];
@@ -89,6 +94,10 @@ function convertTransform(item, attrName, params) {
if (params.matrixToTransform) {
data = [matrixToTransform(data[0], params)];
}
if (params.removeUseless) {
data = removeUseless(data);
}
}
item.attr(attrName).value = js2transform(data, params);
@@ -192,8 +201,11 @@ function removeUseless(transforms) {
// translate(0), rotate(0), skewX(0), skewY(0)
if (
['translate', 'rotate', 'skewX', 'skewY'].indexOf(transform.name) > -1 &&
transform.data.length === 1 &&
transform.data[0] === 0
(transform.data.length === 1 || transform.name === 'rotate') &&
transform.data[0] === 0 ||
transform.name === 'translate' &&
transform.data[0] === 0 &&
transform.data[1] === 0
) {
return false;
// scale(1)

View File

@@ -1,16 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0)"/>
<g transform="translate(0 0)"/>
<g transform="translate(0 50)"/>
<g transform="scale(1)"/>
<g transform="scale(1 2)"/>
<g transform="rotate(0)"/>
<g transform="rotate(0 100 100)"/>
<g transform="skewX(0)"/>
<g transform="skewY(0)"/>
<g transform="translate(0,-100) translate(0,100)"/>
</svg>
@@@
<svg xmlns="http://www.w3.org/2000/svg">
<g transform=""/>
<g transform=""/>
<g transform="translate(0 50)"/>
<g transform=""/>
@@ -18,4 +22,6 @@
<g transform=""/>
<g transform=""/>
<g transform=""/>
<g transform=""/>
<g transform=""/>
</svg>

Before

Width:  |  Height:  |  Size: 505 B

After

Width:  |  Height:  |  Size: 702 B