#!/usr/bin/env python

"""Go image capture"""

import os
import sys
import argparse

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

from camera import Camera

class Screen:
    def __init__(self, res):
        pygame.init()
        pygame.display.set_mode(res)
        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('-d', type=int, default=0,
                        help="video device id")
    parser.add_argument('-r', type=int, nargs=2, default=[640, 480],
                        help="set camera resolution")
    args = parser.parse_args()

    res=(args.r[0], args.r[1])

    cam = Camera(vid=args.d, res=res)
    screen = Screen(res)

    im_number = 0

    saving_dir = "./captured/"

    if not os.path.isdir(saving_dir):
        os.makedirs(saving_dir)

    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(saving_dir + "{0:0>3}.jpg".format(im_number), 'JPEG')
            im_number += 1

    del cam
    
if __name__ == '__main__':
    try:
        main()
    finally:
        pygame.quit()
