from PIL import Image, ImageDraw

def kriz(size=8, color=(249, 127, 95,255)):
    img = Image.new('RGBA', (size, size), (255, 255, 255,0))
    px = img.load()
    # rozsvítíme kříž
    for i in range(size):
        px[i, i] = color
        px[size-i-1, i] = color
    return img

def sachovnice(size=8, barva = (0, 200, 85, 255)):
    img = Image.new('RGBA', (size, size), (255, 255, 255,0))
    px = img.load()
    for x in range(size):
        for y in range(size):
            if (x + y) % 2 == 0:
                px[x, y] = barva
    return img

def mrizka(size=400,d=15,mezera=5,zelena=200, pruhlednost=100):
    img = Image.new('RGBA', (size, size), (255, 255, 255,0))
    px = img.load()
    draw = ImageDraw.Draw(img) 
    for y in range(0, size, d): # jak daleko od sebe čtverce jsou
        for x in range(0, size, d):
            draw.rectangle((x, y, x+(d-mezera), y+(d-mezera)), outline=(255, 255, 255,0), fill=(x, zelena, y,pruhlednost)) # průhlednost
    return img

def nakresli_smajlika(velikost=100, barva_tvare="yellow"):
    # Vytvoření průhledného čtverce pro smajlíka
    smajlik = Image.new("RGBA", (velikost, velikost), (0,0,0,0))
    draw = ImageDraw.Draw(smajlik)

    # Obličej
    draw.ellipse([5, 5, velikost-5, velikost-5], fill=barva_tvare, outline="black", width=2)

    # Oči
    oko_vel = velikost // 10
    draw.ellipse([velikost//3, velikost//3, velikost//3+oko_vel, velikost//3+oko_vel], fill="black")
    draw.ellipse([2*velikost//3-oko_vel, velikost//3, 2*velikost//3, velikost//3+oko_vel], fill="black")

    # Úsměv (oblouk)
    draw.arc([velikost//4, velikost//2, 3*velikost//4, 3*velikost//4], start=0, end=180, fill="black", width=3)

    return smajlik

def nakresli_logo_sps(scale=1, pruhlednost = 255):
    # Definice barev
    modra = (0, 32, 74,pruhlednost)
    oranzova = (249, 107, 85,pruhlednost)
    cervena = (226, 31, 38,pruhlednost)
    pozadi = (255, 255, 255,0)

    # Nastavení rozměrů plátna
    width, height = 600, 400
    img = Image.new("RGBA", (width, height), pozadi)
    draw = ImageDraw.Draw(img)

    def nakresli_sipku(draw, x_start, y_start, barva):
        # Parametry tvaru (lze upravit pro změnu velikosti)
        sirka_pruhu = 75   # vodorovná šířka ramene 75
        delka_hrotu = 110  # vodorovná vzdálenost ke špičce 110
        vyska_ramene = 110 # svislá vzdálenost od horního okraje ke špičce 110

        # Definice 6 bodů polygonu, který tvoří jednu šipku
        body = [
            (x_start, y_start),                         # Horní levý roh
            (x_start + delka_hrotu, y_start + vyska_ramene), # Vnější špička
            (x_start, y_start + 2 * vyska_ramene),      # Dolní levý roh
            (x_start + sirka_pruhu, y_start + 2 * vyska_ramene), # Dolní vnitřní roh
            (x_start + delka_hrotu + sirka_pruhu, y_start + vyska_ramene), # Vnitřní špička
            (x_start + sirka_pruhu, y_start)            # Horní vnitřní roh
        ]
        draw.polygon(body, fill=barva)

    # Vykreslení jednotlivých částí s rozestupem
    start_y = 90
    nakresli_sipku(draw, 50, start_y, modra)  # modra
    nakresli_sipku(draw, 175, start_y, oranzova)  # oranzova
    nakresli_sipku(draw, 300, start_y, cervena)  # cervena

    # Provedení změny velikosti
    img = img.resize((round(img.width*scale), round(img.height*scale)), Image.Resampling.NEAREST)

    return img

def pruhy(img: Image.Image, pruhlednost: int = 120, sirka: int = 10) -> Image.Image:
    """Přidá diagonální pruhy do obrázku."""

    px = img.load()
    w, h = img.size

    for x in range(w):
        for y in range(h):
            # šikmé pruhy (diagonála)
            if ((x + y) // sirka) % 2 == 0:
                r, g, b, a  = px[x, y]
                px[x, y] = (r,g,b,80)#(r, g, b, pruhlednost)

    return img

if __name__ == "__main__":
    img = nakresli_logo_sps(scale=0.2, pruhlednost=100)
    img.show()

    imgbig = img.resize((img.width * 20, img.height * 20), Image.NEAREST)
    imgbig = pruhy(imgbig, pruhlednost=120, sirka=30)
    imgbig.show()

#img = nakresli_smajlika(80, "lime")
#img = mrizka(size=400,d=15,mezera=5,zelena=200, pruhlednost=100)
#img =kriz(size=13)
#img =sachovnice(size=13,barva = (0, 220, 100))
