+"""Manual grid selection module"""
+
+import pygame
+import Image, ImageDraw
+
+class UserQuitError(Exception):
+ pass
+
+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 find_lines(im_orig):
+
+ im = im_orig.copy()
+
+ screen = Screen(im.size)
+
+ done = False
+ clock = pygame.time.Clock()
+ draw = ImageDraw.Draw(im)
+ corners = []
+ color=(64, 64, 255)
+ line_width = 2
+ while not done:
+ for event in pygame.event.get():
+ if event.type == pygame.QUIT:
+ pygame.quit()
+ raise UserQuitError
+ if event.type == pygame.MOUSEBUTTONDOWN:
+ if len(corners) >= 4:
+ corners = []
+ im = im_orig.copy()
+ draw = ImageDraw.Draw(im)
+
+ if len(corners) < 4:
+ corners.append(pygame.mouse.get_pos())
+ draw.point(corners[:-1], fill=color)
+ if len(corners) == 4:
+ draw.line((corners[0], corners[1]), fill=color,
+ width=line_width)
+ draw.line((corners[1], corners[2]), fill=color,
+ width=line_width)
+ draw.line((corners[2], corners[3]), fill=color,
+ width=line_width)
+ draw.line((corners[3], corners[0]), fill=color,
+ width=line_width)
+ screen.display_picture(im)
+ clock.tick(15)