q5 3.7.6 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/defs/q5-es.d.ts CHANGED
@@ -3,7 +3,7 @@ declare global {
3
3
  // ⭐ core
4
4
 
5
5
  /**
6
- * Bienvenido a la documentación de q5! 🤩
6
+ * Bienvenido al contenido de q5! 🤩
7
7
  *
8
8
  * ¿Primera vez programando? Revisa la [guía para principiantes de q5](https://github.com/q5js/q5.js/wiki/q5-Beginner's-Brief).
9
9
  *
@@ -522,7 +522,7 @@ declare global {
522
522
  /** 🌆
523
523
  * Array de datos de color de píxeles de un lienzo o imagen.
524
524
  *
525
- * Vacío por defecto, poblar ejecutando `cargarPíxeles`.
525
+ * Vacío por defecto, obtener el dato ejecutando `cargarPíxeles`.
526
526
  *
527
527
  * Cada píxel está representado por cuatro valores consecutivos en el array,
528
528
  * correspondientes a sus canales rojo, verde, azul y alfa.
@@ -1367,48 +1367,306 @@ declare global {
1367
1367
  // 🎨 color
1368
1368
 
1369
1369
  /** 🎨
1370
- * Dibuja sobre todo el lienzo con un color o una imagen.
1370
+ * Crea un nuevo objeto `Color`, el cual es útil principalmente para almacenar
1371
+ * un color que tu sketch reutilizará o modificará más tarde.
1371
1372
  *
1372
- * Al igual que la función [`color`](https://q5js.org/learn/#color),
1373
- * esta función puede aceptar colores en una amplia gama de formatos:
1374
- * cadena de color CSS, valor de escala de grises y valores de componentes de color.
1375
- * @param {Color | Q5.Image} relleno un color o una imagen para dibujar
1373
+ * Con el modo de color por defecto, RGB, los colores tienen componentes `r`/`red` (rojo), `g`/`green` (verde),
1374
+ * `b`/`blue` (azul), y `a`/`alpha` (alfa).
1375
+ *
1376
+ * Las funciones [`relleno`](https://q5js.org/learn/#fill), [`trazo`](https://q5js.org/learn/#stroke), y [`fondo`](https://q5js.org/learn/#background)
1377
+ * aceptan la misma amplia gama de representaciones de color que esta función.
1378
+ *
1379
+ * El formato de color por defecto es "flotante" ("float"), así que
1380
+ * establece los componentes de color a valores entre 0 y 1.
1381
+ *
1382
+ * Aquí hay algunos ejemplos de uso válido:
1383
+ *
1384
+ * - `color(1)` (escala de grises)
1385
+ * - `color(1, 0.8)` (escala de grises, alfa)
1386
+ * - `color(1, 0, 0)` (r, g, b)
1387
+ * - `color(1, 0, 0, 0.1)` (r, g, b, a)
1388
+ * - `color('red')` (nombre de color)
1389
+ * - `color('#ff0000')` (color hex)
1390
+ * - `color([1, 0, 0])` (componentes de color)
1391
+ * @param {string | number | Color | number[]} c0 color o primer componente de color
1392
+ * @param {number} [c1] segundo componente de color
1393
+ * @param {number} [c2] tercer componente de color
1394
+ * @param {number} [c3] cuarto componente de color (alfa)
1395
+ * @returns {Color} un nuevo objeto `Color`
1376
1396
  * @example
1377
- * await crearLienzo(200, 100);
1378
- * fondo('crimson');
1397
+ * await crearLienzo(200);
1398
+ * rect(-100, -100, 100, 200);
1399
+ *
1400
+ * // ( r, g, b, a)
1401
+ * let botella = color(0.35, 0.39, 1, 0.4);
1402
+ * relleno(botella);
1403
+ * trazo(botella);
1404
+ * grosorTrazo(30);
1405
+ * círculo(0, 0, 155);
1379
1406
  * @example
1407
+ * await crearLienzo(200);
1408
+ * // (gris, alfa)
1409
+ * let c = color(0.8, 0.2);
1410
+ *
1380
1411
  * q5.dibujar = function () {
1381
- * fondo(0.5, 0.2);
1382
- * círculo(mouseX, mouseY, 20);
1412
+ * fondo(c);
1413
+ * círculo(ratónX, ratónY, 50);
1414
+ * c.g = (c.g + 0.005) % 1;
1415
+ * };
1416
+ * @example
1417
+ * await crearLienzo(200);
1418
+ *
1419
+ * // (r, g, b, a)
1420
+ * let c = color(0, 1, 1, 0.2);
1421
+ *
1422
+ * q5.dibujar = function () {
1423
+ * relleno(c);
1424
+ * círculo(ratónX, ratónY, 50);
1383
1425
  * };
1384
1426
  */
1385
- function fondo(relleno: Color | Q5.Imagen): void;
1386
-
1387
1427
  function color(c0: string | number | Color | number[], c1?: number, c2?: number, c3?: number): Color;
1388
1428
 
1429
+ /** 🎨
1430
+ * Establece el modo de color para el sketch, lo cual cambia cómo se
1431
+ * interpretan y muestran los colores.
1432
+ *
1433
+ * La gama de color es 'display-p3' por defecto, si el dispositivo soporta HDR.
1434
+ *
1435
+ * El modo de color por defecto es RGB en formato flotante.
1436
+ * @param {'rgb' | 'oklch' | 'hsl' | 'hsb'} modo modo de color
1437
+ * @param {1 | 255} formato formato de color (1 para flotante, 255 para entero)
1438
+ * @param {'srgb' | 'display-p3'} [gama] gama de color
1439
+ * @example
1440
+ * await crearLienzo(200);
1441
+ *
1442
+ * modoColor(RGB, 1);
1443
+ * relleno(1, 0, 0);
1444
+ * rect(-100, -100, 66, 200);
1445
+ * relleno(0, 1, 0);
1446
+ * rect(-34, -100, 67, 200);
1447
+ * relleno(0, 0, 1);
1448
+ * rect(33, -100, 67, 200);
1449
+ * @example
1450
+ * await crearLienzo(200);
1451
+ *
1452
+ * modoColor(OKLCH);
1453
+ *
1454
+ * relleno(0.25, 0.15, 0);
1455
+ * rect(-100, -100, 100, 200);
1456
+ *
1457
+ * relleno(0.75, 0.15, 0);
1458
+ * rect(0, -100, 100, 200);
1459
+ */
1389
1460
  function modoColor(modo: 'rgb' | 'oklch', formato: 1 | 255, gama: 'srgb' | 'display-p3'): void;
1390
1461
 
1462
+ /** 🎨
1463
+ * Los colores RGB tienen componentes `r`/`red` (rojo), `g`/`green` (verde), `b`/`blue` (azul),
1464
+ * y `a`/`alpha` (alfa).
1465
+ *
1466
+ * Por defecto cuando un lienzo está usando el espacio de color HDR "display-p3",
1467
+ * los colores rgb son mapeados a la gama completa P3, incluso cuando usan el
1468
+ * formato entero legado 0-255.
1469
+ * @example
1470
+ * await crearLienzo(200, 100);
1471
+ *
1472
+ * modoColor(RGB);
1473
+ *
1474
+ * fondo(1, 0, 0);
1475
+ */
1391
1476
  const RGB: 'rgb';
1392
1477
 
1478
+ /** 🎨
1479
+ * Los colores OKLCH tienen componentes `l`/`lightness` (luminosidad), `c`/`chroma` (croma),
1480
+ * `h`/`hue` (tono), y `a`/`alpha` (alfa). Es más intuitivo para los humanos
1481
+ * trabajar con color en estos términos que con RGB.
1482
+ *
1483
+ * OKLCH es perceptualmente uniforme, lo que significa que los colores con la
1484
+ * misma luminosidad y croma (colorido) parecerán tener
1485
+ * igual luminancia, independientemente del tono.
1486
+ *
1487
+ * OKLCH puede representar con precisión todos los colores visibles para el
1488
+ * ojo humano, a diferencia de muchos otros espacios de color que están limitados
1489
+ * a una gama. Los valores máximos de luminosidad y croma que
1490
+ * corresponden a los límites de la gama sRGB o P3 varían dependiendo del
1491
+ * tono. Los colores que están fuera de la gama serán recortados al
1492
+ * color dentro de la gama más cercano.
1493
+ *
1494
+ * Usa el [selector de color OKLCH](https://oklch.com) para encontrar
1495
+ * colores dentro de la gama.
1496
+ *
1497
+ * - `lightness`: 0 a 1
1498
+ * - `chroma`: 0 a ~0.4
1499
+ * - `hue`: 0 a 360
1500
+ * - `alpha`: 0 a 1
1501
+ * @example
1502
+ * await crearLienzo(200, 100);
1503
+ *
1504
+ * modoColor(OKLCH);
1505
+ *
1506
+ * fondo(0.64, 0.3, 30);
1507
+ * @example
1508
+ * await crearLienzo(200);
1509
+ * modoColor(OKLCH);
1510
+ *
1511
+ * q5.dibujar = function () {
1512
+ * fondo(0.7, 0.16, cuadroActual % 360);
1513
+ * };
1514
+ */
1393
1515
  const OKLCH: 'oklch';
1394
1516
 
1517
+ /** 🎨
1518
+ * Los colores HSL tienen componentes `h`/`hue` (tono), `s`/`saturation` (saturación),
1519
+ * `l`/`lightness` (luminosidad), y `a`/`alpha` (alfa).
1520
+ *
1521
+ * HSL fue creado en la década de 1970 para aproximar la percepción humana
1522
+ * del color, intercambiando precisión por cálculos más simples. No es
1523
+ * perceptualmente uniforme, por lo que colores con la misma luminosidad
1524
+ * pueden parecer más oscuros o más claros, dependiendo de su tono
1525
+ * y saturación. Sin embargo, los valores de luminosidad y saturación que
1526
+ * corresponden a los límites de la gama siempre son 100, independientemente del
1527
+ * tono. Esto puede hacer que HSL sea más fácil de trabajar que OKLCH.
1528
+ *
1529
+ * Los colores HSL son mapeados a la gama completa P3 cuando
1530
+ * se usa el espacio de color "display-p3".
1531
+ *
1532
+ * - `hue`: 0 a 360
1533
+ * - `saturation`: 0 a 100
1534
+ * - `lightness`: 0 a 100
1535
+ * - `alpha`: 0 a 1
1536
+ * @example
1537
+ * await crearLienzo(200, 100);
1538
+ *
1539
+ * modoColor(HSL);
1540
+ *
1541
+ * fondo(0, 100, 50);
1542
+ * @example
1543
+ * await crearLienzo(200, 220);
1544
+ * sinTrazo();
1545
+ *
1546
+ * modoColor(HSL);
1547
+ * for (let h = 0; h < 360; h += 10) {
1548
+ * for (let l = 0; l <= 100; l += 10) {
1549
+ * relleno(h, 100, l);
1550
+ * rect(h * (11 / 20) - 100, l * 2 - 110, 6, 20);
1551
+ * }
1552
+ * }
1553
+ */
1395
1554
  const HSL: 'hsl';
1396
1555
 
1556
+ /** 🎨
1557
+ * Los colores HSB tienen componentes `h`/`hue` (tono), `s`/`saturation` (saturación),
1558
+ * `b`/`brightness` (brillo) (también conocido como `v`/`value` (valor)), y `a`/`alpha` (alfa).
1559
+ *
1560
+ * HSB es similar a HSL, pero en lugar de luminosidad
1561
+ * (negro a blanco), usa brillo (negro a
1562
+ * color completo). Para producir blanco, establece el brillo
1563
+ * a 100 y la saturación a 0.
1564
+ *
1565
+ * - `hue`: 0 a 360
1566
+ * - `saturation`: 0 a 100
1567
+ * - `brightness`: 0 a 100
1568
+ * - `alpha`: 0 a 1
1569
+ * @example
1570
+ * await crearLienzo(200, 100);
1571
+ *
1572
+ * modoColor(HSB);
1573
+ *
1574
+ * fondo(0, 100, 100);
1575
+ * @example
1576
+ * await crearLienzo(200, 220);
1577
+ * sinTrazo();
1578
+ *
1579
+ * modoColor(HSB);
1580
+ * for (let h = 0; h < 360; h += 10) {
1581
+ * for (let b = 0; b <= 100; b += 10) {
1582
+ * relleno(h, 100, b);
1583
+ * rect(h * (11 / 20) - 100, b * 2 - 110, 6, 20);
1584
+ * }
1585
+ * }
1586
+ */
1397
1587
  const HSB: 'hsb';
1398
1588
 
1589
+ /** 🎨
1590
+ * Limita la gama de color al espacio de color sRGB.
1591
+ *
1592
+ * Si tu pantalla es capaz de HDR, nota que el rojo completo aparece
1593
+ * menos saturado y oscuro en este ejemplo, como lo haría en
1594
+ * una pantalla SDR.
1595
+ * @example
1596
+ * await crearLienzo(200, 100);
1597
+ *
1598
+ * modoColor(RGB, 1, SRGB);
1599
+ *
1600
+ * fondo(1, 0, 0);
1601
+ */
1399
1602
  const SRGB: 'srgb';
1400
1603
 
1604
+ /** 🎨
1605
+ * Expande la gama de color al espacio de color P3.
1606
+ *
1607
+ * Esta es la gama de color por defecto en dispositivos que soportan HDR.
1608
+ *
1609
+ * Si tu pantalla es capaz de HDR, nota que el rojo completo aparece
1610
+ * totalmente saturado y brillante en el siguiente ejemplo.
1611
+ * @example
1612
+ * await crearLienzo(200, 100);
1613
+ *
1614
+ * modoColor(RGB, 1, DISPLAY_P3);
1615
+ *
1616
+ * fondo(1, 0, 0);
1617
+ */
1401
1618
  const DISPLAY_P3: 'display-p3';
1402
1619
 
1620
+ /** 🎨
1621
+ * Dibuja sobre todo el lienzo con un color o una imagen.
1622
+ *
1623
+ * Al igual que la función [`color`](https://q5js.org/learn/#color),
1624
+ * esta función puede aceptar colores en una amplia gama de formatos:
1625
+ * cadena de color CSS, valor de escala de grises y valores de componentes de color.
1626
+ * @param {Color | Q5.Image} relleno un color o una imagen para dibujar
1627
+ * @example
1628
+ * await crearLienzo(200, 100);
1629
+ * fondo('crimson');
1630
+ * @example
1631
+ * q5.dibujar = function () {
1632
+ * fondo(0.5, 0.2);
1633
+ * círculo(ratónX, ratónY, 20);
1634
+ * };
1635
+ */
1636
+ function fondo(relleno: Color | Q5.Imagen): void;
1637
+
1403
1638
  class Color {
1639
+
1640
+ /** 🎨
1641
+ * Este constructor acepta estrictamente 4 números, que son los componentes del color.
1642
+ *
1643
+ * Usa la función `color` para mayor flexibilidad, ejecuta
1644
+ * este constructor internamente.
1645
+ *
1646
+ * `Color` no es realmente una clase en si misma, es una referencia a una
1647
+ * clase de color Q5 basada en el modo de color, formato y gama.
1648
+ */
1404
1649
  constructor(c0: number, c1: number, c2: number, c3: number);
1405
1650
 
1651
+ /** 🎨
1652
+ * Comprueba si este color es exactamente igual a otro color.
1653
+ */
1406
1654
  igual(otro: Color): boolean;
1407
1655
 
1656
+ /** 🎨
1657
+ * Comprueba si el color es el mismo que otro color,
1658
+ * ignorando sus valores alfa.
1659
+ */
1408
1660
  esMismoColor(otro: Color): boolean;
1409
1661
 
1662
+ /** 🎨
1663
+ * Produce una representación de cadena de color CSS.
1664
+ */
1410
1665
  toString(): string;
1411
1666
 
1667
+ /** 🎨
1668
+ * Un array de los componentes del color.
1669
+ */
1412
1670
  niveles: number[];
1413
1671
  }
1414
1672
 
@@ -1803,128 +2061,338 @@ declare global {
1803
2061
  * @example
1804
2062
  * await crearLienzo(200);
1805
2063
  *
1806
- * guardar();
2064
+ * apilar();
1807
2065
  * relleno('blue');
1808
2066
  * trasladar(50, 50);
1809
2067
  * círculo(0, 0, 80);
1810
- * recuperar();
2068
+ * desapilar();
1811
2069
  *
1812
2070
  * cuadrado(0, 0, 50);
1813
2071
  */
1814
- function guardar(datos?: object, nombreArchivo?: string): void;
2072
+ function apilar(): void;
1815
2073
 
1816
2074
  /** 🦋
1817
2075
  * Restaura la configuración de estilo de dibujo y transformaciones guardadas previamente.
1818
2076
  * @example
1819
2077
  * await crearLienzo(200);
1820
2078
  *
1821
- * guardar();
2079
+ * apilar();
1822
2080
  * relleno('blue');
1823
2081
  * trasladar(50, 50);
1824
2082
  * círculo(0, 0, 80);
1825
- * recuperar();
2083
+ * desapilar();
1826
2084
  *
1827
2085
  * cuadrado(0, 0, 50);
1828
2086
  */
2087
+ function desapilar(): void;
2088
+
1829
2089
  function recuperar(): void;
1830
2090
 
1831
2091
  // 💻 display
1832
2092
 
1833
2093
  /** 💻
1834
- * El ancho de la ventana (cantidad de píxeles). Atajo para `window.innerWidth`.
2094
+ * Personaliza cómo se presenta tu lienzo.
2095
+ * @param {string} modo NORMAL, CENTRO, o MAXIMIZADO
2096
+ * @param {string} calidadRenderizado SUAVE o PIXELADO
2097
+ * @param {number} escala también se puede dar como una cadena (por ejemplo "x2")
2098
+ * @example
2099
+ * await crearLienzo(50, 25);
2100
+ *
2101
+ * modoVisualización(CENTRO, PIXELADO, 4);
2102
+ *
2103
+ * círculo(0, 0, 16);
1835
2104
  */
1836
- var anchoVentana: number;
2105
+ function modoVisualización(): void;
1837
2106
 
1838
2107
  /** 💻
1839
- * El alto de la ventana (cantidad de píxeles). Atajo para `window.innerHeight`.
2108
+ * Una configuración de `modoVisualización`.
2109
+ *
2110
+ * El lienzo se escalará para llenar el elemento padre,
2111
+ * con bandas negras si es necesario para preservar su relación de aspecto.
1840
2112
  */
1841
- var altoVentana: number;
2113
+ const MAXIMIZADO: 'maxed';
1842
2114
 
1843
2115
  /** 💻
1844
- * Número del cuadro actual, es decir, la cantidad de cuadros que se han dibujado desde que se inició el sketch.
2116
+ * Una calidad de renderizado de `modoVisualización`.
2117
+ *
2118
+ * Se usa escalado suave si el lienzo se escala.
1845
2119
  */
1846
- var cuadroActual: number;
2120
+ const SUAVE: 'smooth';
1847
2121
 
1848
2122
  /** 💻
1849
- * Detiene el bucle de dibujo.
2123
+ * Una calidad de renderizado de `modoVisualización`.
2124
+ *
2125
+ * Los píxeles se renderizan como cuadrados nítidos si el lienzo se escala.
1850
2126
  */
1851
- function pausar(): void;
2127
+ const PIXELADO: 'pixelated';
1852
2128
 
1853
2129
  /** 💻
1854
- * Dibuja el lienzo `n` veces. Si no recibe parametro, se dibuja una sola vez. Útil para controlar animaciones con el bucle pausado.
1855
- * @param {number} [n] cantidad de veces que se volverá a dibujar el lienzo, por defecto es 1
2130
+ * Habilita o deshabilita el modo de pantalla completa.
2131
+ * @param {boolean} [v] booleano indicando si habilitar o deshabilitar el modo de pantalla completa
1856
2132
  */
1857
- function redibujar(n?: number): void;
2133
+ function pantallaCompleta(v?: boolean): void;
1858
2134
 
1859
2135
  /** 💻
1860
- * Vuelve a activar el bucle de dibujo en caso de que estuviera pausado.
2136
+ * El ancho de la ventana.
2137
+ * @example
2138
+ * q5.dibujar = function () {
2139
+ * fondo(0.8);
2140
+ * tamañoTexto(64);
2141
+ * alineaciónTexto(CENTRO, CENTRO);
2142
+ * texto(anchoVentana, 0, 0);
2143
+ * };
1861
2144
  */
1862
- function reanudar(): void;
2145
+ var anchoVentana: number;
1863
2146
 
1864
2147
  /** 💻
1865
- * Si recibe un parámetro, establece la cantidad ideal de cuadros que se intentarán dibujar por cada segundo (es decir, la tasa de refresco, la frecuencia del bucle).
1866
- *
1867
- * Retorna la frecuencia real alcanzada durante el último segundo de ejecución. Incluso si nunca se modifica explícitamente la frecuencia, el valor real suele fluctuar entre el ideal y 0. Para un mejor análisis del rendimiento usar las herramientas del navegador (DevTools).
1868
- * @param `hz` {number} [frecuencia] cantidad ideal de cuadros a dibujar en un segundo, por defecto es 60
1869
- * @returns {number} frecuencia real del bucle en el último segundo
2148
+ * El alto de la ventana.
2149
+ * @example
2150
+ * q5.dibujar = function () {
2151
+ * fondo(0.8);
2152
+ * tamañoTexto(64);
2153
+ * alineaciónTexto(CENTRO, CENTRO);
2154
+ * texto(altoVentana, 0, 0);
2155
+ * };
1870
2156
  */
1871
- function frecuenciaRefresco(hertz?: number): number;
2157
+ var altoVentana: number;
1872
2158
 
1873
2159
  /** 💻
1874
- * Retorna la cantidad ideal de cuadros que se intentan dibujar por segundo.
2160
+ * El ancho del lienzo.
2161
+ * @example
2162
+ * await crearLienzo(200, 120);
2163
+ * círculo(0, 0, ancho);
1875
2164
  */
1876
- function frecuenciaIdeal(): void;
2165
+ var ancho: number;
1877
2166
 
1878
2167
  /** 💻
1879
- * Retorna la cantidad maxima de cuadros que se podrían estar dibujando en cada segundo.
1880
- *
1881
- * Es un valor teórico que depende del estado del dispositivo. Para un mejor análisis del rendimiento usar las herramientas del navegador (DevTools).
1882
- * @returns {number} cantidad máxima teorica de cuadros por segundo
2168
+ * El alto del lienzo.
2169
+ * @example
2170
+ * await crearLienzo(200, 80);
2171
+ * círculo(0, 0, alto);
1883
2172
  */
1884
- function frecuenciaMaxima(): void;
2173
+ var alto: number;
1885
2174
 
1886
2175
  /** 💻
1887
- * Funcion a declarar. Se ejecuta después de cada llamada a `dibujar` y de los `hooks de dibujo`, pero antes de dibujar realmente el lienzo.
1888
- *
1889
- * Útil para agregar efectos finales cuando es difícil hacerlo en la función de dibujo. Por ejemplo, al usar extensiones como p5play que dibujan capas superpuestas al lienzo.
2176
+ * La mitad del ancho del lienzo.
2177
+ * @example
2178
+ * await crearLienzo(200, 80);
2179
+ * círculo(0, 0, medioAncho);
1890
2180
  */
1891
- function retocarDibujo(): void;
2181
+ var medioAncho: number;
1892
2182
 
1893
2183
  /** 💻
1894
- * Milisegundos que han pasado desde el último cuadro dibujado. Con la frecuencia por defecto a 60 hz, el tiempo aproximado es 16.6 ms o mas.
1895
- *
1896
- * Útil para mantener las animaciones sincronizadas con precisión, sobretodo si existen momentos en que la ejecución se ralentiza por sobrecarga del dispositivo. En casos en que la frecuencia real del bucle sea considerablemente mas baja, es recomendable reducir la frecuencia ideal.
2184
+ * La mitad del alto del lienzo.
2185
+ * @example
2186
+ * await crearLienzo(200, 80);
2187
+ * círculo(0, 0, medioAlto);
1897
2188
  */
1898
- function ultimoTiempo(): void;
1899
-
1900
- const MAXIMIZADO: 'maxed';
1901
-
1902
- const SUAVE: 'smooth';
1903
-
1904
- const PIXELADO: 'pixelated';
2189
+ var medioAlto: number;
1905
2190
 
1906
- function pantallaCompleta(v?: boolean): void;
2191
+ /** 💻
2192
+ * El elemento lienzo asociado con la instancia Q5.
2193
+ *
2194
+ * Si no se crea un lienzo explícitamente con `crearLienzo()`, pero se define una función q5 como `dibujar` o `alPresionarRatón`, se creará automáticamente un lienzo por defecto de tamaño 200x200.
2195
+ */
2196
+ var lienzo: HTMLCanvasElement;
1907
2197
 
1908
- var ancho: number;
2198
+ /** 💻
2199
+ * Redimensiona el lienzo al ancho y alto especificados.
2200
+ * @param {number} w ancho del lienzo
2201
+ * @param {number} h alto del lienzo
2202
+ * @example
2203
+ * await crearLienzo(200, 100);
2204
+ *
2205
+ * q5.dibujar = function () {
2206
+ * fondo(0.8);
2207
+ * };
2208
+ *
2209
+ * q5.alPresionarRatón = function () {
2210
+ * redimensionarLienzo(200, 200);
2211
+ * };
2212
+ */
2213
+ function redimensionarLienzo(w: number, h: number): void;
1909
2214
 
1910
- var alto: number;
2215
+ /** 💻
2216
+ * El número de cuadros que se han mostrado desde que comenzó el programa.
2217
+ * @example
2218
+ * q5.dibujar = function () {
2219
+ * fondo(0.8);
2220
+ * tamañoTexto(64);
2221
+ * texto(cuadroActual, -92, 20);
2222
+ * };
2223
+ */
2224
+ var cuadroActual: number;
1911
2225
 
1912
- var medioAncho: number;
2226
+ /** 💻
2227
+ * Detiene el bucle de dibujo.
2228
+ * @example
2229
+ * q5.dibujar = function () {
2230
+ * círculo(cuadroActual * 5 - 100, 0, 80);
2231
+ * pausar();
2232
+ * };
2233
+ */
2234
+ function pausar(): void;
1913
2235
 
1914
- var medioAlto: number;
2236
+ /** 💻
2237
+ * Redibuja el lienzo n veces. Si no se proporciona ningún parámetro de entrada,
2238
+ * llama a la función de dibujo una vez.
2239
+ *
2240
+ * Esta es una función asíncrona.
2241
+ * @param {number} [n] número de veces para redibujar el lienzo, por defecto es 1
2242
+ * @example
2243
+ * await crearLienzo(200);
2244
+ * pausar();
2245
+ *
2246
+ * q5.dibujar = function () {
2247
+ * círculo(cuadroActual * 5 - 100, 0, 80);
2248
+ * };
2249
+ * q5.alPresionarRatón = function () {
2250
+ * redibujar(10);
2251
+ * };
2252
+ */
2253
+ function redibujar(n?: number): void;
1915
2254
 
1916
- var lienzo: HTMLCanvasElement;
2255
+ /** 💻
2256
+ * Inicia el bucle de dibujo de nuevo si estaba detenido.
2257
+ * @example
2258
+ * await crearLienzo(200);
2259
+ * pausar();
2260
+ *
2261
+ * q5.dibujar = function () {
2262
+ * círculo(cuadroActual * 5 - 100, 0, 80);
2263
+ * };
2264
+ * q5.alPresionarRatón = function () {
2265
+ * reanudar();
2266
+ * };
2267
+ */
2268
+ function reanudar(): void;
1917
2269
 
1918
- function redimensionarLienzo(w: number, h: number): void;
2270
+ /** 💻
2271
+ * Establece la frecuencia de fotogramas objetivo u obtiene una aproximación de la
2272
+ * frecuencia de fotogramas actual del sketch.
2273
+ *
2274
+ * Incluso cuando el sketch se está ejecutando a una frecuencia de fotogramas consistente,
2275
+ * el valor actual de la frecuencia de fotogramas fluctuará. Usa las herramientas de desarrollador
2276
+ * de tu navegador web para un análisis de rendimiento más preciso.
2277
+ * @param {number} [hertz] frecuencia de fotogramas objetivo, por defecto es 60
2278
+ * @returns {number} frecuencia de fotogramas actual
2279
+ * @example
2280
+ * q5.dibujar = function () {
2281
+ * fondo(0.8);
2282
+ *
2283
+ * if (ratónPresionado) frecuenciaRefresco(10);
2284
+ * else frecuenciaRefresco(60);
2285
+ *
2286
+ * círculo((cuadroActual % 200) - 100, 0, 80);
2287
+ * };
2288
+ * @example
2289
+ * q5.dibujar = function () {
2290
+ * fondo(0.8);
2291
+ * tamañoTexto(64);
2292
+ * texto(redondear(frecuenciaRefresco()), -35, 20);
2293
+ * };
2294
+ */
2295
+ function frecuenciaRefresco(hertz?: number): number;
1919
2296
 
2297
+ /** 💻
2298
+ * La frecuencia de fotogramas deseada del sketch.
2299
+ * @returns {number} frecuencia de fotogramas objetivo
2300
+ * @example
2301
+ * q5.dibujar = function () {
2302
+ * fondo(0.8);
2303
+ * tamañoTexto(64);
2304
+ *
2305
+ * texto(obtenerTasaFotogramasObjetivo(), -35, 20);
2306
+ * };
2307
+ */
1920
2308
  function obtenerTasaFotogramasObjetivo(): number;
1921
2309
 
2310
+ /** 💻
2311
+ * Obtiene los FPS actuales, en términos de cuántos fotogramas podrían generarse
2312
+ * en un segundo, lo cual puede ser más alto que la frecuencia de fotogramas objetivo.
2313
+ *
2314
+ * Usa las herramientas de desarrollador de tu navegador web para un análisis
2315
+ * de rendimiento más profundo.
2316
+ * @returns {number} fotogramas por segundo
2317
+ * @example
2318
+ * q5.dibujar = function () {
2319
+ * fondo(0.8);
2320
+ * frecuenciaRefresco(1);
2321
+ * tamañoTexto(64);
2322
+ *
2323
+ * texto(obtenerFPS(), -92, 20);
2324
+ * };
2325
+ */
1922
2326
  function obtenerFPS(): number;
1923
2327
 
2328
+ /** 💻
2329
+ * Se ejecuta después de cada llamada a la función `dibujar` y procesos de addons de q5 post-dibujo, si los hay.
2330
+ *
2331
+ * Útil para añadir efectos de post-procesamiento cuando no es posible
2332
+ * hacerlo al final de la función `dibujar`, como cuando se usan
2333
+ * addons como p5play que auto-dibujan al lienzo después de que
2334
+ * la función `dibujar` se ejecuta.
2335
+ */
1924
2336
  function postProcesar(): void;
1925
2337
 
2338
+ /** 💻
2339
+ * Establece la densidad de píxeles del lienzo.
2340
+ * @param {number} v valor de densidad de píxeles
2341
+ * @returns {number} densidad de píxeles
2342
+ * @example
2343
+ * await crearLienzo(200, 100);
2344
+ * fondo(0.8);
2345
+ * densidadPíxeles(1);
2346
+ * círculo(0, 0, 80);
2347
+ */
2348
+ function densidadPíxeles(): void;
2349
+
2350
+ /** 💻
2351
+ * Devuelve la densidad de visualización actual.
2352
+ *
2353
+ * En la mayoría de pantallas modernas, este valor será 2 o 3.
2354
+ * @returns {number} densidad de visualización
2355
+ * @example
2356
+ * await crearLienzo(200, 100);
2357
+ * fondo(0.8);
2358
+ * tamañoTexto(64);
2359
+ * texto(densidadVisualización(), -90, 6);
2360
+ */
2361
+ function densidadVisualización(): void;
2362
+
2363
+ /** 💻
2364
+ * El tiempo pasado desde que se dibujó el último fotograma.
2365
+ *
2366
+ * Con la frecuencia de fotogramas por defecto de 60, el tiempo delta será
2367
+ * aproximadamente 16.6
2368
+ *
2369
+ * Se puede usar para mantener movimientos atados al tiempo real si el sketch
2370
+ * a menudo cae por debajo de la frecuencia de fotogramas objetivo. Aunque si las frecuencias
2371
+ * de fotogramas son consistentemente bajas, considera reducir la frecuencia
2372
+ * de fotogramas objetivo.
2373
+ * @example
2374
+ * q5.dibujar = function () {
2375
+ * fondo(0.8);
2376
+ * texto(deltaTiempo, -90, 6);
2377
+ * };
2378
+ * @example
2379
+ * let x = -100;
2380
+ * q5.dibujar = function () {
2381
+ * fondo(0.8);
2382
+ * // simular caídas de frecuencia de fotogramas
2383
+ * frecuenciaRefresco(aleatorio(30, 60));
2384
+ *
2385
+ * x += deltaTiempo * 0.2;
2386
+ * if (x > 100) x = -100;
2387
+ * círculo(x, 0, 20);
2388
+ * };
2389
+ */
1926
2390
  var deltaTiempo: number;
1927
2391
 
2392
+ /** 💻
2393
+ * El contexto de renderizado 2D para el lienzo, si se usa el renderizador
2394
+ * Canvas2D.
2395
+ */
1928
2396
  var contextoDibujo: CanvasRenderingContext2D;
1929
2397
 
1930
2398
  // 🧮 math
@@ -2484,7 +2952,7 @@ declare global {
2484
2952
  * @example
2485
2953
  * await crearLienzo(200, 100);
2486
2954
  *
2487
- * let btn = crearBotón('Click me!');
2955
+ * let btn = crearBotón('¡Clic aqui!');
2488
2956
  *
2489
2957
  * btn.addEventListener('click', () => {
2490
2958
  * fondo(aleatorio(0.4, 1));
@@ -2503,7 +2971,7 @@ declare global {
2503
2971
  * @example
2504
2972
  * await crearLienzo(200, 100);
2505
2973
  *
2506
- * let casilla = crearCasilla('Check me!');
2974
+ * let casilla = crearCasilla('¡Marca aquí!');
2507
2975
  * casilla.label.style.color = 'lime';
2508
2976
  *
2509
2977
  * casilla.addEventListener('input', () => {
@@ -2521,11 +2989,11 @@ declare global {
2521
2989
  * @example
2522
2990
  * await crearLienzo(200, 100);
2523
2991
  *
2524
- * let selector = crearSelectorColor();
2525
- * selector.value = '#fd7575';
2992
+ * let selección = crearSelectorColor();
2993
+ * selección.value = '#fd7575';
2526
2994
  *
2527
2995
  * q5.dibujar = function () {
2528
- * fondo(selector.value);
2996
+ * fondo(selección.value);
2529
2997
  * };
2530
2998
  */
2531
2999
  function crearSelectorColor(valor?: string): HTMLInputElement;
@@ -2557,7 +3025,7 @@ declare global {
2557
3025
  * tamañoTexto(64);
2558
3026
  *
2559
3027
  * let entrada = crearEntrada();
2560
- * entrada.placeholder = 'Type here!';
3028
+ * entrada.placeholder = '¡Teclea aquí!';
2561
3029
  * entrada.size(200, 32);
2562
3030
  *
2563
3031
  * entrada.addEventListener('input', () => {
@@ -2574,7 +3042,7 @@ declare global {
2574
3042
  * await crearLienzo(200, 50);
2575
3043
  * fondo('coral');
2576
3044
  *
2577
- * let p = crearP('Hello, world!');
3045
+ * let p = crearP('¡Hola, mundo!');
2578
3046
  * p.style.color = 'pink';
2579
3047
  */
2580
3048
  function crearP(contenido?: string): HTMLParagraphElement;
@@ -2591,7 +3059,7 @@ declare global {
2591
3059
  * await crearLienzo(200, 160);
2592
3060
  *
2593
3061
  * let radio = crearOpciónes();
2594
- * radio.option('square', '1').option('circle', '2');
3062
+ * radio.option('cuadrado', '1').option('círculo', '2');
2595
3063
  *
2596
3064
  * q5.dibujar = function () {
2597
3065
  * fondo(0.8);
@@ -2618,7 +3086,7 @@ declare global {
2618
3086
  * @example
2619
3087
  * await crearLienzo(200, 100);
2620
3088
  *
2621
- * let sel = crearSelección('Select a color');
3089
+ * let sel = crearSelección('Seleccionar un opcion');
2622
3090
  * sel.option('Red', '#f55').option('Green', '#5f5');
2623
3091
  *
2624
3092
  * sel.addEventListener('change', () => {
@@ -3038,68 +3506,239 @@ declare global {
3038
3506
  * await crearLienzo(200);
3039
3507
  * fondo(0.8);
3040
3508
  *
3041
- * let v = crearVector(100, 100);
3509
+ * let v = crearVector(0, 0);
3042
3510
  * círculo(v.x, v.y, 50);
3043
3511
  */
3044
3512
  function crearVector(): void;
3045
3513
 
3046
- /** ↗
3047
- * Una clase para describir un vector bidimensional o tridimensional, específicamente un vector euclidiano (también conocido como geométrico). Un vector es una entidad que tiene tanto magnitud como dirección. El tipo de datos almacena los componentes del vector (x, y para 2D, y z para 3D). La magnitud y dirección se pueden acceder a través de los métodos `mag()` y `heading()`.
3048
- * @param {number} [x] componente x del vector
3049
- * @param {number} [y] componente y del vector
3050
- * @param {number} [z] componente z del vector
3051
- * @param {number} [w] componente w del vector
3052
- * @returns {Vector} este vector
3053
- * @returns {Vector} copia del vector
3054
- * @param {number | Vector} x componente x del vector o Vector a sumar
3055
- * @param {number} [y] componente y del vector
3056
- * @param {number} [z] componente z del vector
3057
- * @returns {Vector} este vector
3058
- * @param {number | Vector} x componente x del vector o Vector a restar
3059
- * @param {number} [y] componente y del vector
3060
- * @param {number} [z] componente z del vector
3061
- * @returns {Vector} este vector
3062
- * @param {number} n escalar por el cual multiplicar
3063
- * @returns {Vector} este vector
3064
- * @param {number} n escalar por el cual dividir
3065
- * @returns {Vector} este vector
3066
- * @returns {number} magnitud del vector
3067
- * @returns {number} magnitud del vector al cuadrado
3068
- * @param {Vector} v vector con el cual hacer producto punto
3069
- * @returns {number} producto punto
3070
- * @param {Vector} v vector con el cual hacer producto cruz
3071
- * @returns {Vector} producto cruz
3072
- * @param {Vector} v vector al cual calcular distancia
3073
- * @returns {number} distancia
3074
- * @returns {Vector} este vector
3075
- * @param {number} max magnitud máxima
3076
- * @returns {Vector} este vector
3077
- * @param {number} len nueva longitud para este vector
3078
- * @returns {Vector} este vector
3079
- * @returns {number} el ángulo de rotación
3080
- * @param {number} ángulo ángulo de rotación
3081
- * @returns {Vector} este vector
3082
- * @param {Vector} v el vector x, y, z
3083
- * @returns {number} el ángulo entre
3084
- * @param {Vector} v el vector x, y, z
3085
- * @param {number} amt la cantidad de interpolación; 0.0 es el vector antiguo, 1.0 es el nuevo vector, 0.5 está a mitad de camino
3086
- * @returns {Vector} este vector
3087
- * @param {Vector} superficieNormal el vector normal a la superficie
3088
- * @returns {Vector} este vector
3089
- * @returns {number[]} array de flotantes
3090
- * @param {Vector} v el vector a comparar
3091
- * @returns {boolean} verdadero si los vectores son iguales
3092
- * @param {number} ángulo el ángulo deseado
3093
- * @param {number} [longitud] longitud del nuevo vector (por defecto a 1)
3094
- * @returns {Vector} nuevo objeto Vector
3095
- * @returns {Vector} nuevo objeto Vector
3096
- * @returns {Vector} nuevo objeto Vector
3097
- */
3098
3514
  class Vector {
3099
3515
 
3100
- // 🖌 shaping
3516
+ /**
3517
+ * Una clase para describir un vector bidimensional o tridimensional, específicamente un vector euclidiano (también conocido como geométrico). Un vector es una entidad que tiene tanto magnitud como dirección. El tipo de datos almacena los componentes del vector (x, y para 2D, y z para 3D). La magnitud y dirección se pueden acceder a través de los métodos `mag()` y `heading()`.
3518
+ */
3519
+ constructor(x: number, y: number, z?: number);
3520
+
3521
+ /** ↗
3522
+ * El componente x del vector.
3523
+ */
3524
+ x: number;
3525
+
3526
+ /** ↗
3527
+ * El componente y del vector.
3528
+ */
3529
+ y: number;
3530
+
3531
+ /** ↗
3532
+ * El componente z del vector.
3533
+ */
3534
+ z: number;
3535
+
3536
+ /** ↗
3537
+ * El componente w del vector.
3538
+ */
3539
+ w(): void;
3540
+
3541
+ /** ↗
3542
+ * Establece los componentes x, y, y z del vector.
3543
+ * @param {number} [x] componente x del vector
3544
+ * @param {number} [y] componente y del vector
3545
+ * @param {number} [z] componente z del vector
3546
+ * @param {number} [w] componente w del vector
3547
+ * @returns {Vector} este vector
3548
+ */
3549
+ set(): void;
3550
+
3551
+ /** ↗
3552
+ * Devuelve una copia del vector.
3553
+ * @returns {Vector} copia del vector
3554
+ */
3555
+ copy(): void;
3556
+
3557
+ /** ↗
3558
+ * Suma x, y, y z componentes a un vector, suma un vector a otro, o suma dos vectores independientes.
3559
+ * @param {number | Vector} x componente x del vector o Vector a sumar
3560
+ * @param {number} [y] componente y del vector
3561
+ * @param {number} [z] componente z del vector
3562
+ * @returns {Vector} este vector
3563
+ */
3564
+ add(): void;
3565
+
3566
+ /** ↗
3567
+ * Resta x, y, y z componentes de un vector, resta un vector de otro, o resta dos vectores independientes.
3568
+ * @param {number | Vector} x componente x del vector o Vector a restar
3569
+ * @param {number} [y] componente y del vector
3570
+ * @param {number} [z] componente z del vector
3571
+ * @returns {Vector} este vector
3572
+ */
3573
+ sub(): void;
3574
+
3575
+ /** ↗
3576
+ * Multiplica el vector por un escalar.
3577
+ * @param {number} n escalar por el cual multiplicar
3578
+ * @returns {Vector} este vector
3579
+ */
3580
+ mult(n: number | Vector): Vector;
3581
+
3582
+ /** ↗
3583
+ * Divide el vector por un escalar.
3584
+ * @param {number} n escalar por el cual dividir
3585
+ * @returns {Vector} este vector
3586
+ */
3587
+ div(n: number | Vector): Vector;
3588
+
3589
+ /** ↗
3590
+ * Calcula la magnitud (longitud) del vector y devuelve el resultado como un flotante (esto es simplemente la ecuación `sqrt(x*x + y*y + z*z)`).
3591
+ * @returns {number} magnitud del vector
3592
+ */
3593
+ mag(): number;
3594
+
3595
+ /** ↗
3596
+ * Calcula la magnitud (longitud) del vector al cuadrado y devuelve el resultado como un flotante (esto es simplemente la ecuación `x*x + y*y + z*z`).
3597
+ * @returns {number} magnitud del vector al cuadrado
3598
+ */
3599
+ magSq(): void;
3600
+
3601
+ /** ↗
3602
+ * Calcula el producto punto de dos vectores.
3603
+ * @param {Vector} v vector con el cual hacer producto punto
3604
+ * @returns {number} producto punto
3605
+ */
3606
+ dot(): void;
3607
+
3608
+ /** ↗
3609
+ * Calcula el producto cruz de dos vectores.
3610
+ * @param {Vector} v vector con el cual hacer producto cruz
3611
+ * @returns {Vector} producto cruz
3612
+ */
3613
+ cross(): void;
3614
+
3615
+ /** ↗
3616
+ * Calcula la distancia euclidiana entre dos puntos (considerando un punto como un objeto vector).
3617
+ * @param {Vector} v vector al cual calcular distancia
3618
+ * @returns {number} distancia
3619
+ */
3620
+ dist(v: Vector): number;
3621
+
3622
+ /** ↗
3623
+ * Normaliza el vector a longitud 1 (hace que sea un vector unitario).
3624
+ * @returns {Vector} este vector
3625
+ */
3626
+ normalize(): void;
3627
+
3628
+ /** ↗
3629
+ * Limita la magnitud de este vector al valor usado para el parámetro `max`.
3630
+ * @param {number} max magnitud máxima
3631
+ * @returns {Vector} este vector
3632
+ */
3633
+ limit(): void;
3634
+
3635
+ /** ↗
3636
+ * Establece la magnitud de este vector al valor usado para el parámetro `len`.
3637
+ * @param {number} len nueva longitud para este vector
3638
+ * @returns {Vector} este vector
3639
+ */
3640
+ setMag(): void;
3641
+
3642
+ /** ↗
3643
+ * Calcula el ángulo de rotación para este vector (solo vectores 2D).
3644
+ * @returns {number} el ángulo de rotación
3645
+ */
3646
+ heading(): void;
3647
+
3648
+ /** ↗
3649
+ * Rota el vector por un ángulo (solo vectores 2D), la magnitud permanece igual.
3650
+ * @param {number} ángulo ángulo de rotación
3651
+ * @returns {Vector} este vector
3652
+ */
3653
+ rotate(): void;
3654
+
3655
+ /** ↗
3656
+ * Calcula y devuelve el ángulo entre dos vectores.
3657
+ * @param {Vector} v el vector x, y, z
3658
+ * @returns {number} el ángulo entre
3659
+ */
3660
+ angleBetween(): void;
3661
+
3662
+ /** ↗
3663
+ * Interpola linealmente el vector a otro vector.
3664
+ * @param {Vector} v el vector x, y, z
3665
+ * @param {number} amt la cantidad de interpolación; 0.0 es el vector antiguo, 1.0 es el nuevo vector, 0.5 está a mitad de camino
3666
+ * @returns {Vector} este vector
3667
+ */
3668
+ lerp(v: Vector, amt: number): Vector;
3669
+
3670
+ /** ↗
3671
+ * Refleja el vector entrante sobre una normal al muro.
3672
+ * @param {Vector} superficieNormal el vector normal a la superficie
3673
+ * @returns {Vector} este vector
3674
+ */
3675
+ reflect(): void;
3676
+
3677
+ /** ↗
3678
+ * Devuelve una representación de este vector como un array de flotantes.
3679
+ * @returns {number[]} array de flotantes
3680
+ */
3681
+ array(): void;
3682
+
3683
+ /** ↗
3684
+ * Comprueba si los componentes x, y, y z del vector son iguales a los componentes x, y, y z de otro vector.
3685
+ * @param {Vector} v el vector a comparar
3686
+ * @returns {boolean} verdadero si los vectores son iguales
3687
+ */
3688
+ equals(): void;
3689
+
3690
+ /** ↗
3691
+ * Hace un nuevo vector 2D desde un ángulo de longitud 1.
3692
+ * @param {number} ángulo el ángulo deseado
3693
+ * @param {number} [longitud] longitud del nuevo vector (por defecto a 1)
3694
+ * @returns {Vector} nuevo objeto Vector
3695
+ */
3696
+ fromAngle(): void;
3697
+
3698
+ /** ↗
3699
+ * Hace un nuevo vector 2D aleatorio con una magnitud de 1.
3700
+ * @returns {Vector} nuevo objeto Vector
3701
+ */
3702
+ random2D(): void;
3703
+
3704
+ /** ↗
3705
+ * Hace un nuevo vector 3D aleatorio con una magnitud de 1.
3706
+ * @returns {Vector} nuevo objeto Vector
3707
+ */
3708
+ random3D(): void;
3709
+ sumar(v: Vector): Vector;
3710
+
3711
+ restar(v: Vector): Vector;
3712
+
3713
+ normalizar(): Vector;
3714
+
3715
+ establecerMag(len: number): Vector;
3716
+
3717
+ punto(v: Vector): number;
3718
+
3719
+ cruz(v: Vector): Vector;
3720
+
3721
+ copiar(): Vector;
3722
+
3723
+ establecer(x: number, y: number, z?: number): void;
3101
3724
 
3102
- /** 🖌
3725
+ limitar(max: number): Vector;
3726
+
3727
+ rumbo(): number;
3728
+
3729
+ establecerRumbo(angulo: number): Vector;
3730
+
3731
+ rotar(angulo: number): Vector;
3732
+
3733
+ slerp(v: Vector, amt: number): Vector;
3734
+
3735
+ static desdeÁngulo(angulo: number, longitud?: number): Vector;
3736
+
3737
+ }
3738
+
3739
+ // 🖌 shaping
3740
+
3741
+ /** 🖌
3103
3742
  * Dibuja un arco, que es una sección de una elipse.
3104
3743
  *
3105
3744
  * `modoEliptico` afecta cómo se dibuja el arco.
@@ -3118,9 +3757,9 @@ declare global {
3118
3757
  *
3119
3758
  * arco(0, 0, 160, 160, 0.8, -0.8);
3120
3759
  */
3121
- function arco(x: number, y: number, w: number, h: number, inicio: number, fin: number, modo?: number): void;
3760
+ function arco(x: number, y: number, w: number, h: number, inicio: number, fin: number, modo?: number): void;
3122
3761
 
3123
- /** 🖌
3762
+ /** 🖌
3124
3763
  * Dibuja una curva.
3125
3764
  * @example
3126
3765
  * await crearLienzo(200, 100);
@@ -3128,9 +3767,9 @@ declare global {
3128
3767
  *
3129
3768
  * curva(-100, -200, -50, 0, 50, 0, 100, -200);
3130
3769
  */
3131
- function curva(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3770
+ function curva(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3132
3771
 
3133
- /** 🖌
3772
+ /** 🖌
3134
3773
  * Establece la cantidad de segmentos de línea recta usados para hacer una curva.
3135
3774
  *
3136
3775
  * Solo tiene efecto en q5 WebGPU.
@@ -3144,40 +3783,40 @@ declare global {
3144
3783
  * trazo(0, 1, 1);
3145
3784
  * curva(-100, -200, -50, 0, 50, 0, 100, -200);
3146
3785
  */
3147
- function detalleCurva(val: number): void;
3786
+ function detalleCurva(val: number): void;
3148
3787
 
3149
- /** 🖌
3788
+ /** 🖌
3150
3789
  * Comienza a almacenar vértices para una forma convexa.
3151
3790
  */
3152
- function empezarForma(): void;
3791
+ function empezarForma(): void;
3153
3792
 
3154
- /** 🖌
3793
+ /** 🖌
3155
3794
  * Termina de almacenar vértices para una forma convexa.
3156
3795
  */
3157
- function terminarForma(): void;
3796
+ function terminarForma(): void;
3158
3797
 
3159
- /** 🖌
3798
+ /** 🖌
3160
3799
  * Comienza a almacenar vértices para un contorno.
3161
3800
  *
3162
3801
  * No disponible en q5 WebGPU.
3163
3802
  */
3164
- function empezarContorno(): void;
3803
+ function empezarContorno(): void;
3165
3804
 
3166
- /** 🖌
3805
+ /** 🖌
3167
3806
  * Termina de almacenar vértices para un contorno.
3168
3807
  *
3169
3808
  * No disponible en q5 WebGPU.
3170
3809
  */
3171
- function terminarContorno(): void;
3810
+ function terminarContorno(): void;
3172
3811
 
3173
- /** 🖌
3812
+ /** 🖌
3174
3813
  * Especifica un vértice en una forma.
3175
3814
  * @param {number} x coordenada-x
3176
3815
  * @param {number} y coordenada-y
3177
3816
  */
3178
- function vértice(): void;
3817
+ function vértice(): void;
3179
3818
 
3180
- /** 🖌
3819
+ /** 🖌
3181
3820
  * Especifica un vértice Bezier en una forma.
3182
3821
  * @param {number} cp1x coordenada-x del primer punto de control
3183
3822
  * @param {number} cp1y coordenada-y del primer punto de control
@@ -3186,18 +3825,18 @@ declare global {
3186
3825
  * @param {number} x coordenada-x del punto de anclaje
3187
3826
  * @param {number} y coordenada-y del punto de anclaje
3188
3827
  */
3189
- function vérticeBezier(): void;
3828
+ function vérticeBezier(): void;
3190
3829
 
3191
- /** 🖌
3830
+ /** 🖌
3192
3831
  * Especifica un vértice Bezier cuadrático en una forma.
3193
3832
  * @param {number} cp1x coordenada-x del punto de control
3194
3833
  * @param {number} cp1y coordenada-y del punto de control
3195
3834
  * @param {number} x coordenada-x del punto de anclaje
3196
3835
  * @param {number} y coordenada-y del punto de anclaje
3197
3836
  */
3198
- function vérticeCuadrático(): void;
3837
+ function vérticeCuadrático(): void;
3199
3838
 
3200
- /** 🖌
3839
+ /** 🖌
3201
3840
  * Dibuja una curva Bezier.
3202
3841
  * @param {number} x1 coordenada-x del primer punto de anclaje
3203
3842
  * @param {number} y1 coordenada-y del primer punto de anclaje
@@ -3208,9 +3847,9 @@ declare global {
3208
3847
  * @param {number} x4 coordenada-x del segundo punto de anclaje
3209
3848
  * @param {number} y4 coordenada-y del segundo punto de anclaje
3210
3849
  */
3211
- function bezier(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3850
+ function bezier(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3212
3851
 
3213
- /** 🖌
3852
+ /** 🖌
3214
3853
  * Dibuja un triángulo.
3215
3854
  * @param {number} x1 coordenada-x del primer vértice
3216
3855
  * @param {number} y1 coordenada-y del primer vértice
@@ -3219,9 +3858,9 @@ declare global {
3219
3858
  * @param {number} x3 coordenada-x del tercer vértice
3220
3859
  * @param {number} y3 coordenada-y del tercer vértice
3221
3860
  */
3222
- function triángulo(): void;
3861
+ function triángulo(): void;
3223
3862
 
3224
- /** 🖌
3863
+ /** 🖌
3225
3864
  * Dibuja un cuadrilátero.
3226
3865
  * @param {number} x1 coordenada-x del primer vértice
3227
3866
  * @param {number} y1 coordenada-y del primer vértice
@@ -3232,16 +3871,16 @@ declare global {
3232
3871
  * @param {number} x4 coordenada-x del cuarto vértice
3233
3872
  * @param {number} y4 coordenada-y del cuarto vértice
3234
3873
  */
3235
- function quad(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3874
+ function quad(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3236
3875
 
3237
- // ⚡ shaders
3876
+ // ⚡ shaders
3238
3877
 
3239
- /**
3878
+ /**
3240
3879
  * ¡Shaders personalizados escritos en WGSL (WebGPU Shading Language) pueden ser
3241
3880
  * usados para crear efectos visuales avanzados en q5!
3242
3881
  */
3243
3882
 
3244
- /** ⚡
3883
+ /** ⚡
3245
3884
  * Crea un shader que q5 puede usar para dibujar formas.
3246
3885
  *
3247
3886
  * Afecta a las siguientes funciones:
@@ -3295,9 +3934,9 @@ declare global {
3295
3934
  * triángulo(-50, -50, 0, 50, 50, -50);
3296
3935
  * };
3297
3936
  */
3298
- function crearShader(codigo: string): GPUShaderModule;
3937
+ function crearShader(codigo: string): GPUShaderModule;
3299
3938
 
3300
- /** ⚡
3939
+ /** ⚡
3301
3940
  * Un plano es un rectángulo centrado sin trazo.
3302
3941
  * @param {number} x centro x
3303
3942
  * @param {number} y centro y
@@ -3307,15 +3946,15 @@ declare global {
3307
3946
  * await crearLienzo(200);
3308
3947
  * plano(0, 0, 100);
3309
3948
  */
3310
- function plano(x: number, y: number, w: number, h?: number): void;
3949
+ function plano(x: number, y: number, w: number, h?: number): void;
3311
3950
 
3312
- /** ⚡
3951
+ /** ⚡
3313
3952
  * Aplica un shader.
3314
3953
  * @param {GPUShaderModule} moduloShader un programa shader
3315
3954
  */
3316
- function shader(moduloShader: GPUShaderModule): void;
3955
+ function shader(moduloShader: GPUShaderModule): void;
3317
3956
 
3318
- /** ⚡
3957
+ /** ⚡
3319
3958
  * Hace que q5 use el shader de formas por defecto.
3320
3959
  * @example
3321
3960
  * await crearLienzo(200);
@@ -3335,34 +3974,34 @@ declare global {
3335
3974
  * triángulo(-50, -50, 0, 50, 50, -50);
3336
3975
  * };
3337
3976
  */
3338
- function reiniciarShader(): void;
3977
+ function reiniciarShader(): void;
3339
3978
 
3340
- /** ⚡
3979
+ /** ⚡
3341
3980
  * Hace que q5 use el shader de fotograma por defecto.
3342
3981
  */
3343
- function reiniciarShaderFotograma(): void;
3982
+ function reiniciarShaderFotograma(): void;
3344
3983
 
3345
- /** ⚡
3984
+ /** ⚡
3346
3985
  * Hace que q5 use el shader de imagen por defecto.
3347
3986
  */
3348
- function reiniciarShaderImagen(): void;
3987
+ function reiniciarShaderImagen(): void;
3349
3988
 
3350
- /** ⚡
3989
+ /** ⚡
3351
3990
  * Hace que q5 use el shader de video por defecto.
3352
3991
  */
3353
- function reiniciarShaderVideo(): void;
3992
+ function reiniciarShaderVideo(): void;
3354
3993
 
3355
- /** ⚡
3994
+ /** ⚡
3356
3995
  * Hace que q5 use el shader de texto por defecto.
3357
3996
  */
3358
- function reiniciarShaderTexto(): void;
3997
+ function reiniciarShaderTexto(): void;
3359
3998
 
3360
- /** ⚡
3999
+ /** ⚡
3361
4000
  * Hace que q5 use todos los shaders por defecto.
3362
4001
  */
3363
- function reiniciarShaders(): void;
4002
+ function reiniciarShaders(): void;
3364
4003
 
3365
- /** ⚡
4004
+ /** ⚡
3366
4005
  * Crea un shader que q5 puede usar para dibujar fotogramas.
3367
4006
  *
3368
4007
  * `crearLienzo` debe ejecutarse antes de usar esta función.
@@ -3388,9 +4027,9 @@ declare global {
3388
4027
  * ratónPresionado ? reiniciarShaders() : shader(boxy);
3389
4028
  * };
3390
4029
  */
3391
- function crearShaderFotograma(codigo: string): GPUShaderModule;
4030
+ function crearShaderFotograma(codigo: string): GPUShaderModule;
3392
4031
 
3393
- /** ⚡
4032
+ /** ⚡
3394
4033
  * Crea un shader que q5 puede usar para dibujar imágenes.
3395
4034
  *
3396
4035
  * Usa esta función para personalizar una copia del
@@ -3417,9 +4056,9 @@ declare global {
3417
4056
  * imagen(logo, 0, 0, 180, 180);
3418
4057
  * };
3419
4058
  */
3420
- function crearShaderImagen(codigo: string): GPUShaderModule;
4059
+ function crearShaderImagen(codigo: string): GPUShaderModule;
3421
4060
 
3422
- /** ⚡
4061
+ /** ⚡
3423
4062
  * Crea un shader que q5 puede usar para dibujar fotogramas de video.
3424
4063
  *
3425
4064
  * Usa esta función para personalizar una copia del
@@ -3462,9 +4101,9 @@ declare global {
3462
4101
  * imagen(vid, -100, 150, 200, 150);
3463
4102
  * };
3464
4103
  */
3465
- function crearShaderVideo(codigo: string): GPUShaderModule;
4104
+ function crearShaderVideo(codigo: string): GPUShaderModule;
3466
4105
 
3467
- /** ⚡
4106
+ /** ⚡
3468
4107
  * Crea un shader que q5 puede usar para dibujar texto.
3469
4108
  *
3470
4109
  * Usa esta función para personalizar una copia del
@@ -3506,54 +4145,173 @@ declare global {
3506
4145
  * texto('Hello, World!', 0, 0);
3507
4146
  * };
3508
4147
  */
3509
- function crearShaderTexto(codigo: string): GPUShaderModule;
4148
+ function crearShaderTexto(codigo: string): GPUShaderModule;
3510
4149
 
3511
- // ⚙ advanced
4150
+ // ⚙ advanced
3512
4151
 
3513
- class Q5 {
4152
+ /**
4153
+ * Alias para `Q5`.
4154
+ */
4155
+ const q5: typeof Q5;
4156
+
4157
+ class Q5 {
3514
4158
 
3515
- /** ⚙
4159
+ /** ⚙
3516
4160
  * Funcion constructora. Crea una instancia de Q5.
3517
4161
  * @param {string | Function} [ambito]
3518
4162
  * @param {HTMLElement} [contenedor] elemento HTML dentro del cual se colocará el lienzo
3519
4163
  */
3520
- constructor(scope?: string | Function, parent?: HTMLElement);
3521
- static deshabilitarErroresAmigables: boolean;
4164
+ constructor(scope?: string | Function, parent?: HTMLElement);
3522
4165
 
3523
- static toleranteErrores: boolean;
4166
+ /**
4167
+ * Desactiva los mensajes de error amigables de q5.
4168
+ */
4169
+ disableFriendlyErrors(): void;
3524
4170
 
3525
- static soportaHDR: boolean;
4171
+ /**
4172
+ * Establecer en verdadero para mantener el bucle de dibujo después de un error.
4173
+ */
4174
+ errorTolerant(): void;
3526
4175
 
3527
- static opcionesLienzo: object;
4176
+ /**
4177
+ * Verdadero si el dispositivo soporta HDR (el espacio de color display-p3).
4178
+ */
4179
+ supportsHDR(): void;
3528
4180
 
3529
- static MAX_RECTS: number;
4181
+ /**
4182
+ * Establece los atributos de contexto de lienzo predeterminados utilizados para
4183
+ * lienzos recién creados y gráficos internos. Estas opciones son sobrescritas por
4184
+ * cualquier opción por lienzo que pases a `crearLienzo`.
4185
+ */
4186
+ canvasOptions(): void;
3530
4187
 
3531
- static MAX_ELIPSES: number;
4188
+ /**
4189
+ * Un límite de asignación de memoria WebGPU.
4190
+ *
4191
+ * El número máximo de matrices de transformación
4192
+ * que se pueden usar en una sola llamada de dibujo.
4193
+ */
4194
+ MAX_TRANSFORMS(): void;
3532
4195
 
3533
- static MAX_TRANSFORMACIONES: number;
4196
+ /**
4197
+ * Un límite de asignación de memoria WebGPU.
4198
+ *
4199
+ * El número máximo de rectángulos
4200
+ * (llamadas a `rect`, `cuadrado`, `cápsula`)
4201
+ * que se pueden dibujar en una sola llamada de dibujo.
4202
+ */
4203
+ static MAX_RECTS: number;
3534
4204
 
3535
- static MAX_CARACTERES: number;
4205
+ /**
4206
+ * Un límite de asignación de memoria WebGPU.
4207
+ *
4208
+ * El número máximo de elipses
4209
+ * (llamadas a `elipse`, `círculo`, y `arco`)
4210
+ * que se pueden dibujar en una sola llamada de dibujo.
4211
+ */
4212
+ MAX_ELLIPSES(): void;
3536
4213
 
3537
- static MAX_TEXTOS: number;
4214
+ /**
4215
+ * Un límite de asignación de memoria WebGPU.
4216
+ *
4217
+ * El número máximo de caracteres de texto
4218
+ * que se pueden dibujar en una sola llamada de dibujo.
4219
+ */
4220
+ MAX_CHARS(): void;
3538
4221
 
3539
- static WebGPU(): Q5;
4222
+ /**
4223
+ * Un límite de asignación de memoria WebGPU.
4224
+ *
4225
+ * El número máximo de llamadas separadas a `texto`
4226
+ * que se pueden dibujar en una sola llamada de dibujo.
4227
+ */
4228
+ MAX_TEXTS(): void;
3540
4229
 
3541
- static agregarHook(cicloVida: string, fn: Function): void;
4230
+ /**
4231
+ * Crea una nueva instancia de Q5 que usa el [renderizador WebGPU de q5](https://github.com/q5js/q5.js/wiki/q5-WebGPU-renderer).
4232
+ * @example
4233
+ * let q = await Q5.WebGPU('namespace');
4234
+ * q.crearLienzo(200, 100);
4235
+ *
4236
+ * q.dibujar = () => {
4237
+ * q.fondo(0.8);
4238
+ * q.círculo(q.ratónX, 0, 80);
4239
+ * };
4240
+ */
4241
+ static WebGPU(): Q5;
4242
+
4243
+ /** ⚙
4244
+ * Los addons pueden aumentar q5 con nueva funcionalidad agregando hooks,
4245
+ * funciones que se ejecutan en fases específicas del ciclo de vida de q5.
4246
+ *
4247
+ * Dentro de la función, `this` se refiere a la instancia de Q5.
4248
+ * @param {string} lifecycle init, presetup, postsetup, predraw, postdraw, o remove
4249
+ * @param {Function} fn La función que se ejecutará en la fase del ciclo de vida especificada.
4250
+ */
4251
+ addHook(): void;
4252
+
4253
+ /** ⚙
4254
+ * Forma compatible con p5.js v2 de registrar un addon con q5.
4255
+ * @param {Function} addon Una función que recibe `Q5`, `Q5.prototype`, y un objeto `lifecycles`.
4256
+ */
4257
+ registerAddon(): void;
4258
+
4259
+ /** ⚙
4260
+ * Un objeto que contiene los módulos de q5, funciones que se ejecutan cuando q5 carga.
4261
+ *
4262
+ * Cada función recibe dos parámetros de entrada:
4263
+ *
4264
+ * - la instancia de q5
4265
+ * - un proxy para editar la instancia de q5 y las propiedades correspondientes del ámbito global
4266
+ */
4267
+ modules(): void;
4268
+
4269
+ /** ⚙
4270
+ * La función de dibujo de q5 se ejecuta 60 veces por segundo por defecto.
4271
+ */
4272
+ draw(): void;
3542
4273
 
3543
- static registrarAddon(addon: Function): void;
4274
+ /**
4275
+ * Se ejecuta después de cada llamada a la función `dibujar` y procesos de addons de q5 post-dibujo, si los hay.
4276
+ *
4277
+ * Útil para agregar efectos de post-procesamiento cuando no es posible
4278
+ * hacerlo al final de la función `dibujar`, como cuando se usan
4279
+ * addons como p5play que dibujan automáticamente al lienzo después de que
4280
+ * la función `dibujar` se ejecuta.
4281
+ */
4282
+ postProcess(): void;
4283
+ static deshabilitarErroresAmigables: boolean;
4284
+
4285
+ static toleranteErrores: boolean;
4286
+
4287
+ static soportaHDR: boolean;
4288
+
4289
+ static opcionesLienzo: object;
4290
+
4291
+ static MAX_ELIPSES: number;
4292
+
4293
+ static MAX_TRANSFORMACIONES: number;
3544
4294
 
3545
- static modulos: object;
4295
+ static MAX_CARACTERES: number;
3546
4296
 
3547
- dibujar(): void;
4297
+ static MAX_TEXTOS: number;
3548
4298
 
3549
- postProcesar(): void;
4299
+ static agregarHook(cicloVida: string, fn: Function): void;
3550
4300
 
3551
- actualizar(): void; //-
4301
+ static registrarAddon(addon: Function): void;
3552
4302
 
3553
- dibujarFotograma(): void; //-
4303
+ static modulos: object;
3554
4304
 
3555
- static Imagen: {
3556
- new (w: number, h: number, opt?: any): Q5.Imagen;
4305
+ dibujar(): void;
4306
+
4307
+ postProcesar(): void;
4308
+
4309
+ actualizar(): void; //-
4310
+
4311
+ dibujarFotograma(): void; //-
4312
+
4313
+ static Imagen: {
4314
+ new (w: number, h: number, opt?: any): Q5.Imagen;
3557
4315
  };
3558
4316
 
3559
4317
  }
@@ -3565,8 +4323,6 @@ declare global {
3565
4323
  }
3566
4324
  }
3567
4325
 
3568
- const q5: typeof Q5;
3569
-
3570
4326
  }
3571
4327
 
3572
4328
  export {};