mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-07-17 16:28:21 +08:00
fix(cli): resize only on fullscreen (#12)
* fix(cli): resize only on fullscreen Closes #10 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@ -18,6 +18,8 @@ from .config import Config
|
|||||||
from .defaults import CONFIG_PATH, FOLDER_PATH
|
from .defaults import CONFIG_PATH, FOLDER_PATH
|
||||||
from .slide import reverse_video_path
|
from .slide import reverse_video_path
|
||||||
|
|
||||||
|
WINDOW_NAME = "Manim Slides"
|
||||||
|
|
||||||
|
|
||||||
@unique
|
@unique
|
||||||
class State(IntEnum):
|
class State(IntEnum):
|
||||||
@ -186,6 +188,8 @@ class Display:
|
|||||||
self.start_paused = start_paused
|
self.start_paused = start_paused
|
||||||
self.config = config
|
self.config = config
|
||||||
self.skip_all = skip_all
|
self.skip_all = skip_all
|
||||||
|
self.fullscreen = fullscreen
|
||||||
|
self.is_windows = platform.system() == "Windows"
|
||||||
|
|
||||||
self.state = State.PLAYING
|
self.state = State.PLAYING
|
||||||
self.lastframe = None
|
self.lastframe = None
|
||||||
@ -194,16 +198,16 @@ class Display:
|
|||||||
self.lag = 0
|
self.lag = 0
|
||||||
self.last_time = now()
|
self.last_time = now()
|
||||||
|
|
||||||
if platform.system() == "Windows":
|
if self.is_windows:
|
||||||
user32 = ctypes.windll.user32
|
user32 = ctypes.windll.user32
|
||||||
self.screen_width, self.screen_height = user32.GetSystemMetrics(
|
self.screen_width, self.screen_height = user32.GetSystemMetrics(
|
||||||
0
|
0
|
||||||
), user32.GetSystemMetrics(1)
|
), user32.GetSystemMetrics(1)
|
||||||
|
|
||||||
if fullscreen:
|
if self.fullscreen:
|
||||||
cv2.namedWindow("Video", cv2.WND_PROP_FULLSCREEN)
|
cv2.namedWindow(WINDOW_NAME, cv2.WND_PROP_FULLSCREEN)
|
||||||
cv2.setWindowProperty(
|
cv2.setWindowProperty(
|
||||||
"Video", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN
|
WINDOW_NAME, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN
|
||||||
)
|
)
|
||||||
|
|
||||||
def resize_frame_to_screen(self, frame: np.ndarray):
|
def resize_frame_to_screen(self, frame: np.ndarray):
|
||||||
@ -245,10 +249,10 @@ class Display:
|
|||||||
|
|
||||||
frame = self.lastframe
|
frame = self.lastframe
|
||||||
|
|
||||||
if platform.system() == "Windows":
|
if self.is_windows and self.fullscreen:
|
||||||
frame = self.resize_frame_to_screen(frame)
|
frame = self.resize_frame_to_screen(frame)
|
||||||
|
|
||||||
cv2.imshow("Video", frame)
|
cv2.imshow(WINDOW_NAME, frame)
|
||||||
|
|
||||||
def show_info(self):
|
def show_info(self):
|
||||||
info = np.zeros((130, 420), np.uint8)
|
info = np.zeros((130, 420), np.uint8)
|
||||||
@ -284,7 +288,7 @@ class Display:
|
|||||||
*font_args,
|
*font_args,
|
||||||
)
|
)
|
||||||
|
|
||||||
cv2.imshow("Info", info)
|
cv2.imshow(f"{WINDOW_NAME}: Info", info)
|
||||||
|
|
||||||
def handle_key(self):
|
def handle_key(self):
|
||||||
sleep_time = math.ceil(1000 / self.current_presentation.fps)
|
sleep_time = math.ceil(1000 / self.current_presentation.fps)
|
||||||
|
Reference in New Issue
Block a user