_
This commit is contained in:
56
TuGUI/Objects/Screen.py
Normal file
56
TuGUI/Objects/Screen.py
Normal file
@@ -0,0 +1,56 @@
|
||||
from numpy import array as a
|
||||
import math
|
||||
import pygame
|
||||
|
||||
|
||||
class Screen:
|
||||
def __init__(self, width: float, height: float, screen_size: a):
|
||||
pygame.init()
|
||||
|
||||
self.width = width
|
||||
self.height = height
|
||||
self.size = a([float(width), float(height)])
|
||||
self.screen_size = a(screen_size)
|
||||
self.matrix = a([
|
||||
[screen_size[0] / width, 0],
|
||||
[0, screen_size[1] / height]
|
||||
])
|
||||
self.inverse_matrix = a([
|
||||
[1 / self.matrix[0, 0], 0],
|
||||
[0, 1 / self.matrix[1, 1]]
|
||||
])
|
||||
self.pd = abs(self.matrix[0, 0] * self.matrix[1, 1]) # positive determinant
|
||||
self.pd_ = math.sqrt(self.pd)
|
||||
|
||||
self.s_ = pygame.Surface([width, height])
|
||||
self.s = pygame.display.set_mode(screen_size)
|
||||
|
||||
self.center = a([width, height]) / 2
|
||||
|
||||
def resize_screen(self, new_screen_size, subscene=False):
|
||||
self.screen_size = a(new_screen_size)
|
||||
self.matrix = a([
|
||||
[new_screen_size[0] / self.width, 0],
|
||||
[0, new_screen_size[1] / self.height]
|
||||
])
|
||||
self.inverse_matrix = a([
|
||||
[1 / self.matrix[0, 0], 0],
|
||||
[0, 1 / self.matrix[1, 1]]
|
||||
])
|
||||
self.pd = abs(self.matrix[0, 0] * self.matrix[1, 1]) # positive determinant
|
||||
self.pd_ = math.sqrt(self.pd)
|
||||
|
||||
if subscene is False:
|
||||
self.s = pygame.display.set_mode(new_screen_size)
|
||||
else:
|
||||
self.s = pygame.Surface(new_screen_size)
|
||||
|
||||
def save(self, path, size=None):
|
||||
if size is None:
|
||||
pygame.image.save(self.s, path)
|
||||
else:
|
||||
surface = pygame.Surface(size)
|
||||
|
||||
surface.blit(self.s, [0, 0])
|
||||
|
||||
pygame.image.save(surface, path)
|
||||
Reference in New Issue
Block a user