UNPKG

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