UNPKG

@omnimedia/omnitool

Version:

open source video processing tools

109 lines (108 loc) 6.06 kB
import type { AlphaFilterOptions, BlurFilterOptions, ColorMatrix, FilterOptions as PixiFilterOptions, NoiseFilterOptions, Point } from "pixi.js"; import type * as PixiFilters from "pixi-filters"; import { FilterableItem, Item } from "./item.js"; export type PixelateFilterOptions = { size?: number | number[] | Point; }; export type EmbossFilterOptions = { strength?: number; }; export type ChoiceOptions = string[] | Record<string, string | number> | number[]; export type ChoiceFilterProperty = { type: "choice"; options: ChoiceOptions; default: string | number; }; export type NumericFilterProperty = { type: "number"; min: number; max: number; default: number; step?: number; }; export type ColorFilterProperty = { type: "color"; default: string; }; export type BooleanFilterProperty = { type: "boolean"; default: boolean; }; export type ObjectFilterProperty = { type: "object"; properties: Record<string, FilterPropertyConfig>; }; export type ArrayFilterProperty = { type: "array"; items: FilterPropertyConfig[]; }; export type FilterPropertyConfig = NumericFilterProperty | ColorFilterProperty | BooleanFilterProperty | ChoiceFilterProperty | ObjectFilterProperty | ArrayFilterProperty; export interface FilterSchema { [property: string]: FilterPropertyConfig; } export type SchemaFromOptions<T> = { [K in keyof Required<T>]?: FilterPropertyConfig; }; type FilterDefinition<TType extends string, TParams> = { type: TType; schema: SchemaFromOptions<TParams>; _params?: TParams; }; export declare const filters: { readonly adjustment: FilterDefinition<"AdjustmentFilter", PixiFilters.AdjustmentFilterOptions>; readonly advancedBloom: FilterDefinition<"AdvancedBloomFilter", PixiFilters.AdvancedBloomFilterOptions>; readonly alpha: FilterDefinition<"AlphaFilter", AlphaFilterOptions>; readonly ascii: FilterDefinition<"AsciiFilter", PixiFilters.AsciiFilterOptions>; readonly backdropBlur: FilterDefinition<"BackdropBlurFilter", BlurFilterOptions>; readonly bevel: FilterDefinition<"BevelFilter", PixiFilters.BevelFilterOptions>; readonly bloom: FilterDefinition<"BloomFilter", PixiFilters.BloomFilterOptions>; readonly blur: FilterDefinition<"BlurFilter", BlurFilterOptions>; readonly bulgePinch: FilterDefinition<"BulgePinchFilter", PixiFilters.BulgePinchFilterOptions>; readonly colorGradient: FilterDefinition<"ColorGradientFilter", PixiFilters.ColorGradientFilterOptions | PixiFilters.ColorGradientFilterCSSOptions>; readonly colorMatrix: FilterDefinition<"ColorMatrixFilter", PixiFilterOptions & { matrix?: ColorMatrix; }>; readonly colorOverlay: FilterDefinition<"ColorOverlayFilter", PixiFilters.ColorOverlayFilterOptions>; readonly colorReplace: FilterDefinition<"ColorReplaceFilter", PixiFilters.ColorReplaceFilterOptions>; readonly convolution: FilterDefinition<"ConvolutionFilter", PixiFilters.ConvolutionFilterOptions>; readonly crossHatch: FilterDefinition<"CrossHatchFilter", {}>; readonly crt: FilterDefinition<"CRTFilter", PixiFilters.CRTFilterOptions>; readonly dot: FilterDefinition<"DotFilter", PixiFilters.DotFilterOptions>; readonly dropShadow: FilterDefinition<"DropShadowFilter", PixiFilters.DropShadowFilterOptions>; readonly emboss: FilterDefinition<"EmbossFilter", EmbossFilterOptions>; readonly glitch: FilterDefinition<"GlitchFilter", PixiFilters.GlitchFilterOptions>; readonly glow: FilterDefinition<"GlowFilter", PixiFilters.GlowFilterOptions>; readonly godray: FilterDefinition<"GodrayFilter", PixiFilters.GodrayFilterOptions>; readonly grayscale: FilterDefinition<"GrayscaleFilter", {}>; readonly hslAdjustment: FilterDefinition<"HslAdjustmentFilter", PixiFilters.HslAdjustmentFilterOptions>; readonly kawaseBlur: FilterDefinition<"KawaseBlurFilter", PixiFilters.KawaseBlurFilterOptions>; readonly motionBlur: FilterDefinition<"MotionBlurFilter", PixiFilters.MotionBlurFilterOptions>; readonly multiColorReplace: FilterDefinition<"MultiColorReplaceFilter", PixiFilters.MultiColorReplaceFilterOptions>; readonly noise: FilterDefinition<"NoiseFilter", NoiseFilterOptions>; readonly oldFilm: FilterDefinition<"OldFilmFilter", PixiFilters.OldFilmFilterOptions>; readonly outline: FilterDefinition<"OutlineFilter", PixiFilters.OutlineFilterOptions>; readonly pixelate: FilterDefinition<"PixelateFilter", PixelateFilterOptions>; readonly radialBlur: FilterDefinition<"RadialBlurFilter", PixiFilters.RadialBlurFilterOptions>; readonly reflection: FilterDefinition<"ReflectionFilter", PixiFilters.ReflectionFilterOptions>; readonly rgbSplit: FilterDefinition<"RGBSplitFilter", PixiFilters.RGBSplitFilterOptions>; readonly shockwave: FilterDefinition<"ShockwaveFilter", PixiFilters.ShockwaveFilterOptions>; readonly simplexNoise: FilterDefinition<"SimplexNoiseFilter", PixiFilters.SimplexNoiseFilterOptions>; readonly tiltShift: FilterDefinition<"TiltShiftFilter", PixiFilters.TiltShiftFilterOptions>; readonly twist: FilterDefinition<"TwistFilter", Partial<PixiFilters.TwistFilterOptions>>; readonly zoomBlur: FilterDefinition<"ZoomBlurFilter", PixiFilters.ZoomBlurFilterOptions>; }; type FilterDefinitions = typeof filters; type FilterDefinitionParams<T> = T extends FilterDefinition<string, infer TParams> ? TParams : never; export type FilterOptions = { [TName in keyof FilterDefinitions as FilterDefinitions[TName]["type"]]: FilterDefinitionParams<FilterDefinitions[TName]>; }; export type FilterType = FilterDefinitions[keyof FilterDefinitions]["type"]; export type FilterParams<T extends FilterType = FilterType> = FilterOptions[T]; export interface FilterAction<TFilter extends FilterType> { <T extends FilterableItem>(item: T, params?: FilterParams<TFilter>): T; make(params?: FilterParams<TFilter>): Item.Filter<TFilter>; } export type FilterActions = { [TName in keyof typeof filters]: FilterAction<(typeof filters)[TName]["type"]>; }; export {};