Skip to content

Commit b57679c

Browse files
authored
Chore: RGBSplitFilter deprecate non-options constructor (#434)
* Chore: RGB Split Filter Deprecations * Cleanup --------- Co-authored-by: Baz Utsahajit <[email protected]>
1 parent d10069f commit b57679c

File tree

1 file changed

+58
-8
lines changed

1 file changed

+58
-8
lines changed

src/rgb-split/RGBSplitFilter.ts

+58-8
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
1-
import { Filter, GlProgram, GpuProgram, PointData } from 'pixi.js';
1+
import { deprecation, Filter, GlProgram, GpuProgram, PointData } from 'pixi.js';
22
import { vertex, wgslVertex } from '../defaults';
33
import fragment from './rgb-split.frag';
44
import source from './rgb-split.wgsl';
55

6+
type OffsetType = PointData | [number, number];
7+
68
export interface RGBSplitFilterOptions
79
{
810
/**
911
* The amount of offset for the red channel.
1012
* @default {x:-10,y:0}
1113
*/
12-
red: PointData;
14+
red?: OffsetType;
1315
/**
1416
* The amount of offset for the green channel.
1517
* @default {x:0,y:10}
1618
*/
17-
green: PointData;
19+
green?: OffsetType;
1820
/**
1921
* The amount of offset for the blue channel.
2022
* @default {x:0,y:0}
2123
*/
22-
blue: PointData;
24+
blue?: OffsetType;
2325
}
2426

2527
/**
@@ -45,8 +47,30 @@ export class RGBSplitFilter extends Filter
4547
uBlue: PointData;
4648
};
4749

48-
constructor(options?: RGBSplitFilterOptions)
50+
constructor(options?: RGBSplitFilterOptions);
51+
/**
52+
* @deprecated since 6.0.0
53+
*
54+
* @param {PIXI.PointData | number[]} [red=[-10,0]] - Red channel offset
55+
* @param {PIXI.PointData | number[]} [green=[0, 10]] - Green channel offset
56+
* @param {PIXI.PointData | number[]} [blue=[0, 0]] - Blue channel offset
57+
*/
58+
constructor(red?: OffsetType, green?: OffsetType, blue?: OffsetType);
59+
constructor(...args: [RGBSplitFilterOptions?] | [OffsetType?, OffsetType?, OffsetType?])
4960
{
61+
let options = args[0] ?? {};
62+
63+
if (Array.isArray(options) || ('x' in options && 'y' in options))
64+
{
65+
// eslint-disable-next-line max-len
66+
deprecation('6.0.0', 'RGBSplitFilter constructor params are now options object. See params: { red, green, blue }');
67+
68+
options = { red: options };
69+
70+
if (args[1] !== undefined) options.green = args[1];
71+
if (args[2] !== undefined) options.blue = args[2];
72+
}
73+
5074
options = { ...RGBSplitFilter.DEFAULT_OPTIONS, ...options };
5175

5276
const gpuProgram = GpuProgram.from({
@@ -79,14 +103,24 @@ export class RGBSplitFilter extends Filter
79103
});
80104

81105
this.uniforms = this.resources.rgbSplitUniforms.uniforms;
106+
107+
Object.assign(this, options);
82108
}
83109

84110
/**
85111
* Red channel offset.
86112
* @default {x:-10,y:0}
87113
*/
88114
get red(): PointData { return this.uniforms.uRed; }
89-
set red(value: PointData) { this.uniforms.uRed = value; }
115+
set red(value: OffsetType)
116+
{
117+
if (Array.isArray(value))
118+
{
119+
value = { x: value[0], y: value[1] };
120+
}
121+
122+
this.uniforms.uRed = value;
123+
}
90124

91125
/**
92126
* Amount of x-axis offset for the red channel.
@@ -107,7 +141,15 @@ export class RGBSplitFilter extends Filter
107141
* @default {x:0,y:10}
108142
*/
109143
get green(): PointData { return this.uniforms.uGreen; }
110-
set green(value: PointData) { this.uniforms.uGreen = value; }
144+
set green(value: OffsetType)
145+
{
146+
if (Array.isArray(value))
147+
{
148+
value = { x: value[0], y: value[1] };
149+
}
150+
151+
this.uniforms.uGreen = value;
152+
}
111153

112154
/**
113155
* Amount of x-axis offset for the green channel.
@@ -128,7 +170,15 @@ export class RGBSplitFilter extends Filter
128170
* @default {x:0,y:0}
129171
*/
130172
get blue(): PointData { return this.uniforms.uBlue; }
131-
set blue(value: PointData) { this.uniforms.uBlue = value; }
173+
set blue(value: OffsetType)
174+
{
175+
if (Array.isArray(value))
176+
{
177+
value = { x: value[0], y: value[1] };
178+
}
179+
180+
this.uniforms.uBlue = value;
181+
}
132182

133183
/**
134184
* Amount of x-axis offset for the blue channel.

0 commit comments

Comments
 (0)