Files
SantoscopeUI/athmos.py

42 lines
1.6 KiB
Python
Executable File

from .fonts import *
from .colors import *
import pygame
import math
MAX_COUNT = 9
class Athmos:
def __init__(self, screen):
self.index = 0
self.filenames = []
self.screen = screen
self.show_list = True
self.surface = pygame.Surface((0,0), pygame.SRCALPHA)
def set_filenames(self,filenames):
self.filenames = filenames
self.surface = pygame.Surface(
(self.screen.get_width()*2/3, self.get_display_count()*40),
pygame.SRCALPHA)
def get_display_count(self):
return min(MAX_COUNT, len(self.filenames))
def update(self):
self.surface.fill("black")
if self.show_list:
for i in range(self.get_display_count()):
text = self.filenames[(i-self.index-math.floor(self.get_display_count()/2))%len(self.filenames)]
if i == math.floor(self.get_display_count()/2):
text_surface = font_helvetica16.render(text, False, "black", color_primary_light)
else:
text_surface = font_helvetica16.render(text, False, color_primary_light)
opacity = math.floor((i+1) * 2 * 255 / MAX_COUNT
if i < MAX_COUNT/2
else (MAX_COUNT-i) * 2 * 255 / MAX_COUNT)
text_surface.set_alpha(opacity)
self.surface.blit(text_surface, ((0, self.surface.get_height()/self.get_display_count()*i)))
self.screen.blit(self.surface, (self.screen.get_width()/3,
(self.screen.get_height() - self.surface.get_height())/2))