Tentative fix for Bug 395647, closepath path segments are preserved
This commit is contained in:
parent
6e68896d1f
commit
06f008a908
1 changed files with 27 additions and 6 deletions
33
scour.py
33
scour.py
|
|
@ -1083,7 +1083,18 @@ def cleanPath(element) :
|
||||||
while i < len(data):
|
while i < len(data):
|
||||||
y += data[i]
|
y += data[i]
|
||||||
i += 1
|
i += 1
|
||||||
elif cmd in ['M','L','T']:
|
elif cmd in ['M']:
|
||||||
|
newCmd = cmd.lower()
|
||||||
|
newData = []
|
||||||
|
startx = data[0]
|
||||||
|
starty = data[1]
|
||||||
|
while i < len(data):
|
||||||
|
newData.append( data[i] - x )
|
||||||
|
newData.append( data[i+1] - y )
|
||||||
|
x = data[i]
|
||||||
|
y = data[i+1]
|
||||||
|
i += 2
|
||||||
|
elif cmd in ['L','T']:
|
||||||
newCmd = cmd.lower()
|
newCmd = cmd.lower()
|
||||||
newData = []
|
newData = []
|
||||||
while i < len(data):
|
while i < len(data):
|
||||||
|
|
@ -1092,7 +1103,14 @@ def cleanPath(element) :
|
||||||
x = data[i]
|
x = data[i]
|
||||||
y = data[i+1]
|
y = data[i+1]
|
||||||
i += 2
|
i += 2
|
||||||
elif cmd in ['m','l','t']:
|
elif cmd in ['m']:
|
||||||
|
startx += data[0]
|
||||||
|
starty += data[1]
|
||||||
|
while i < len(data):
|
||||||
|
x += data[i]
|
||||||
|
y += data[i+1]
|
||||||
|
i += 2
|
||||||
|
elif cmd in ['l','t']:
|
||||||
while i < len(data):
|
while i < len(data):
|
||||||
x += data[i]
|
x += data[i]
|
||||||
y += data[i+1]
|
y += data[i+1]
|
||||||
|
|
@ -1131,6 +1149,10 @@ def cleanPath(element) :
|
||||||
x += data[i+4]
|
x += data[i+4]
|
||||||
y += data[i+5]
|
y += data[i+5]
|
||||||
i += 6
|
i += 6
|
||||||
|
elif cmd in ['z','Z']:
|
||||||
|
x = startx
|
||||||
|
y = starty
|
||||||
|
newCmd = 'z'
|
||||||
newPath.append( (newCmd, newData) )
|
newPath.append( (newCmd, newData) )
|
||||||
path = newPath
|
path = newPath
|
||||||
|
|
||||||
|
|
@ -1181,7 +1203,7 @@ def cleanPath(element) :
|
||||||
else:
|
else:
|
||||||
newPath.append( (cmd,data) )
|
newPath.append( (cmd,data) )
|
||||||
path = newPath
|
path = newPath
|
||||||
|
|
||||||
# convert straight curves into lines
|
# convert straight curves into lines
|
||||||
newPath = [path[0]]
|
newPath = [path[0]]
|
||||||
for (cmd,data) in path[1:]:
|
for (cmd,data) in path[1:]:
|
||||||
|
|
@ -1225,11 +1247,10 @@ def cleanPath(element) :
|
||||||
newData.append(data[i+5])
|
newData.append(data[i+5])
|
||||||
|
|
||||||
i += 6
|
i += 6
|
||||||
|
if newData or cmd == 'z' or cmd == 'Z':
|
||||||
if newData or cmd == 'z':
|
|
||||||
newPath.append( (cmd,newData) )
|
newPath.append( (cmd,newData) )
|
||||||
path = newPath
|
path = newPath
|
||||||
|
|
||||||
# collapse all consecutive commands of the same type into one command
|
# collapse all consecutive commands of the same type into one command
|
||||||
prevCmd = ''
|
prevCmd = ''
|
||||||
prevData = []
|
prevData = []
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue