from myro import *

def makeGray(pic):
    pic2 = copyPicture(pic)
    for pix in getPixels(pic):
        r, g, b = getRGB(pix)
        gray = (r + g + b) / 3
        x, y = getX(pix), getY(pix)
        setPixel(pic2, x, y, Color(gray, gray, gray))
    return pic2

def colorize(pic, min, max, color):
    pic2 = copyPicture(pic)
    for pix in getPixels(pic):
        gray, gray1, gray2 = getRGB(pix)
        if gray == gray1 and gray1 == gray2:
            x, y = getX(pix), getY(pix)
            if min <= gray <= max:
                setPixel(pic2, x, y, color)
    return pic2

def paste(pic1, x, y, pic2):
    for col in range(getWidth(pic2)):
        for row in range(getHeight(pic2)):
            setPixel(pic1, col + x, row + y, 
                     getPixel(pic2, col, row))

def makeCollage():
    pic = makePicture("http://bubo.brynmawr.edu/~dblank/images/steph_sm.jpg")
    w, h = getWidth(pic), getHeight(pic)
    collagePicture = makePicture(w * 2, h * 2)
    show(pic, "original")
    updateGraphics()

    c1 = Color(0, 255, 0)
    c2 = Color(255, 0, 0)
    c3 = Color(0, 0, 255)
    c4 = Color(255, 128, 100)

    q1 = colorize(makeGray(pic), 0, 50, c1)
    q1 = colorize(q1, 50, 80, c2)
    q1 = colorize(q1, 80, 170, c3)
    q1 = colorize(q1, 170, 255, c4)
    show(q1, "q1")
    updateGraphics()

    q2 = colorize(makeGray(pic), 0, 50, c2)
    q2 = colorize(q2, 50, 80, c3)
    q2 = colorize(q2, 80, 170, c4)
    q2 = colorize(q2, 170, 255, c1)
    show(q2, "q2")
    updateGraphics()

    q3 = colorize(makeGray(pic), 0, 50, c3)
    q3 = colorize(q3, 50, 80, c4)
    q3 = colorize(q3, 80, 170, c1)
    q3 = colorize(q3, 170, 255, c2)
    show(q3, "q3")
    updateGraphics()

    q4 = colorize(makeGray(pic), 0, 50, c4)
    q4 = colorize(q4, 50, 80, c1)
    q4 = colorize(q4, 80, 170, c2)
    q4 = colorize(q4, 170, 255, c3)
    show(q4, "q4")
    updateGraphics()

    paste(collagePicture, 0, 0, q1)
    paste(collagePicture, w, 0, q2)
    paste(collagePicture, 0, h, q3)
    paste(collagePicture, w, h, q4)
    show(collagePicture, "collagePicture")
    updateGraphics()

