forked from jan/fatamorgana
		
	Read type0,1 pointlist correctly
This commit is contained in:
		
							parent
							
								
									ab175641fe
								
							
						
					
					
						commit
						203a520770
					
				| @ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user