mirror of
https://github.com/brmlab/lasic.git
synced 2025-06-08 17:23:59 +02:00
svg/SvgProcessor: Round correctly, support subpixel shifting
This commit is contained in:
parent
270209083e
commit
3e76f2d552
1 changed files with 17 additions and 16 deletions
|
@ -8,6 +8,7 @@ class SVGHandler(xml.sax.handler.ContentHandler):
|
||||||
# self.LD = LD
|
# self.LD = LD
|
||||||
self.scale = scale
|
self.scale = scale
|
||||||
self.speed = 5
|
self.speed = 5
|
||||||
|
self.subshift = 0
|
||||||
|
|
||||||
def startElement(self, name, attrs):
|
def startElement(self, name, attrs):
|
||||||
if name == 'path':
|
if name == 'path':
|
||||||
|
@ -46,9 +47,9 @@ class SVGHandler(xml.sax.handler.ContentHandler):
|
||||||
nx = x+float(delta[0])*self.scale
|
nx = x+float(delta[0])*self.scale
|
||||||
ny = y+float(delta[1])*self.scale
|
ny = y+float(delta[1])*self.scale
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(nx), math.trunc(ny), "3"
|
print "v", self.speed, round(nx+self.subshift), round(ny+self.subshift), "3"
|
||||||
# self.LD.draw_line(x, y, nx, ny)
|
# self.LD.draw_line(x, y, nx, ny)
|
||||||
|
|
||||||
x,y = nx,ny
|
x,y = nx,ny
|
||||||
|
@ -57,17 +58,17 @@ class SVGHandler(xml.sax.handler.ContentHandler):
|
||||||
nx = float(delta[0])*self.scale
|
nx = float(delta[0])*self.scale
|
||||||
ny = float(delta[1])*self.scale
|
ny = float(delta[1])*self.scale
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(nx), math.trunc(ny), "3"
|
print "v", self.speed, round(nx+self.subshift), round(ny+self.subshift), "3"
|
||||||
# self.LD.draw_line(x, y, nx, ny)
|
# self.LD.draw_line(x, y, nx, ny)
|
||||||
x,y = nx,ny
|
x,y = nx,ny
|
||||||
elif cmd == 'z' or cmd == 'Z':
|
elif cmd == 'z' or cmd == 'Z':
|
||||||
i -= 1
|
i -= 1
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(x0), math.trunc(y0), "3"
|
print "v", self.speed, round(x0+self.subshift), round(y0+self.subshift), "3"
|
||||||
# self.LD.draw_line(x, y, x0, y0)
|
# self.LD.draw_line(x, y, x0, y0)
|
||||||
x,y = x0,y0
|
x,y = x0,y0
|
||||||
elif cmd == 'h':
|
elif cmd == 'h':
|
||||||
|
@ -75,36 +76,36 @@ class SVGHandler(xml.sax.handler.ContentHandler):
|
||||||
nx = x+float(delta)*self.scale
|
nx = x+float(delta)*self.scale
|
||||||
# self.LD.draw_line(x, y, nx, y)
|
# self.LD.draw_line(x, y, nx, y)
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(nx), math.trunc(y), "3"
|
print "v", self.speed, round(nx+self.subshift), round(y+self.subshift), "3"
|
||||||
x = nx
|
x = nx
|
||||||
elif cmd == 'H':
|
elif cmd == 'H':
|
||||||
delta = tokens[i]
|
delta = tokens[i]
|
||||||
nx = float(delta)*self.scale
|
nx = float(delta)*self.scale
|
||||||
# self.LD.draw_line(x, y, nx, y)
|
# self.LD.draw_line(x, y, nx, y)
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(nx), math.trunc(y), "3"
|
print "v", self.speed, round(nx+self.subshift), round(y+self.subshift), "3"
|
||||||
x = nx
|
x = nx
|
||||||
elif cmd == 'v':
|
elif cmd == 'v':
|
||||||
delta = tokens[i]
|
delta = tokens[i]
|
||||||
ny = y+float(delta)*self.scale
|
ny = y+float(delta)*self.scale
|
||||||
# self.LD.draw_line(x, y, x, ny)
|
# self.LD.draw_line(x, y, x, ny)
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(ny), "3"
|
print "v", self.speed, round(x+self.subshift), round(ny+self.subshift), "3"
|
||||||
y = ny
|
y = ny
|
||||||
elif cmd == 'V':
|
elif cmd == 'V':
|
||||||
delta = tokens[i]
|
delta = tokens[i]
|
||||||
ny = float(delta)*self.scale
|
ny = float(delta)*self.scale
|
||||||
# self.LD.draw_line(x, y, x, ny)
|
# self.LD.draw_line(x, y, x, ny)
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(y), "2"
|
print "v", self.speed, round(x+self.subshift), round(y+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(x), math.trunc(ny), "3"
|
print "v", self.speed, round(x+self.subshift), round(ny+self.subshift), "3"
|
||||||
y = ny
|
y = ny
|
||||||
elif cmd == 'c':
|
elif cmd == 'c':
|
||||||
ctrl1 = tokens[i].split(',')
|
ctrl1 = tokens[i].split(',')
|
||||||
|
@ -171,9 +172,9 @@ class SVGHandler(xml.sax.handler.ContentHandler):
|
||||||
# self.LD.set_color(color)
|
# self.LD.set_color(color)
|
||||||
# self.LD.draw_line(x1,y1,x2,y2)
|
# self.LD.draw_line(x1,y1,x2,y2)
|
||||||
print "l 0 1"
|
print "l 0 1"
|
||||||
print "v", self.speed, math.trunc(x1), math.trunc(y1), "2"
|
print "v", self.speed, round(x1+self.subshift), round(y1+self.subshift), "2"
|
||||||
print "l 254 1"
|
print "l 254 1"
|
||||||
print "v", self.speed, math.trunc(x2), math.trunc(y2), "3"
|
print "v", self.speed, round(x2+self.subshift), round(y2+self.subshift), "3"
|
||||||
|
|
||||||
class SvgProcessor():
|
class SvgProcessor():
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue