mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 22:28:24 +02:00
Refactor font group handling
Allow kitty to manage multiple groups of fonts with different cell sizes. Will eventually allow kitty to have different font sizes/dpi per OSWindow
This commit is contained in:
@@ -72,9 +72,9 @@ class BaseTest(TestCase):
|
||||
ae = TestCase.assertEqual
|
||||
maxDiff = 2000
|
||||
|
||||
def create_screen(self, cols=5, lines=5, scrollback=5):
|
||||
def create_screen(self, cols=5, lines=5, scrollback=5, cell_width=10, cell_height=20):
|
||||
c = Callbacks()
|
||||
return Screen(c, lines, cols, scrollback, 0, c)
|
||||
return Screen(c, lines, cols, scrollback, cell_width, cell_height, 0, c)
|
||||
|
||||
def assertEqualAttributes(self, c1, c2):
|
||||
x1, y1, c1.x, c1.y = c1.x, c1.y, 0, 0
|
||||
|
||||
@@ -2,17 +2,13 @@
|
||||
# vim:fileencoding=utf-8
|
||||
# License: GPL v3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
from collections import OrderedDict
|
||||
|
||||
from kitty.constants import is_macos
|
||||
from kitty.fast_data_types import (
|
||||
DECAWM, set_logical_dpi, set_send_sprite_to_gpu, sprite_map_set_layout,
|
||||
DECAWM, set_send_sprite_to_gpu, sprite_map_set_layout,
|
||||
sprite_map_set_limits, test_render_line, test_sprite_position_for, wcwidth
|
||||
)
|
||||
from kitty.fonts.box_drawing import box_chars
|
||||
from kitty.fonts.render import (
|
||||
prerender, render_string, set_font_family, shape_string
|
||||
)
|
||||
from kitty.fonts.render import render_string, setup_for_testing, shape_string
|
||||
|
||||
from . import BaseTest
|
||||
|
||||
@@ -20,21 +16,12 @@ from . import BaseTest
|
||||
class Rendering(BaseTest):
|
||||
|
||||
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.sprites, self.cell_width, self.cell_height = setup_for_testing()
|
||||
self.assertEqual([k[0] for k in self.sprites], [0, 1, 2, 3, 4, 5])
|
||||
|
||||
def tearDown(self):
|
||||
set_send_sprite_to_gpu(None)
|
||||
del self.sprites
|
||||
del self.sprites, self.cell_width, self.cell_height
|
||||
|
||||
def test_sprite_map(self):
|
||||
sprite_map_set_limits(10, 2)
|
||||
|
||||
@@ -10,7 +10,7 @@ from base64 import standard_b64encode
|
||||
from io import BytesIO
|
||||
|
||||
from kitty.fast_data_types import (
|
||||
parse_bytes, set_display_state, set_send_to_gpu, shm_unlink, shm_write
|
||||
parse_bytes, set_send_to_gpu, shm_unlink, shm_write
|
||||
)
|
||||
|
||||
from . import BaseTest
|
||||
@@ -87,8 +87,7 @@ def put_helpers(self, cw, ch):
|
||||
iid = 0
|
||||
|
||||
def create_screen():
|
||||
s = self.create_screen(10, 5)
|
||||
set_display_state(s.columns * cw, s.lines * ch, cw, ch)
|
||||
s = self.create_screen(10, 5, cell_width=cw, cell_height=ch)
|
||||
return s, 2 / s.columns, 2 / s.lines
|
||||
|
||||
def put_cmd(z=0, num_cols=0, num_lines=0, x_off=0, y_off=0, width=0, height=0, cell_x_off=0, cell_y_off=0):
|
||||
@@ -107,7 +106,7 @@ def put_helpers(self, cw, ch):
|
||||
send_command(screen, cmd)
|
||||
|
||||
def layers(screen, scrolled_by=0, xstart=-1, ystart=1):
|
||||
return screen.grman.update_layers(scrolled_by, xstart, ystart, dx, dy, screen.columns, screen.lines)
|
||||
return screen.grman.update_layers(scrolled_by, xstart, ystart, dx, dy, screen.columns, screen.lines, cw, ch)
|
||||
|
||||
def rect_eq(r, left, top, right, bottom):
|
||||
for side in 'left top right bottom'.split():
|
||||
@@ -134,7 +133,7 @@ class TestGraphics(BaseTest):
|
||||
img = sl(p, s=1, v=1, f=f)
|
||||
self.ae(bool(img['is_4byte_aligned']), f == 32)
|
||||
|
||||
# Test chuunked load
|
||||
# Test chunked load
|
||||
self.assertIsNone(l('abcd', s=2, v=2, m=1))
|
||||
self.assertIsNone(l('efgh', m=1))
|
||||
self.assertIsNone(l('ijkl', m=1))
|
||||
|
||||
Reference in New Issue
Block a user