import pygame, sys
from pygame.locals import *
from pygame.font import Font
import settings as s

def try_quit(e):
    if e.type == QUIT or\
      (e.type == pygame.KEYDOWN and\
       e.key == pygame.K_ESCAPE and\
       s.FULLSCREEN):
        pygame.quit()
        sys.exit()

def limit(v, low, high):
    """Returns v, limited to low/high threshold"""
    if v < low:
        return low
    elif v > high:
        return high
    else:
        return v

def render_text(text, window, font, color, position):
    """Renders a font and blits it to the given window"""
    text = font.render(text, 1, color)

    window.blit(text, position)

    return text

def middle(surface, x_offset=0, y_offset=0, x=-1, y=-1):
    """Returns a tuple of X,Y coordinates that represents the center position for the given surface. 
       x_offset and y_offset will offset the appropriate axis by N pixels.
       Passing in a value for x or y will override the calculated value."""
    mx = x if x > -1 else ((s.DIMENSIONS[0] - surface.get_width()) / 2) + x_offset
    my = y if y > -1 else ((s.DIMENSIONS[1] - surface.get_height()) / 2) + y_offset

    return (mx, my)