UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

150 lines (149 loc) 5 kB
import type { OptimizedBuffer } from "../buffer.js"; export declare class DistortionEffect { glitchChancePerSecond: number; maxGlitchLines: number; minGlitchDuration: number; maxGlitchDuration: number; maxShiftAmount: number; shiftFlipRatio: number; colorGlitchChance: number; private lastGlitchTime; private glitchDuration; private activeGlitches; constructor(options?: Partial<DistortionEffect>); /** * Applies the animated distortion/glitch effect to the buffer. */ apply(buffer: OptimizedBuffer, deltaTime: number): void; } /** * Applies a vignette effect by darkening the corners, optimized with precomputation. * Uses native colorMatrix with a zero matrix for attenuation. */ export declare class VignetteEffect { private _strength; private precomputedAttenuationCellMask; private precomputedAttenuation; private cachedWidth; private cachedHeight; private static zeroMatrix; constructor(strength?: number); set strength(newStrength: number); get strength(): number; private _computeFactors; private _preserveGraphemeRuns; /** * Applies the vignette effect using native colorMatrix with a zero matrix. * The zero matrix maps all colors to black, and the attenuation cell masks * control how much of the effect is applied (strength-based blending). */ apply(buffer: OptimizedBuffer): void; } /** * Applies animated cloud shadows using Perlin noise. * Darkens the background buffer based on procedural cloud density. */ export declare class CloudsEffect { private noise; private _scale; private _speed; private _density; private _darkness; private time; constructor(scale?: number, speed?: number, density?: number, darkness?: number); set scale(newScale: number); get scale(): number; set speed(newSpeed: number); get speed(): number; set density(newDensity: number); get density(): number; set darkness(newDarkness: number); get darkness(): number; /** * Applies cloud shadow effect using Perlin noise mask with native colorMatrix. * Uses FBM (Fractal Brownian Motion) for detailed clouds, offloaded to native code. */ apply(buffer: OptimizedBuffer, deltaTime: number): void; } /** * Applies animated flames rising from the bottom using Perlin noise. * Creates warm fire effect that fades as it rises. */ export declare class FlamesEffect { private noise; private _scale; private _speed; private _intensity; private time; constructor(scale?: number, speed?: number, intensity?: number); set scale(newScale: number); get scale(): number; set speed(newSpeed: number); get speed(): number; set intensity(newIntensity: number); get intensity(): number; /** * Applies flame effect rising from bottom using Perlin noise. * Flames get cooler (redder) and fade as they rise. */ apply(buffer: OptimizedBuffer, deltaTime: number): void; } /** * Applies a CRT rolling bar effect - a horizontal bar that slowly scans down the screen. * Simulates the classic CRT monitor rolling bar artifact. */ export declare class CRTRollingBarEffect { private _speed; private _height; private _intensity; private _fadeDistance; private position; constructor(speed?: number, height?: number, intensity?: number, fadeDistance?: number); set speed(newSpeed: number); get speed(): number; set height(newHeight: number); get height(): number; set intensity(newIntensity: number); get intensity(): number; set fadeDistance(newFadeDistance: number); get fadeDistance(): number; /** * Applies the rolling bar effect to the buffer. * Creates a smooth horizontal bar that scans down the screen with a bell-curve gradient. * The bar has a bright center that smoothly fades to the edges. */ apply(buffer: OptimizedBuffer, deltaTime: number): void; } /** * Applies animated rainbow colors to cells with white foreground. * Cycles through HSV hue spectrum over time. */ export declare class RainbowTextEffect { private _speed; private _saturation; private _value; private _repeats; private time; constructor(speed?: number, saturation?: number, value?: number, repeats?: number); set speed(newSpeed: number); get speed(): number; set saturation(newSaturation: number); get saturation(): number; set value(newValue: number); get value(): number; set repeats(newRepeats: number); get repeats(): number; /** * Converts HSV color to RGB * @param h - Hue [0, 1] * @param s - Saturation [0, 1] * @param v - Value [0, 1] * @returns [r, g, b] each in [0, 1] */ private hsvToRgb; /** * Applies rainbow colors to cells with white foreground. * White is defined as R, G, B all >= 0.9 */ apply(buffer: OptimizedBuffer, deltaTime: number): void; }