Remove empty m0,0 segments

This commit is contained in:
Jeff Schiller 2010-07-13 09:14:17 -07:00
parent 5f8139a6e3
commit b68f8483c7
3 changed files with 19 additions and 1 deletions

View file

@ -1670,7 +1670,14 @@ def cleanPath(element, options) :
cmd, data = path[pathIndex] cmd, data = path[pathIndex]
i = 0 i = 0
if cmd in ['m','l','t']: if cmd in ['m','l','t']:
if cmd == 'm': i = 2 if cmd == 'm':
# remove m0,0 segments
if data[0] == data[i+1] == 0:
# 'm0,0 x,y' can be replaces with 'lx,y'
path[pathIndex] = ('l', data[2:])
numPathSegmentsReduced += 1
else: # else skip move coordinate
i = 2
while i < len(data): while i < len(data):
if data[i] == data[i+1] == 0: if data[i] == data[i+1] == 0:
del data[i:i+2] del data[i:i+2]

View file

@ -1144,6 +1144,12 @@ class StyleToAttr(unittest.TestCase):
self.assertEquals(line.getAttribute('marker-start'), 'url(#m)') self.assertEquals(line.getAttribute('marker-start'), 'url(#m)')
self.assertEquals(line.getAttribute('marker-mid'), 'url(#m)') self.assertEquals(line.getAttribute('marker-mid'), 'url(#m)')
self.assertEquals(line.getAttribute('marker-end'), 'url(#m)') self.assertEquals(line.getAttribute('marker-end'), 'url(#m)')
class PathEmptyMove(unittest.TestCase):
def runTest(self):
doc = scour.scourXmlFile('unittests/path-empty-move.svg')
self.assertEquals(doc.getElementsByTagName('path')[0].getAttribute('d'), 'm100 100l200 100z');
self.assertEquals(doc.getElementsByTagName('path')[1].getAttribute('d'), 'm100 100v200l100 100z');
# TODO: write tests for --enable-viewboxing # TODO: write tests for --enable-viewboxing
# TODO; write a test for embedding rasters # TODO; write a test for embedding rasters

View file

@ -0,0 +1,5 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg">
<path d="m100 100 l200 100 m0 0z" />
<path d="m100 100 v200 m0 0 100 100z" />
</svg>

After

Width:  |  Height:  |  Size: 151 B