valetudo-map-parser 0.1.9b71__py3-none-any.whl → 0.1.9b72__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- valetudo_map_parser/config/drawable.py +47 -64
- {valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/METADATA +1 -1
- {valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/RECORD +6 -6
- {valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/LICENSE +0 -0
- {valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/NOTICE.txt +0 -0
- {valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/WHEEL +0 -0
@@ -240,30 +240,6 @@ class Drawable:
|
|
240
240
|
return inside
|
241
241
|
|
242
242
|
@staticmethod
|
243
|
-
def _bresenham_line_coords(x1: int, y1: int, x2: int, y2: int) -> Tuple[np.ndarray, np.ndarray]:
|
244
|
-
"""Return integer coordinates for a line using Bresenham's algorithm."""
|
245
|
-
dx = abs(x2 - x1)
|
246
|
-
dy = abs(y2 - y1)
|
247
|
-
sx = 1 if x1 < x2 else -1
|
248
|
-
sy = 1 if y1 < y2 else -1
|
249
|
-
err = dx - dy
|
250
|
-
|
251
|
-
xs, ys = [], []
|
252
|
-
while True:
|
253
|
-
xs.append(x1)
|
254
|
-
ys.append(y1)
|
255
|
-
if x1 == x2 and y1 == y2:
|
256
|
-
break
|
257
|
-
e2 = 2 * err
|
258
|
-
if e2 > -dy:
|
259
|
-
err -= dy
|
260
|
-
x1 += sx
|
261
|
-
if e2 < dx:
|
262
|
-
err += dx
|
263
|
-
y1 += sy
|
264
|
-
return np.array(xs, dtype=int), np.array(ys, dtype=int)
|
265
|
-
|
266
|
-
|
267
243
|
def _line(
|
268
244
|
layer: np.ndarray,
|
269
245
|
x1: int,
|
@@ -273,7 +249,8 @@ class Drawable:
|
|
273
249
|
color: Color,
|
274
250
|
width: int = 3,
|
275
251
|
) -> np.ndarray:
|
276
|
-
"""
|
252
|
+
"""
|
253
|
+
Draw a line on a NumPy array (layer) from point A to B using Bresenham's algorithm.
|
277
254
|
|
278
255
|
Args:
|
279
256
|
layer: The numpy array to draw on (H, W, C)
|
@@ -283,55 +260,61 @@ class Drawable:
|
|
283
260
|
width: Width of the line in pixels
|
284
261
|
"""
|
285
262
|
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
|
286
|
-
h, w = layer.shape[:2]
|
287
263
|
|
288
264
|
blended_color = get_blended_color(x1, y1, x2, y2, layer, color)
|
289
265
|
|
290
|
-
|
291
|
-
|
266
|
+
dx = abs(x2 - x1)
|
267
|
+
dy = abs(y2 - y1)
|
268
|
+
sx = 1 if x1 < x2 else -1
|
269
|
+
sy = 1 if y1 < y2 else -1
|
270
|
+
err = dx - dy
|
292
271
|
|
293
|
-
|
294
|
-
|
295
|
-
mask = (xs >= 0) & (xs < w) & (ys >= 0) & (ys < h)
|
296
|
-
layer[ys[mask], xs[mask]] = blended_color
|
297
|
-
return layer
|
272
|
+
half_w = width // 2
|
273
|
+
h, w = layer.shape[:2]
|
298
274
|
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
275
|
+
while True:
|
276
|
+
# Draw a filled circle for thickness
|
277
|
+
yy, xx = np.ogrid[-half_w:half_w + 1, -half_w:half_w + 1]
|
278
|
+
mask = xx**2 + yy**2 <= half_w**2
|
279
|
+
y_min = max(0, y1 - half_w)
|
280
|
+
y_max = min(h, y1 + half_w + 1)
|
281
|
+
x_min = max(0, x1 - half_w)
|
282
|
+
x_max = min(w, x1 + half_w + 1)
|
306
283
|
|
307
|
-
|
308
|
-
|
309
|
-
|
284
|
+
submask = mask[
|
285
|
+
(y_min - (y1 - half_w)):(y_max - (y1 - half_w)),
|
286
|
+
(x_min - (x1 - half_w)):(x_max - (x1 - half_w))
|
287
|
+
]
|
288
|
+
layer[y_min:y_max, x_min:x_max][submask] = blended_color
|
310
289
|
|
311
|
-
|
312
|
-
|
313
|
-
all_x = all_x[valid]
|
314
|
-
all_y = all_y[valid]
|
290
|
+
if x1 == x2 and y1 == y2:
|
291
|
+
break
|
315
292
|
|
316
|
-
|
317
|
-
|
293
|
+
e2 = 2 * err
|
294
|
+
if e2 > -dy:
|
295
|
+
err -= dy
|
296
|
+
x1 += sx
|
297
|
+
if e2 < dx:
|
298
|
+
err += dx
|
299
|
+
y1 += sy
|
318
300
|
|
319
301
|
return layer
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
for
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
@staticmethod
|
306
|
+
async def draw_virtual_walls(
|
307
|
+
layer: NumpyArray, virtual_walls, color: Color
|
308
|
+
) -> NumpyArray:
|
309
|
+
"""
|
310
|
+
Draw virtual walls on the input layer.
|
311
|
+
"""
|
312
|
+
for wall in virtual_walls:
|
313
|
+
for i in range(0, len(wall), 4):
|
314
|
+
x1, y1, x2, y2 = wall[i : i + 4]
|
315
|
+
# Draw the virtual wall as a line with a fixed width of 6 pixels
|
316
|
+
layer = Drawable._line(layer, x1, y1, x2, y2, color, width=6)
|
317
|
+
return layer
|
335
318
|
|
336
319
|
@staticmethod
|
337
320
|
async def lines(arr: NumpyArray, coords, width: int, color: Color) -> NumpyArray:
|
@@ -4,7 +4,7 @@ valetudo_map_parser/config/async_utils.py,sha256=e1j9uTtg4dhPVWvB2_XgqaH4aeSjRAP
|
|
4
4
|
valetudo_map_parser/config/auto_crop.py,sha256=Aes7vfv4z8ihYvGaH5Nryj6Y9mHDerZLIeyvePjf9aQ,19259
|
5
5
|
valetudo_map_parser/config/color_utils.py,sha256=nXD6WeNmdFdoMxPDW-JFpjnxJSaZR1jX-ouNfrx6zvE,4502
|
6
6
|
valetudo_map_parser/config/colors.py,sha256=DG-oPQoN5gsnwDbEsuFr8a0hRCxmbFHObWa4_5pr-70,29910
|
7
|
-
valetudo_map_parser/config/drawable.py,sha256=
|
7
|
+
valetudo_map_parser/config/drawable.py,sha256=9twbotqVEQ7A_9W-XWg2zx8414Kvwm_B9dFgu4nyJ9Q,33606
|
8
8
|
valetudo_map_parser/config/drawable_elements.py,sha256=o-5oiXmfqPwNQLzKIhkEcZD_A47rIU9E0CqKgWipxgc,11516
|
9
9
|
valetudo_map_parser/config/enhanced_drawable.py,sha256=QlGxlUMVgECUXPtFwIslyjubWxQuhIixsRymWV3lEvk,12586
|
10
10
|
valetudo_map_parser/config/optimized_element_map.py,sha256=52BCnkvVv9bre52LeVIfT8nhnEIpc0TuWTv1xcNu0Rk,15744
|
@@ -20,8 +20,8 @@ valetudo_map_parser/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
20
20
|
valetudo_map_parser/rand256_handler.py,sha256=daaSQ5ktMUYMnYxJkjS75UdBchpXVZ58HIomwHBFivs,27651
|
21
21
|
valetudo_map_parser/reimg_draw.py,sha256=1q8LkNTPHEA9Tsapc_JnVw51kpPYNhaBU-KmHkefCQY,12507
|
22
22
|
valetudo_map_parser/rooms_handler.py,sha256=ovqQtAjauAqwUNPR0aX27P2zhheQmqfaFhDE3_AwYWk,17821
|
23
|
-
valetudo_map_parser-0.1.
|
24
|
-
valetudo_map_parser-0.1.
|
25
|
-
valetudo_map_parser-0.1.
|
26
|
-
valetudo_map_parser-0.1.
|
27
|
-
valetudo_map_parser-0.1.
|
23
|
+
valetudo_map_parser-0.1.9b72.dist-info/LICENSE,sha256=Lh-qBbuRV0-jiCIBhfV7NgdwFxQFOXH3BKOzK865hRs,10480
|
24
|
+
valetudo_map_parser-0.1.9b72.dist-info/METADATA,sha256=04tAbYfZ0ZiwdCoHppkEaSjtgfcwQvriXny3LeBsWpg,3353
|
25
|
+
valetudo_map_parser-0.1.9b72.dist-info/NOTICE.txt,sha256=5lTOuWiU9aiEnJ2go8sc7lTJ7ntMBx0g0GFnNrswCY4,2533
|
26
|
+
valetudo_map_parser-0.1.9b72.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
27
|
+
valetudo_map_parser-0.1.9b72.dist-info/RECORD,,
|
File without changes
|
{valetudo_map_parser-0.1.9b71.dist-info → valetudo_map_parser-0.1.9b72.dist-info}/NOTICE.txt
RENAMED
File without changes
|
File without changes
|