import pygame

photo = pygame.image.load("./images/chicago.jpg")
WINDOW_WIDTH = 1400
WINDOW_HEIGHT = 466

pygame.init()
clock = pygame.time.Clock()

window = pygame.display.set_mode((WINDOW_WIDTH,WINDOW_HEIGHT))
window.blit(photo, (0, 0))

# set window title
pygame.display.set_caption("Mosaic Maker")
pygame.display.update()

def draw_tile(upper_left_x, upper_left_y, tile_size):
    total_red,total_green,total_blue = (0,0,0)
    for x in range(tile_size):
        for y in range(tile_size):
            color = window.get_at((upper_left_x + x, upper_left_y + y))
            total_red+=color.r
            total_green+=color.g
            total_blue+=color.b
    total_red = total_red//(tile_size**2)
    total_green = total_green//(tile_size**2)
    total_blue = total_blue//(tile_size**2)
    pygame.draw.rect(window, (total_red,total_green,total_blue), (upper_left_x, upper_left_y, tile_size, tile_size))
    pygame.draw.rect(window, (0,0,0), (upper_left_x, upper_left_y, tile_size, tile_size), 1)

def mosaic(tile_size):
    window.blit(photo,(0,0))
    x = 0
    y = 0
    while y<WINDOW_HEIGHT-tile_size:
        while x<WINDOW_WIDTH-tile_size:
            draw_tile(x, y, tile_size)
            x+=tile_size
        x = 0
        y+=tile_size

def redraw(tile_size):
    if tile_size is None:
        window.blit(photo, (0, 0))
    else:
        mosaic(tile_size)
    pygame.display.update()

def run_app():
    app_is_running = True
    while app_is_running == True:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_q:
                    app_is_running = False
                if event.key == pygame.K_1:
                    redraw(6)
                if event.key == pygame.K_2:
                    redraw(12)
                if event.key == pygame.K_3:
                    redraw(24)
                if event.key == pygame.K_4:
                    redraw(36)
                if event.key == pygame.K_5:
                    redraw(128)
                if event.key == pygame.K_s:
                    pygame.image.save(window,"/home/USERNAME/Desktop/mosaic.jpg")
                if event.key == pygame.K_ESCAPE:
                    redraw(None)
            elif event.type == pygame.QUIT:
                app_is_running = False
        clock.tick(24)
    pygame.quit()

run_app()
