Bogdan Chadkin
068db0e894
Refactor applyTransforms ( #1637 )
...
- applyTransforms is prepared to be a separate plugin, in v3 I will
remove it from convertPathData
- migrated to tsdoc
- removed optimisation with stroke-width inside id (still not idea how
it worked)
- added deoptimisation when id is on element to fix redefining in `<use>`
Note: review with hidden whitespaces
2022-01-19 20:41:10 +03:00
Bogdan Chadkin
539237ce87
Normalize path data structure ( #1538 )
...
Use modern path data structure in all plugins.
Will be easier to cover with types.
2021-08-24 00:01:18 +03:00
Bogdan Chadkin
07f8d606e0
Implement preset-default plugin ( #1513 )
...
I saw complaints about `extendDefaultPlugins` api
- it cannot be used when svgo is installed globally
- it requires svgo to be installed when using svgo-loader or svgo-jsx
- it prevents using serializable config formats like json
In this diff I introduced the new plugin which is a bundle of all
default plugins.
```js
module.exports = {
plugins: [
'preset_default',
// or
{
name: 'preset_default',
floatPrecision: 4,
overrides: {
convertPathData: {
applyTransforms: false
}
}
}
]
}
```
2021-08-13 19:07:08 +03:00
Bogdan Chadkin
2c0c361074
Collect stylesheet once per plugin ( #1456 )
...
computeStyle(node) in isolation is quite slow utility because it
collects style elements across whole document, parses and sort them.
In this diff I splitted it into `collectStylesheet(root)` and
`computeStyle(stylesheet, node)` which are easy integrate with new
visitor plugin api.
2021-08-12 03:08:39 +03:00
Bogdan Chadkin
3d79f57a10
Convert convertPathData to visitor
2021-03-29 11:01:13 +03:00
Bogdan Chadkin
316a002299
Remove hasAttr and hasAttrLocal usages ( #1447 )
...
In most cases simple check for null is enough.
2021-03-22 01:24:59 +03:00
Bogdan Chadkin
61657433e1
Refactor apply transforms
...
- handle each command separately
- handle both relative and absolute commands
- moved into _applyTransforms.js to convert eventually into plugin
- apply transforms before converting into relative
These changes makes code independent and easy to work with.
2021-03-15 21:24:23 +03:00
Bogdan Chadkin
a04b27a1df
Refactor convertToRelative
...
Slight code simplification. Each command is processed exclusively
without assumtions. Removed moveto and closepath common coords
reference, handle in applyTransform instead. Rely on new path data
naming.
2021-03-15 13:41:12 +03:00
Bogdan Chadkin
ba7e9bdc0d
Fix collapsing repeated with marker-mid in style rule
2021-03-06 01:36:18 +03:00
Bogdan Chadkin
c21fef54e1
Remove useless path commands considering static styles
2021-03-05 18:08:02 +03:00
Bogdan Chadkin
7901588a9f
Fix path optimisation with stroke-linecap round
...
Ref https://github.com/svg/svgo/issues/890
2021-02-28 15:22:27 +03:00
XhmikosR
1310210d4e
Use https when possible and fix an inactive domain ( #1374 )
2021-02-25 13:48:18 +03:00
Bogdan Chadkin
9263d9ab90
Fix svg spec urls in plugins
2021-02-24 11:18:48 +03:00
一丝
8d7cfa02c7
After ‘arcto’ path command(a or A) flags, spaces are no longer removed by default ( #1353 )
...
Co-authored-by: 壹丝 <jie.lijie@alibaba-inc.com>
2021-02-20 18:58:42 +03:00
jlherren
dfe649fa8d
Fix collapsing of repeated commands in convertPathData plugin
...
This fixes #1166
2019-11-05 19:22:43 +03:00
GreLI
8671c4c3df
Fix incorrect prev arc segment angle calculation.
...
Close #1109
2019-07-14 12:07:59 +03:00
GreLI
258fecfa6b
Remove spaces after ‘arcto’ path command flags
2019-07-13 16:18:08 +03:00
GreLI
5800635226
Fix converting to large arcs from nearly straight lines curves
...
Fix #842
2018-09-16 17:12:06 +03:00
GreLI
831f95fccc
Fix empty path segments removing with stroke-linecap
...
Fix #1017
2018-09-16 15:36:41 +03:00
Mikuláš Sychra
e928c1f050
Update convertPathData.js ( #906 )
...
Added parameter forceAbsolutePath to get absolute SVG path (even when the relative path is shorter).
2018-09-15 14:40:34 +03:00
David Leston
cd8a405aa2
Removed an assigned value that's never used. Also fixed typos. ( #764 )
2017-09-14 21:25:51 +03:00
GreLI
4e320d9d56
Apply smart rounding only if need to round.
...
Fixes #508 . Resolves #284 .
2016-03-20 20:52:37 +03:00
GreLI
0f599b670d
Fixed regression due to angle calculation changes. Fixes #517
2016-03-20 12:30:06 +03:00
GreLI
1335334cc7
Fixed crashing on invoking rounding several times. Closes #480
2016-01-13 17:17:26 +03:00
GreLI
044fc3b168
Correct all angle calculations to use circle radii instead of curves control points
2016-01-09 19:35:18 +03:00
GreLI
1b0051ad1c
Fixed angle calculation with zero length curve control point.
...
Fixes #477
2016-01-06 13:57:19 +03:00
GreLI
3a7f4ea070
New optimization in paths: curves to arcs
2015-11-08 18:23:45 +03:00
GreLI
97bbd21553
Simplified straight curve checking function
2015-09-18 19:16:44 +03:00
GreLI
40b57f3980
Fixed shortand curve distortion due to converted prev curve. Resolves #415
2015-09-18 18:50:17 +03:00
GreLI
a7f62d8984
Formatting
2015-06-21 19:13:41 +03:00
Yoshiya Hinosawa
73c5a73900
Modify jshint rules
2015-06-13 18:32:19 +09:00
Yoshiya Hinosawa
3f8e6fd15c
Fix lint
2015-06-12 00:25:32 +09:00
Yoshiya Hinosawa
8e6b365c40
Add --show-plugins option
2015-06-07 19:35:49 +09:00
GreLI
ff5e89d5bf
Reworked transform manipulation
2015-05-24 20:50:47 +03:00
GreLI
e220b6cad0
Path data processing improvements.
...
Improved path data saving.
Collapse repeated now works at writing path data and doesn't affect pathJS to make further processing easier.
Resolves #204 .
2015-03-17 22:03:17 +03:00
GreLI
5e7caa49dc
Code styling
2015-02-08 19:31:55 +03:00
Samar Panda
1ccdc0d76b
Adding a sanity check before proceeding
2014-12-18 10:53:33 +05:30
GreLI
ccce15312c
Applied ‘moveto’ command collapsing to starting ‘M‘ as well
2014-11-04 15:44:35 +03:00
GreLI
6eb271683b
Fixed misplacing due to incorrect collapsing of path ‘moveto’ commands, fixes #189
2014-11-03 01:28:07 +03:00
GreLI
25d123134d
Added ‘index’ for linked path item and a test for path translation after ‘z’
2014-11-02 14:16:14 +03:00
GreLI
10146b5498
Fixed bug with translate not applied to path after ‘z’ command
2014-11-02 14:02:33 +03:00
GreLI
2b235f9fe2
Linked filtered out path segments to previous for next checks
2014-11-01 22:26:34 +03:00
GreLI
06028a69de
Path data optimization improvements.
...
Writes absolute coordinates if it's shorter.
Relative coordinates rounding now takes in account accumulating error. Points will be closer to original values.
Rounding is smarter like 2.49 to 2.5.
2014-07-31 20:13:57 +04:00
Kalashnikov Igor
4c4ced858d
skip data concatenation for z instruction in collapseRepeated
2014-01-02 23:04:35 +04:00
Nathan Muir
633c981304
Fix issue with convertPathData when sequential h or l movements are in the opposite direction.
2013-11-18 22:37:49 +02:00
Nathan Muir
cd0793a9f2
Updated applyTransforms to optionally apply path transforms & convert the stroke-width when a line is scaled uniformly (ie, no skew).
2013-11-18 22:37:06 +02:00
deepsweet
96bff9b7c7
plugins/convertPathData: fix m->M bug in some cases
2013-05-06 19:01:30 +03:00
deepsweet
d391a38b7c
plugins/transformsWithOnePath: fix last point calculation for C/S/Q/T
2013-05-06 15:07:54 +03:00
deepsweet
a50b192703
plugins/convertPathData: convert very first m to M, fix applyTransforms with translate() ( fix #112 )
2013-05-05 15:12:44 +03:00
deepsweet
446796e531
Impossible to set output presision to 0 (no fractional part) ( fix #110 )
2013-05-03 20:55:21 +03:00