forked from wmakeev/darkroom-xmp-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.d.ts
303 lines (256 loc) · 7.97 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
export interface Params {}
// Sharpen
export interface SharpenParams extends Params {
radius: number
amount: number
threshold: number
}
// Levels
export enum LevelsMode {
LEVELS_MODE_MANUAL = 'LEVELS_MODE_MANUAL',
LEVELS_MODE_AUTOMATIC = 'LEVELS_MODE_AUTOMATIC'
}
export interface LevelsParams extends Params {
mode: LevelsMode
percentiles: [number, number, number]
levels: [number, number, number]
}
// Shadhi
export enum GaussianOrder {
GAUSSIAN_ZERO = 'DT_IOP_GAUSSIAN_ZERO',
GAUSSIAN_ONE = 'DT_IOP_GAUSSIAN_ONE',
GAUSSIAN_TOW = 'DT_IOP_GAUSSIAN_TWO'
}
export enum ShadHiAlgo {
SHADHI_ALGO_GAUSSIAN = 'SHADHI_ALGO_GAUSSIAN',
SHADHI_ALGO_BILATERAL = 'SHADHI_ALGO_BILATERAL'
}
export interface ShadhiParams extends Params {
order: GaussianOrder
radius: number
shadows: number
whitepoint: number
highlights: number
reserved2: number
compress: number
shadows_ccorrect: number
highlights_ccorrect: number
flags: number
low_approximation: number
shadhi_algo: ShadHiAlgo
}
// Exposure
export enum ExposureMode {
EXPOSURE_MODE_MANUAL = 'EXPOSURE_MODE_MANUAL',
EXPOSURE_MODE_DEFLICKER = 'EXPOSURE_MODE_DEFLICKER'
}
export interface ExposureParams extends Params {
mode: ExposureMode
black: number
exposure: number
deflickerPercentile: number
deflickerTargetLevel: number
}
// Basecurve
export enum BasecurveType {
CUBIC_SPLINE = 0,
CATMULL_ROM = 1,
MONOTONE_HERMITE = 2
}
export interface BasecurveNode {
x: number
y: number
}
export interface BasecurveParams extends Params {
/** curve (the other two are reserved) */
basecurve: [
Array<BasecurveNode>,
Array<BasecurveNode>,
Array<BasecurveNode>
]
basecurve_nodes: [number, number, number]
basecurve_type: [BasecurveType, BasecurveType, BasecurveType]
/** number of exposure fusion steps */
exposure_fusion: number
/** number of stops between fusion images */
exposure_stops: number
/** whether to do exposure-fusion with over or under-exposure */
exposure_bias: number
}
// Blend
export interface BlendParams extends Params {
maskMode: number
blendMode: number
maskId: number
opacity: number
maskCombine: number
blendif: number
radius: number
reserved: [number, number, number, number]
blendifParameters: Array<number>
}
// Clipping
export interface ClippingParams extends Params {
angle: number
cx: number
cy: number
cw: number
ch: number
kH: number
kV: number
kxa: number
kya: number
kxb: number
kyb: number
kxc: number
kyc: number
kxd: number
kyd: number
kType: number
kSym: number
kApply: boolean
cropAuto: boolean
ratioN: number
ratioD: number
}
// Defringe
export enum DefringeMode {
MODE_GLOBAL_AVERAGE = 'MODE_GLOBAL_AVERAGE',
MODE_LOCAL_AVERAGE = 'MODE_LOCAL_AVERAGE',
MODE_STATIC = 'MODE_STATIC'
}
export interface DefringeParams extends Params {
radius: number
thresh: number
op_mode: DefringeMode
}
// Orientation
export enum ImageOrientation {
ORIENTATION_NULL = 'ORIENTATION_NULL',
ORIENTATION_NONE = 'ORIENTATION_NONE',
ORIENTATION_FLIP_Y = 'ORIENTATION_FLIP_Y',
ORIENTATION_FLIP_X = 'ORIENTATION_FLIP_X',
ORIENTATION_SWAP_XY = 'ORIENTATION_SWAP_XY',
ORIENTATION_ROTATE_180_DEG = 'ORIENTATION_ROTATE_180_DEG',
ORIENTATION_ROTATE_CCW_90_DEG = 'ORIENTATION_ROTATE_CCW_90_DEG',
ORIENTATION_ROTATE_CW_90_DEG = 'ORIENTATION_ROTATE_CW_90_DEG',
ORIENTATION_421 = 'ORIENTATION_421'
}
export interface FlipParams extends Params {
orientation: ImageOrientation
}
export interface RawprepareParams extends Params {
x: number
y: number
width: number
height: number
rawBlackLevelSeparate: [number, number, number, number]
rawWhitePoint: number
}
export interface CropParams extends Params {
cx: number
cy: number
cw: number
ch: number
ratioN: number
ratioD: number
}
// Masks
export enum MaskType {
NONE = 0,
CIRCLE = 1,
PATH = 2,
GROUP = 4,
CLONE = 8,
GRADIENT = 16,
ELLIPSE = 32,
BRUSH = 64,
NON_CLONE = 128
}
export enum EllipseFlags {
EQUIDISTANT = 0,
PROPORTIONAL = 1
}
export interface MaskPoint {}
export interface MaskCirclePoint extends MaskPoint {
center: [number, number]
radius: number,
border: number
}
export interface MaskEllipsePoint extends MaskPoint {
center: [number, number]
radius: [number, number]
rotation: number
border: number
flags: EllipseFlags
}
export interface MaskGradientPoint extends MaskPoint {
anchor: [number, number]
rotation: number
compression: number
steepness: number
}
// Errors
export class CustomError extends Error {}
export class UnknownOperationError extends CustomError {
operation: string
}
// Sharpen
export function decodeSharpenParams(encoded: string): SharpenParams
export function encodeSharpenParams(params: SharpenParams): string
// Levels
export function decodeLevelsParams(encoded: string): LevelsParams
export function encodeLevelsParams(params: LevelsParams): string
// Shadhi
export function decodeShadhiParams(encoded: string): ShadhiParams
export function encodeShadhiParams(params: ShadhiParams): string
// Exposure
export function decodeExposureParams(encoded: string): ExposureParams
export function encodeExposureParams(params: ExposureParams): string
// Blend
export function decodeBlendParams(encoded: string): BlendParams
export function encodeBlendParams(params: BlendParams): string
// Clipping
export function decodeClippingParams(encoded: string): ClippingParams
export function encodeClippingParams(params: ClippingParams): string
// Defringe
export function decodeDefringeParams(encoded: string): DefringeParams
export function encodeDefringeParams(params: DefringeParams): string
// Flip
export function decodeFlipParams(encoded: string): FlipParams
export function encodeFlipParams(params: FlipParams): string
// Basecurve
export function decodeBasecurveParams(encoded: string): BasecurveParams
export function encodeBasecurveParams(params: BasecurveParams): string
// Rawprepare
export function decodeRawprepareParams(encoded: string): RawprepareParams
export function encodeRawprepareParams(params: RawprepareParams): string
// Crop
export function decodeCropParams(encoded: string): CropParams
export function encodeCropParams(params: CropParams): string
// Masks
export function decodeMaskPoints<T extends MaskPoint>(maskType: string, numberPoints: number, encodedPoints: string): Array <T>
export function encodeMaskPoints<T extends MaskPoint>(maskType: string, points: Array<T>): string
// - circle mask
export function decodeCircleMask(encodedMask: string): MaskCirclePoint
export function encodeCircleMask(mask: MaskCirclePoint): string
// - ellipse mask
export function decodeEllipseMask(encodedMask: string): MaskEllipsePoint
export function encodeEllipseMask(mask: MaskEllipsePoint): string
// - gradient mask
export function decodeGradientMask(encodedMask: string): MaskGradientPoint
export function encodeGradientMask(mask: MaskGradientPoint): string
// Helpers
export function decodeParams(operation: 'sharpen', encodedParams: string): SharpenParams
export function decodeParams(operation: 'levels', encodedParams: string): LevelsParams
export function decodeParams(operation: 'shadhi', encodedParams: string): ShadhiParams
export function decodeParams(operation: 'exposure', encodedParams: string): ExposureParams
export function decodeParams(operation: 'blend', encodedParams: string): BlendParams
export function decodeParams(operation: 'clipping', encodedParams: string): ClippingParams
export function decodeParams(operation: 'defringe', encodedParams: string): DefringeParams
export function decodeParams(operation: 'flip', encodedParams: string): FlipParams
export function decodeParams(operation: 'basecurve', encodedParams: string): BasecurveParams
export function decodeParams(operation: 'rawprepare', encodedParams: string): RawprepareParams
export function decodeParams(operation: 'crop', encodedParams: string): CropParams
export function decodeParams<T>(operation: string, encodedParams: string): T
export function encodeParams<T extends Params>(operation: string, params: T): string