# API de scripting Lua de pxstud.io — Ajustes del contexto

> Parte de la referencia de scripting Lua de pxstud.io, cuya introducción (https://pxstud.io/es/docs/scripting.md) explica sus convenciones. Los grupos de opciones y los tipos a los que remite están en https://pxstud.io/es/docs/scripting/option-groups.md y https://pxstud.io/es/docs/scripting/types.md. Todo en un solo archivo (en inglés): https://pxstud.io/llms-full.txt. El índice de todo el sitio (en inglés): https://pxstud.io/llms.txt.

## Ajustes del contexto
Los ajustes que usan los comandos de dibujo para cada opción que no se les da: los mismos valores que muestra la barra de herramientas del editor. Léelos con `app.getContext()` y cambia cualquiera con `app.setContext({ ... })`. No forman parte del documento y no se pueden deshacer.

- `foregroundColor` (color — "#rgb", "#rrggbb[aa]" or { r, g, b, a }; predeterminado { r = 0, g = 0, b = 0, a = 255 }) — El color de pintura: el `color` de cada comando de dibujo y el color inicial del degradado.
- `backgroundColor` (color — "#rgb", "#rrggbb[aa]" or { r, g, b, a }; predeterminado { r = 255, g = 255, b = 255, a = 255 }) — El color secundario: el color final del degradado y lo que intercambia swapColors.
- `brushSize` (integer 1–64; predeterminado 1) — Tamaño del pincel en píxeles para las formas integradas (lo ignora un pincel personalizado). También fija el radio del aerógrafo (2x el tamaño).
- `brushShape` (BrushShape: "circle" | "square" | "line" | "diamond" | "cross" | "x" | "star" | "horizontal" | "custom"; predeterminado "circle") — "line" es una línea de 1px inclinada por `brushAngle`; "square" se gira con él; "circle", "diamond", "cross", "x" y "star" lo ignoran; "horizontal" es una línea en ángulo 0 que lo ignora; "custom" pinta `customBrush`.
- `brushAngle` (integer 0–180; predeterminado 0) — Ángulo del pincel en grados (0-180): inclina el pincel "line" y gira el pincel "square". Las demás formas lo ignoran.
- `customBrush` ({ width, height, mask } or false; predeterminado nil) — La máscara que pinta un pincel personalizado: { rows = { ".#.", "###", ".#." } } o { width, height, mask } con mask una lista plana de 0/1. Normalmente se establece con app.useBrush(name) a partir de un pincel definido con app.defineBrush. Sin máscara, un pincel personalizado pinta un punto de 1px.
- `pixelPerfect` (boolean; predeterminado false) — Quita los escalones dobles en las esquinas de los trazos a mano alzada (con cualquier tamaño de pincel); el pincel se estampa a lo largo del camino corregido.
- `eraserRightClick` (EraserRightClick: "background" | "replace"; predeterminado "background") — Botón derecho del borrador: "background" pinta el color de fondo en todo lo que toca, "replace" convierte en color de fondo solo los píxeles del color de primer plano (Aseprite).
- `ink` (Ink: "copy" | "simple" | "lock-alpha" | "shading"; predeterminado "copy") — Cómo se combina la pintura (trazos, aerógrafo, formas, líneas, polígono, contorno, bote de pintura, degradado, fillSelection) con los píxeles existentes: "copy" los reemplaza (el valor predeterminado), "simple" compone con alfa, "lock-alpha" recolorea solo los píxeles visibles, "shading" avanza los píxeles a lo largo de `shades`.
- `shades` (list of colors — "#rgb", "#rrggbb[aa]" or { r, g, b, a }; predeterminado {}) — La rampa a lo largo de la cual avanza la tinta de sombreado, en orden: el cuadro Tonos del editor (o el rango de paleta seleccionado). Los comandos de dibujo la usan cuando la tinta es shading.
- `stabilizer` (integer 0–64; predeterminado 0) — Intensidad del estabilizador en los trazos a mano alzada: cada punto se promedia con los N puntos anteriores, lo que suaviza el temblor (el trazo se queda atrás del cursor). 0 = desactivado.
- `pressureSize` (boolean; predeterminado true) — Deja que la presión del lápiz (un mouse cuenta como presión máxima) controle el tamaño del pincel, desde dynamicsMinSize hasta brushSize.
- `pressureAngle` (boolean; predeterminado false) — Deja que la presión del lápiz (un mouse cuenta como presión máxima) controle el ángulo del pincel, desde dynamicsMinAngle hasta dynamicsMaxAngle.
- `pressureGradient` (boolean; predeterminado false) — Deja que la presión del lápiz (un mouse cuenta como presión máxima) mezcle el color de foregroundColor a backgroundColor a lo largo del trazo.
- `pressureMin` (integer 0–100; predeterminado 0) — Lectura (porcentaje) del sensor de presión que corresponde al extremo bajo. Si es mayor que pressureMax, invierte la correspondencia.
- `pressureMax` (integer 0–100; predeterminado 100) — Lectura (porcentaje) del sensor de presión que corresponde al extremo alto.
- `velocitySize` (boolean; predeterminado false) — Deja que la velocidad del puntero controle el tamaño del pincel, desde dynamicsMinSize hasta brushSize.
- `velocityAngle` (boolean; predeterminado false) — Deja que la velocidad del puntero controle el ángulo del pincel, desde dynamicsMinAngle hasta dynamicsMaxAngle.
- `velocityGradient` (boolean; predeterminado false) — Deja que la velocidad del puntero mezcle el color de foregroundColor a backgroundColor a lo largo del trazo.
- `velocityMin` (integer 0–100; predeterminado 0) — Lectura (porcentaje) del sensor de velocidad que corresponde al extremo bajo. Si es mayor que velocityMax, invierte la correspondencia.
- `velocityMax` (integer 0–100; predeterminado 100) — Lectura (porcentaje) del sensor de velocidad que corresponde al extremo alto.
- `dynamicsMinSize` (integer 1–64; predeterminado 1) — Tamaño del pincel en el extremo bajo de un sensor asignado al tamaño (el extremo alto es brushSize).
- `dynamicsMinAngle` (integer 0–180; predeterminado 0) — Ángulo del pincel en el extremo bajo de un sensor asignado al ángulo.
- `dynamicsMaxAngle` (integer 0–180; predeterminado 180) — Ángulo del pincel en el extremo alto de un sensor asignado al ángulo.
- `dynamicsDither` (boolean; predeterminado false) — La dinámica de degradado elige foregroundColor o backgroundColor por píxel (tramado ordenado) en lugar de mezclar. En los sprites indexados, las mezclas se ajustan al color de paleta más cercano.
- `dynamicsCurve` (integer 25–400; predeterminado 100) — Curva de sensibilidad en porcentaje: el valor del sensor se eleva a curve/100 (100 = lineal; por encima de 100 hace falta más presión o velocidad para que surta efecto).
- `symmetry` (list of SymmetryAxis: "horizontal" | "vertical" | "diagonal" | "antidiagonal"; predeterminado {}) — El ajuste de simetría del sprite activo (cada sprite conserva el suyo, igual que la posición de su eje): ejes de espejo que pasan por el centro de simetría. Es solo información de lectura: los comandos de dibujo no la aplican a menos que pases symmetry = app.getContext().symmetry. Vacío = desactivada; varios ejes se combinan (horizontal + vertical = 4 direcciones).
- `symmetryX` (number (multiple of 0.5) or false; predeterminado nil) — Dónde está el eje de simetría vertical (y el punto donde se cruzan ambas diagonales): píxeles desde el borde izquierdo del lienzo, un múltiplo de 0.5 (entero = entre píxeles, x.5 = por el centro de un píxel). nil = centrado. Igual que symmetry, es solo información de lectura: pasa symmetryX = app.getContext().symmetryX a un comando de dibujo para seguirlo. Establécelo en false para recentrar.
- `symmetryY` (number (multiple of 0.5) or false; predeterminado nil) — Dónde está el eje de simetría horizontal (y el cruce de las diagonales): píxeles desde el borde superior del lienzo, un múltiplo de 0.5. nil = centrado. Establécelo en false para recentrar.
- `tilemapMode` (TilemapEditMode: "tiles" | "pixels-edit" | "pixels-auto"; predeterminado "pixels-auto") — Cómo trata la pintura de píxeles una capa de tilemap: "pixels-auto" da a cada celda pintada su propio tile, "pixels-edit" edita el tile compartido en su sitio (se actualizan todas las colocaciones), "tiles" solo permite estampar tiles completos.
- `shapeFillMode` (FillMode: "outline" | "filled"; predeterminado "outline") — Rectángulos, elipses, polígonos y curvas cerradas: contorno o relleno.
- `cornerRadius` (integer 0–1024 (every corner), or a list of four, clockwise from the top-left; predeterminado { 0, 0, 0, 0 }) — Rectángulo: radios de las esquinas en píxeles, en sentido horario desde la esquina superior izquierda (0 = esquina recta), cada uno limitado a la mitad del lado menor.
- `selectionCornerRadius` (integer 0–1024 (every corner), or a list of four, clockwise from the top-left; predeterminado { 0, 0, 0, 0 }) — Marco rectangular: radios de las esquinas en píxeles, en sentido horario desde la esquina superior izquierda (0 = esquina recta).
- `cornerRadiusLinked` (boolean; predeterminado true) — La barra de opciones de la herramienta edita juntos los cuatro radios de las esquinas (un solo campo Radio) en lugar de un campo por esquina.
- `lineWidth` (integer 1–64; predeterminado 1) — Herramientas Línea y Curva: grosor en píxeles (1 = una línea nítida de 1px); las líneas más anchas tienen extremos redondeados.
- `curvePixelPerfect` (boolean; predeterminado true) — Herramienta Curva: quita las esquinas en L que adquiere una curva de 1px, para líneas de pixel art limpias.
- `bucketFillMode` (BucketFillMode: "contiguous" | "global"; predeterminado "contiguous") — Bote de pintura: solo la región conectada, o todos los píxeles que coinciden.
- `bucketTolerance` (integer 0–255; predeterminado 0) — Bote de pintura: la mayor diferencia por canal que todavía cuenta como el mismo color.
- `bucketCloseGap` (integer 0–5; predeterminado 0) — Bote de pintura (contiguo): trata como cerrados los huecos del contorno de hasta este número de píxeles de ancho, para que el relleno no se filtre por ellos. 0 = desactivado.
- `bucketDiagonal` (boolean; predeterminado false) — Bote de pintura (contiguo): se extiende también a los vecinos diagonales (8 conexiones), así que la región se filtra por las líneas diagonales de 1px.
- `bucketStopAtGrid` (boolean; predeterminado false) — Bote de pintura: limita la región a la celda de la cuadrícula donde cae el clic.
- `bucketPattern` (FillPattern: "solid" | "checker" | "dither25" | "dither75" | "hstripes" | "vstripes" | "diagonal" | "grid" | "dots" | "bricks"; predeterminado "solid") — Bote de pintura: pinta un patrón repetido de dos colores (el color de relleno y el otro entre primer plano y fondo) en lugar de un color sólido. "solid" = sin patrón.
- `wandFillMode` (BucketFillMode: "contiguous" | "global"; predeterminado "contiguous") — Varita mágica: solo la región conectada, o todos los píxeles que coinciden. Independiente de bucketFillMode del bote de pintura.
- `wandTolerance` (integer 0–255; predeterminado 0) — Varita mágica: la mayor diferencia por canal que todavía cuenta como el mismo color. Independiente de bucketTolerance del bote de pintura.
- `wandDiagonal` (boolean; predeterminado false) — Varita mágica (contiguo): se extiende también a los vecinos diagonales (8 conexiones), así que la región se filtra por las líneas diagonales de 1px.
- `wandStopAtGrid` (boolean; predeterminado false) — Varita mágica: limita la región a la celda de la cuadrícula donde cae el clic.
- `sprayRate` (integer 1–64; predeterminado 8) — Aerógrafo: puntos por posición.
- `scatterX` (integer 0–64; predeterminado 8) — Dispersión: hasta dónde puede caer cada estampa a la izquierda o a la derecha del camino, en píxeles.
- `scatterY` (integer 0–64; predeterminado 8) — Dispersión: hasta dónde puede caer cada estampa por encima o por debajo del camino, en píxeles.
- `scatterCount` (integer 1–16; predeterminado 2) — Dispersión: estampas colocadas en cada paso a lo largo del camino.
- `blurStrength` (integer 1–4; predeterminado 1) — Desenfoque: radio de la vecindad en píxeles.
- `jumbleStrength` (integer 0–100; predeterminado 100) — Mezcla: probabilidad en porcentaje de que se desordene cada píxel tocado.
- `dodgeBurnStrength` (integer 1–100; predeterminado 25) — Aclarar/Oscurecer: cuánto se mueve la luminosidad OKLCH de cada píxel tocado (100 = la mitad de negro a blanco).
- `dodgeBurnHueShift` (integer 0–60; predeterminado 0) — Aclarar/Oscurecer: grados que gira el tono OKLCH de cada píxel tocado hacia el amarillo cálido (aclarar) o el azul frío (oscurecer), sin pasarse de ahí; 0 conserva el tono.
- `ditherPattern` (DitherPattern: "bayer2" | "bayer4" | "bayer8" | "dots" | "lines-h" | "lines-v" | "diagonal" | "noise"; predeterminado "bayer2") — Pincel de tramado: el patrón ordenado con el que pinta. Los patrones se repiten desde la esquina superior izquierda del sprite, así que los trazos encajan.
- `ditherDensity` (integer 0–100; predeterminado 50) — Pincel de tramado: la proporción de píxeles del patrón que pinta, en porcentaje (50 con bayer2 es un tablero de ajedrez).
- `gradientType` (GradientType: "linear" | "radial"; predeterminado "linear") — Degradado: una rampa recta entre los puntos, o que se irradia desde el punto inicial.
- `gradientDithering` (GradientDithering: "none" | "bayer2" | "bayer4" | "bayer8" | "dots" | "lines-h" | "lines-v" | "diagonal" | "noise"; predeterminado "bayer4") — Degradado: el patrón de tramado ordenado (none = una rampa suave).
- `gradientSnap` (GradientSnap: "free" | "palette"; predeterminado "free") — Degradado: mezclas libres, o solo colores de la paleta (cada píxel toma el color de paleta más cercano; el tramado alterna entre colores de paleta vecinos).
- `gradientColors` (GradientColors: "fg-bg" | "stops"; predeterminado "fg-bg") — Degradado: va del color de primer plano al de fondo, o a lo largo de gradientStops ("stops"; con menos de dos puntos vuelve a ir de primer plano a fondo).
- `gradientStops` (list of up to 32 { color, position } (position 0–1, in order), or of colors spread evenly; predeterminado {}) — Degradado: la rampa de varios puntos desde el punto inicial, como entradas { color, position } (position 0-1, en orden; dos en la misma posición forman un borde duro). Una lista simple de colores se reparte por igual. Se usa cuando gradientColors es "stops"; la barra Puntos del editor la edita.
- `eyedropperSource` (EyedropperSource: "composite" | "layer"; predeterminado "composite") — Cuentagotas: toma lo que muestra el lienzo, o solo la capa activa.
- `tileIndex` (integer ≥ 0; predeterminado 1) — Sello de tile: el tile a colocar, empezando en 1 (0 = el tile vacío).
- `tileFlipH` (boolean; predeterminado false) — Sello de tile: voltea horizontalmente los tiles colocados.
- `tileFlipV` (boolean; predeterminado false) — Sello de tile: voltea verticalmente los tiles colocados.
- `tileRotate90` (boolean; predeterminado false) — Sello de tile: gira los tiles colocados 90° en sentido horario.
- `tilePlace` (boolean; predeterminado false) — Colocar tiles: en una capa de tilemap, el lápiz, el borrador, la línea, las herramientas de formas y el bote de pintura colocan el tile de la sello de tile (lo borran, en el caso del borrador) en las celdas que cubren, en lugar de pintar píxeles.
- `isoShape` (IsoShape: "box" | "ramp" | "stairs" | "pyramid" | "prism" | "cylinder" | "cone" | "sphere" | "dome"; predeterminado "box") — Herramienta Forma isométrica: el sólido que dibuja.
- `isoWidth` (integer 1–1024; predeterminado 8) — Herramienta Forma isométrica: huella a lo largo de x (abajo a la derecha), en unidades isométricas (una fila de la escalera del borde cada una).
- `isoDepth` (integer 1–1024; predeterminado 8) — Herramienta Forma isométrica: huella a lo largo de y (abajo a la izquierda), en unidades isométricas.
- `isoHeight` (integer 0–1024; predeterminado 8) — Herramienta Forma isométrica: altura en píxeles (0 = plana).
- `isoBevel` (integer 0–1024; predeterminado 0) — Herramienta Forma isométrica: solo cajas, cuántos píxeles se achaflanan los bordes superiores (0 = recto).
- `isoCap` (integer 2–4; predeterminado 3) — Herramienta Forma isométrica: el tramo plano en los vértices superior e inferior, 2 (par), 3 (impar) o 4 (múltiplos de cuatro). También es el paso de arrastre de W / D (2 unidades con cap 4).
- `isoStyle` (IsoShapeStyle: "filled" | "outline" | "filled-outline"; predeterminado "filled-outline") — Herramienta Forma isométrica: caras, contorno, o ambos.
- `isoHiddenEdges` (boolean; predeterminado false) — Herramienta Forma isométrica: dibuja también los bordes que quedan detrás del sólido.
- `isoDirection` (IsoDirection: "+x" | "-x" | "+y" | "-y"; predeterminado "+x") — Herramienta Forma isométrica: hacia dónde desciende una rampa o unas escaleras, o hacia dónde miran las pendientes de un prisma.
- `isoAutoShade` (boolean; predeterminado true) — Herramienta Forma isométrica: deriva los cinco colores del color de primer plano a lo largo de `shades` (true), o usa isoColors (false).
- `isoColors` (list of colors — "#rgb", "#rrggbb[aa]" or { r, g, b, a }; predeterminado { { r = 34, g = 32, b = 52, a = 255 }, { r = 69, g = 68, b = 79, a = 255 }, { r = 203, g = 219, b = 252, a = 255 }, { r = 139, g = 155, b = 180, a = 255 }, { r = 90, g = 105, b = 136, a = 255 } }) — Herramienta Forma isométrica: los colores que se usan cuando isoAutoShade está desactivado, en orden: contorno, borde interior, superior, izquierda, derecha.
