def shape_string(text="abcd", family='monospace', size=11.0, dpi=96.0, path=None): try: sprites, cell_width, cell_height = setup_for_testing(family, size, dpi) s = Screen(None, 1, len(text)*2) line = s.line(0) s.draw(text) return test_shape(line, path) finally: set_send_sprite_to_gpu(None)
def setUp(self): sprite_map_set_limits(100000, 100) self.sprites = OrderedDict() def send_to_gpu(x, y, z, data): self.sprites[(x, y, z)] = data set_send_sprite_to_gpu(send_to_gpu) set_logical_dpi(96.0, 96.0) self.cell_width, self.cell_height = set_font_family() prerender() self.assertEqual([k[0] for k in self.sprites], [0, 1, 2, 3, 4, 5])
def setup_for_testing(family='monospace', size=11.0, dpi=96.0): opts = defaults._replace(font_family=family) set_options(opts) sprites = {} def send_to_gpu(x, y, z, data): sprites[(x, y, z)] = data sprite_map_set_limits(100000, 100) set_send_sprite_to_gpu(send_to_gpu) set_logical_dpi(dpi, dpi) cell_width, cell_height = set_font_family(opts, override_font_size=size) prerender() return sprites, cell_width, cell_height
def __enter__(self) -> Tuple[Dict[Tuple[int, int, int], bytes], int, int]: opts = defaults._replace(font_family=self.family, font_size=self.size) set_options(opts) sprites = {} def send_to_gpu(x: int, y: int, z: int, data: bytes) -> None: sprites[(x, y, z)] = data sprite_map_set_limits(100000, 100) set_send_sprite_to_gpu(send_to_gpu) try: set_font_family(opts) cell_width, cell_height = create_test_font_group(self.size, self.dpi, self.dpi) return sprites, cell_width, cell_height except Exception: set_send_sprite_to_gpu(None) raise
def test_drawing(sz: int = 48, family: str = 'monospace', start: int = 0x2500, num_rows: int = 10, num_cols: int = 16) -> None: from kitty.fast_data_types import concat_cells, set_send_sprite_to_gpu from .render import display_bitmap, setup_for_testing with setup_for_testing(family, sz) as (_, width, height): space = bytearray(width * height) def join_cells(cells: Iterable[bytes]) -> bytes: cells = tuple(bytes(x) for x in cells) return concat_cells(width, height, False, cells) def render_chr(ch: str) -> bytearray: if ch in box_chars: cell = bytearray(len(space)) render_box_char(ch, cell, width, height) return cell return space pos = start rows = [] space_row = join_cells(repeat(space, 32)) try: for r in range(num_rows): row = [] for i in range(num_cols): row.append(render_chr(chr(pos))) row.append(space) pos += 1 rows.append(join_cells(row)) rows.append(space_row) rgb_data = b''.join(rows) width *= 32 height *= len(rows) assert len( rgb_data ) == width * height * 4, f'{len(rgb_data)} != {width * height * 4}' display_bitmap(rgb_data, width, height) finally: set_send_sprite_to_gpu(None)
def test_char(ch: str, sz: int = 48) -> None: # kitty +runpy "from kitty.fonts.box_drawing import test_char; test_char('XXX')" from .render import display_bitmap, setup_for_testing from kitty.fast_data_types import concat_cells, set_send_sprite_to_gpu with setup_for_testing('monospace', sz) as (_, width, height): buf = bytearray(width * height) try: render_box_char(ch, buf, width, height) def join_cells(*cells: bytes) -> bytes: cells = tuple(bytes(x) for x in cells) return concat_cells(width, height, False, cells) rgb_data = join_cells(buf) display_bitmap(rgb_data, width, height) print() finally: set_send_sprite_to_gpu(None)
def render_string(text, family='monospace', size=11.0, dpi=96.0): try: sprites, cell_width, cell_height = setup_for_testing(family, size, dpi) s = Screen(None, 1, len(text) * 2) line = s.line(0) s.draw(text) test_render_line(line) finally: set_send_sprite_to_gpu(None) cells = [] found_content = False for i in reversed(range(s.columns)): sp = line.sprite_at(i) if sp == (0, 0, 0) and not found_content: continue found_content = True cells.append(sprites[sp]) return cell_width, cell_height, list(reversed(cells))
def __enter__(self): from collections import OrderedDict opts = defaults._replace(font_family=self.family, font_size=self.size) set_options(opts) sprites = OrderedDict() def send_to_gpu(x, y, z, data): sprites[(x, y, z)] = data sprite_map_set_limits(100000, 100) set_send_sprite_to_gpu(send_to_gpu) try: set_font_family(opts) cell_width, cell_height = create_test_font_group( self.size, self.dpi, self.dpi) return sprites, cell_width, cell_height except Exception: set_send_sprite_to_gpu(None) raise
def test_drawing(sz=48, family='monospace'): from .render import display_bitmap, setup_for_testing from kitty.fast_data_types import concat_cells, set_send_sprite_to_gpu with setup_for_testing(family, sz) as (_, width, height): space = bytearray(width * height) def join_cells(cells): cells = tuple(bytes(x) for x in cells) return concat_cells(width, height, False, cells) def render_chr(ch): if ch in box_chars: cell = bytearray(len(space)) render_box_char(ch, cell, width, height) return cell return space pos = 0x2500 rows = [] space_row = join_cells(repeat(space, 32)) try: for r in range(10): row = [] for i in range(16): row.append(render_chr(chr(pos))) row.append(space) pos += 1 rows.append(join_cells(row)) rows.append(space_row) rgb_data = b''.join(rows) width *= 32 height *= len(rows) assert len(rgb_data) == width * height * 4, '{} != {}'.format( len(rgb_data), width * height * 4) display_bitmap(rgb_data, width, height) finally: set_send_sprite_to_gpu(None)
def __exit__(self, *args: Any) -> None: set_send_sprite_to_gpu(None)
def __exit__(self, *args): set_send_sprite_to_gpu(None)
def tearDown(self): set_send_sprite_to_gpu(None) del self.sprites