# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------
# Small test harness for surfarray
# -----------------------------------------------------------------------
# Controls:
# escape quits
# CTRL-C quits

import os, sys
import time
import signal
import pygame
from pygame.locals import *

if not pygame.font: print 'Warning, fonts disabled'
if not pygame.mixer: print 'Warning, sound disabled'

width, height = (320, 240)

#os.environ['SDL_VIDEODRIVER']='x11'
#if 'SDL_VIDEODRIVER' in os.environ:
#    os.unsetenv('SDL_VIDEODRIVER')
pygame.init()
screen = pygame.display.set_mode((width, height), 0, 32)
pygame.display.set_caption('Alpha Test')
pygame.mouse.set_visible(0)

clock = pygame.time.Clock()

background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((250, 250, 250))
print 'background.mustlock=%r' % (background.mustlock(),)

pixels = 10
#s = pygame.Surface((pixels * 2, pixels), SRCALPHA, 32)
s = pygame.Surface((pixels * 3 / 2, pixels))
s.fill((255, 0, 0, 255))
print 's=%r' % (s,)

surf = s.convert_alpha()
print 'surf.mustlock=%r' % (surf.mustlock(),)

w, h = surf.get_size()

# set the alpha levels for surf
alpha = pygame.surfarray.pixels_alpha(surf)
print 'alpha=%r' % (alpha,)
opaque_mod = float(1)
opaque_stp = opaque_mod/float(pixels)
for x in range(max(w-pixels, 0), w):
    for y in range(0, h):
        if alpha[x, y] != 0:
            alpha[x, y] = int(alpha[x, y] * opaque_mod)
    opaque_mod -= opaque_stp
print 'alpha=%r' % (alpha,)
print 'alpha=%r %r %r %r' % (alpha[0,0], alpha[0,1], alpha[1,0], alpha[1,1])
del alpha
surf.unlock()

print 'surf=%r' % (surf,)

background.blit(surf, (10, 10))

def unix_signal_handler(sig, frame):
    """
    Unix signal handler to shut down freevo
    """
    print 'SystemExit raised'
    raise SystemExit


def main():
    signal.signal(signal.SIGTERM, unix_signal_handler)
    signal.signal(signal.SIGINT, unix_signal_handler)

    framerates = [ 60, 25, 20, 15, 10, 5, 1 ]
    framerate_idx = 0

    while True:
        fps = clock.get_fps()
        msecs = clock.tick(framerates[framerate_idx])

        #Handle Input Events
        for event in pygame.event.get():
            print event
            if event.type == QUIT:
                return
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    return

        #Draw Everything
        screen.blit(background, (0, 0))
        pygame.display.flip()
        time.sleep(1.0)


if __name__ == '__main__': main()

