mirror of
https://github.com/3b1b/manim.git
synced 2025-08-21 05:44:04 +00:00
Move window position logic into window
This commit is contained in:
parent
78ac18496d
commit
9a502cd83b
2 changed files with 26 additions and 26 deletions
|
@ -208,31 +208,12 @@ def get_configuration(args):
|
||||||
# Default to putting window in the upper right of screen,
|
# Default to putting window in the upper right of screen,
|
||||||
# but make it full screen if -f is passed in
|
# but make it full screen if -f is passed in
|
||||||
monitor = get_monitors()[0]
|
monitor = get_monitors()[0]
|
||||||
if args.full_screen:
|
window_width = monitor.width
|
||||||
window_width = monitor.width
|
if not args.full_screen:
|
||||||
else:
|
window_width //= 2
|
||||||
window_width = monitor.width / 2
|
window_height = window_width * 9 // 16
|
||||||
window_height = window_width * 9 / 16
|
|
||||||
custom_position = custom_defaults["window_position"]
|
|
||||||
if "," in custom_position:
|
|
||||||
posx, posy = map(int, custom_position.split(","))
|
|
||||||
else:
|
|
||||||
if custom_position[1] == "L":
|
|
||||||
posx = 0
|
|
||||||
elif custom_position[1] == "O":
|
|
||||||
posx = int((monitor.width - window_width) / 2)
|
|
||||||
elif custom_position[1] == "R":
|
|
||||||
posx = int(monitor.width - window_width)
|
|
||||||
if custom_position[0] == "U":
|
|
||||||
posy = 0
|
|
||||||
elif custom_position[0] == "O":
|
|
||||||
posy = int((monitor.height - window_height) / 2)
|
|
||||||
elif custom_position[0] == "D":
|
|
||||||
posy = int(monitor.height - window_height)
|
|
||||||
window_position = (posx, posy)
|
|
||||||
config["window_config"] = {
|
config["window_config"] = {
|
||||||
"size": (window_width, window_height),
|
"size": (window_width, window_height),
|
||||||
"position": window_position,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Arguments related to skipping
|
# Arguments related to skipping
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
import moderngl_window as mglw
|
import moderngl_window as mglw
|
||||||
from moderngl_window.context.pyglet.window import Window as PygletWindow
|
from moderngl_window.context.pyglet.window import Window as PygletWindow
|
||||||
from moderngl_window.timers.clock import Timer
|
from moderngl_window.timers.clock import Timer
|
||||||
|
from screeninfo import get_monitors
|
||||||
|
|
||||||
from manimlib.utils.config_ops import digest_config
|
from manimlib.utils.config_ops import digest_config
|
||||||
|
from manimlib.utils.customization import get_customization
|
||||||
|
|
||||||
|
|
||||||
class Window(PygletWindow):
|
class Window(PygletWindow):
|
||||||
|
@ -18,16 +20,33 @@ class Window(PygletWindow):
|
||||||
digest_config(self, kwargs)
|
digest_config(self, kwargs)
|
||||||
self.scene = scene
|
self.scene = scene
|
||||||
self.title = str(scene)
|
self.title = str(scene)
|
||||||
if "position" in kwargs:
|
|
||||||
self.position = kwargs["position"]
|
|
||||||
|
|
||||||
self.pressed_keys = set()
|
self.pressed_keys = set()
|
||||||
|
self.position = self.get_position()
|
||||||
|
|
||||||
mglw.activate_context(window=self)
|
mglw.activate_context(window=self)
|
||||||
self.timer = Timer()
|
self.timer = Timer()
|
||||||
self.config = mglw.WindowConfig(ctx=self.ctx, wnd=self, timer=self.timer)
|
self.config = mglw.WindowConfig(ctx=self.ctx, wnd=self, timer=self.timer)
|
||||||
self.timer.start()
|
self.timer.start()
|
||||||
|
|
||||||
|
def get_position(self):
|
||||||
|
custom_position = get_customization()["window_position"]
|
||||||
|
monitor = get_monitors()[0]
|
||||||
|
window_width, window_height = self.size
|
||||||
|
# Position might be specified with a string of the form
|
||||||
|
# x,y for integers x and y
|
||||||
|
if "," in custom_position:
|
||||||
|
return tuple(map(int, custom_position.split(",")))
|
||||||
|
|
||||||
|
# Alternatively, it might be specified with a string like
|
||||||
|
# UR, OO, DL, etc. specifiying what corner it should go to
|
||||||
|
char_to_n = {"L": 0, "U": 0, "O": 1, "R": 2, "D": 2}
|
||||||
|
width_diff = monitor.width - window_width
|
||||||
|
height_diff = monitor.height - window_height
|
||||||
|
return (
|
||||||
|
char_to_n[custom_position[1]] * width_diff // 2,
|
||||||
|
char_to_n[custom_position[0]] * height_diff // 2,
|
||||||
|
)
|
||||||
|
|
||||||
# Delegate event handling to scene
|
# Delegate event handling to scene
|
||||||
def pixel_coords_to_space_coords(self, px, py, relative=False):
|
def pixel_coords_to_space_coords(self, px, py, relative=False):
|
||||||
return self.scene.camera.pixel_coords_to_space_coords(px, py, relative)
|
return self.scene.camera.pixel_coords_to_space_coords(px, py, relative)
|
||||||
|
|
Loading…
Add table
Reference in a new issue