Skip to content

Commit 49c7e2b

Browse files
committed
add AssistColorBlindEffectAction fromJson
1 parent c3d119f commit 49c7e2b

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

__TESTS__/unit/fromJson/effect.fromJson.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ describe('effect.fromJson', () => {
2424
{ actionType: 'vignette', level: 5 },
2525
{ actionType: 'dither', type: 9 },
2626
{ actionType: 'vectorize', numOfColors: 17, detailLevel: 100 },
27-
{ actionType: 'gradientFade', strength: 5, horizontalStartPoint: 10, verticalStartPoint: 20 }
28-
27+
{ actionType: 'gradientFade', strength: 5, horizontalStartPoint: 10, verticalStartPoint: 20 },
28+
{ actionType: 'assistColorblind', type: 'stripes', stripesStrength: 20 },
29+
{ actionType: 'assistColorblind', type: 'xray' }
2930
]);
3031

3132
expect(transformation.toString()).toStrictEqual([
@@ -50,7 +51,9 @@ describe('effect.fromJson', () => {
5051
'e_vignette:5',
5152
'e_dither:9',
5253
'e_vectorize:colors:17:detail:100',
53-
'e_gradient_fade:5,x_10,y_20'
54+
'e_gradient_fade:5,x_10,y_20',
55+
'e_assist_colorblind:20',
56+
'e_assist_colorblind:xray'
5457
].join('/'));
5558
});
5659
});

src/actions/effect/AssistColorBlind.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Action} from "../../internal/Action.js";
22
import {QualifierValue} from "../../internal/qualifier/QualifierValue.js";
33
import {Qualifier} from "../../internal/qualifier/Qualifier.js";
44
import {IAssistColorBlindEffectModel} from "../../internal/models/IEffectActionModel.js";
5+
import {IActionModel} from "../../internal/models/IActionModel.js";
56

67
/**
78
* @description Applies stripes to the image to help people with common color-blind conditions to differentiate between colors that are similar for them.
@@ -34,9 +35,25 @@ class AssistColorBlindEffectAction extends Action {
3435
*/
3536
stripesStrength(strength:number | string): this {
3637
this._actionModel.type = 'stripes';
37-
this._actionModel.stripesStrength = strength;
38+
this._actionModel.stripesStrength = strength as number;
3839
return this.addQualifier(new Qualifier('e', new QualifierValue(['assist_colorblind', strength]).setDelimiter(':')));
3940
}
41+
42+
static fromJson(actionModel: IActionModel): AssistColorBlindEffectAction {
43+
const {actionType, type, stripesStrength} = (actionModel as IAssistColorBlindEffectModel);
44+
45+
// We are using this() to allow inheriting classes to use super.fromJson.apply(this, [actionModel])
46+
// This allows the inheriting classes to determine the class to be created
47+
const result = new this();
48+
if (type === 'xray'){
49+
result.xray();
50+
}
51+
if (type === 'stripes'){
52+
stripesStrength && result.stripesStrength(stripesStrength);
53+
}
54+
55+
return result;
56+
}
4057
}
4158

4259
export {AssistColorBlindEffectAction};

src/internal/fromJson.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {MakeTransparentEffectAction} from "../actions/effect/leveled/MakeTranspa
3333
import {DitherEffectAction} from "../actions/effect/Dither.js";
3434
import {VectorizeEffectAction} from "../actions/effect/Vectorize.js";
3535
import {GradientFadeEffectAction} from "../actions/effect/GradientFade.js";
36+
import {AssistColorBlindEffectAction} from "../actions/effect/AssistColorBlind.js";
3637

3738
const ActionModelMap: Record<string, IHasFromJson> = {
3839
scale: ResizeScaleAction,
@@ -71,8 +72,8 @@ const ActionModelMap: Record<string, IHasFromJson> = {
7172
vignette: EffectActionWithStrength,
7273
dither: DitherEffectAction,
7374
vectorize: VectorizeEffectAction,
74-
gradientFade: GradientFadeEffectAction
75-
75+
gradientFade: GradientFadeEffectAction,
76+
assistColorblind: AssistColorBlindEffectAction
7677
};
7778

7879
/**

src/internal/models/IEffectActionModel.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ interface IGradientFadeEffecModel extends IActionModel{
5757

5858
interface IAssistColorBlindEffectModel extends IActionModel{
5959
type?: string;
60+
stripesStrength?: number;
6061
}
6162

6263
interface ISimulateColorBlindEffectModel extends IActionModel{

0 commit comments

Comments
 (0)