|
2 | 2 |
|
3 | 3 | import io |
4 | 4 | import logging |
5 | | -import threading |
6 | 5 | from dataclasses import dataclass, field |
7 | 6 |
|
8 | 7 | from vacuum_map_parser_base.config.color import Color, ColorsPalette, SupportedColor |
|
11 | 10 | from vacuum_map_parser_base.config.size import Size, Sizes |
12 | 11 | from vacuum_map_parser_base.image_generator import ImageGenerator |
13 | 12 | from vacuum_map_parser_base.map_data import MapData |
14 | | -from vacuum_map_parser_roborock.image_parser import RoborockImageParser |
15 | 13 | from vacuum_map_parser_roborock.map_data_parser import RoborockMapDataParser |
16 | 14 |
|
17 | 15 | from roborock.exceptions import RoborockException |
18 | 16 |
|
19 | | -from .room_colors import adjacency_aware_room_colors |
20 | | - |
21 | 17 | _LOGGER = logging.getLogger(__name__) |
22 | 18 |
|
23 | 19 | DEFAULT_DRAWABLES = { |
@@ -103,68 +99,16 @@ def parse(self, map_bytes: bytes) -> ParsedMapData | None: |
103 | 99 | return ParsedMapData(image_content=img_byte_arr.getvalue(), map_data=parsed_map) |
104 | 100 |
|
105 | 101 |
|
106 | | -class _AdjacencyAwareRoborockImageParser(RoborockImageParser): |
107 | | - """Apply the shared adjacency color policy to V1 room cells.""" |
108 | | - |
109 | | - def __init__( |
110 | | - self, |
111 | | - palette: ColorsPalette, |
112 | | - image_config: ImageConfig, |
113 | | - *, |
114 | | - recolor_rooms: bool = True, |
115 | | - ) -> None: |
116 | | - super().__init__(palette, image_config) |
117 | | - self._room_palette = palette |
118 | | - self._base_room_colors = palette.cached_room_colors.copy() |
119 | | - self._recolor_rooms = recolor_rooms |
120 | | - self._palette_lock = threading.Lock() |
121 | | - |
122 | | - def parse( |
123 | | - self, |
124 | | - raw_data: bytes, |
125 | | - width: int, |
126 | | - height: int, |
127 | | - carpet_map: set[int] | None, |
128 | | - removed_map: set[int] | None = None, |
129 | | - ): |
130 | | - """Assign non-conflicting room colors before the V1 image pass.""" |
131 | | - with self._palette_lock: |
132 | | - # cached_room_colors is a read-only property, so reset its dict in place. |
133 | | - cached_room_colors = self._room_palette.cached_room_colors |
134 | | - cached_room_colors.clear() |
135 | | - cached_room_colors.update(self._base_room_colors) |
136 | | - |
137 | | - if self._recolor_rooms: |
138 | | - |
139 | | - def room_id(value: int) -> int | None: |
140 | | - if value in (self.MAP_OUTSIDE, self.MAP_WALL, self.MAP_INSIDE, self.MAP_SCAN): |
141 | | - return None |
142 | | - return self._get_room_number(value) if value & 0x07 == 0x07 else None |
143 | | - |
144 | | - room_colors = adjacency_aware_room_colors(raw_data, width, self._room_palette, room_id) |
145 | | - for number, color in room_colors.items(): |
146 | | - # ColorsPalette caches both forms for get_room_color(str | int). |
147 | | - cached_room_colors[number] = color |
148 | | - cached_room_colors[str(number)] = color |
149 | | - return super().parse(raw_data, width, height, carpet_map, removed_map) |
150 | | - |
151 | | - |
152 | 102 | def _create_map_data_parser(config: MapParserConfig) -> RoborockMapDataParser: |
153 | 103 | """Create a RoborockMapDataParser based on the config entry.""" |
154 | 104 | palette, sizes, image_config = _create_rendering_components(config) |
155 | | - parser = RoborockMapDataParser( |
| 105 | + return RoborockMapDataParser( |
156 | 106 | palette, |
157 | 107 | sizes, |
158 | 108 | config.drawables, |
159 | 109 | image_config, |
160 | 110 | [], |
161 | 111 | ) |
162 | | - parser._image_parser = _AdjacencyAwareRoborockImageParser( |
163 | | - palette, |
164 | | - image_config, |
165 | | - recolor_rooms=config.show_rooms, |
166 | | - ) |
167 | | - return parser |
168 | 112 |
|
169 | 113 |
|
170 | 114 | def _create_image_generator( |
|
0 commit comments