UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

340 lines 10.7 kB
const num = (min, max, defaultValue, step) => ({ type: "number", min, max, default: defaultValue, ...(step === undefined ? {} : { step }), }); const color = (defaultValue) => ({ type: "color", default: defaultValue, }); const bool = (defaultValue) => ({ type: "boolean", default: defaultValue, }); const choice = (options, defaultValue) => ({ type: "choice", options, default: defaultValue, }); const object = (properties) => ({ type: "object", properties, }); const array = (items) => ({ type: "array", items, }); const kernelSizes = [3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25]; const glitchFillModes = { TRANSPARENT: 0, ORIGINAL: 1, LOOP: 2, CLAMP: 3, MIRROR: 4, }; const defineFilter = () => (type, schema = {}) => ({ type, schema }); export const filters = { adjustment: defineFilter()("AdjustmentFilter", { gamma: num(0, 5, 1), saturation: num(0, 5, 1), contrast: num(0, 5, 1), brightness: num(0, 5, 1), red: num(0, 5, 1), green: num(0, 5, 1), blue: num(0, 5, 1), alpha: num(0, 1, 1, 0.01), }), advancedBloom: defineFilter()("AdvancedBloomFilter", { threshold: num(0.1, 0.9, 0.5, 0.01), bloomScale: num(0.5, 1.5, 1, 0.01), brightness: num(0.5, 1.5, 1, 0.01), blur: num(0, 20, 8, 0.1), quality: num(1, 20, 4, 1), }), alpha: defineFilter()("AlphaFilter", { alpha: num(0, 1, 1, 0.01), }), ascii: defineFilter()("AsciiFilter", { size: num(2, 20, 8, 1), color: color("#ffffff"), replaceColor: bool(false), }), backdropBlur: defineFilter()("BackdropBlurFilter", { strength: num(0, 100, 8, 0.1), quality: num(1, 10, 4, 1), }), bevel: defineFilter()("BevelFilter", { rotation: num(0, 360, 45, 1), thickness: num(0, 10, 2, 0.1), lightColor: color("#ffffff"), lightAlpha: num(0, 1, 0.7, 0.01), shadowColor: color("#000000"), shadowAlpha: num(0, 1, 0.7, 0.01), }), bloom: defineFilter()("BloomFilter", { strength: object({ x: num(0, 20, 2, 0.1), y: num(0, 20, 2, 0.1), }), quality: num(1, 20, 4, 1), resolution: num(0.25, 4, 1, 0.01), kernelSize: choice([5, 7, 9, 11, 13, 15], 5), }), blur: defineFilter()("BlurFilter", { strength: num(0, 100, 8, 0.1), quality: num(1, 10, 4, 1), }), bulgePinch: defineFilter()("BulgePinchFilter", { radius: num(0, 1000, 100, 1), strength: num(-1, 1, 1, 0.01), center: object({ x: num(0, 1, 0.5, 0.01), y: num(0, 1, 0.5, 0.01), }), }), colorGradient: defineFilter()("ColorGradientFilter"), colorMatrix: defineFilter()("ColorMatrixFilter"), colorOverlay: defineFilter()("ColorOverlayFilter", { color: color("#ff0000"), alpha: num(0, 1, 0.5, 0.01), }), colorReplace: defineFilter()("ColorReplaceFilter", { originalColor: color("#ff0000"), targetColor: color("#000000"), tolerance: num(0, 1, 0.4, 0.01), }), convolution: defineFilter()("ConvolutionFilter", { width: num(0, 500, 300, 1), height: num(0, 500, 300, 1), matrix: array([ num(0, 1, 0), num(0, 1, 0.5, 0.01), num(0, 1, 0), num(0, 1, 0.5, 0.01), num(0, 1, 1, 0.01), num(0, 1, 0.5, 0.01), num(0, 1, 0), num(0, 1, 0.5, 0.01), num(0, 1, 0), ]), }), crossHatch: defineFilter()("CrossHatchFilter"), crt: defineFilter()("CRTFilter", { curvature: num(0, 10, 1, 0.01), lineWidth: num(0, 5, 3, 0.01), lineContrast: num(0, 1, 0.3, 0.01), verticalLine: bool(false), noise: num(0, 1, 0.2, 0.01), noiseSize: num(1, 10, 1, 0.1), vignetting: num(0, 1, 0.3, 0.01), vignettingAlpha: num(0, 1, 1, 0.01), vignettingBlur: num(0, 1, 0.3, 0.01), seed: num(0, 1, 0, 0.01), time: num(0.5, 20, 0.5, 0.01), }), dot: defineFilter()("DotFilter", { scale: num(0.3, 1, 1, 0.01), angle: num(0, 5, 5, 0.01), grayscale: bool(true), }), dropShadow: defineFilter()("DropShadowFilter", { blur: num(0, 20, 2, 0.1), quality: num(1, 20, 3, 1), alpha: num(0, 1, 0.5, 0.01), offset: object({ x: num(-50, 50, 4, 1), y: num(-50, 50, 4, 1), }), color: color("#000000"), shadowOnly: bool(false), }), emboss: defineFilter()("EmbossFilter", { strength: num(0, 20, 5, 0.1), }), glitch: defineFilter()("GlitchFilter", { slices: num(0, 64, 5, 1), seed: num(0, 1, 0.5, 0.01), offset: num(-400, 400, 100, 1), direction: num(-180, 180, 0, 1), fillMode: choice(glitchFillModes, "LOOP"), average: bool(false), minSize: num(0, 64, 8, 1), sampleSize: num(1, 2048, 512, 1), red: object({ x: num(-50, 50, 2, 1), y: num(-50, 50, 2, 1), }), blue: object({ x: num(-50, 50, 10, 1), y: num(-50, 50, -4, 1), }), green: object({ x: num(-50, 50, -10, 1), y: num(-50, 50, 4, 1), }), }), glow: defineFilter()("GlowFilter", { distance: num(0, 20, 15, 0.1), innerStrength: num(0, 20, 0, 0.1), outerStrength: num(0, 20, 2, 0.1), color: color("#ffffff"), quality: num(0, 1, 0.2, 0.01), alpha: num(0, 1, 1, 0.01), knockout: bool(false), }), godray: defineFilter()("GodrayFilter", { time: num(0, 1, 0, 0.01), gain: num(0, 1, 0.6, 0.01), lacunarity: num(0, 5, 2.75, 0.01), alpha: num(0, 1, 1, 0.01), parallel: bool(true), angle: num(-60, 60, 30, 1), center: object({ x: num(-100, 2012, 956, 1), y: num(-1000, -100, -100, 1), }), }), grayscale: defineFilter()("GrayscaleFilter"), hslAdjustment: defineFilter()("HslAdjustmentFilter", { hue: num(-180, 180, 0, 1), saturation: num(-1, 1, 0, 0.01), lightness: num(-1, 1, 0, 0.01), colorize: bool(false), alpha: num(0, 1, 1, 0.01), }), kawaseBlur: defineFilter()("KawaseBlurFilter", { strength: num(0, 20, 4, 0.1), quality: num(1, 20, 3, 1), pixelSize: object({ x: num(0, 10, 1, 0.1), y: num(0, 10, 1, 0.1), }), }), motionBlur: defineFilter()("MotionBlurFilter", { velocity: object({ x: num(-90, 90, 40, 1), y: num(-90, 90, 40, 1), }), kernelSize: choice(kernelSizes, 15), offset: num(-150, 150, 0, 1), }), multiColorReplace: defineFilter()("MultiColorReplaceFilter"), noise: defineFilter()("NoiseFilter", { noise: num(0, 1, 0.5, 0.01), seed: num(0.01, 10, 0.5, 0.01), }), oldFilm: defineFilter()("OldFilmFilter", { sepia: num(0, 1, 0.3, 0.01), noise: num(0, 1, 0.3, 0.01), noiseSize: num(1, 10, 1, 0.1), scratch: num(-1, 1, 0.5, 0.01), scratchDensity: num(0, 1, 0.3, 0.01), scratchWidth: num(1, 20, 1, 0.1), vignetting: num(0, 1, 0.3, 0.01), vignettingAlpha: num(0, 1, 1, 0.01), vignettingBlur: num(0, 1, 0.3, 0.01), }), outline: defineFilter()("OutlineFilter", { thickness: num(0, 10, 4, 0.1), color: color("#000000"), alpha: num(0, 1, 1, 0.01), knockout: bool(false), }), pixelate: defineFilter()("PixelateFilter", { size: object({ x: num(4, 40, 10, 1), y: num(4, 40, 10, 1), }), }), radialBlur: defineFilter()("RadialBlurFilter", { angle: num(-180, 180, 20, 1), radius: num(-1, 1912, 300, 1), center: object({ x: num(0, 1912, 956, 1), y: num(0, 920, 460, 1), }), kernelSize: choice(kernelSizes, 15), }), reflection: defineFilter()("ReflectionFilter", { mirror: bool(true), boundary: num(0, 1, 0.5, 0.01), amplitude: object({ start: num(0, 50, 0, 0.1), end: num(0, 50, 20, 0.1), }), waveLength: object({ start: num(10, 200, 30, 1), end: num(10, 200, 100, 1), }), alpha: object({ start: num(0, 1, 1, 0.01), end: num(0, 1, 1, 0.01), }), time: num(0, 20, 0, 0.01), }), rgbSplit: defineFilter()("RGBSplitFilter", { red: object({ x: num(-20, 20, -10, 1), y: num(-20, 20, 0, 1), }), blue: object({ x: num(-20, 20, 0, 1), y: num(-20, 20, 0, 1), }), green: object({ x: num(-20, 20, 0, 1), y: num(-20, 20, 10, 1), }), }), shockwave: defineFilter()("ShockwaveFilter", { speed: num(500, 2000, 500, 1), amplitude: num(1, 100, 30, 1), wavelength: num(2, 400, 160, 1), brightness: num(0.2, 2, 1, 0.01), radius: num(100, 2000, -1, 1), center: object({ x: num(0, 1912, 956, 1), y: num(0, 920, 460, 1), }), }), simplexNoise: defineFilter()("SimplexNoiseFilter", { strength: num(0, 1, 0.5, 0.01), noiseScale: num(0, 50, 10, 0.1), offsetX: num(0, 5, 0, 0.01), offsetY: num(0, 5, 0, 0.01), offsetZ: num(0, 5, 0, 0.01), step: num(-1, 1, -1, 0.01), }), tiltShift: defineFilter()("TiltShiftFilter", { blur: num(0, 200, 100, 0.1), gradientBlur: num(0, 1000, 600, 1), start: object({ x: num(0, 1912, 0, 1), y: num(0, 920, 460, 1), }), end: object({ x: num(0, 1912, 1912, 1), y: num(0, 920, 460, 1), }), }), twist: defineFilter()("TwistFilter", { angle: num(-10, 10, 4, 0.01), radius: num(0, 1912, 200, 1), offset: object({ x: num(0, 1912, 956, 1), y: num(0, 920, 460, 1), }), }), zoomBlur: defineFilter()("ZoomBlurFilter", { strength: num(0.01, 0.5, 0.1, 0.01), center: object({ x: num(0, 1912, 956, 1), y: num(0, 920, 460, 1), }), innerRadius: num(0, 956, 80, 1), radius: num(0, 956, -1, 1), }), }; //# sourceMappingURL=filters.js.map