Farola con la luz ondeando como una bandera; el dibujo a todo lo ancho y más bajo en móvil
|
|
@ -256,7 +256,7 @@ Tres piezas, cada una con su uso:
|
|||
|
||||

|
||||
|
||||
- **Símbolo** (`docs/marca/simbolo*.svg`): una farola moderna dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid), con el cono de luz en naranja. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo naranja). Se genera con `python3 tools/farola.py docs/marca`.
|
||||
- **Símbolo** (`docs/marca/simbolo*.svg`): una farola moderna dentro de un aro grueso, como un emblema de tienda de graffiti (en la línea del sello de Writers Madrid), con la luz en naranja, ondeando como las banderas del logo antifa. Plano y rotundo, para que se lea en un favicon, una pegatina o un avatar. Versiones: positivo, negativo, sobre naranja y pegatina (círculo naranja). Se genera con `python3 tools/farola.py docs/marca`.
|
||||
- **Logotipo** (`docs/marca/logotipo*.svg`): «TAKE THE STREET» en **Grindy Brush**, todo en negro (o en blanco sobre negro). Va convertido a trazados, así que no hace falta la fuente. Hay versión en una línea y en dos.
|
||||
- **Firma**: símbolo + logotipo. Es lo que va arriba a la izquierda de la web.
|
||||
- **Ilustración** (`docs/calle.svg`): la imagen principal de la portada, nunca en la cabecera. Ver el apartado 6.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#fff" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#f04e23"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#fff" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 598 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#fff" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 598 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 554 B |
|
|
@ -29,11 +29,11 @@ img { max-width: 100%; }
|
|||
.idiomas a { border: var(--bd); border-radius: 6px; padding: 4px 9px 2px; text-decoration: none; box-shadow: 3px 3px 0 var(--fg); }
|
||||
.idiomas a[aria-current] { background: var(--fg); color: var(--bg); box-shadow: 3px 3px 0 var(--neon); }
|
||||
|
||||
.portada { padding: 0 20px 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
|
||||
.portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
|
||||
h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; }
|
||||
.c-techo { color: var(--techo); } .c-tierra { color: var(--tierra); } .c-fronteras { color: #c99500; } .c-paz { color: var(--paz); }
|
||||
.calle { display: block; width: 100%; max-width: 1200px; height: auto; margin: 10px auto 0; }
|
||||
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; }
|
||||
.calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; }
|
||||
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; }
|
||||
.bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); }
|
||||
.bt:first-child { background: var(--fg); color: var(--bg); box-shadow: 4px 4px 0 var(--neon); }
|
||||
.bt:hover { transform: translate(-1px, -1px); box-shadow: 6px 6px 0 var(--neon); }
|
||||
|
|
@ -125,7 +125,7 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
|
|||
.cab .simbolo img { height: 54px; }
|
||||
.firma .logotipo { height: auto; width: 100%; max-height: 40px; }
|
||||
.idiomas { grid-column: 1 / -1; justify-self: center; }
|
||||
.calle { width: 150%; max-width: none; margin-left: -25%; }
|
||||
.calle { height: 210px; object-position: 72% 60%; }
|
||||
.ejes, .principios { grid-template-columns: minmax(0, 1fr); }
|
||||
.paises { gap: 14px; }
|
||||
.pais p { overflow-wrap: anywhere; }
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 554 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#fff" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 598 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 554 B |
|
|
@ -29,11 +29,11 @@ img { max-width: 100%; }
|
|||
.idiomas a { border: var(--bd); border-radius: 6px; padding: 4px 9px 2px; text-decoration: none; box-shadow: 3px 3px 0 var(--fg); }
|
||||
.idiomas a[aria-current] { background: var(--fg); color: var(--bg); box-shadow: 3px 3px 0 var(--neon); }
|
||||
|
||||
.portada { padding: 0 20px 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
|
||||
.portada { padding: 0 0 24px; border-bottom: var(--bd); text-align: center; overflow: hidden; }
|
||||
h1 { margin: 0; font: 400 clamp(52px, 8vw, 112px)/.92 var(--bt); text-transform: uppercase; }
|
||||
.c-techo { color: var(--techo); } .c-tierra { color: var(--tierra); } .c-fronteras { color: #c99500; } .c-paz { color: var(--paz); }
|
||||
.calle { display: block; width: 100%; max-width: 1200px; height: auto; margin: 10px auto 0; }
|
||||
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; }
|
||||
.calle { display: block; width: 100%; height: clamp(220px, 36vw, 600px); object-fit: cover; object-position: 65% 60%; margin: 0; }
|
||||
.acciones { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 18px; padding: 0 16px; }
|
||||
.bt { font: 400 26px/1 var(--bt); letter-spacing: .05em; text-transform: uppercase; text-decoration: none; border: var(--bd); border-radius: 8px; padding: 12px 22px 9px; box-shadow: 4px 4px 0 var(--fg); }
|
||||
.bt:first-child { background: var(--fg); color: var(--bg); box-shadow: 4px 4px 0 var(--neon); }
|
||||
.bt:hover { transform: translate(-1px, -1px); box-shadow: 6px 6px 0 var(--neon); }
|
||||
|
|
@ -125,7 +125,7 @@ h3 { margin: 0; font: 400 34px/1 var(--bt); text-transform: uppercase; letter-sp
|
|||
.cab .simbolo img { height: 54px; }
|
||||
.firma .logotipo { height: auto; width: 100%; max-height: 40px; }
|
||||
.idiomas { grid-column: 1 / -1; justify-self: center; }
|
||||
.calle { width: 150%; max-width: none; margin-left: -25%; }
|
||||
.calle { height: 210px; object-position: 72% 60%; }
|
||||
.ejes, .principios { grid-template-columns: minmax(0, 1fr); }
|
||||
.paises { gap: 14px; }
|
||||
.pais p { overflow-wrap: anywhere; }
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 554 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#fff" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><rect width="100" height="100" fill="#111"/><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#fff" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#fff"/><circle cx="50" cy="50" r="45" fill="none" stroke="#fff" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 662 B After Width: | Height: | Size: 598 B |
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C80.7,53.8 94.3,71.2 98,92 H36 C46.3,73.5 46.7,51.5 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><ellipse cx="67" cy="86" rx="22" ry="5" fill="#111" clip-path="url(#c)" opacity=".25"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100"><defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs><path d="M57,33 H77 C89.3,47.8 81.7,69.2 94,84 C76.7,79.0 59.3,89.0 42,84 C40.3,65.0 58.7,52.0 57,33 Z" fill="#f45a1c" clip-path="url(#c)"/><g clip-path="url(#c)"><path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="#111" stroke-width="8"/></g><rect x="55" y="21" width="27" height="11" rx="3" fill="#111"/><circle cx="50" cy="50" r="45" fill="none" stroke="#111" stroke-width="7"/></svg>
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 554 B |
|
|
@ -1,21 +1,29 @@
|
|||
import sys
|
||||
NAR, LUZ, INK, BL = "#f04e23", "#f45a1c", "#111", "#fff"
|
||||
|
||||
def onda(a, b, amp):
|
||||
def ctrl(a, b, amp):
|
||||
(x0, y0), (x1, y1) = a, b
|
||||
dx, dy = x1 - x0, y1 - y0
|
||||
L = (dx * dx + dy * dy) ** .5
|
||||
px, py = -dy / L * amp, dx / L * amp
|
||||
c1 = (x0 + dx / 3 + px, y0 + dy / 3 + py)
|
||||
c2 = (x0 + dx * 2 / 3 - px, y0 + dy * 2 / 3 - py)
|
||||
return f"C{c1[0]:.1f},{c1[1]:.1f} {c2[0]:.1f},{c2[1]:.1f} {x1},{y1}"
|
||||
return (x0 + dx / 3 + px, y0 + dy / 3 + py), (x0 + dx * 2 / 3 - px, y0 + dy * 2 / 3 - py)
|
||||
|
||||
def c(p1, p2, fin):
|
||||
return f"C{p1[0]:.1f},{p1[1]:.1f} {p2[0]:.1f},{p2[1]:.1f} {fin[0]},{fin[1]}"
|
||||
|
||||
def bandera(a, b, cc, d, amp, amp_b):
|
||||
der = ctrl(b, cc, amp)
|
||||
izq = ctrl(a, d, amp)
|
||||
abajo = ctrl(cc, d, amp_b)
|
||||
return (f"M{a[0]},{a[1]} H{b[0]} {c(der[0], der[1], cc)} {c(abajo[0], abajo[1], d)} "
|
||||
f"{c(izq[1], izq[0], a)} Z")
|
||||
|
||||
def farola(estilo="aro", ink=INK, luz=LUZ, fondo=None, papel=BL):
|
||||
bg = f'<rect width="100" height="100" fill="{fondo}"/>' if fondo else ""
|
||||
if estilo == "aro":
|
||||
defs = '<defs><clipPath id="c"><circle cx="50" cy="50" r="42"/></clipPath></defs>'
|
||||
cono = f'<path d="M57,33 H77 {onda((77, 33), (98, 92), 3.5)} H36 {onda((36, 92), (57, 33), 3.5)} Z" fill="{luz}" clip-path="url(#c)"/>'
|
||||
suelo = f'<ellipse cx="67" cy="86" rx="22" ry="5" fill="{ink}" clip-path="url(#c)" opacity=".25"/>'
|
||||
cono = f'<path d="{bandera((57, 33), (77, 33), (94, 84), (42, 84), -7, 5)}" fill="{luz}" clip-path="url(#c)"/>'
|
||||
suelo = ""
|
||||
poste = f'<path d="M37,96 V40 Q37,25 52,25 H60" fill="none" stroke="{ink}" stroke-width="8"/>'
|
||||
cabeza = f'<rect x="55" y="21" width="27" height="11" rx="3" fill="{ink}"/>'
|
||||
aro = f'<circle cx="50" cy="50" r="45" fill="none" stroke="{ink}" stroke-width="7"/>'
|
||||
|
|
|
|||