@@ -143,6 +143,25 @@ def _determine_quality(qual: str | None) -> str:
143
143
return qual
144
144
145
145
146
+ def _parse_window_size (window_size : str | tuple [int , ...]) -> tuple [int , int ] | str :
147
+ invalid_window_size_error_message = (
148
+ "window_size must be specified either as 'default', a string of the form "
149
+ "'width,height', or a tuple of 2 ints of the form (width, height)."
150
+ )
151
+
152
+ if isinstance (window_size , tuple ):
153
+ if len (window_size ) != 2 :
154
+ raise ValueError (invalid_window_size_error_message )
155
+ return window_size
156
+ elif len (window_size .split ("," )) == 2 :
157
+ (window_width , window_height ) = tuple (map (int , window_size .split ("," )))
158
+ return (window_width , window_height )
159
+ elif window_size == "default" :
160
+ return window_size
161
+ else :
162
+ raise ValueError (invalid_window_size_error_message )
163
+
164
+
146
165
class ManimConfig (MutableMapping ):
147
166
"""Dict-like class storing all config options.
148
167
@@ -1431,7 +1450,8 @@ def window_size(self) -> str | tuple[int, ...]:
1431
1450
1432
1451
@window_size .setter
1433
1452
def window_size (self , value : str | tuple [int , ...]) -> None :
1434
- self ._d .__setitem__ ("window_size" , value )
1453
+ window_size = _parse_window_size (value )
1454
+ self ._d .__setitem__ ("window_size" , window_size )
1435
1455
1436
1456
def resolve_movie_file_extension (self , is_transparent : bool ) -> None :
1437
1457
prev_file_extension = self .movie_file_extension
0 commit comments