Tentative fix for Bug 395647, closepath path segments are preserved

This commit is contained in:
JSCHILL1 2009-07-05 00:46:06 -05:00
parent 6e68896d1f
commit 06f008a908

View file

@ -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 = []