Librería (color & alpha)
¿Para qué sirve?
Section titled “¿Para qué sirve?”Esta librería proporciona un conjunto completo de herramientas para trabajar con colores. Permite convertir colores entre diferentes formatos (ASS, HTML, RGB, HSV), generar colores aleatorios, crear gradientes y secuencias de colores animados, y realizar manipulaciones avanzadas mediante matrices. Es fundamental para cualquier efecto que involucre cambios de color dinámicos.
Funciones
Section titled “Funciones”Normaliza un color de diferentes formatos al estándar de xy-vsfilter (&HBBGGRR&). Es capaz de interpretar colores en formato HTML (#RRGGBB) y en el formato de VSFilterMod (\1vc(...)), convirtiéndolos al formato ASS estándar.
Color: string | table: El color a convertir. Puede ser una cadena de texto en formato ASS, HTML, o VSFilterMod.
Ejemplo
Section titled “Ejemplo”-- Convierte un color HTML rojo a formato ASSreturn "\\1c" .. color.ass("#FF0000") -- Devuelve: \1c&H0000FF&Convierte valores numéricos decimales de Rojo, Verde y Azul (RGB) a un string de color en formato ASS.
Rnum, Gnum, Bnum: number | table: Valores de0a255para cada componente de color. También se puede pasar una tabla{R, G, B}como primer argumento.
Ejemplo
Section titled “Ejemplo”-- Crea un color amarilloreturn "\\1c" .. color.ass2(255, 255, 0) -- Devuelve: \1c&H00FFFF&Convierte valores de Tono, Saturación y Valor (HSV) a una cadena de color en formato ASS. Es muy útil para crear gradientes o secuencias de colores que varían en el círculo cromático.
Hnum: number: Tono (Hue), un valor de0a360.Snum: float: Saturación (Saturation), un valor decimal de0a1.Vnum: float: Valor/Brillo (Value), un valor decimal de0a1.
Ejemplo
Section titled “Ejemplo”-- Genera un color que cambia a lo largo de las sílabasreturn "\\1c" .. color.ass3(syl.i * 20, 1, 1)Realiza la operación inversa a color.ass2. Convierte una cadena de color en formato ASS a una tabla con sus componentes RGB en valores decimales.
Color: string: El color en formato ASS (p.e.&H00FFFF&).
Ejemplo
Section titled “Ejemplo”-- En "Variables [fx]:":mi_color_rgb = color.to_RGB("&H00FFFF&") -- Devuelve: {255, 255, 0}Realiza la operación inversa a color.ass3. Convierte una cadena de color en formato ASS a una tabla con sus componentes HSV.
Color: string: El color en formato ASS.
Ejemplo
Section titled “Ejemplo”-- En "Variables [fx]:":mi_color_hsv = color.to_HSV("&H00FFFF&") -- Devuelve: {60, 1, 1}Genera un color aleatorio. Opcionalmente, se pueden restringir los rangos de Tono, Saturación y Valor para controlar el tipo de color generado.
H, S, V?: number | table, opcional: Restricciones para los componentesHSV. Pueden ser un número fijo o una tabla{min, max}.
Ejemplo
Section titled “Ejemplo”-- Genera un color totalmente aleatorioreturn "\\1c" .. color.random()
-- Genera un tono aleatorio de azul/cian (entre 180 y 240)return "\\1c" .. color.random({180, 240})Interpola linealmente entre dos colores. Es idéntica a la función interpolate_color de utils-auto4.
Ipol: number: El porcentaje de interpolación (de0a1).Color1, Color2: string: Los colores de inicio y fin en formato ASS.
Ejemplo
Section titled “Ejemplo”-- Crea un gradiente de color a lo largo de la sílabareturn "\\1c" .. color.interpolate(syl.progress, "&HFFFFFF&", "&H0000FF&")Crea una secuencia de transformaciones \t para cambiar de color en momentos específicos.
Times: table: Una tabla con los milisegundos en los que ocurren los cambios.Colors: string | table: Un color o una tabla de colores a aplicar en cada tiempo....: string, opcional: La etiqueta de color a usar (p.e.\1c,\3c). Por defecto es\1c.
Ejemplo
Section titled “Ejemplo”-- El color cambia a rojo en 500ms y a azul en 1200msreturn tag.set({500, 1200}, {"&H0000FF&", "&HFF0000&"}, "\\1c")Aplica una o más matrices de transformación 3x3 a los componentes RGB de un color. Es una función muy avanzada para efectos de manipulación de color complejos.
Color: string: El color inicial en formato ASS....: table: Una o más matrices 3x3 a aplicar secuencialmente.
Avanzado. Se utiliza en combinación con funciones como math.matrix_rot para rotar colores en el espacio RGB.
Extrae únicamente la parte del color (RGB) de un string ASS que contiene color y alpha (&HAABBGGRR).
ColorAlpha: string: La cadena de color y alfa completo.
Ejemplo
Section titled “Ejemplo”color.fromstyle(line.styleref.color1)Función de utilidad interna, idéntica a color.ass2. Convierte valores decimales a una cadena de color ASS.
val_R, val_G, val_B: number: Valores decimales de0a255.
Función de utilidad interna, idéntica a color.ass3. Convierte valores HSV a una cadena de color ASS.
Hue, Saturation, Value: number: Valores en el espacioHSV.
¿Para qué sirve?
Section titled “¿Para qué sirve?”Esta librería se especializa en la manipulación de la transparencia (alpha). Funciona de manera análoga a la librería color, pero aplicada a las etiquetas alfa (\alpha, \1a, \3a, \4a). Importante: Recuerda que en el formato de las etiquetas de ASS, un valor de alfa &H00& es totalmente opaco y &HFF& es totalmente transparente.
Funciones
Section titled “Funciones”Normaliza un valor alfa de diferentes formatos al estándar de xy-vsfilter (&HAA&). Puede interpretar formatos como HTML (#AA).
Alpha: string | number: El valor alfa a convertir.
Ejemplo
Section titled “Ejemplo”-- Convierte un alpha HTML semitransparente a formato ASSreturn "\\1a" .. alpha.ass("#80") -- Devuelve: \1a&H80&Genera un valor alfa aleatorio dentro de un rango.
Alpha1, Alpha2?: number | string, opcional: Los límites inferior y superior de alfa a generar. Pueden ser decimales (0-255) o cadenas en formato ASS. Por defecto, el rango es de0a255.
Ejemplo
Section titled “Ejemplo”-- Genera un alpha aleatorio entre opaco y semitransparentereturn "\\1a" .. alpha.random(0, 128)Interpola linealmente entre dos valores alfa. Es idéntica a la función interpolate_alpha de utils-auto4.
Ipol(number): El porcentaje de interpolación (de0a1).Alpha1, Alpha2: number | string: Los valores alfa de inicio y fin.
Ejemplo
Section titled “Ejemplo”-- Crea un fundido de entrada (fade in) a lo largo de la sílabareturn "\\1a" .. alpha.interpolate(syl.progress, "&HFF&", "&H00&")Crea una secuencia de transformaciones \t para cambiar el alpha en momentos específicos.
Times: table: Una tabla con los milisegundos en los que ocurren los cambios.Alphas: number | string | table: Un valor alfa o una tabla de alfas a aplicar....?: string, opcional: La etiqueta alfa a usar (\1a,\3a, etc.). Por defecto es\1a.
Ejemplo
Section titled “Ejemplo”-- El alpha del borde cambia a opaco en 500ms y a transparente en 1200msreturn tag.set({500, 1200}, {"&H00&", "&HFF&"}, "\\3a")Extrae únicamente la parte del alfa (&HAA&) de una cadena ASS que contiene color y alfa (&HAABBGGRR).
ColorAlpha: string: La cadena de color y alfa completo.
Ejemplo
Section titled “Ejemplo”alpha.fromstyle(line.styleref.color1)Función de utilidad que convierte un valor numérico decimal (0-255) a su representación hexadecimal de dos dígitos para ser usada en etiquetas alfa (&HAA&). Importante: Esta función realiza una conversión directa (0 → &H00&, 255 → &HFF&).
val_A: number: El valor decimal (0-255) a convertir.
Ejemplo
Section titled “Ejemplo”-- Crea un tag de alpha semitransparentereturn "\\1a" .. alpha.val2ass(128) -- Devuelve: \1a&H80&