# Genera el símbolo: un faro dentro de un aro grueso, como un emblema de tienda de graffiti. # La luz es amarilla: un haz horizontal que se abre hacia los dos lados y un halo en círculo. import sys INK, BL, NAR, ROJO = "#111", "#fff", "#f04e23", "#e3141b" LUZ, CLARA = "#ffc21a", "#fff4b8" CX, CY = 50, 36 # centro de la linterna def luz_(luz, clara): # Haz: dos cuñas horizontales que se ensanchan hacia fuera, y ondas en círculo alrededor. haz = (f'') ondas = "".join(f'' for r, w, o in ((19, 3, .9), (27, 2.2, .55))) halo = f'' return haz + ondas + halo def torre(ink, raya, clip): # Torre que se estrecha hacia arriba, en espiral negra y roja (franjas en diagonal), la linterna y el tejado en punta. forma = "M42,46 H58 L65,100 H35 Z" cuerpo = f'' franjas = "".join(f'' for y in (50, 68, 86)) balcon = f'' linterna = f'' tejado = f'' return cuerpo + f'{franjas}' + balcon + linterna + tejado def faro(estilo="aro", ink=INK, luz=LUZ, raya=ROJO, clara=CLARA, clip="c", grueso=7, fondo_aro=None): if estilo == "aro": defs = f'' fondo = f'' if fondo_aro else "" dentro = f'{luz_(luz, clara)}{torre(ink, raya, clip)}' aro = f'' return defs + fondo + dentro + aro # Pegatina: círculo amarillo, la luz en blanco defs = f'' return defs + f'{luz_(BL, BL)}{torre(ink, raya, clip)}' def svg(cuerpo, fondo=None): bg = f'' if fondo else "" return f'{bg}{cuerpo}\n' def simbolo_mapa(): # El mismo faro para el del mapa estático: fondo blanco y aro más grueso. return faro(clip="fc", grueso=9, fondo_aro=BL) if __name__ == "__main__": d = sys.argv[1] open(f"{d}/simbolo.svg", "w").write(svg(faro())) open(f"{d}/simbolo-negativo.svg", "w").write(svg(faro(ink=BL), INK)) open(f"{d}/simbolo-naranja.svg", "w").write(svg(faro(luz=BL, raya=BL, ink=INK, clara="#ffe2a8"), NAR)) open(f"{d}/simbolo-pegatina.svg", "w").write(svg(faro("pegatina")))