q5 3.7.7 → 3.8.1

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.
@@ -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
  *
@@ -537,7 +537,7 @@ declare global {
537
537
  /** 🌆
538
538
  * Array de datos de color de píxeles de un lienzo o imagen.
539
539
  *
540
- * Vacío por defecto, poblar ejecutando `cargarPíxeles`.
540
+ * Vacío por defecto, obtener el dato ejecutando `cargarPíxeles`.
541
541
  *
542
542
  * Cada píxel está representado por cuatro valores consecutivos en el array,
543
543
  * correspondientes a sus canales rojo, verde, azul y alfa.
@@ -1371,40 +1371,306 @@ declare global {
1371
1371
  // 🎨 color
1372
1372
 
1373
1373
  /** 🎨
1374
- * Dibuja sobre todo el lienzo con un color o una imagen.
1374
+ * Crea un nuevo objeto `Color`, el cual es útil principalmente para almacenar
1375
+ * un color que tu sketch reutilizará o modificará más tarde.
1375
1376
  *
1376
- * Al igual que la función [`color`](https://q5js.org/learn/#color),
1377
- * esta función puede aceptar colores en una amplia gama de formatos:
1378
- * cadena de color CSS, valor de escala de grises y valores de componentes de color.
1379
- * @param {Color | Q5.Image} relleno un color o una imagen para dibujar
1377
+ * Con el modo de color por defecto, RGB, los colores tienen componentes `r`/`red` (rojo), `g`/`green` (verde),
1378
+ * `b`/`blue` (azul), y `a`/`alpha` (alfa).
1379
+ *
1380
+ * Las funciones [`relleno`](https://q5js.org/learn/#fill), [`trazo`](https://q5js.org/learn/#stroke), y [`fondo`](https://q5js.org/learn/#background)
1381
+ * aceptan la misma amplia gama de representaciones de color que esta función.
1382
+ *
1383
+ * El formato de color por defecto es "entero" ("integer"),
1384
+ * así que establece componentes a valores entre 0 y 255.
1385
+ *
1386
+ * Aquí hay algunos ejemplos de uso válido:
1387
+ *
1388
+ * - `color(255)` (escala de grises)
1389
+ * - `color(255, 200)` (escala de grises, alfa)
1390
+ * - `color(255, 0, 0)` (r, g, b)
1391
+ * - `color(255, 0, 0, 10)` (r, g, b, a)
1392
+ * - `color('red')` (nombre de color)
1393
+ * - `color('#ff0000')` (color hex)
1394
+ * - `color([255, 0, 0])` (componentes de color)
1395
+ * @param {string | number | Color | number[]} c0 color o primer componente de color
1396
+ * @param {number} [c1] segundo componente de color
1397
+ * @param {number} [c2] tercer componente de color
1398
+ * @param {number} [c3] cuarto componente de color (alfa)
1399
+ * @returns {Color} un nuevo objeto `Color`
1400
+ * @example
1401
+ * crearLienzo(200);
1402
+ * rect(0, 0, 100, 200);
1403
+ *
1404
+ * // ( r, g, b, a)
1405
+ * let botella = color(90, 100, 255, 100);
1406
+ * relleno(botella);
1407
+ * trazo(botella);
1408
+ * grosorTrazo(30);
1409
+ * círculo(100, 100, 155);
1410
+ * @example
1411
+ * crearLienzo(200);
1412
+ * // (gris, alfa)
1413
+ * let c = color(200, 50);
1414
+ *
1415
+ * function dibujar() {
1416
+ * fondo(c);
1417
+ * círculo(ratónX, ratónY, 50);
1418
+ * c.g = (c.g + 1) % 256;
1419
+ * }
1420
+ * @example
1421
+ * crearLienzo(200);
1422
+ *
1423
+ * // (r, g, b, a)
1424
+ * let c = color(0, 255, 255, 50);
1425
+ *
1426
+ * function dibujar() {
1427
+ * relleno(c);
1428
+ * círculo(ratónX, ratónY, 50);
1429
+ * }
1380
1430
  */
1381
- function fondo(relleno: Color | Q5.Imagen): void;
1382
-
1383
1431
  function color(c0: string | number | Color | number[], c1?: number, c2?: number, c3?: number): Color;
1384
1432
 
1433
+ /** 🎨
1434
+ * Establece el modo de color para el sketch, lo cual cambia cómo se
1435
+ * interpretan y muestran los colores.
1436
+ *
1437
+ * La gama de color es 'display-p3' por defecto, si el dispositivo soporta HDR.
1438
+ *
1439
+ * El modo de color por defecto es RGB en formato entero legado.
1440
+ * @param {'rgb' | 'oklch' | 'hsl' | 'hsb'} modo modo de color
1441
+ * @param {1 | 255} formato formato de color (1 para flotante, 255 para entero)
1442
+ * @param {'srgb' | 'display-p3'} [gama] gama de color
1443
+ * @example
1444
+ * crearLienzo(200);
1445
+ *
1446
+ * modoColor(RGB, 1);
1447
+ * relleno(1, 0, 0);
1448
+ * rect(0, 0, 66, 200);
1449
+ * relleno(0, 1, 0);
1450
+ * rect(66, 0, 67, 200);
1451
+ * relleno(0, 0, 1);
1452
+ * rect(133, 0, 67, 200);
1453
+ * @example
1454
+ * crearLienzo(200);
1455
+ *
1456
+ * modoColor(OKLCH);
1457
+ *
1458
+ * relleno(0.25, 0.15, 0);
1459
+ * rect(0, 0, 100, 200);
1460
+ *
1461
+ * relleno(0.75, 0.15, 0);
1462
+ * rect(100, 0, 100, 200);
1463
+ */
1385
1464
  function modoColor(modo: 'rgb' | 'oklch', formato: 1 | 255, gama: 'srgb' | 'display-p3'): void;
1386
1465
 
1466
+ /** 🎨
1467
+ * Los colores RGB tienen componentes `r`/`red` (rojo), `g`/`green` (verde), `b`/`blue` (azul),
1468
+ * y `a`/`alpha` (alfa).
1469
+ *
1470
+ * Por defecto cuando un lienzo está usando el espacio de color HDR "display-p3",
1471
+ * los colores rgb son mapeados a la gama completa P3, incluso cuando usan el
1472
+ * formato entero legado 0-255.
1473
+ * @example
1474
+ * crearLienzo(200, 100);
1475
+ *
1476
+ * modoColor(RGB);
1477
+ *
1478
+ * fondo(255, 0, 0);
1479
+ */
1387
1480
  const RGB: 'rgb';
1388
1481
 
1482
+ /** 🎨
1483
+ * Los colores OKLCH tienen componentes `l`/`lightness` (luminosidad), `c`/`chroma` (croma),
1484
+ * `h`/`hue` (tono), y `a`/`alpha` (alfa). Es más intuitivo para los humanos
1485
+ * trabajar con color en estos términos que con RGB.
1486
+ *
1487
+ * OKLCH es perceptualmente uniforme, lo que significa que los colores con la
1488
+ * misma luminosidad y croma (colorido) parecerán tener
1489
+ * igual luminancia, independientemente del tono.
1490
+ *
1491
+ * OKLCH puede representar con precisión todos los colores visibles para el
1492
+ * ojo humano, a diferencia de muchos otros espacios de color que están limitados
1493
+ * a una gama. Los valores máximos de luminosidad y croma que
1494
+ * corresponden a los límites de la gama sRGB o P3 varían dependiendo del
1495
+ * tono. Los colores que están fuera de la gama serán recortados al
1496
+ * color dentro de la gama más cercano.
1497
+ *
1498
+ * Usa el [selector de color OKLCH](https://oklch.com) para encontrar
1499
+ * colores dentro de la gama.
1500
+ *
1501
+ * - `lightness`: 0 a 1
1502
+ * - `chroma`: 0 a ~0.4
1503
+ * - `hue`: 0 a 360
1504
+ * - `alpha`: 0 a 1
1505
+ * @example
1506
+ * crearLienzo(200, 100);
1507
+ *
1508
+ * modoColor(OKLCH);
1509
+ *
1510
+ * fondo(0.64, 0.3, 30);
1511
+ * @example
1512
+ * crearLienzo(200);
1513
+ * modoColor(OKLCH);
1514
+ *
1515
+ * function dibujar() {
1516
+ * fondo(0.7, 0.16, cuadroActual % 360);
1517
+ * }
1518
+ */
1389
1519
  const OKLCH: 'oklch';
1390
1520
 
1521
+ /** 🎨
1522
+ * Los colores HSL tienen componentes `h`/`hue` (tono), `s`/`saturation` (saturación),
1523
+ * `l`/`lightness` (luminosidad), y `a`/`alpha` (alfa).
1524
+ *
1525
+ * HSL fue creado en la década de 1970 para aproximar la percepción humana
1526
+ * del color, intercambiando precisión por cálculos más simples. No es
1527
+ * perceptualmente uniforme, por lo que colores con la misma luminosidad
1528
+ * pueden parecer más oscuros o más claros, dependiendo de su tono
1529
+ * y saturación. Sin embargo, los valores de luminosidad y saturación que
1530
+ * corresponden a los límites de la gama siempre son 100, independientemente del
1531
+ * tono. Esto puede hacer que HSL sea más fácil de trabajar que OKLCH.
1532
+ *
1533
+ * Los colores HSL son mapeados a la gama completa P3 cuando
1534
+ * se usa el espacio de color "display-p3".
1535
+ *
1536
+ * - `hue`: 0 a 360
1537
+ * - `saturation`: 0 a 100
1538
+ * - `lightness`: 0 a 100
1539
+ * - `alpha`: 0 a 1
1540
+ * @example
1541
+ * crearLienzo(200, 100);
1542
+ *
1543
+ * modoColor(HSL);
1544
+ *
1545
+ * fondo(0, 100, 50);
1546
+ * @example
1547
+ * crearLienzo(200, 220);
1548
+ * sinTrazo();
1549
+ *
1550
+ * modoColor(HSL);
1551
+ * for (let h = 0; h < 360; h += 10) {
1552
+ * for (let l = 0; l <= 100; l += 10) {
1553
+ * relleno(h, 100, l);
1554
+ * rect(h * (11 / 20), l * 2, 6, 20);
1555
+ * }
1556
+ * }
1557
+ */
1391
1558
  const HSL: 'hsl';
1392
1559
 
1560
+ /** 🎨
1561
+ * Los colores HSB tienen componentes `h`/`hue` (tono), `s`/`saturation` (saturación),
1562
+ * `b`/`brightness` (brillo) (también conocido como `v`/`value` (valor)), y `a`/`alpha` (alfa).
1563
+ *
1564
+ * HSB es similar a HSL, pero en lugar de luminosidad
1565
+ * (negro a blanco), usa brillo (negro a
1566
+ * color completo). Para producir blanco, establece el brillo
1567
+ * a 100 y la saturación a 0.
1568
+ *
1569
+ * - `hue`: 0 a 360
1570
+ * - `saturation`: 0 a 100
1571
+ * - `brightness`: 0 a 100
1572
+ * - `alpha`: 0 a 1
1573
+ * @example
1574
+ * crearLienzo(200, 100);
1575
+ *
1576
+ * modoColor(HSB);
1577
+ *
1578
+ * fondo(0, 100, 100);
1579
+ * @example
1580
+ * crearLienzo(200, 220);
1581
+ * sinTrazo();
1582
+ *
1583
+ * modoColor(HSB);
1584
+ * for (let h = 0; h < 360; h += 10) {
1585
+ * for (let b = 0; b <= 100; b += 10) {
1586
+ * relleno(h, 100, b);
1587
+ * rect(h * (11 / 20), b * 2, 6, 20);
1588
+ * }
1589
+ * }
1590
+ */
1393
1591
  const HSB: 'hsb';
1394
1592
 
1593
+ /** 🎨
1594
+ * Limita la gama de color al espacio de color sRGB.
1595
+ *
1596
+ * Si tu pantalla es capaz de HDR, nota que el rojo completo aparece
1597
+ * menos saturado y oscuro en este ejemplo, como lo haría en
1598
+ * una pantalla SDR.
1599
+ * @example
1600
+ * crearLienzo(200, 100);
1601
+ *
1602
+ * modoColor(RGB, 255, SRGB);
1603
+ *
1604
+ * fondo(255, 0, 0);
1605
+ */
1395
1606
  const SRGB: 'srgb';
1396
1607
 
1608
+ /** 🎨
1609
+ * Expande la gama de color al espacio de color P3.
1610
+ *
1611
+ * Esta es la gama de color por defecto en dispositivos que soportan HDR.
1612
+ *
1613
+ * Si tu pantalla es capaz de HDR, nota que el rojo completo aparece
1614
+ * totalmente saturado y brillante en el siguiente ejemplo.
1615
+ * @example
1616
+ * crearLienzo(200, 100);
1617
+ *
1618
+ * modoColor(RGB, 255, DISPLAY_P3);
1619
+ *
1620
+ * fondo(255, 0, 0);
1621
+ */
1397
1622
  const DISPLAY_P3: 'display-p3';
1398
1623
 
1624
+ /** 🎨
1625
+ * Dibuja sobre todo el lienzo con un color o una imagen.
1626
+ *
1627
+ * Al igual que la función [`color`](https://q5js.org/learn/#color),
1628
+ * esta función puede aceptar colores en una amplia gama de formatos:
1629
+ * cadena de color CSS, valor de escala de grises y valores de componentes de color.
1630
+ * @param {Color | Q5.Image} relleno un color o una imagen para dibujar
1631
+ * @example
1632
+ * crearLienzo(200, 100);
1633
+ * fondo('crimson');
1634
+ * @example
1635
+ * function dibujar() {
1636
+ * fondo(128, 32);
1637
+ * círculo(ratónX, ratónY, 20);
1638
+ * }
1639
+ */
1640
+ function fondo(relleno: Color | Q5.Imagen): void;
1641
+
1399
1642
  class Color {
1643
+
1644
+ /** 🎨
1645
+ * Este constructor acepta estrictamente 4 números, que son los componentes del color.
1646
+ *
1647
+ * Usa la función `color` para mayor flexibilidad, ejecuta
1648
+ * este constructor internamente.
1649
+ *
1650
+ * `Color` no es realmente una clase en si misma, es una referencia a una
1651
+ * clase de color Q5 basada en el modo de color, formato y gama.
1652
+ */
1400
1653
  constructor(c0: number, c1: number, c2: number, c3: number);
1401
1654
 
1655
+ /** 🎨
1656
+ * Comprueba si este color es exactamente igual a otro color.
1657
+ */
1402
1658
  igual(otro: Color): boolean;
1403
1659
 
1660
+ /** 🎨
1661
+ * Comprueba si el color es el mismo que otro color,
1662
+ * ignorando sus valores alfa.
1663
+ */
1404
1664
  esMismoColor(otro: Color): boolean;
1405
1665
 
1666
+ /** 🎨
1667
+ * Produce una representación de cadena de color CSS.
1668
+ */
1406
1669
  toString(): string;
1407
1670
 
1671
+ /** 🎨
1672
+ * Un array de los componentes del color.
1673
+ */
1408
1674
  niveles: number[];
1409
1675
  }
1410
1676
 
@@ -1876,128 +2142,334 @@ declare global {
1876
2142
  * @example
1877
2143
  * crearLienzo(200);
1878
2144
  *
1879
- * guardar();
2145
+ * apilar();
1880
2146
  * relleno('blue');
1881
2147
  * trasladar(100, 100);
1882
2148
  * círculo(0, 0, 80);
1883
- * recuperar();
2149
+ * desapilar();
1884
2150
  *
1885
2151
  * cuadrado(0, 0, 50);
1886
2152
  */
1887
- function guardar(datos?: object, nombreArchivo?: string): void;
2153
+ function apilar(): void;
1888
2154
 
1889
2155
  /** 🦋
1890
2156
  * Restaura la configuración de estilo de dibujo y transformaciones guardadas previamente.
1891
2157
  * @example
1892
2158
  * crearLienzo(200);
1893
2159
  *
1894
- * guardar();
2160
+ * apilar();
1895
2161
  * relleno('blue');
1896
2162
  * trasladar(100, 100);
1897
2163
  * círculo(0, 0, 80);
1898
- * recuperar();
2164
+ * desapilar();
1899
2165
  *
1900
2166
  * cuadrado(0, 0, 50);
1901
2167
  */
2168
+ function desapilar(): void;
2169
+
1902
2170
  function recuperar(): void;
1903
2171
 
1904
2172
  // 💻 display
1905
2173
 
1906
2174
  /** 💻
1907
- * El ancho de la ventana (cantidad de píxeles). Atajo para `window.innerWidth`.
2175
+ * Personaliza cómo se presenta tu lienzo.
2176
+ * @param {string} modo NORMAL, CENTRO, o MAXIMIZADO
2177
+ * @param {string} calidadRenderizado SUAVE o PIXELADO
2178
+ * @param {number} escala también se puede dar como una cadena (por ejemplo "x2")
2179
+ * @example
2180
+ * crearLienzo(50, 25);
2181
+ *
2182
+ * modoVisualización(CENTRO, PIXELADO, 4);
2183
+ *
2184
+ * círculo(25, 12.5, 16);
1908
2185
  */
1909
- var anchoVentana: number;
2186
+ function modoVisualización(): void;
1910
2187
 
1911
2188
  /** 💻
1912
- * El alto de la ventana (cantidad de píxeles). Atajo para `window.innerHeight`.
2189
+ * Una configuración de `modoVisualización`.
2190
+ *
2191
+ * El lienzo se escalará para llenar el elemento padre,
2192
+ * con bandas negras si es necesario para preservar su relación de aspecto.
1913
2193
  */
1914
- var altoVentana: number;
2194
+ const MAXIMIZADO: 'maxed';
1915
2195
 
1916
2196
  /** 💻
1917
- * Número del cuadro actual, es decir, la cantidad de cuadros que se han dibujado desde que se inició el sketch.
2197
+ * Una calidad de renderizado de `modoVisualización`.
2198
+ *
2199
+ * Se usa escalado suave si el lienzo se escala.
1918
2200
  */
1919
- var cuadroActual: number;
2201
+ const SUAVE: 'smooth';
1920
2202
 
1921
2203
  /** 💻
1922
- * Detiene el bucle de dibujo.
2204
+ * Una calidad de renderizado de `modoVisualización`.
2205
+ *
2206
+ * Los píxeles se renderizan como cuadrados nítidos si el lienzo se escala.
1923
2207
  */
1924
- function pausar(): void;
2208
+ const PIXELADO: 'pixelated';
1925
2209
 
1926
2210
  /** 💻
1927
- * Dibuja el lienzo `n` veces. Si no recibe parametro, se dibuja una sola vez. Útil para controlar animaciones con el bucle pausado.
1928
- * @param {number} [n] cantidad de veces que se volverá a dibujar el lienzo, por defecto es 1
2211
+ * Habilita o deshabilita el modo de pantalla completa.
2212
+ * @param {boolean} [v] booleano indicando si habilitar o deshabilitar el modo de pantalla completa
1929
2213
  */
1930
- function redibujar(n?: number): void;
2214
+ function pantallaCompleta(v?: boolean): void;
1931
2215
 
1932
2216
  /** 💻
1933
- * Vuelve a activar el bucle de dibujo en caso de que estuviera pausado.
2217
+ * El ancho de la ventana.
2218
+ * @example
2219
+ * function dibujar() {
2220
+ * fondo(200);
2221
+ * tamañoTexto(64);
2222
+ * alineaciónTexto(CENTRO, CENTRO);
2223
+ * texto(anchoVentana, 100, 100);
2224
+ * }
1934
2225
  */
1935
- function reanudar(): void;
2226
+ var anchoVentana: number;
1936
2227
 
1937
2228
  /** 💻
1938
- * 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).
1939
- *
1940
- * 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).
1941
- * @param `hz` {number} [frecuencia] cantidad ideal de cuadros a dibujar en un segundo, por defecto es 60
1942
- * @returns {number} frecuencia real del bucle en el último segundo
2229
+ * El alto de la ventana.
2230
+ * @example
2231
+ * function dibujar() {
2232
+ * fondo(200);
2233
+ * tamañoTexto(64);
2234
+ * alineaciónTexto(CENTRO, CENTRO);
2235
+ * texto(altoVentana, 100, 100);
2236
+ * }
1943
2237
  */
1944
- function frecuenciaRefresco(hertz?: number): number;
2238
+ var altoVentana: number;
1945
2239
 
1946
2240
  /** 💻
1947
- * Retorna la cantidad ideal de cuadros que se intentan dibujar por segundo.
2241
+ * El ancho del lienzo.
1948
2242
  */
1949
- function frecuenciaIdeal(): void;
2243
+ var ancho: number;
1950
2244
 
1951
2245
  /** 💻
1952
- * Retorna la cantidad maxima de cuadros que se podrían estar dibujando en cada segundo.
1953
- *
1954
- * Es un valor teórico que depende del estado del dispositivo. Para un mejor análisis del rendimiento usar las herramientas del navegador (DevTools).
1955
- * @returns {number} cantidad máxima teorica de cuadros por segundo
2246
+ * El alto del lienzo.
2247
+ */
2248
+ var alto: number;
2249
+
2250
+ /** 💻
2251
+ * La mitad del ancho del lienzo.
1956
2252
  */
1957
- function frecuenciaMaxima(): void;
2253
+ var medioAncho: number;
1958
2254
 
1959
2255
  /** 💻
1960
- * 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.
1961
- *
1962
- * Ú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.
2256
+ * La mitad del alto del lienzo.
1963
2257
  */
1964
- function retocarDibujo(): void;
2258
+ var medioAlto: number;
1965
2259
 
1966
2260
  /** 💻
1967
- * 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.
2261
+ * El elemento lienzo asociado con la instancia Q5.
1968
2262
  *
1969
- * Ú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.
2263
+ * 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.
1970
2264
  */
1971
- function ultimoTiempo(): void;
1972
-
1973
- const MAXIMIZADO: 'maxed';
1974
-
1975
- const SUAVE: 'smooth';
1976
-
1977
- const PIXELADO: 'pixelated';
1978
-
1979
- function pantallaCompleta(v?: boolean): void;
2265
+ var lienzo: HTMLCanvasElement;
1980
2266
 
1981
- var ancho: number;
2267
+ /** 💻
2268
+ * Redimensiona el lienzo al ancho y alto especificados.
2269
+ * @param {number} w ancho del lienzo
2270
+ * @param {number} h alto del lienzo
2271
+ * @example
2272
+ * crearLienzo(200, 100);
2273
+ *
2274
+ * function dibujar() {
2275
+ * fondo(200);
2276
+ * }
2277
+ *
2278
+ * function alPresionarRatón() {
2279
+ * redimensionarLienzo(200, 200);
2280
+ * }
2281
+ */
2282
+ function redimensionarLienzo(w: number, h: number): void;
1982
2283
 
1983
- var alto: number;
2284
+ /** 💻
2285
+ * El número de cuadros que se han mostrado desde que comenzó el programa.
2286
+ * @example
2287
+ * function dibujar() {
2288
+ * fondo(200);
2289
+ * tamañoTexto(64);
2290
+ * texto(cuadroActual, 8, 120);
2291
+ * }
2292
+ */
2293
+ var cuadroActual: number;
1984
2294
 
1985
- var medioAncho: number;
2295
+ /** 💻
2296
+ * Detiene el bucle de dibujo.
2297
+ * @example
2298
+ * function dibujar() {
2299
+ * círculo(cuadroActual * 5, 100, 80);
2300
+ * pausar();
2301
+ * }
2302
+ */
2303
+ function pausar(): void;
1986
2304
 
1987
- var medioAlto: number;
2305
+ /** 💻
2306
+ * Redibuja el lienzo n veces. Si no se proporciona ningún parámetro de entrada,
2307
+ * llama a la función de dibujo una vez.
2308
+ *
2309
+ * Esta es una función asíncrona.
2310
+ * @param {number} [n] número de veces para redibujar el lienzo, por defecto es 1
2311
+ * @example
2312
+ * crearLienzo(200);
2313
+ * pausar();
2314
+ *
2315
+ * function dibujar() {
2316
+ * círculo(cuadroActual * 5, 100, 80);
2317
+ * }
2318
+ * function alPresionarRatón() {
2319
+ * redibujar(10);
2320
+ * }
2321
+ */
2322
+ function redibujar(n?: number): void;
1988
2323
 
1989
- var lienzo: HTMLCanvasElement;
2324
+ /** 💻
2325
+ * Inicia el bucle de dibujo de nuevo si estaba detenido.
2326
+ * @example
2327
+ * crearLienzo(200);
2328
+ * pausar();
2329
+ *
2330
+ * function dibujar() {
2331
+ * círculo(cuadroActual * 5, 100, 80);
2332
+ * }
2333
+ * function alPresionarRatón() {
2334
+ * reanudar();
2335
+ * }
2336
+ */
2337
+ function reanudar(): void;
1990
2338
 
1991
- function redimensionarLienzo(w: number, h: number): void;
2339
+ /** 💻
2340
+ * Establece la frecuencia de fotogramas objetivo u obtiene una aproximación de la
2341
+ * frecuencia de fotogramas actual del sketch.
2342
+ *
2343
+ * Incluso cuando el sketch se está ejecutando a una frecuencia de fotogramas consistente,
2344
+ * el valor actual de la frecuencia de fotogramas fluctuará. Usa las herramientas de desarrollador
2345
+ * de tu navegador web para un análisis de rendimiento más preciso.
2346
+ * @param {number} [hertz] frecuencia de fotogramas objetivo, por defecto es 60
2347
+ * @returns {number} frecuencia de fotogramas actual
2348
+ * @example
2349
+ * function dibujar() {
2350
+ * fondo(200);
2351
+ *
2352
+ * if (ratónPresionado) frecuenciaRefresco(10);
2353
+ * else frecuenciaRefresco(60);
2354
+ *
2355
+ * círculo(cuadroActual % 200, 100, 80);
2356
+ * }
2357
+ * @example
2358
+ * function dibujar() {
2359
+ * fondo(200);
2360
+ * tamañoTexto(64);
2361
+ * texto(redondear(frecuenciaRefresco()), 65, 120);
2362
+ * }
2363
+ */
2364
+ function frecuenciaRefresco(hertz?: number): number;
1992
2365
 
2366
+ /** 💻
2367
+ * La frecuencia de fotogramas deseada del sketch.
2368
+ * @returns {number} frecuencia de fotogramas objetivo
2369
+ * @example
2370
+ * function dibujar() {
2371
+ * fondo(200);
2372
+ * tamañoTexto(64);
2373
+ *
2374
+ * texto(obtenerTasaFotogramasObjetivo(), 65, 120);
2375
+ * }
2376
+ */
1993
2377
  function obtenerTasaFotogramasObjetivo(): number;
1994
2378
 
2379
+ /** 💻
2380
+ * Obtiene los FPS actuales, en términos de cuántos fotogramas podrían generarse
2381
+ * en un segundo, lo cual puede ser más alto que la frecuencia de fotogramas objetivo.
2382
+ *
2383
+ * Usa las herramientas de desarrollador de tu navegador web para un análisis
2384
+ * de rendimiento más profundo.
2385
+ * @returns {number} fotogramas por segundo
2386
+ * @example
2387
+ * function dibujar() {
2388
+ * fondo(200);
2389
+ * frecuenciaRefresco(1);
2390
+ * tamañoTexto(64);
2391
+ *
2392
+ * texto(obtenerFPS(), 8, 120);
2393
+ * }
2394
+ */
1995
2395
  function obtenerFPS(): number;
1996
2396
 
2397
+ /** 💻
2398
+ * Se ejecuta después de cada llamada a la función `dibujar` y procesos de addons de q5 post-dibujo, si los hay.
2399
+ *
2400
+ * Útil para añadir efectos de post-procesamiento cuando no es posible
2401
+ * hacerlo al final de la función `dibujar`, como cuando se usan
2402
+ * addons como p5play que auto-dibujan al lienzo después de que
2403
+ * la función `dibujar` se ejecuta.
2404
+ * @example
2405
+ * function dibujar() {
2406
+ * fondo(200);
2407
+ * círculo(cuadroActual % 200, 100, 80);
2408
+ * }
2409
+ *
2410
+ * function postProcesar() {
2411
+ * filtro(INVERTIR);
2412
+ * }
2413
+ */
1997
2414
  function postProcesar(): void;
1998
2415
 
2416
+ /** 💻
2417
+ * Establece la densidad de píxeles del lienzo.
2418
+ * @param {number} v valor de densidad de píxeles
2419
+ * @returns {number} densidad de píxeles
2420
+ * @example
2421
+ * crearLienzo(200, 100);
2422
+ * fondo(200);
2423
+ * densidadPíxeles(1);
2424
+ * círculo(100, 50, 80);
2425
+ */
2426
+ function densidadPíxeles(): void;
2427
+
2428
+ /** 💻
2429
+ * Devuelve la densidad de visualización actual.
2430
+ *
2431
+ * En la mayoría de pantallas modernas, este valor será 2 o 3.
2432
+ * @returns {number} densidad de visualización
2433
+ * @example
2434
+ * crearLienzo(200, 100);
2435
+ * fondo(200);
2436
+ * tamañoTexto(64);
2437
+ * texto(densidadVisualización(), 10, 20);
2438
+ */
2439
+ function densidadVisualización(): void;
2440
+
2441
+ /** 💻
2442
+ * El tiempo pasado desde que se dibujó el último fotograma.
2443
+ *
2444
+ * Con la frecuencia de fotogramas por defecto de 60, el tiempo delta será
2445
+ * aproximadamente 16.6
2446
+ *
2447
+ * Se puede usar para mantener movimientos atados al tiempo real si el sketch
2448
+ * a menudo cae por debajo de la frecuencia de fotogramas objetivo. Aunque si las frecuencias
2449
+ * de fotogramas son consistentemente bajas, considera reducir la frecuencia
2450
+ * de fotogramas objetivo.
2451
+ * @example
2452
+ * function dibujar() {
2453
+ * fondo(200);
2454
+ * texto(deltaTiempo, 60, 106);
2455
+ * }
2456
+ * @example
2457
+ * let x = 0;
2458
+ * function dibujar() {
2459
+ * fondo(200);
2460
+ * // simular caídas de frecuencia de fotogramas
2461
+ * frecuenciaRefresco(aleatorio(30, 60));
2462
+ *
2463
+ * x += deltaTiempo * 0.2;
2464
+ * círculo(x % 200, 100, 20);
2465
+ * }
2466
+ */
1999
2467
  var deltaTiempo: number;
2000
2468
 
2469
+ /** 💻
2470
+ * El contexto de renderizado 2D para el lienzo, si se usa el renderizador
2471
+ * Canvas2D.
2472
+ */
2001
2473
  var contextoDibujo: CanvasRenderingContext2D;
2002
2474
 
2003
2475
  // 🧮 math
@@ -2548,7 +3020,7 @@ declare global {
2548
3020
  * @example
2549
3021
  * crearLienzo(200, 100);
2550
3022
  *
2551
- * let btn = crearBotón('Click me!');
3023
+ * let btn = crearBotón('¡Click aqui!');
2552
3024
  *
2553
3025
  * btn.addEventListener('click', () => {
2554
3026
  * fondo(aleatorio(100, 255));
@@ -2567,7 +3039,7 @@ declare global {
2567
3039
  * @example
2568
3040
  * crearLienzo(200, 100);
2569
3041
  *
2570
- * let casilla = crearCasilla('Check me!');
3042
+ * let casilla = crearCasilla('¡Marca aquí!');
2571
3043
  * casilla.label.style.color = 'lime';
2572
3044
  *
2573
3045
  * casilla.addEventListener('input', () => {
@@ -2585,11 +3057,11 @@ declare global {
2585
3057
  * @example
2586
3058
  * crearLienzo(200, 100);
2587
3059
  *
2588
- * let selector = crearSelectorColor();
2589
- * selector.value = '#fd7575';
3060
+ * let selección = crearSelectorColor();
3061
+ * selección.value = '#fd7575';
2590
3062
  *
2591
3063
  * function dibujar() {
2592
- * fondo(selector.value);
3064
+ * fondo(selección.value);
2593
3065
  * }
2594
3066
  */
2595
3067
  function crearSelectorColor(valor?: string): HTMLInputElement;
@@ -2621,7 +3093,7 @@ declare global {
2621
3093
  * tamañoTexto(64);
2622
3094
  *
2623
3095
  * let entrada = crearEntrada();
2624
- * entrada.placeholder = 'Type here!';
3096
+ * entrada.placeholder = '¡Teclea aquí!';
2625
3097
  * entrada.size(200, 32);
2626
3098
  *
2627
3099
  * entrada.addEventListener('input', () => {
@@ -2638,7 +3110,7 @@ declare global {
2638
3110
  * crearLienzo(200, 50);
2639
3111
  * fondo('coral');
2640
3112
  *
2641
- * let p = crearP('Hello, world!');
3113
+ * let p = crearP('¡Hola, mundo!');
2642
3114
  * p.style.color = 'pink';
2643
3115
  */
2644
3116
  function crearP(contenido?: string): HTMLParagraphElement;
@@ -2655,7 +3127,7 @@ declare global {
2655
3127
  * crearLienzo(200, 160);
2656
3128
  *
2657
3129
  * let radio = crearOpciónes();
2658
- * radio.option('square', '1').option('circle', '2');
3130
+ * radio.option('cuadrado', '1').option('círculo', '2');
2659
3131
  *
2660
3132
  * function dibujar() {
2661
3133
  * fondo(200);
@@ -2682,7 +3154,7 @@ declare global {
2682
3154
  * @example
2683
3155
  * crearLienzo(200, 100);
2684
3156
  *
2685
- * let sel = crearSelección('Select a color');
3157
+ * let sel = crearSelección('Seleccionar un opcion');
2686
3158
  * sel.option('Red', '#f55').option('Green', '#5f5');
2687
3159
  *
2688
3160
  * sel.addEventListener('change', () => {
@@ -3055,63 +3527,234 @@ declare global {
3055
3527
  */
3056
3528
  function crearVector(): void;
3057
3529
 
3058
- /** ↗
3059
- * 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()`.
3060
- * @param {number} [x] componente x del vector
3061
- * @param {number} [y] componente y del vector
3062
- * @param {number} [z] componente z del vector
3063
- * @param {number} [w] componente w del vector
3064
- * @returns {Vector} este vector
3065
- * @returns {Vector} copia del vector
3066
- * @param {number | Vector} x componente x del vector o Vector a sumar
3067
- * @param {number} [y] componente y del vector
3068
- * @param {number} [z] componente z del vector
3069
- * @returns {Vector} este vector
3070
- * @param {number | Vector} x componente x del vector o Vector a restar
3071
- * @param {number} [y] componente y del vector
3072
- * @param {number} [z] componente z del vector
3073
- * @returns {Vector} este vector
3074
- * @param {number} n escalar por el cual multiplicar
3075
- * @returns {Vector} este vector
3076
- * @param {number} n escalar por el cual dividir
3077
- * @returns {Vector} este vector
3078
- * @returns {number} magnitud del vector
3079
- * @returns {number} magnitud del vector al cuadrado
3080
- * @param {Vector} v vector con el cual hacer producto punto
3081
- * @returns {number} producto punto
3082
- * @param {Vector} v vector con el cual hacer producto cruz
3083
- * @returns {Vector} producto cruz
3084
- * @param {Vector} v vector al cual calcular distancia
3085
- * @returns {number} distancia
3086
- * @returns {Vector} este vector
3087
- * @param {number} max magnitud máxima
3088
- * @returns {Vector} este vector
3089
- * @param {number} len nueva longitud para este vector
3090
- * @returns {Vector} este vector
3091
- * @returns {number} el ángulo de rotación
3092
- * @param {number} ángulo ángulo de rotación
3093
- * @returns {Vector} este vector
3094
- * @param {Vector} v el vector x, y, z
3095
- * @returns {number} el ángulo entre
3096
- * @param {Vector} v el vector x, y, z
3097
- * @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
3098
- * @returns {Vector} este vector
3099
- * @param {Vector} superficieNormal el vector normal a la superficie
3100
- * @returns {Vector} este vector
3101
- * @returns {number[]} array de flotantes
3102
- * @param {Vector} v el vector a comparar
3103
- * @returns {boolean} verdadero si los vectores son iguales
3104
- * @param {number} ángulo el ángulo deseado
3105
- * @param {number} [longitud] longitud del nuevo vector (por defecto a 1)
3106
- * @returns {Vector} nuevo objeto Vector
3107
- * @returns {Vector} nuevo objeto Vector
3108
- * @returns {Vector} nuevo objeto Vector
3109
- */
3110
3530
  class Vector {
3111
3531
 
3112
- // 🖌 shaping
3532
+ /**
3533
+ * 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()`.
3534
+ */
3535
+ constructor(x: number, y: number, z?: number);
3536
+
3537
+ /** ↗
3538
+ * El componente x del vector.
3539
+ */
3540
+ x: number;
3541
+
3542
+ /** ↗
3543
+ * El componente y del vector.
3544
+ */
3545
+ y: number;
3546
+
3547
+ /** ↗
3548
+ * El componente z del vector.
3549
+ */
3550
+ z: number;
3551
+
3552
+ /** ↗
3553
+ * El componente w del vector.
3554
+ */
3555
+ w(): void;
3556
+
3557
+ /** ↗
3558
+ * Establece los componentes x, y, y z del vector.
3559
+ * @param {number} [x] componente x del vector
3560
+ * @param {number} [y] componente y del vector
3561
+ * @param {number} [z] componente z del vector
3562
+ * @param {number} [w] componente w del vector
3563
+ * @returns {Vector} este vector
3564
+ */
3565
+ set(): void;
3566
+
3567
+ /** ↗
3568
+ * Devuelve una copia del vector.
3569
+ * @returns {Vector} copia del vector
3570
+ */
3571
+ copy(): void;
3572
+
3573
+ /** ↗
3574
+ * Suma x, y, y z componentes a un vector, suma un vector a otro, o suma dos vectores independientes.
3575
+ * @param {number | Vector} x componente x del vector o Vector a sumar
3576
+ * @param {number} [y] componente y del vector
3577
+ * @param {number} [z] componente z del vector
3578
+ * @returns {Vector} este vector
3579
+ */
3580
+ add(): void;
3581
+
3582
+ /** ↗
3583
+ * Resta x, y, y z componentes de un vector, resta un vector de otro, o resta dos vectores independientes.
3584
+ * @param {number | Vector} x componente x del vector o Vector a restar
3585
+ * @param {number} [y] componente y del vector
3586
+ * @param {number} [z] componente z del vector
3587
+ * @returns {Vector} este vector
3588
+ */
3589
+ sub(): void;
3590
+
3591
+ /** ↗
3592
+ * Multiplica el vector por un escalar.
3593
+ * @param {number} n escalar por el cual multiplicar
3594
+ * @returns {Vector} este vector
3595
+ */
3596
+ mult(n: number | Vector): Vector;
3597
+
3598
+ /** ↗
3599
+ * Divide el vector por un escalar.
3600
+ * @param {number} n escalar por el cual dividir
3601
+ * @returns {Vector} este vector
3602
+ */
3603
+ div(n: number | Vector): Vector;
3604
+
3605
+ /** ↗
3606
+ * 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)`).
3607
+ * @returns {number} magnitud del vector
3608
+ */
3609
+ mag(): number;
3610
+
3611
+ /** ↗
3612
+ * 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`).
3613
+ * @returns {number} magnitud del vector al cuadrado
3614
+ */
3615
+ magSq(): void;
3616
+
3617
+ /** ↗
3618
+ * Calcula el producto punto de dos vectores.
3619
+ * @param {Vector} v vector con el cual hacer producto punto
3620
+ * @returns {number} producto punto
3621
+ */
3622
+ dot(): void;
3623
+
3624
+ /** ↗
3625
+ * Calcula el producto cruz de dos vectores.
3626
+ * @param {Vector} v vector con el cual hacer producto cruz
3627
+ * @returns {Vector} producto cruz
3628
+ */
3629
+ cross(): void;
3630
+
3631
+ /** ↗
3632
+ * Calcula la distancia euclidiana entre dos puntos (considerando un punto como un objeto vector).
3633
+ * @param {Vector} v vector al cual calcular distancia
3634
+ * @returns {number} distancia
3635
+ */
3636
+ dist(v: Vector): number;
3637
+
3638
+ /** ↗
3639
+ * Normaliza el vector a longitud 1 (hace que sea un vector unitario).
3640
+ * @returns {Vector} este vector
3641
+ */
3642
+ normalize(): void;
3643
+
3644
+ /** ↗
3645
+ * Limita la magnitud de este vector al valor usado para el parámetro `max`.
3646
+ * @param {number} max magnitud máxima
3647
+ * @returns {Vector} este vector
3648
+ */
3649
+ limit(): void;
3650
+
3651
+ /** ↗
3652
+ * Establece la magnitud de este vector al valor usado para el parámetro `len`.
3653
+ * @param {number} len nueva longitud para este vector
3654
+ * @returns {Vector} este vector
3655
+ */
3656
+ setMag(): void;
3657
+
3658
+ /** ↗
3659
+ * Calcula el ángulo de rotación para este vector (solo vectores 2D).
3660
+ * @returns {number} el ángulo de rotación
3661
+ */
3662
+ heading(): void;
3663
+
3664
+ /** ↗
3665
+ * Rota el vector por un ángulo (solo vectores 2D), la magnitud permanece igual.
3666
+ * @param {number} ángulo ángulo de rotación
3667
+ * @returns {Vector} este vector
3668
+ */
3669
+ rotate(): void;
3670
+
3671
+ /** ↗
3672
+ * Calcula y devuelve el ángulo entre dos vectores.
3673
+ * @param {Vector} v el vector x, y, z
3674
+ * @returns {number} el ángulo entre
3675
+ */
3676
+ angleBetween(): void;
3677
+
3678
+ /** ↗
3679
+ * Interpola linealmente el vector a otro vector.
3680
+ * @param {Vector} v el vector x, y, z
3681
+ * @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
3682
+ * @returns {Vector} este vector
3683
+ */
3684
+ lerp(v: Vector, amt: number): Vector;
3685
+
3686
+ /** ↗
3687
+ * Refleja el vector entrante sobre una normal al muro.
3688
+ * @param {Vector} superficieNormal el vector normal a la superficie
3689
+ * @returns {Vector} este vector
3690
+ */
3691
+ reflect(): void;
3692
+
3693
+ /** ↗
3694
+ * Devuelve una representación de este vector como un array de flotantes.
3695
+ * @returns {number[]} array de flotantes
3696
+ */
3697
+ array(): void;
3698
+
3699
+ /** ↗
3700
+ * Comprueba si los componentes x, y, y z del vector son iguales a los componentes x, y, y z de otro vector.
3701
+ * @param {Vector} v el vector a comparar
3702
+ * @returns {boolean} verdadero si los vectores son iguales
3703
+ */
3704
+ equals(): void;
3705
+
3706
+ /** ↗
3707
+ * Hace un nuevo vector 2D desde un ángulo de longitud 1.
3708
+ * @param {number} ángulo el ángulo deseado
3709
+ * @param {number} [longitud] longitud del nuevo vector (por defecto a 1)
3710
+ * @returns {Vector} nuevo objeto Vector
3711
+ */
3712
+ fromAngle(): void;
3713
+
3714
+ /** ↗
3715
+ * Hace un nuevo vector 2D aleatorio con una magnitud de 1.
3716
+ * @returns {Vector} nuevo objeto Vector
3717
+ */
3718
+ random2D(): void;
3719
+
3720
+ /** ↗
3721
+ * Hace un nuevo vector 3D aleatorio con una magnitud de 1.
3722
+ * @returns {Vector} nuevo objeto Vector
3723
+ */
3724
+ random3D(): void;
3725
+ sumar(v: Vector): Vector;
3726
+
3727
+ restar(v: Vector): Vector;
3728
+
3729
+ normalizar(): Vector;
3730
+
3731
+ establecerMag(len: number): Vector;
3732
+
3733
+ punto(v: Vector): number;
3734
+
3735
+ cruz(v: Vector): Vector;
3113
3736
 
3114
- /** 🖌
3737
+ copiar(): Vector;
3738
+
3739
+ establecer(x: number, y: number, z?: number): void;
3740
+
3741
+ limitar(max: number): Vector;
3742
+
3743
+ rumbo(): number;
3744
+
3745
+ establecerRumbo(angulo: number): Vector;
3746
+
3747
+ rotar(angulo: number): Vector;
3748
+
3749
+ slerp(v: Vector, amt: number): Vector;
3750
+
3751
+ static desdeÁngulo(angulo: number, longitud?: number): Vector;
3752
+
3753
+ }
3754
+
3755
+ // 🖌 shaping
3756
+
3757
+ /** 🖌
3115
3758
  * Dibuja un arco, que es una sección de una elipse.
3116
3759
  *
3117
3760
  * `modoEliptico` afecta cómo se dibuja el arco.
@@ -3133,53 +3776,53 @@ declare global {
3133
3776
  * arco(120, 120, 40, 40, 0.8, -0.8, CHORD_OPEN);
3134
3777
  * arco(160, 160, 40, 40, 0.8, -0.8, CHORD);
3135
3778
  */
3136
- function arco(x: number, y: number, w: number, h: number, inicio: number, fin: number, modo?: number): void;
3779
+ function arco(x: number, y: number, w: number, h: number, inicio: number, fin: number, modo?: number): void;
3137
3780
 
3138
- /** 🖌
3781
+ /** 🖌
3139
3782
  * Dibuja una curva.
3140
3783
  */
3141
- function curva(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3784
+ function curva(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3142
3785
 
3143
- /** 🖌
3786
+ /** 🖌
3144
3787
  * Establece la cantidad de segmentos de línea recta usados para hacer una curva.
3145
3788
  *
3146
3789
  * Solo tiene efecto en q5 WebGPU.
3147
3790
  * @param {number} val nivel de detalle de la curva, por defecto es 20
3148
3791
  */
3149
- function detalleCurva(val: number): void;
3792
+ function detalleCurva(val: number): void;
3150
3793
 
3151
- /** 🖌
3794
+ /** 🖌
3152
3795
  * Comienza a almacenar vértices para una forma convexa.
3153
3796
  */
3154
- function empezarForma(): void;
3797
+ function empezarForma(): void;
3155
3798
 
3156
- /** 🖌
3799
+ /** 🖌
3157
3800
  * Termina de almacenar vértices para una forma convexa.
3158
3801
  */
3159
- function terminarForma(): void;
3802
+ function terminarForma(): void;
3160
3803
 
3161
- /** 🖌
3804
+ /** 🖌
3162
3805
  * Comienza a almacenar vértices para un contorno.
3163
3806
  *
3164
3807
  * No disponible en q5 WebGPU.
3165
3808
  */
3166
- function empezarContorno(): void;
3809
+ function empezarContorno(): void;
3167
3810
 
3168
- /** 🖌
3811
+ /** 🖌
3169
3812
  * Termina de almacenar vértices para un contorno.
3170
3813
  *
3171
3814
  * No disponible en q5 WebGPU.
3172
3815
  */
3173
- function terminarContorno(): void;
3816
+ function terminarContorno(): void;
3174
3817
 
3175
- /** 🖌
3818
+ /** 🖌
3176
3819
  * Especifica un vértice en una forma.
3177
3820
  * @param {number} x coordenada-x
3178
3821
  * @param {number} y coordenada-y
3179
3822
  */
3180
- function vértice(): void;
3823
+ function vértice(): void;
3181
3824
 
3182
- /** 🖌
3825
+ /** 🖌
3183
3826
  * Especifica un vértice Bezier en una forma.
3184
3827
  * @param {number} cp1x coordenada-x del primer punto de control
3185
3828
  * @param {number} cp1y coordenada-y del primer punto de control
@@ -3188,18 +3831,18 @@ declare global {
3188
3831
  * @param {number} x coordenada-x del punto de anclaje
3189
3832
  * @param {number} y coordenada-y del punto de anclaje
3190
3833
  */
3191
- function vérticeBezier(): void;
3834
+ function vérticeBezier(): void;
3192
3835
 
3193
- /** 🖌
3836
+ /** 🖌
3194
3837
  * Especifica un vértice Bezier cuadrático en una forma.
3195
3838
  * @param {number} cp1x coordenada-x del punto de control
3196
3839
  * @param {number} cp1y coordenada-y del punto de control
3197
3840
  * @param {number} x coordenada-x del punto de anclaje
3198
3841
  * @param {number} y coordenada-y del punto de anclaje
3199
3842
  */
3200
- function vérticeCuadrático(): void;
3843
+ function vérticeCuadrático(): void;
3201
3844
 
3202
- /** 🖌
3845
+ /** 🖌
3203
3846
  * Dibuja una curva Bezier.
3204
3847
  * @param {number} x1 coordenada-x del primer punto de anclaje
3205
3848
  * @param {number} y1 coordenada-y del primer punto de anclaje
@@ -3210,9 +3853,9 @@ declare global {
3210
3853
  * @param {number} x4 coordenada-x del segundo punto de anclaje
3211
3854
  * @param {number} y4 coordenada-y del segundo punto de anclaje
3212
3855
  */
3213
- function bezier(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3856
+ function bezier(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3214
3857
 
3215
- /** 🖌
3858
+ /** 🖌
3216
3859
  * Dibuja un triángulo.
3217
3860
  * @param {number} x1 coordenada-x del primer vértice
3218
3861
  * @param {number} y1 coordenada-y del primer vértice
@@ -3221,9 +3864,9 @@ declare global {
3221
3864
  * @param {number} x3 coordenada-x del tercer vértice
3222
3865
  * @param {number} y3 coordenada-y del tercer vértice
3223
3866
  */
3224
- function triángulo(): void;
3867
+ function triángulo(): void;
3225
3868
 
3226
- /** 🖌
3869
+ /** 🖌
3227
3870
  * Dibuja un cuadrilátero.
3228
3871
  * @param {number} x1 coordenada-x del primer vértice
3229
3872
  * @param {number} y1 coordenada-y del primer vértice
@@ -3234,13 +3877,18 @@ declare global {
3234
3877
  * @param {number} x4 coordenada-x del cuarto vértice
3235
3878
  * @param {number} y4 coordenada-y del cuarto vértice
3236
3879
  */
3237
- function quad(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3880
+ function quad(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number): void;
3238
3881
 
3239
- // ⚙ advanced
3882
+ // ⚙ advanced
3883
+
3884
+ /** ⚙
3885
+ * Alias para `Q5`.
3886
+ */
3887
+ const q5: typeof Q5;
3240
3888
 
3241
- class Q5 {
3889
+ class Q5 {
3242
3890
 
3243
- /** ⚙
3891
+ /** ⚙
3244
3892
  * Funcion constructora. Crea una instancia de Q5.
3245
3893
  * @param {string | Function} [ambito]
3246
3894
  * @param {HTMLElement} [contenedor] elemento HTML dentro del cual se colocará el lienzo
@@ -3249,43 +3897,149 @@ declare global {
3249
3897
  * q.crearLienzo(200, 100);
3250
3898
  * q.círculo(100, 50, 20);
3251
3899
  */
3252
- constructor(scope?: string | Function, parent?: HTMLElement);
3253
- static deshabilitarErroresAmigables: boolean;
3900
+ constructor(scope?: string | Function, parent?: HTMLElement);
3254
3901
 
3255
- static toleranteErrores: boolean;
3902
+ /**
3903
+ * Desactiva los mensajes de error amigables de q5.
3904
+ */
3905
+ disableFriendlyErrors(): void;
3256
3906
 
3257
- static soportaHDR: boolean;
3907
+ /**
3908
+ * Establecer en verdadero para mantener el bucle de dibujo después de un error.
3909
+ */
3910
+ errorTolerant(): void;
3258
3911
 
3259
- static opcionesLienzo: object;
3912
+ /**
3913
+ * Verdadero si el dispositivo soporta HDR (el espacio de color display-p3).
3914
+ */
3915
+ supportsHDR(): void;
3260
3916
 
3261
- static MAX_RECTS: number;
3917
+ /**
3918
+ * Establece los atributos de contexto de lienzo predeterminados utilizados para
3919
+ * lienzos recién creados y gráficos internos. Estas opciones son sobrescritas por
3920
+ * cualquier opción por lienzo que pases a `crearLienzo`.
3921
+ */
3922
+ canvasOptions(): void;
3262
3923
 
3263
- static MAX_ELIPSES: number;
3924
+ /**
3925
+ * Un límite de asignación de memoria WebGPU.
3926
+ *
3927
+ * El número máximo de matrices de transformación
3928
+ * que se pueden usar en una sola llamada de dibujo.
3929
+ */
3930
+ MAX_TRANSFORMS(): void;
3264
3931
 
3265
- static MAX_TRANSFORMACIONES: number;
3932
+ /**
3933
+ * Un límite de asignación de memoria WebGPU.
3934
+ *
3935
+ * El número máximo de rectángulos
3936
+ * (llamadas a `rect`, `cuadrado`, `cápsula`)
3937
+ * que se pueden dibujar en una sola llamada de dibujo.
3938
+ */
3939
+ static MAX_RECTS: number;
3266
3940
 
3267
- static MAX_CARACTERES: number;
3941
+ /**
3942
+ * Un límite de asignación de memoria WebGPU.
3943
+ *
3944
+ * El número máximo de elipses
3945
+ * (llamadas a `elipse`, `círculo`, y `arco`)
3946
+ * que se pueden dibujar en una sola llamada de dibujo.
3947
+ */
3948
+ MAX_ELLIPSES(): void;
3268
3949
 
3269
- static MAX_TEXTOS: number;
3950
+ /**
3951
+ * Un límite de asignación de memoria WebGPU.
3952
+ *
3953
+ * El número máximo de caracteres de texto
3954
+ * que se pueden dibujar en una sola llamada de dibujo.
3955
+ */
3956
+ MAX_CHARS(): void;
3270
3957
 
3271
- static WebGPU(): Q5;
3958
+ /**
3959
+ * Un límite de asignación de memoria WebGPU.
3960
+ *
3961
+ * El número máximo de llamadas separadas a `texto`
3962
+ * que se pueden dibujar en una sola llamada de dibujo.
3963
+ */
3964
+ MAX_TEXTS(): void;
3965
+
3966
+ /** ⚙
3967
+ * Crea una nueva instancia de Q5 que usa el [renderizador WebGPU de q5](https://github.com/q5js/q5.js/wiki/q5-WebGPU-renderer).
3968
+ */
3969
+ static WebGPU(): Q5;
3970
+
3971
+ /** ⚙
3972
+ * Los addons pueden aumentar q5 con nueva funcionalidad agregando hooks,
3973
+ * funciones que se ejecutan en fases específicas del ciclo de vida de q5.
3974
+ *
3975
+ * Dentro de la función, `this` se refiere a la instancia de Q5.
3976
+ * @param {string} lifecycle init, presetup, postsetup, predraw, postdraw, o remove
3977
+ * @param {Function} fn La función que se ejecutará en la fase del ciclo de vida especificada.
3978
+ */
3979
+ addHook(): void;
3980
+
3981
+ /** ⚙
3982
+ * Forma compatible con p5.js v2 de registrar un addon con q5.
3983
+ * @param {Function} addon Una función que recibe `Q5`, `Q5.prototype`, y un objeto `lifecycles`.
3984
+ */
3985
+ registerAddon(): void;
3986
+
3987
+ /** ⚙
3988
+ * Un objeto que contiene los módulos de q5, funciones que se ejecutan cuando q5 carga.
3989
+ *
3990
+ * Cada función recibe dos parámetros de entrada:
3991
+ *
3992
+ * - la instancia de q5
3993
+ * - un proxy para editar la instancia de q5 y las propiedades correspondientes del ámbito global
3994
+ */
3995
+ modules(): void;
3996
+
3997
+ /** ⚙
3998
+ * La función de dibujo de q5 se ejecuta 60 veces por segundo por defecto.
3999
+ */
4000
+ draw(): void;
4001
+
4002
+ /** ⚙
4003
+ * Se ejecuta después de cada llamada a la función `dibujar` y procesos de addons de q5 post-dibujo, si los hay.
4004
+ *
4005
+ * Útil para agregar efectos de post-procesamiento cuando no es posible
4006
+ * hacerlo al final de la función `dibujar`, como cuando se usan
4007
+ * addons como p5play que dibujan automáticamente al lienzo después de que
4008
+ * la función `dibujar` se ejecuta.
4009
+ */
4010
+ postProcess(): void;
4011
+ static deshabilitarErroresAmigables: boolean;
4012
+
4013
+ static toleranteErrores: boolean;
4014
+
4015
+ static soportaHDR: boolean;
4016
+
4017
+ static opcionesLienzo: object;
3272
4018
 
3273
- static agregarHook(cicloVida: string, fn: Function): void;
4019
+ static MAX_ELIPSES: number;
3274
4020
 
3275
- static registrarAddon(addon: Function): void;
4021
+ static MAX_TRANSFORMACIONES: number;
3276
4022
 
3277
- static modulos: object;
4023
+ static MAX_CARACTERES: number;
3278
4024
 
3279
- dibujar(): void;
4025
+ static MAX_TEXTOS: number;
3280
4026
 
3281
- postProcesar(): void;
4027
+ static agregarHook(cicloVida: string, fn: Function): void;
3282
4028
 
3283
- actualizar(): void; //-
4029
+ static registrarAddon(addon: Function): void;
3284
4030
 
3285
- dibujarFotograma(): void; //-
4031
+ static modulos: object;
3286
4032
 
3287
- static Imagen: {
3288
- new (w: number, h: number, opt?: any): Q5.Imagen;
4033
+ dibujar(): void;
4034
+
4035
+ postProcesar(): void;
4036
+
4037
+ actualizar(): void; //-
4038
+
4039
+ dibujarFotograma(): void; //-
4040
+
4041
+ static Imagen: {
4042
+ new (w: number, h: number, opt?: any): Q5.Imagen;
3289
4043
  };
3290
4044
 
3291
4045
  }
@@ -3297,8 +4051,6 @@ declare global {
3297
4051
  }
3298
4052
  }
3299
4053
 
3300
- const q5: typeof Q5;
3301
-
3302
4054
  }
3303
4055
 
3304
4056
  export {};