Compare commits

..

No commits in common. "master" and "release" have entirely different histories.

2 changed files with 5 additions and 18 deletions

View file

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

View file

@ -18,7 +18,7 @@ import zlib
import io
import logging
import pprint
from warnings import warn
from .basic import AString, NString, repetition_t, property_value_t, real_t, \
ReuseRepetition, OffsetTable, Validation, read_point_list, read_property_value, \
read_bstring, read_uint, read_sint, read_real, read_repetition, read_interval, \
@ -1630,7 +1630,7 @@ class Polygon(Record):
if point_list is not None:
if len(point_list) < 3:
warn('Polygon with < 3 points')
raise InvalidDataError('Polygon with < 3 points')
def merge_with_modals(self, modals: Modals):
adjust_coordinates(self, modals, 'geometry_x', 'geometry_y')