WIP: Fix TODO in point_list types 0,1. #1
@ -1302,25 +1302,38 @@ def read_point_list(stream: io.BufferedIOBase) -> List[List[int]]:
|
|||||||
"""
|
"""
|
||||||
list_type = read_uint(stream)
|
list_type = read_uint(stream)
|
||||||
list_len = read_uint(stream)
|
list_len = read_uint(stream)
|
||||||
#TODO: Implicit close point for 1del
|
|
||||||
if list_type == 0:
|
if list_type == 0:
|
||||||
points = []
|
points = []
|
||||||
|
dx, dy = 0, 0
|
||||||
for i in range(list_len):
|
for i in range(list_len):
|
||||||
point = [0, 0]
|
point = [0, 0]
|
||||||
n = read_uint(stream)
|
n = read_sint(stream)
|
||||||
if n == 0:
|
if n == 0:
|
||||||
raise InvalidDataError('Zero-sized 1-delta')
|
raise InvalidDataError('Zero-sized 1-delta')
|
||||||
point[i % 2] = n
|
point[i % 2] = n
|
||||||
points.append(point)
|
points.append(point)
|
||||||
|
if i % 2:
|
||||||
|
dy += n
|
||||||
|
else:
|
||||||
|
dx += n
|
||||||
|
points.append([-dx, 0])
|
||||||
|
points.append([0, -dy])
|
||||||
elif list_type == 1:
|
elif list_type == 1:
|
||||||
points = []
|
points = []
|
||||||
|
dx, dy = 0, 0
|
||||||
for i in range(list_len):
|
for i in range(list_len):
|
||||||
point = [0, 0]
|
point = [0, 0]
|
||||||
n = read_uint(stream)
|
n = read_sint(stream)
|
||||||
if n == 0:
|
if n == 0:
|
||||||
raise Exception('Zero-sized 1-delta')
|
raise Exception('Zero-sized 1-delta')
|
||||||
point[(i + 1) % 2] = n
|
point[(i + 1) % 2] = n
|
||||||
points.append(point)
|
points.append(point)
|
||||||
|
if i % 2:
|
||||||
|
dx += n
|
||||||
|
else:
|
||||||
|
dy += n
|
||||||
|
points.append([0, -dy])
|
||||||
|
points.append([-dx, 0])
|
||||||
elif list_type == 2:
|
elif list_type == 2:
|
||||||
points = [ManhattanDelta.read(stream).as_list() for _ in range(list_len)]
|
points = [ManhattanDelta.read(stream).as_list() for _ in range(list_len)]
|
||||||
elif list_type == 3:
|
elif list_type == 3:
|
||||||
|
Loading…
Reference in New Issue
Block a user