valetudo-map-parser 0.1.9b23__tar.gz → 0.1.9b24__tar.gz

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.
Files changed (20) hide show
  1. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/PKG-INFO +1 -1
  2. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/auto_crop.py +12 -29
  3. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/shared.py +22 -1
  4. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/types.py +2 -0
  5. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/hypfer_handler.py +13 -5
  6. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/rand25_handler.py +13 -4
  7. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/pyproject.toml +1 -1
  8. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/LICENSE +0 -0
  9. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/NOTICE.txt +0 -0
  10. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/README.md +0 -0
  11. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/__init__.py +0 -0
  12. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/__init__.py +0 -0
  13. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/colors.py +0 -0
  14. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/drawable.py +0 -0
  15. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/rand25_parser.py +0 -0
  16. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/config/utils.py +0 -0
  17. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/hypfer_draw.py +0 -0
  18. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/map_data.py +0 -0
  19. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/py.typed +0 -0
  20. {valetudo_map_parser-0.1.9b23 → valetudo_map_parser-0.1.9b24}/SCR/valetudo_map_parser/reimg_draw.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: valetudo-map-parser
3
- Version: 0.1.9b23
3
+ Version: 0.1.9b24
4
4
  Summary: A Python library to parse Valetudo map data returning a PIL Image object.
5
5
  License: Apache-2.0
6
6
  Author: Sandro Cantarella
@@ -28,9 +28,6 @@ class AutoCrop:
28
28
  def __init__(self, image_handler):
29
29
  self.imh = image_handler
30
30
  self.file_name = self.imh.file_name
31
- # self.path_to_data = self.hass.config.path(
32
- # STORAGE_DIR, CAMERA_STORAGE, f"auto_crop_{self.file_name}.json"
33
- # )
34
31
 
35
32
  def check_trim(
36
33
  self, trimmed_height, trimmed_width, margin_size, image_array, file_name, rotate
@@ -71,19 +68,18 @@ class AutoCrop:
71
68
  )
72
69
  return trimmed_width, trimmed_height
73
70
 
74
- async def _async_auto_crop_data(self): # , tdata=None
71
+ async def _async_auto_crop_data(self, tdata=None): # , tdata=None
75
72
  """Load the auto crop data from the Camera config."""
76
- # todo: implement this method but from config data
77
- # if not self.imh.auto_crop:
78
- # trims_data = TrimCropData.from_dict(dict(tdata)).to_list()
79
- # (
80
- # self.imh.trim_left,
81
- # self.imh.trim_up,
82
- # self.imh.trim_right,
83
- # self.imh.trim_down,
84
- # ) = trims_data
85
- # self._calculate_trimmed_dimensions()
86
- # return trims_data
73
+ if not self.imh.auto_crop:
74
+ trims_data = TrimCropData.from_dict(dict(tdata)).to_list()
75
+ (
76
+ self.imh.trim_left,
77
+ self.imh.trim_up,
78
+ self.imh.trim_right,
79
+ self.imh.trim_down,
80
+ ) = trims_data
81
+ self._calculate_trimmed_dimensions()
82
+ return trims_data
87
83
  return None
88
84
 
89
85
  def auto_crop_offset(self):
@@ -97,26 +93,13 @@ class AutoCrop:
97
93
  async def _init_auto_crop(self):
98
94
  """Initialize the auto crop data."""
99
95
  if not self.imh.auto_crop and self.imh.shared.vacuum_state == "docked":
100
- self.imh.auto_crop = await self._async_auto_crop_data()
96
+ self.imh.auto_crop = await self._async_auto_crop_data(self.imh.shared.trims)
101
97
  if self.imh.auto_crop:
102
98
  self.auto_crop_offset()
103
99
  else:
104
100
  self.imh.max_frames = 5
105
101
  return self.imh.auto_crop
106
102
 
107
- # async def _async_save_auto_crop_data(self):
108
- # """Save the auto crop data to the disk."""
109
- # try:
110
- # if not os.path.exists(self.path_to_data):
111
- # data = TrimCropData(
112
- # self.imh.trim_left,
113
- # self.imh.trim_up,
114
- # self.imh.trim_right,
115
- # self.imh.trim_down,
116
- # ).to_dict()
117
- # except Exception as e:
118
- # _LOGGER.error(f"Failed to save trim data due to an error: {e}")
119
-
120
103
  async def async_image_margins(
121
104
  self, image_array: NumpyArray, detect_colour: Color
122
105
  ) -> tuple[int, int, int, int]:
@@ -112,6 +112,14 @@ class CameraShared:
112
112
  }
113
113
  self.skip_room_ids: List[str] = []
114
114
 
115
+ def get_trims_dictionary(self):
116
+ return {
117
+ "trim_left": self.trims.get(TrimsData.TRIM_LEFT, 0),
118
+ "trim_up": self.trims.get(TrimsData.TRIM_UP, 0),
119
+ "trim_right": self.trims.get(TrimsData.TRIM_RIGHT, 0),
120
+ "trim_down": self.trims.get(TrimsData.TRIM_DOWN, 0),
121
+ }
122
+
115
123
  def update_user_colors(self, user_colors):
116
124
  """Update the user colors."""
117
125
  self.user_colors = user_colors
@@ -228,11 +236,24 @@ class CameraSharedManager:
228
236
  instance.vacuum_status_position = device_info.get(
229
237
  CONF_VAC_STAT_POS, DEFAULT_VALUES["vac_status_position"]
230
238
  )
231
-
232
239
  # If enable_snapshots, check for png in www.
233
240
  instance.enable_snapshots = device_info.get(
234
241
  CONF_SNAPSHOTS_ENABLE, DEFAULT_VALUES["enable_www_snapshots"]
235
242
  )
243
+ instance.trims = {
244
+ TrimsData.TRIM_LEFT: device_info.get(
245
+ "trims_data", DEFAULT_VALUES["trims_data"]
246
+ ).get("trim_left", 0),
247
+ TrimsData.TRIM_UP: device_info.get(
248
+ "trims_data", DEFAULT_VALUES["trims_data"]
249
+ ).get("trim_up", 0),
250
+ TrimsData.TRIM_RIGHT: device_info.get(
251
+ "trims_data", DEFAULT_VALUES["trims_data"]
252
+ ).get("trim_right", 0),
253
+ TrimsData.TRIM_DOWN: device_info.get(
254
+ "trims_data", DEFAULT_VALUES["trims_data"]
255
+ ).get("trim_down", 0),
256
+ }
236
257
 
237
258
  except TypeError as ex:
238
259
  _LOGGER.error("Shared data can't be initialized due to a TypeError! %s", ex)
@@ -285,6 +285,7 @@ DEFAULT_VALUES = {
285
285
  "vac_status_position": True,
286
286
  "get_svg_file": False,
287
287
  "save_trims": True,
288
+ "trims_data": {"trim_left": 0, "trim_up": 0, "trim_right": 0, "trim_down": 0},
288
289
  "enable_www_snapshots": False,
289
290
  "color_charger": [255, 128, 0],
290
291
  "color_move": [238, 247, 255],
@@ -346,6 +347,7 @@ KEYS_TO_UPDATE = [
346
347
  "offset_bottom",
347
348
  "offset_left",
348
349
  "offset_right",
350
+ "trims_data",
349
351
  "auto_zoom",
350
352
  "zoom_lock_ratio",
351
353
  "show_vac_status",
@@ -15,7 +15,7 @@ from PIL import Image
15
15
  from .config.auto_crop import AutoCrop
16
16
  from .config.drawable import Drawable
17
17
  from .config.shared import CameraShared
18
- from .config.types import COLORS, CalibrationPoints, Colors, RoomsProperties
18
+ from .config.types import COLORS, CalibrationPoints, Colors, RoomsProperties, TrimsData
19
19
  from .config.utils import BaseHandler, prepare_resize_params
20
20
  from .hypfer_draw import ImageDraw as ImDraw
21
21
  from .map_data import ImageData
@@ -42,10 +42,18 @@ class HypferMapImageHandler(BaseHandler):
42
42
  self.img_base_layer = None # numpy array store the map base layer.
43
43
  self.active_zones = None # vacuum active zones.
44
44
  self.svg_wait = False # SVG image creation wait.
45
- self.trim_down = 0 # memory stored trims calculated once.
46
- self.trim_left = 0 # memory stored trims calculated once.
47
- self.trim_right = 0 # memory stored trims calculated once.
48
- self.trim_up = 0 # memory stored trims calculated once.
45
+ self.trim_up = self.shared.trims.get(
46
+ TrimsData.TRIM_UP, 0
47
+ ) # memory stored trims calculated once.
48
+ self.trim_down = self.shared.trims.get(
49
+ TrimsData.TRIM_DOWN, 0
50
+ ) # memory stored trims calculated once.
51
+ self.trim_left = self.shared.trims.get(
52
+ TrimsData.TRIM_LEFT, 0
53
+ ) # memory stored trims calculated once.
54
+ self.trim_right = self.shared.trims.get(
55
+ TrimsData.TRIM_RIGHT, 0
56
+ ) # memory stored trims calculated once.
49
57
  self.offset_top = self.shared.offset_top # offset top
50
58
  self.offset_bottom = self.shared.offset_down # offset bottom
51
59
  self.offset_left = self.shared.offset_left # offset left
@@ -23,6 +23,7 @@ from .config.types import (
23
23
  PilPNG,
24
24
  RobotPosition,
25
25
  RoomsProperties,
26
+ TrimsData,
26
27
  )
27
28
  from .config.utils import BaseHandler, prepare_resize_params
28
29
  from .map_data import RandImageData
@@ -52,10 +53,18 @@ class ReImageHandler(BaseHandler):
52
53
  self.room_propriety = None # Room propriety data
53
54
  self.shared = camera_shared # Shared data
54
55
  self.active_zones = None # Active zones
55
- self.trim_down = None # Trim down
56
- self.trim_left = None # Trim left
57
- self.trim_right = None # Trim right
58
- self.trim_up = None # Trim up
56
+ self.trim_up = self.shared.trims.get(
57
+ TrimsData.TRIM_UP, 0
58
+ ) # memory stored trims calculated once.
59
+ self.trim_down = self.shared.trims.get(
60
+ TrimsData.TRIM_DOWN, 0
61
+ ) # memory stored trims calculated once.
62
+ self.trim_left = self.shared.trims.get(
63
+ TrimsData.TRIM_LEFT, 0
64
+ ) # memory stored trims calculated once.
65
+ self.trim_right = self.shared.trims.get(
66
+ TrimsData.TRIM_RIGHT, 0
67
+ ) # memory stored trims calculated once.
59
68
  self.file_name = self.shared.file_name # File name
60
69
  self.offset_top = self.shared.offset_top # offset top
61
70
  self.offset_bottom = self.shared.offset_down # offset bottom
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "valetudo-map-parser"
3
- version = "0.1.9.b23"
3
+ version = "0.1.9.b24"
4
4
  description = "A Python library to parse Valetudo map data returning a PIL Image object."
5
5
  authors = ["Sandro Cantarella <gsca075@gmail.com>"]
6
6
  license = "Apache-2.0"