def test_text_to_mapping(self): mapping = TextToSegmentMapper.map_text_to_segments("1337.23", 10, bcd_segments, embed_dots=True) self.assertEqual([ bcd_segments[None], bcd_segments[None], bcd_segments[None], bcd_segments[None], bcd_segments[ord("1")], bcd_segments[ord("3")], bcd_segments[ord("3")], bcd_segments[ord("7")].copy_with_dp_on(), bcd_segments[ord("2")], bcd_segments[ord("3")], ], mapping) mapping = TextToSegmentMapper.map_text_to_segments("1337.23", 4, bcd_segments, embed_dots=True) self.assertEqual([ bcd_segments[ord("3")], bcd_segments[ord("7")].copy_with_dp_on(), bcd_segments[ord("2")], bcd_segments[ord("3")], ], mapping)
def _update_text(self): # iterate lights and chars mapped_text = TextToSegmentMapper.map_segment_text_to_segments_with_color( self._current_text, len(self._lights), self._segment_map) for char, lights_for_char in zip(mapped_text, self._lights): for name, light in lights_for_char.items(): if getattr(char[0], name): light.color(color=char[1], key=self._key) else: light.remove_from_stack_by_key(key=self._key)
def _format_text(self, text): if self._type_of_display == 1: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, bcd_segments, embed_dots=False) result = map(lambda x: x.get_x4x3x2x1_encoding(), mapping) elif self._type_of_display == 2: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, bcd_segments) result = map(lambda x: x.get_dpx4x3x2x1_encoding(), mapping) elif self._type_of_display == 3: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, seven_segments) result = map(lambda x: x.get_dpgfeabcd_encoding(), mapping) elif self._type_of_display == 4: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, fourteen_segments) result = map(lambda x: x.get_apc_encoding(), mapping) elif self._type_of_display == 5: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, ascii_segments, embed_dots=False) result = map(lambda x: x.get_ascii_encoding(), mapping) elif self._type_of_display == 6: mapping = TextToSegmentMapper.map_text_to_segments(text, self._length_of_display, ascii_segments) result = map(lambda x: x.get_ascii_with_dp_encoding(), mapping) else: raise AssertionError("Invalid type {}".format(self._type_of_display)) return b''.join(result)
def _set_text(self, text: ColoredSegmentDisplayText) -> None: """Set text to VPE segment displays.""" assert not text.embed_commas mapping = TextToSegmentMapper.map_segment_text_to_segments( text, self.length_of_display, FOURTEEN_SEGMENTS) result = map(lambda x: x.get_vpe_encoding(), mapping) command = platform_pb2.Commands() command.segment_display_frame_request.name = self.number command.segment_display_frame_request.frame = b''.join(result) command.segment_display_frame_request.colors.extend([ SetSegmentDisplayFrameRequest.SegmentDisplayColor( r=color.red / 255.0, b=color.blue / 255.0, g=color.green / 255.0) for color in text.get_colors() ]) self.platform.send_command(command)