UNPKG

21.2 kBTypeScriptView Raw
1// Type definitions for gm 1.18
2// Project: https://github.com/aheckmann/gm
3// Definitions by: Maarten van Vliet <https://github.com/maartenvanvliet>
4// Vaclav Mlejnsky <https://github.com/mlejva>
5// Dimitry Kooijmans <https://github.com/mrcageman>
6// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
7
8/// <reference types="node"/>
9
10import stream = require('stream');
11
12declare function m(stream: NodeJS.ReadableStream | Buffer | string, image?: string): m.State;
13declare function m(width: number, height: number, color?: string): m.State;
14
15declare namespace m {
16 interface ClassOptions {
17 appPath?: string | undefined;
18 imageMagick?: boolean | undefined;
19 nativeAutoOrient?: boolean | undefined;
20 timeout?: string | number;
21 }
22
23 interface ChannelInfo<T> {
24 Red: T;
25 Green: T;
26 Blue: T;
27 }
28
29 interface CompareOptions {
30 file?: string | undefined;
31 highlightColor?: string | undefined;
32 highlightStyle?: HighlightStyle | undefined;
33 tolerance?: number | undefined;
34 }
35
36 interface ColorStatistics {
37 Minimum: string;
38 Maximum: string;
39 Mean: string;
40 'Standard Deviation': string;
41 }
42
43 interface Dimensions {
44 width: number;
45 height: number;
46 }
47
48 interface GetterOptions {
49 bufferStream?: boolean | undefined;
50 }
51
52 interface ImageInfo {
53 'Background Color': string;
54 'Border Color': string;
55 'Channel Depths': ChannelInfo<string>;
56 'Channel Statistics': ChannelInfo<ColorStatistics>;
57 Class: string;
58 color: number;
59 Compose: string;
60 Compression: string;
61 depth: number;
62 Depth: string;
63 Dispose: string;
64 Filesize: string;
65 format: string;
66 Format: string;
67 Geometry: string;
68 Interlace: string;
69 Iterations: string;
70 'JPEG-Quality'?: string | undefined;
71 'JPEG-Colorspace'?: string | undefined;
72 'JPEG-Colorspace-Name'?: string | undefined;
73 'JPEG-Sampling-factors'?: string | undefined;
74 'Matte Color': string;
75 Orientation: string;
76 'Page geometry': string;
77 path: string;
78
79 'Profile-color'?: string | undefined;
80 'Profile-iptc'?: {
81 [key: string]: string;
82 } | undefined;
83 'Profile-EXIF'?: {
84 [key: string]: string;
85 } | undefined;
86 'Profile-XMP'?: string | undefined;
87 Resolution?: string | undefined;
88 size: Dimensions;
89 Signature: string;
90 Software: string;
91 Tainted: string;
92 Type: string;
93 }
94
95 interface State {
96 // Image Operations
97 adjoin(): State;
98 affine(matrix: string): State;
99 antialias(enable: boolean): State;
100 append(image: string, ltr?: boolean): State;
101 authenticate(password: string): State;
102 autoOrient(): State;
103 backdrop(): State;
104 background(color: string): State;
105 bitdepth(bits: number): State;
106 blackThreshold(intensity: number): State;
107 blackThreshold(red: number, green: number, blue: number, opacity?: number): State;
108 bluePrimary(x: number, y: number): State;
109 blur(radius: number, sigma?: number): State;
110 border(width: number, height: number): State;
111 borderColor(color: string): State;
112 box(color: string): State;
113 channel(type: NamedColor | string): State;
114 charcoal(factor: number): State;
115 chop(width: number, height: number, x?: number, y?: number): State;
116 clip(): State;
117 coalesce(): State;
118 colorize(red: number, green: number, blue: number): State;
119 colorMap(type: 'shared' | 'private' | string): State;
120 colors(colors: number): State;
121 colorspace(space: ColorSpace | string): State;
122 command(customCommand: string): State;
123 compose(operator: ComposeOperator | string): State;
124 composite(changeImagePath: string, maskImagePath?: string): State;
125 compress(type: CompressionType | string): State;
126 contrast(multiplier: number): State;
127 convolve(kernel: string): State;
128 createDirectories(): State;
129 crop(width: number, height: number, x?: number, y?: number, percent?: boolean): State;
130 cycle(amount: number): State;
131 deconstruct(): State;
132 define(value: string): State;
133 delay(milliseconds: number): State;
134 density(width: number, height: number): State;
135 despeckle(): State;
136 displace(horizontal: number, vertical: number): State;
137 display(xServer: string): State;
138 dispose(method: DisposeMethod | string): State;
139 dissolve(percent: number): State;
140 dither(enable?: boolean): State;
141 edge(radius?: number): State;
142 emboss(radius?: number): State;
143 encoding(encoding: Encoding | string): State;
144 endian(type: EndianType | string): State;
145 enhance(): State;
146 equalize(): State;
147 extent(width: number, height: number, options?: string): State;
148 file(filename: string): State;
149 filter(type: FilterType | string): State;
150 flatten(): State;
151 flip(): State;
152 flop(): State;
153 foreground(color: string): State;
154 frame(width: number, height: number, outerBevelWidth: number, outBevelHeight: number): State;
155 fuzz(distance: number, percent?: boolean): State;
156 gamma(r: number, g: number, b: number): State;
157 gaussian(radius: number, sigma?: number): State;
158 geometry(width: number, height?: number, option?: ResizeOption): State;
159 geometry(geometry: string): State;
160 greenPrimary(x: number, y: number): State;
161 gravity(direction: GravityDirection | string): State;
162 highlightColor(color: string): State;
163 highlightStyle(style: HighlightStyle | string): State;
164 iconGeometry(geometry: string): State;
165 implode(factor?: number): State;
166 in(...customArguments: string[]): State;
167 intent(type: IntentType | string): State;
168 interlace(type: InterlaceType | string): State;
169 label(name: string): State;
170 lat(width: number, height: number, offset: number, percent?: boolean): State;
171 level(blackPoint: number, gamma: number, whitePoint: number, percent?: boolean): State;
172 limit(type: LimitType | string, val: string): State;
173 list(type: ListType | string): State;
174 log(format: string): State;
175 loop(iterations: number): State;
176 lower(width: number, height: number): State;
177 magnify(factor: number): State;
178 map(filename: string): State;
179 mask(filename: string): State;
180 matte(): State;
181 matteColor(color: string): State;
182 maximumError(limit: number): State;
183 median(radius?: number): State;
184 minify(factor: number): State;
185 mode(mode: OperationMode | string): State;
186 modulate(b: number, s?: number, h?: number): State;
187 monitor(): State;
188 monochrome(): State;
189 montage(otherImg: string): State;
190 morph(otherImg: string | string[], outName: string, callback?: WriteCallback): State;
191 mosaic(): State;
192 motionBlur(radius: number, sigma?: number, angle?: number): State;
193 name(): State;
194 negative(): State;
195 noise(type: NoiseType | string | number): State;
196 noop(): State;
197 normalize(): State;
198 opaque(color: string): State;
199 operator(channel: string, operator: ChannelOperator | string, rvalue: number, percent?: boolean): State;
200 orderedDither(channelType: ChannelType | string, NxN: string): State;
201 out(...customArguments: string[]): State;
202 outputDirectory(directory: string): State;
203 page(width: number, height: number, arg?: '%' | '!' | '<' | '>' |string): State;
204 pause(seconds: number): State;
205 pen(color: string): State;
206 ping(): State;
207 pointSize(size: number): State;
208 noProfile(): State;
209 preview(type: PreviewType | string): State;
210 paint(radius: number): State;
211 process(command: string): State;
212 profile(filename: string): State;
213 progress(): State;
214 randomThreshold(channelType: ChannelType, LOWxHIGH: string): State;
215 quality(level: number): State;
216 raise(width: number, height: number): State;
217 recolor(matrix: string): State;
218 redPrimary(x: number, y: number): State;
219 region(width: number, height: number, x?: number, y?: number): State;
220 remote(): State;
221 render(): State;
222 repage(reset: '+' | string): State;
223 repage(width: number, height: number, xoff: number, yoff: number, arg?: string): State;
224 sample(geometry: string): State;
225 samplingFactor(horizontalFactor: number, verticalFactor: number): State;
226 rawSize(width: number, height: number, offset?: number): State;
227 resample(horizontal: number, vertical: number): State;
228 resize(width: number, height: number, option: ResizeOption): State;
229 resize(width: number, height?: number, option?: ResizeOption): State;
230 roll(horizontal: number, vertical: number): State;
231 rotate(backgroundColor: string, degrees: number): State;
232 scene(index: number): State;
233 scenes(start: number, end: number): State;
234 scale(width: number, height: number): State;
235 screen(): State;
236 segment(clustherThreshold: number, smoothingThreshold: number): State;
237 /** change the specified frame. */
238 selectFrame(frame: number): State;
239 sepia(): State;
240 set(attribute: string, value: string): State;
241 setFormat(format: string): State;
242 shade(azimuth: number, elevation: number): State;
243 shadow(radius: number, sigma?: number): State;
244 sharedMemory(): State;
245 shave(width: number, height: number, percent?: boolean): State;
246 sharpen(radius: number, sigma?: number): State;
247 shear(xDegrees: number, yDegress: number): State;
248 silent(): State;
249 snaps(count: number): State;
250 solarize(threshold: number): State;
251 spread(amount: number): State;
252 stegano(offset: number): State;
253 stereo(): State;
254 strip(): State;
255 swirl(degrees: number): State;
256 textFont(font: string): State;
257 threshold(value: number, percent?: boolean): State;
258 thumb(width: number, height: number, outName: string, callback: WriteCallback): State;
259 thumb(width: number, height: number, outName: string, quality: number, callback: WriteCallback): State;
260 thumb(width: number, height: number, outName: string, quality: number, align: 'topleft' | 'center' | string, callback: WriteCallback): State;
261 tile(filename: string): State;
262 title(title: string): State;
263 transform(color: string): State;
264 transparent(color: string): State;
265 treeDepth(depth: number): State;
266 trim(): State;
267 type(type: ImageType | string): State;
268 update(seconds: number): State;
269 units(type: UnitType | string): State;
270 unsharp(radius: number, sigma?: number, amount?: number, threshold?: number): State;
271 usePixmap(): State;
272 view(): State;
273 virtualPixel(method: VirtualPixelMethod | string): State;
274 visual(type: VisualType | string): State;
275 watermark(brightness: number, saturation: number): State;
276 wave(amplitude: number, wavelength: number): State;
277 whitePoint(x: number, y: number): State;
278 whiteThreshold(intensity: number): State;
279 whiteThreshold(red: number, green: number, blue: number, opacity?: number): State;
280 window(id: string): State;
281 windowGroup(): State;
282
283 // Getters
284 color(callback: GetterCallback<number>): State;
285 color(opts: GetterOptions, callback: GetterCallback<number>): State;
286 depth(callback: GetterCallback<number>): State;
287 depth(opts: GetterOptions, callback: GetterCallback<number>): State;
288 filesize(callback: GetterCallback<string>): State;
289 filesize(opts: GetterOptions, callback: GetterCallback<string>): State;
290 format(callback: GetterCallback<string>): State;
291 format(opts: GetterOptions, callback: GetterCallback<string>): State;
292 identify(callback: GetterCallback<ImageInfo>): State;
293 identify(format: string, callback: GetterCallback<string>): State;
294 identify(opts: GetterOptions, callback: GetterCallback<ImageInfo>): State;
295 res(callback: GetterCallback<string>): State;
296 res(opts: GetterOptions, callback: GetterCallback<string>): State;
297 size(callback: GetterCallback<Dimensions>): State;
298 size(opts: GetterOptions, callback: GetterCallback<Dimensions>): State;
299 orientation(callback: GetterCallback<string>): State;
300 orientation(opts: GetterOptions, callback: GetterCallback<string>): State;
301
302 // Drawing Operations
303 draw(args: string): State;
304 drawArc(x0: number, y0: number, x1: number, y1: number, r0: number, r1: number): State;
305 drawBezier(coord0: [number, number], coord1: [number, number], ...coords: Array<[number, number]>): State;
306 drawCircle(x0: number, y0: number, x1: number, y1: number): State;
307 drawEllipse(x0: number, y0: number, rx: number, ry: number, a0: number, a1: number): State;
308 drawLine(x0: number, y0: number, x1: number, y1: number): State;
309 drawPoint(x: number, y: number): State;
310 drawPolygon(coord0: [number, number], coord1: [number, number], coord2: [number, number], ...coords: Array<[number, number]>): State;
311 drawPolyline(coord0: [number, number], coord1: [number, number], coord2: [number, number], ...coords: Array<[number, number]>): State;
312 drawRectangle(x0: number, y0: number, x1: number, y1: number, wc?: number, hc?: number): State;
313 drawText(x: number, y: number, text: string, gravity?: GravityDirection | string): State;
314 fill(color: string): State;
315 font(name: string, size?: number): State;
316 fontSize(size: number): State;
317 stroke(color: string, width?: number): State;
318 strokeWidth(width: number): State;
319 setDraw(property: SetDrawProperty | string, x: number, y: number, method: SetDrawMethod | string): State;
320
321 // Commands
322 stream(callback?: WriteCallback): stream.PassThrough;
323 stream(format: string, callback?: WriteCallback): stream.PassThrough;
324 toBuffer(callback: (err: Error|null, buffer: Buffer) => any): stream.PassThrough;
325 toBuffer(format: string, callback: (err: Error|null, buffer: Buffer) => any): stream.PassThrough;
326 write(filename: string, callback: WriteCallback): void;
327 }
328
329 interface SubClass {
330 (image: string): State;
331 (stream: NodeJS.ReadableStream | Buffer, image?: string): State;
332 (width: number, height: number, color?: string): State;
333 }
334
335 function compare(filename1: string, filename2: string, callback: CompareCallback): void;
336 function compare(filename1: string, filename2: string, options: CompareOptions | number, callback: CompareCallback): void;
337
338 function subClass(options: ClassOptions): SubClass;
339
340 type ChannelOperator = 'Add'
341 | 'And'
342 | 'Assign'
343 | 'Depth'
344 | 'Divide'
345 | 'Gamma'
346 | 'Negate'
347 | 'LShift'
348 | 'Log'
349 | 'Max'
350 | 'Min'
351 | 'Multiply'
352 | 'Or'
353 | 'Pow'
354 | 'RShift'
355 | 'Subtract'
356 | 'Threshold'
357 | 'Threshold-White'
358 | 'Threshold-White-Negate'
359 | 'Threshold-Black'
360 | 'Threshold-Black-Negate'
361 | 'Xor'
362 | 'Noise-Gaussian'
363 | 'Noise-Impulse'
364 | 'Noise-Laplacian'
365 | 'Noise-Multiplicative'
366 | 'Noise-Poisson'
367 | 'Noise-Random'
368 | 'Noise-Uniform';
369
370 type ChannelType = 'All'
371 | 'Intensity'
372 | 'Red'
373 | 'Green'
374 | 'Blue'
375 | 'Cyan'
376 | 'Magenta'
377 | 'Yellow'
378 | 'Black'
379 | 'Opacity';
380
381 type ColorSpace = 'CineonLog'
382 | 'CMYK'
383 | 'GRAY'
384 | 'HSL'
385 | 'HSB'
386 | 'OHTA'
387 | 'RGB'
388 | 'Rec601Luma'
389 | 'Rec709Luma'
390 | 'Rec601YCbCr'
391 | 'Rec709YCbCr'
392 | 'Transparent'
393 | 'XYZ'
394 | 'YCbCr'
395 | 'YIQ'
396 | 'YPbPr'
397 | 'YUV';
398
399 type CompareCallback = (err: Error|null, isEqual: boolean, equality: number, raw: number) => any;
400
401 type ComposeOperator = 'Over'
402 | 'In'
403 | 'Out'
404 | 'Atop'
405 | 'Xor'
406 | 'Plus'
407 | 'Minus'
408 | 'Add'
409 | 'Subtract'
410 | 'Difference'
411 | 'Divide'
412 | 'Multiply'
413 | 'Bumpmap'
414 | 'Copy'
415 | 'CopyRed'
416 | 'CopyGreen'
417 | 'CopyBlue'
418 | 'CopyOpacity'
419 | 'CopyCyan'
420 | 'CopyMagenta'
421 | 'CopyYellow'
422 | 'CopyBlack';
423
424 type CompressionType = 'None'
425 | 'BZip'
426 | 'Fax'
427 | 'Group4'
428 | 'JPEG'
429 | 'Lossless'
430 | 'LZW'
431 | 'RLE'
432 | 'Zip'
433 | 'LZMA';
434
435 type DisposeMethod = 'Undefined'
436 | 'None'
437 | 'Background'
438 | 'Previous';
439
440 type Encoding = 'AdobeCustom'
441 | 'AdobeExpert'
442 | 'AdobeStandard'
443 | 'AppleRoman'
444 | 'BIG5'
445 | 'GB2312'
446 | 'Latin 2'
447 | 'None'
448 | 'SJIScode'
449 | 'Symbol'
450 | 'Unicode'
451 | 'Wansung';
452
453 type EndianType = 'MSB'
454 | 'LSB'
455 | 'Native';
456
457 type FilterType = 'Point'
458 | 'Box'
459 | 'Triangle'
460 | 'Hermite'
461 | 'Hanning'
462 | 'Hamming'
463 | 'Blackman'
464 | 'Gaussian'
465 | 'Quadratic'
466 | 'Cubic'
467 | 'Catrom'
468 | 'Mitchell'
469 | 'Lanczos'
470 | 'Bessel'
471 | 'Sinc';
472
473 type GetterCallback<T> = (err: Error|null, value: T) => any;
474
475 type GravityDirection = 'NorthWest'
476 | 'North'
477 | 'NorthEast'
478 | 'West'
479 | 'Center'
480 | 'East'
481 | 'SouthWest'
482 | 'South'
483 | 'SouthEast';
484
485 type HighlightStyle = 'Assign'
486 | 'Threshold'
487 | 'Tint'
488 | 'XOR';
489
490 type ImageType = 'Bilevel'
491 | 'Grayscale'
492 | 'Palette'
493 | 'PaletteMatte'
494 | 'TrueColor'
495 | 'TrueColorMatte'
496 | 'ColorSeparation'
497 | 'ColorSeparationMatte'
498 | 'Optimize';
499
500 type IntentType = 'Absolute'
501 | 'Perceptual'
502 | 'Relative'
503 | 'Saturation';
504
505 type InterlaceType = 'None'
506 | 'Line'
507 | 'Plane'
508 | 'Partition';
509
510 type LimitType = 'disk'
511 | 'file'
512 | 'map'
513 | 'memory'
514 | 'pixels'
515 | 'threads';
516
517 type ListType = 'Color'
518 | 'Delegate'
519 | 'Format'
520 | 'Magic'
521 | 'Module'
522 | 'Resource'
523 | 'Type';
524
525 type NamedColor = 'Red'
526 | 'Green'
527 | 'Blue'
528 | 'Opacity'
529 | 'Matte'
530 | 'Cyan'
531 | 'Magenta'
532 | 'Yellow'
533 | 'Black'
534 | 'Gray';
535
536 type NoiseType = 'uniform'
537 | 'gaussian'
538 | 'multiplicative'
539 | 'impulse'
540 | 'laplacian'
541 | 'poisson';
542
543 type OperationMode = 'frame'
544 | 'unframe'
545 | 'concatenate';
546
547 type PreviewType = 'Rotate'
548 | 'Shear'
549 | 'Roll'
550 | 'Hue'
551 | 'Saturation'
552 | 'Brightness'
553 | 'Gamma'
554 | 'Spiff'
555 | 'Dull'
556 | 'Grayscale'
557 | 'Quantize'
558 | 'Despeckle'
559 | 'ReduceNoise'
560 | 'AddNoise'
561 | 'Sharpen'
562 | 'Blur'
563 | 'Threshold'
564 | 'EdgeDetect'
565 | 'Spread'
566 | 'Shade'
567 | 'Raise'
568 | 'Segment'
569 | 'Solarize'
570 | 'Swirl'
571 | 'Implode'
572 | 'Wave'
573 | 'OilPaint'
574 | 'CharcoalDrawing'
575 | 'JPEG';
576
577 type ResizeOption = '%' /** Width and height are specified in percents */
578 | '@' /** Specify maximum area in pixels */
579 | '!' /** Ignore aspect ratio */
580 | '^' /** Width and height are minimum values */
581 | '<' /** Change dimensions only if image is smaller than width or height */
582 | '>'; /** Change dimensions only if image is larger than width or height */
583
584 type SetDrawMethod = 'point'
585 | 'replace'
586 | 'floodfill'
587 | 'filltoborder'
588 | 'reset';
589
590 type SetDrawProperty = 'color' | 'matte';
591
592 type UnitType = 'Undefined'
593 | 'PixelsPerInch'
594 | 'PixelsPerCentimeter';
595
596 type VirtualPixelMethod = 'Constant'
597 | 'Edge'
598 | 'Mirror'
599 | 'Tile';
600
601 type VisualType = 'StaticGray'
602 | 'GrayScale'
603 | 'StaticColor'
604 | 'PseudoColor'
605 | 'TrueColor'
606 | 'DirectColor'
607 | 'default';
608
609 type WriteCallback = (err: Error|null, stdout: stream.Readable, stderr: stream.Readable, cmd: string) => any;
610}
611
612export = m;