mirror of
https://github.com/svg/svgo.git
synced 2025-07-31 07:44:22 +03:00
Add ‘ellipseToCircle’ plugin
Converts non-eccentric ellipse elements to circle elements. Adobe Illustrator seems to be fond of using ellipses even if their rx === ry.
This commit is contained in:
committed by
Lev Solntsev
parent
31e6a8cb65
commit
8e45fa2d58
39
plugins/convertEllipseToCircle.js
Normal file
39
plugins/convertEllipseToCircle.js
Normal file
@ -0,0 +1,39 @@
|
||||
'use strict';
|
||||
|
||||
exports.type = 'perItem';
|
||||
|
||||
exports.active = true;
|
||||
|
||||
exports.description = 'converts non-eccentric <ellipse>s to <circle>s';
|
||||
|
||||
/**
|
||||
* Converts non-eccentric <ellipse>s to <circle>s.
|
||||
*
|
||||
* @see http://www.w3.org/TR/SVG/shapes.html
|
||||
*
|
||||
* @param {Object} item current iteration item
|
||||
* @return {Boolean} if false, item will be filtered out
|
||||
*
|
||||
* @author Taylor Hunt
|
||||
*/
|
||||
exports.fn = function(item) {
|
||||
if (item.isElem('ellipse')) {
|
||||
var rx = item.attr('rx').value || 0;
|
||||
var ry = item.attr('ry').value || 0;
|
||||
|
||||
if (rx === ry ||
|
||||
rx === 'auto' || ry === 'auto' // SVG2
|
||||
) {
|
||||
var radius = rx !== 'auto' ? rx : ry;
|
||||
item.renameElem('circle');
|
||||
item.removeAttr(['rx', 'ry']);
|
||||
item.addAttr({
|
||||
name: 'r',
|
||||
value: radius,
|
||||
prefix: '',
|
||||
local: 'r',
|
||||
});
|
||||
}
|
||||
}
|
||||
return;
|
||||
};
|
Reference in New Issue
Block a user