ui: runtime-scaled layout for 640x480 and 720x720 displays
This commit is contained in:
+41
-3
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import ctypes
|
||||
from queue import Queue
|
||||
|
||||
from r36s_dlna_browser.dlna.browser_state import BrowserState
|
||||
@@ -12,12 +13,13 @@ from r36s_dlna_browser.ui.sdl_app import SDLApp, Screen
|
||||
class DummyPlayer:
|
||||
def __init__(self) -> None:
|
||||
self._new_frame = False
|
||||
self.viewport = None
|
||||
|
||||
def attach_window(self, _window) -> None:
|
||||
pass
|
||||
|
||||
def set_viewport(self, *_args) -> None:
|
||||
pass
|
||||
def set_viewport(self, *args) -> None:
|
||||
self.viewport = args
|
||||
|
||||
def has_new_frame(self) -> bool:
|
||||
return self._new_frame
|
||||
@@ -119,4 +121,40 @@ def test_paused_playback_keeps_hud_visible_in_auto_mode(monkeypatch) -> None:
|
||||
|
||||
app._refresh_playback_hud_visibility()
|
||||
|
||||
assert app._state.playback_hud_visible is True
|
||||
assert app._state.playback_hud_visible is True
|
||||
|
||||
|
||||
def test_layout_scales_for_square_display() -> None:
|
||||
compact = theme.get_layout(640, 480)
|
||||
square = theme.get_layout(720, 720)
|
||||
|
||||
assert square.visible_items > compact.visible_items
|
||||
assert square.list_item_h > compact.list_item_h
|
||||
assert square.playback_hud_top > compact.playback_hud_top
|
||||
|
||||
|
||||
def test_sync_player_viewport_uses_runtime_layout(monkeypatch) -> None:
|
||||
app = _make_app()
|
||||
app._window = object()
|
||||
|
||||
def fake_get_window_size(_window, width_ptr, height_ptr):
|
||||
width = ctypes.cast(width_ptr, ctypes.POINTER(ctypes.c_int))
|
||||
height = ctypes.cast(height_ptr, ctypes.POINTER(ctypes.c_int))
|
||||
width.contents.value = 720
|
||||
height.contents.value = 720
|
||||
|
||||
monkeypatch.setattr(sdl_app_module.sdl2, "SDL_GetWindowSize", fake_get_window_size)
|
||||
|
||||
app._sync_player_viewport()
|
||||
|
||||
layout = app._layout
|
||||
assert layout.width == 720
|
||||
assert layout.height == 720
|
||||
assert app._player.viewport == (
|
||||
720,
|
||||
720,
|
||||
layout.playback_hud_top,
|
||||
720 - layout.playback_video_bottom,
|
||||
layout.playback_video_left,
|
||||
720 - layout.playback_video_right,
|
||||
)
|
||||
Reference in New Issue
Block a user