From e14c9ae2a695a835c20adcf03e36ab281a9b8658 Mon Sep 17 00:00:00 2001 From: Bauke Date: Thu, 10 Mar 2022 18:17:11 +0100 Subject: [PATCH] Add gegl:median-blur. --- source/gegl/exports.ts | 1 + source/gegl/median-blur.ts | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 source/gegl/median-blur.ts diff --git a/source/gegl/exports.ts b/source/gegl/exports.ts index 1ad97fe..65fb66d 100644 --- a/source/gegl/exports.ts +++ b/source/gegl/exports.ts @@ -4,6 +4,7 @@ export * from './cell-noise.js'; export * from './crop.js'; export * from './focus-blur.js'; export * from './generic.js'; +export * from './median-blur.js'; export * from './mirrors.js'; export * from './mosaic.js'; export * from './newsprint.js'; diff --git a/source/gegl/median-blur.ts b/source/gegl/median-blur.ts new file mode 100644 index 0000000..c656b9e --- /dev/null +++ b/source/gegl/median-blur.ts @@ -0,0 +1,32 @@ +import {BaseOperation} from './base.js'; + +export interface MedianBlurParameters { + abyssPolicy: 'none' | 'clamp'; + alphaPercentile: number; + highPrecision: boolean; + neighborhood: 'square' | 'circle' | 'diamond'; + percentile: number; + radius: number; +} + +export class MedianBlur extends BaseOperation { + public static default: MedianBlurParameters = { + abyssPolicy: 'clamp', + alphaPercentile: 50, + highPrecision: false, + neighborhood: 'circle', + percentile: 50, + radius: 3, + }; + + public get default() { + return MedianBlur.default; + } + + public appendCrop = false; + public name = 'gegl:median-blur'; + + constructor(parameters?: Partial) { + super({...MedianBlur.default, ...parameters}); + } +}