Skip to content

Commit e25f1e4

Browse files
author
Nir Maoz
authored
Feature/color-space-from-icc-from-json (#469)
1 parent 05d3621 commit e25f1e4

File tree

8 files changed

+36
-44
lines changed

8 files changed

+36
-44
lines changed

__TESTS__/unit/fromJson/delivery.fromJson.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,11 @@ describe('delivery.fromJson', () => {
88

99
expect(transformation.toString()).toStrictEqual('cs_srgb:truecolor');
1010
});
11+
it('should generate a transformation string from colorSpaceFromIcc action', function () {
12+
const transformation = fromJson([
13+
{actionType: 'colorSpaceFromICC', publicId: 'sample'}
14+
]);
15+
16+
expect(transformation.toString()).toStrictEqual('cs_icc:sample');
17+
});
1118
});

src/actions/delivery.ts

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ import {DeliveryFormat} from "./delivery/DeliveryFormat.js";
1010
import {DeliveryQualityAction} from "./delivery/DeliveryQuality.js";
1111
import {FormatQualifier} from "../qualifiers/format/FormatQualifier.js";
1212
import {toFloatAsString} from "../internal/utils/toFloatAsString.js";
13-
import {DeliveryColorSpaceFromICC} from "./delivery/DeliveryColorSpaceFromICC.js";
13+
import {DeliveryColorSpaceFromICCAction} from "./delivery/DeliveryColorSpaceFromICCAction.js";
1414
import {DeliveryAction} from "./delivery/DeliveryAction.js";
1515
import {ColorSpaceType} from "../types/types.js";
1616
import {QualityTypes} from "../types/types.js";
1717
import {ImageFormatType, VideoFormatType} from "../types/types.js";
1818
import {DeliveryColorSpaceAction} from "./delivery/DeliveryColorSpaceAction.js";
1919

20-
export type IDeliveryAction = DeliveryAction | DeliveryColorSpaceAction | DeliveryColorSpaceFromICC;
20+
export type IDeliveryAction = DeliveryAction | DeliveryColorSpaceAction | DeliveryColorSpaceFromICCAction;
2121

2222
/**
2323
* @summary action
@@ -46,8 +46,6 @@ function format(format:FormatQualifier | ImageFormatType | VideoFormatType | str
4646
return new DeliveryFormat('f', format);
4747
}
4848

49-
50-
5149
/**
5250
* @summary action
5351
* @description Deliver the image in the specified device pixel ratio.
@@ -69,7 +67,6 @@ function dpr(dpr: string|number):DeliveryAction {
6967
return new DeliveryAction('dpr', toFloatAsString(dpr), 'type');
7068
}
7169

72-
7370
/**
7471
* @summary action
7572
* @description Controls the quality of the delivered image or video.
@@ -117,8 +114,6 @@ function density(value:number) :DeliveryAction {
117114
return new DeliveryAction('dn', value, 'density');
118115
}
119116

120-
121-
122117
/**
123118
* @summary action
124119
* @description Default images can be used in the case that a requested image does not exist.
@@ -139,7 +134,6 @@ function defaultImage(publicIdWithExtension:string) :DeliveryAction {
139134
return new DeliveryAction('d', publicIdWithExtension, 'defaultImage');
140135
}
141136

142-
143137
/**
144138
* @summary action
145139
* @description Controls the color space used for the delivered image.
@@ -161,7 +155,6 @@ function colorSpace(mode: ColorSpaceType): DeliveryColorSpaceAction {
161155
return new DeliveryColorSpaceAction(mode);
162156
}
163157

164-
165158
/**
166159
* @summary action
167160
* @description Specifies the ICC profile to use for the color space.
@@ -181,13 +174,10 @@ function colorSpace(mode: ColorSpaceType): DeliveryColorSpaceAction {
181174
* colorSpaceFromICC('sample.icc'),
182175
* );
183176
*/
184-
function colorSpaceFromICC(publicId:string) :DeliveryColorSpaceFromICC {
185-
return new DeliveryColorSpaceFromICC(publicId);
177+
function colorSpaceFromICC(publicId: string): DeliveryColorSpaceFromICCAction {
178+
return new DeliveryColorSpaceFromICCAction(publicId);
186179
}
187180

188-
189-
190-
191181
const Delivery = {
192182
format,
193183
dpr,

src/actions/delivery/DeliveryAction.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ import {Action} from "../../internal/Action.js";
22
import {FormatQualifier} from "../../qualifiers/format/FormatQualifier.js";
33
import {Qualifier} from "../../internal/qualifier/Qualifier.js";
44
import {
5-
IColorSpaceModel,
6-
IDefaultImageModel,
7-
IDeliveryFormatModel, IDeliveryQualityModel,
8-
IDensityModel,
9-
IDprModel
5+
IDefaultImageModel, IDeliveryColorSpaceActionModel, IDeliveryColorSpaceFromICCActionModel,
6+
IDeliveryFormatModel, IDeliveryQualityModel, IDensityModel, IDprModel
107
} from "../../internal/models/IDeliveryActionModel.js";
118
import {DELIVERY_MODE_TO_ACTION_TYPE_MAP} from "../../internal/internalConstants.js";
129

@@ -16,7 +13,7 @@ import {DELIVERY_MODE_TO_ACTION_TYPE_MAP} from "../../internal/internalConstants
1613
* @extends SDK.Action
1714
*/
1815
class DeliveryAction extends Action {
19-
protected _actionModel: IColorSpaceModel | IDprModel | IDensityModel | IDefaultImageModel | IDeliveryFormatModel | IDeliveryQualityModel = {};
16+
protected _actionModel: IDeliveryColorSpaceActionModel | IDeliveryColorSpaceFromICCActionModel | IDprModel | IDensityModel | IDefaultImageModel | IDeliveryFormatModel | IDeliveryQualityModel = {};
2017

2118
/**
2219
* @param {string} deliveryKey A generic Delivery Action Key (such as q, f, dn, etc.)

src/actions/delivery/DeliveryColorSpaceAction.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import {Action} from "../../internal/Action.js";
22
import {Qualifier} from "../../internal/qualifier/Qualifier.js";
3-
import {
4-
ColorSpaceModeType,
5-
IDeliveryColorSpaceActionModel
6-
} from "../../internal/models/IDeliveryColorSpaceActionModel.js";
73
import {IActionModel} from "../../internal/models/IActionModel.js";
84
import {ColorSpace} from "../../qualifiers/colorSpace.js";
95
import {ColorSpaceType} from "../../types/types.js";
106
import {
117
COLOR_SPACE_MODE_TO_COLOR_SPACE_MODEL_MODE_MAP,
128
COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP
139
} from "../../internal/internalConstants.js";
10+
import {IDeliveryColorSpaceActionModel, ColorSpaceModeType} from "../../internal/models/IDeliveryActionModel.js";
1411

1512
/**
1613
* @description Specifies the color space to use.
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import {Action} from "../../internal/Action.js";
22
import {QualifierValue} from "../../internal/qualifier/QualifierValue.js";
33
import {Qualifier} from "../../internal/qualifier/Qualifier.js";
4-
import {IColorSpaceFromICCModel} from "../../internal/models/IDeliveryActionModel.js";
5-
4+
import {IActionModel} from "../../internal/models/IActionModel.js";
5+
import {IDeliveryColorSpaceFromICCActionModel} from "../../internal/models/IDeliveryActionModel.js";
66

77
/**
88
* @description Specifies the ICC profile to use for the color space.
99
* @memberOf Actions.Delivery
1010
* @extends SDK.Action
1111
* @see Visit {@link Actions.Delivery|Delivery} for an example
1212
*/
13-
class DeliveryColorSpaceFromICC extends Action {
14-
protected _actionModel: IColorSpaceFromICCModel = {};
13+
class DeliveryColorSpaceFromICCAction extends Action {
14+
protected _actionModel: IDeliveryColorSpaceFromICCActionModel = {};
1515

1616
/**
1717
* @param {string} publicId
@@ -23,6 +23,12 @@ class DeliveryColorSpaceFromICC extends Action {
2323
const qualifierValue = new QualifierValue(['icc', publicId]).setDelimiter(':');
2424
this.addQualifier(new Qualifier('cs', qualifierValue));
2525
}
26+
27+
static fromJson(actionModel: IActionModel): DeliveryColorSpaceFromICCAction {
28+
const {publicId} = (actionModel as IDeliveryColorSpaceFromICCActionModel);
29+
30+
return new this(publicId);
31+
}
2632
}
2733

28-
export {DeliveryColorSpaceFromICC};
34+
export {DeliveryColorSpaceFromICCAction};

src/internal/fromJson.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {ResizePadAction} from "../actions/resize/ResizePadAction.js";
1616
import {ResizeLimitPadAction} from "../actions/resize/ResizeLimitPadAction.js";
1717
import {ResizeMinimumPadAction} from "../actions/resize/ResizeMinimumPadAction.js";
1818
import {DeliveryColorSpaceAction} from "../actions/delivery/DeliveryColorSpaceAction.js";
19+
import {DeliveryColorSpaceFromICCAction} from "../actions/delivery/DeliveryColorSpaceFromICCAction.js";
1920

2021
const ActionModelMap: Record<string, IHasFromJson> = {
2122
scale: ResizeScaleAction,
@@ -29,7 +30,8 @@ const ActionModelMap: Record<string, IHasFromJson> = {
2930
pad: ResizePadAction,
3031
limitPad: ResizeLimitPadAction,
3132
minimumPad: ResizeMinimumPadAction,
32-
colorSpace: DeliveryColorSpaceAction
33+
colorSpace: DeliveryColorSpaceAction,
34+
colorSpaceFromICC: DeliveryColorSpaceFromICCAction
3335
};
3436

3537
/**

src/internal/models/IDeliveryActionModel.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import {IActionModel} from "./IActionModel.js";
22

3-
interface IColorSpaceModel extends IActionModel {
4-
colorSpaceType?: string
3+
type ColorSpaceModeType = "srgb" | "srgbTrueColor" | "tinySrgb" | "cmyk" | "noCmyk" | "keepCmyk";
4+
5+
interface IDeliveryColorSpaceActionModel extends IActionModel{
6+
mode?: ColorSpaceModeType
57
}
68

79
interface IDprModel extends IActionModel {
@@ -16,8 +18,8 @@ interface IDefaultImageModel extends IActionModel{
1618
"publicId": string;
1719
}
1820

19-
interface IColorSpaceFromICCModel extends IActionModel{
20-
"publicId"?: string;
21+
interface IDeliveryColorSpaceFromICCActionModel extends IActionModel{
22+
publicId?: string;
2123
}
2224

2325
interface IDeliveryFormatModel extends IActionModel {
@@ -35,4 +37,4 @@ interface IDeliveryQualityModel extends IActionModel{
3537
"quantization"?: number;
3638
}
3739

38-
export {IColorSpaceModel, IDprModel, IDensityModel, IDefaultImageModel, IColorSpaceFromICCModel, IDeliveryFormatModel, IDeliveryQualityModel};
40+
export {ColorSpaceModeType, IDeliveryColorSpaceActionModel, IDprModel, IDensityModel, IDefaultImageModel, IDeliveryColorSpaceFromICCActionModel, IDeliveryFormatModel, IDeliveryQualityModel};

src/internal/models/IDeliveryColorSpaceActionModel.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)