Skip to content

Commit 060932f

Browse files
committed
add SimulateColorBlindEffectAction fromJson
1 parent 49c7e2b commit 060932f

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ describe('effect.fromJson', () => {
2626
{ actionType: 'vectorize', numOfColors: 17, detailLevel: 100 },
2727
{ actionType: 'gradientFade', strength: 5, horizontalStartPoint: 10, verticalStartPoint: 20 },
2828
{ actionType: 'assistColorblind', type: 'stripes', stripesStrength: 20 },
29-
{ actionType: 'assistColorblind', type: 'xray' }
29+
{ actionType: 'assistColorblind', type: 'xray' },
30+
{ actionType: 'simulateColorblind', condition: 'rod_monochromacy' }
3031
]);
3132

3233
expect(transformation.toString()).toStrictEqual([
@@ -53,7 +54,8 @@ describe('effect.fromJson', () => {
5354
'e_vectorize:colors:17:detail:100',
5455
'e_gradient_fade:5,x_10,y_20',
5556
'e_assist_colorblind:20',
56-
'e_assist_colorblind:xray'
57+
'e_assist_colorblind:xray',
58+
'e_simulate_colorblind:rod_monochromacy'
5759
].join('/'));
5860
});
5961
});

src/actions/effect/SimulateColorBlind.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Action} from "../../internal/Action.js";
22
import {Qualifier} from "../../internal/qualifier/Qualifier.js";
33
import {SimulateColorBlindType} from "../../types/types.js";
44
import {ISimulateColorBlindEffectModel} from "../../internal/models/IEffectActionModel.js";
5+
import {IActionModel} from "../../internal/models/IActionModel.js";
56

67
/**
78
* @description Simulates the way an image would appear to someone with the specified color blind condition
@@ -34,6 +35,17 @@ class SimulateColorBlindEffectAction extends Action {
3435
this._actionModel.condition = cond;
3536
return this.setQualifier(cond);
3637
}
38+
39+
static fromJson(actionModel: IActionModel): SimulateColorBlindEffectAction {
40+
const {actionType, condition} = (actionModel as ISimulateColorBlindEffectModel);
41+
42+
// We are using this() to allow inheriting classes to use super.fromJson.apply(this, [actionModel])
43+
// This allows the inheriting classes to determine the class to be created
44+
const result = new this();
45+
condition && result.condition(condition);
46+
47+
return result;
48+
}
3749
}
3850

3951

src/internal/fromJson.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import {DitherEffectAction} from "../actions/effect/Dither.js";
3434
import {VectorizeEffectAction} from "../actions/effect/Vectorize.js";
3535
import {GradientFadeEffectAction} from "../actions/effect/GradientFade.js";
3636
import {AssistColorBlindEffectAction} from "../actions/effect/AssistColorBlind.js";
37+
import {SimulateColorBlindEffectAction} from "../actions/effect/SimulateColorBlind.js";
3738

3839
const ActionModelMap: Record<string, IHasFromJson> = {
3940
scale: ResizeScaleAction,
@@ -73,7 +74,8 @@ const ActionModelMap: Record<string, IHasFromJson> = {
7374
dither: DitherEffectAction,
7475
vectorize: VectorizeEffectAction,
7576
gradientFade: GradientFadeEffectAction,
76-
assistColorblind: AssistColorBlindEffectAction
77+
assistColorblind: AssistColorBlindEffectAction,
78+
simulateColorblind: SimulateColorBlindEffectAction
7779
};
7880

7981
/**

0 commit comments

Comments
 (0)