Fix parsing for inkpad svg

This commit is contained in:
2023-03-09 10:18:11 +02:00
parent c5c1b6d844
commit c5337031e5

View File

@@ -115,12 +115,15 @@ class SVGProcessor():
path.append(c) path.append(c)
# Numbers # Numbers
if c == '-' or c.isdecimal(): if c == '+' or c == '-' or c.isdecimal():
s = c s = c
while i < len(pathstr) and not (c.isspace() or c == ','): isdelim = lambda x: x.isspace() or x == ',' or x.isalpha() or x == '+'
while i < len(pathstr) and (not (isdelim(c) or c == '-')):
c = pathstr[i] c = pathstr[i]
if c != ',' and not c.isspace(): if not isdelim(c):
s = s + c s = s + c
if c.isalpha():
break
i += 1 i += 1
path.append(s) path.append(s)
@@ -250,7 +253,7 @@ class SVGProcessor():
(getnum(),getnum()), (getnum(),getnum()),
(getnum(),getnum())] (getnum(),getnum())]
control_points = np.array(control_points) control_points = np.array(control_points)
maxval = np.amax(control_points) maxval = np.amax(np.absolute(control_points))
control_points = control_points / maxval #normalize values control_points = control_points / maxval #normalize values
n = 50 n = 50
curve = cf.cubic_curve(control_points) curve = cf.cubic_curve(control_points)
@@ -274,7 +277,7 @@ class SVGProcessor():
(x + getnum(), y + getnum()), (x + getnum(), y + getnum()),
(x + getnum(), y + getnum())] (x + getnum(), y + getnum())]
control_points = np.array(control_points) control_points = np.array(control_points)
maxval = np.amax(control_points) maxval = np.amax(np.absolute(control_points))
control_points = control_points / maxval #normalize values control_points = control_points / maxval #normalize values
n = 50 n = 50
curve = cf.cubic_curve(control_points) curve = cf.cubic_curve(control_points)
@@ -340,6 +343,8 @@ class SVGProcessor():
if 'viewBox' in svg.attrib: if 'viewBox' in svg.attrib:
vb = svg.get('viewBox').split(' ') vb = svg.get('viewBox').split(' ')
if (len(vb) < 4): # handle case were comma is delim
vb = vb[0].split(',')
self.map_point = self.map_point_function(float(vb[2]), self.map_point = self.map_point_function(float(vb[2]),
float(vb[3])) float(vb[3]))
self.logger.info("Got width:{} and height:{} from viewBox".format(vb[2],vb[3])) self.logger.info("Got width:{} and height:{} from viewBox".format(vb[2],vb[3]))