Source code for pyparadigm.misc

"""Contains code that did not make it into an own module.

"""

import pygame
from . import surface_composition as sc

import os
from functools import lru_cache


[docs]def init(resolution, pygame_flags=0, display_pos=(0, 0)): """Creates a window of given resolution. :param resolution: the resolution of the windows as (width, height) in pixels :type resolution: tuple :param pygame_flags: modify the creation of the window. For further information see :ref:`creating_a_window` :type pygame_flags: int :param display_pos: determines the position on the desktop where the window is created. In a multi monitor system this can be used to position the window on a different monitor. E.g. the monitor to the right of the main-monitor would be at position (1920, 0) if the main monitor has the width 1920. :type display_pos: tuple :return: a reference to the display screen :rtype: pygame.Surface """ os.environ['SDL_VIDEO_WINDOW_POS'] = "{}, {}".format(*display_pos) pygame.init() pygame.font.init()
return pygame.display.set_mode(resolution, pygame_flags)
[docs]def display(surface): """Displays a pygame.Surface in the window. in pygame the window is represented through a surface, on which you can draw as on any other pygame.Surface. A refernce to to the screen can be optained via the :py:func:`pygame.display.get_surface` function. To display the contents of the screen surface in the window :py:func:`pygame.display.flip` needs to be called. :py:func:`display` draws the surface onto the screen surface at the postion (0, 0), and then calls :py:func:`flip`. :param surface: the pygame.Surface to display :type surface: pygame.Surface """ screen = pygame.display.get_surface() screen.blit(surface, (0, 0))
pygame.display.flip()
[docs]def slide_show(slides, continue_handler): """Displays one "slide" after another. After displaying a slide, continue_handler is called without arguments. When continue_handler returns, the next slide is displayed. Usage example :: slide_show(text_screens, partial(event_listener.wait_for_n_keypresses, pygame.K_RETURN)) (partial is imported from the functools module.) :param slides: pygame.Surfaces to be displayed. :type slides: iterable :param continue_handler: function, that returns when the next slide should be displayed. :type continue_handler: callable with arity 0. """ for slide in slides: display(slide)
continue_handler()
[docs]def empty_surface(fill_color, size=None): """Returns an empty surface filled with fill_color. :param fill_color: color to fill the surface with :type fill_color: pygame.Color :param size: the size of the new surface, if None its created to be the same size as the screen :type size: int-2-tuple """ sr = pygame.display.get_surface().get_rect() surf = pygame.Surface(size or (sr.w, sr.h)) surf.fill(fill_color)
return surf