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:
@@ -80,8 +80,13 @@ function convertTransform(item, attrName, params) {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
params.collapseIntoOne &&
|
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)];
|
data = [transformsMultiply(data, params)];
|
||||||
@@ -89,6 +94,10 @@ function convertTransform(item, attrName, params) {
|
|||||||
if (params.matrixToTransform) {
|
if (params.matrixToTransform) {
|
||||||
data = [matrixToTransform(data[0], params)];
|
data = [matrixToTransform(data[0], params)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (params.removeUseless) {
|
||||||
|
data = removeUseless(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.attr(attrName).value = js2transform(data, params);
|
item.attr(attrName).value = js2transform(data, params);
|
||||||
@@ -192,8 +201,11 @@ function removeUseless(transforms) {
|
|||||||
// translate(0), rotate(0), skewX(0), skewY(0)
|
// translate(0), rotate(0), skewX(0), skewY(0)
|
||||||
if (
|
if (
|
||||||
['translate', 'rotate', 'skewX', 'skewY'].indexOf(transform.name) > -1 &&
|
['translate', 'rotate', 'skewX', 'skewY'].indexOf(transform.name) > -1 &&
|
||||||
transform.data.length === 1 &&
|
(transform.data.length === 1 || transform.name === 'rotate') &&
|
||||||
transform.data[0] === 0
|
transform.data[0] === 0 ||
|
||||||
|
transform.name === 'translate' &&
|
||||||
|
transform.data[0] === 0 &&
|
||||||
|
transform.data[1] === 0
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
// scale(1)
|
// scale(1)
|
||||||
|
@@ -1,16 +1,20 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
<g transform="translate(0)"/>
|
<g transform="translate(0)"/>
|
||||||
|
<g transform="translate(0 0)"/>
|
||||||
<g transform="translate(0 50)"/>
|
<g transform="translate(0 50)"/>
|
||||||
<g transform="scale(1)"/>
|
<g transform="scale(1)"/>
|
||||||
<g transform="scale(1 2)"/>
|
<g transform="scale(1 2)"/>
|
||||||
<g transform="rotate(0)"/>
|
<g transform="rotate(0)"/>
|
||||||
|
<g transform="rotate(0 100 100)"/>
|
||||||
<g transform="skewX(0)"/>
|
<g transform="skewX(0)"/>
|
||||||
<g transform="skewY(0)"/>
|
<g transform="skewY(0)"/>
|
||||||
|
<g transform="translate(0,-100) translate(0,100)"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
||||||
@@@
|
@@@
|
||||||
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform=""/>
|
||||||
<g transform=""/>
|
<g transform=""/>
|
||||||
<g transform="translate(0 50)"/>
|
<g transform="translate(0 50)"/>
|
||||||
<g transform=""/>
|
<g transform=""/>
|
||||||
@@ -18,4 +22,6 @@
|
|||||||
<g transform=""/>
|
<g transform=""/>
|
||||||
<g transform=""/>
|
<g transform=""/>
|
||||||
<g transform=""/>
|
<g transform=""/>
|
||||||
|
<g transform=""/>
|
||||||
|
<g transform=""/>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 505 B After Width: | Height: | Size: 702 B |
Reference in New Issue
Block a user