#!/usr/bin/env python

"""Go image capture."""

import sys
import argparse

import pygame
from pygame.locals import QUIT, KEYDOWN
import Image

from camera import Camera

class Screen:
    def __init__(self):
        pygame.init()
        pygame.display.set_mode((640,480))
        pygame.display.set_caption("Go image capture")
        self._screen = pygame.display.get_surface()

    def display_picture(self, im):
        pg_img = pygame.image.frombuffer(im.tostring(), im.size, im.mode)
        self._screen.blit(pg_img, (0,0))
        pygame.display.flip()


def main():
    parser = argparse.ArgumentParser(description=__doc__)
    #parser.add_argument('file', metavar='file', nargs=1,
    #                    help="image to analyse")
    #parser.add_argument('-w', type=int, default=640,
    #                    help="scale image to the specified width before analysis")
    parser.add_argument('-d', '--device', type=int, default=0,
                        help="number of video device to use")
    #parser.add_argument('-s', '--save', dest='do_something', action='store_const',
    #                    const=image_save, default=im_debug.show,
    #                    help="save images instead of displaying them")
    args = parser.parse_args()

    cam = Camera(device=args.device)
    screen = Screen()

    im = cam.get_image()
    screen.display_picture(im)

    im_number = 0

    while True:
        event = pygame.event.wait()
        if event.type == QUIT:
            break
        elif event.type == KEYDOWN:
            im = cam.get_image()
            screen.display_picture(im)
            im.save("./captured/{0:0>3}.jpg".format(im_number), 'JPEG')
            im_number += 1
    
if __name__ == '__main__':
    try:
        main()
    finally:
        pygame.quit()
