@omnimedia/omnitool
Version:
open source video processing tools
109 lines (108 loc) • 6.06 kB
TypeScript
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 {};