@imagemagick/magick-wasm 0.0.8 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/NOTICE +1161 -59
  2. package/README.md +1 -1
  3. package/auto-threshold-method.d.ts +6 -0
  4. package/auto-threshold-method.js +10 -0
  5. package/drawables/drawable-color.d.ts +10 -0
  6. package/drawables/drawable-color.js +14 -0
  7. package/drawables/drawable-fill-color.d.ts +8 -0
  8. package/drawables/drawable-fill-color.js +12 -0
  9. package/drawables/drawable-fill-opacity.d.ts +8 -0
  10. package/drawables/drawable-fill-opacity.js +12 -0
  11. package/drawables/drawable-font-point-size.d.ts +7 -0
  12. package/drawables/drawable-font-point-size.js +12 -0
  13. package/drawables/drawable-font.d.ts +7 -0
  14. package/drawables/drawable-font.js +14 -0
  15. package/drawables/drawable-text.d.ts +9 -0
  16. package/drawables/drawable-text.js +14 -0
  17. package/drawables/drawable.d.ts +4 -0
  18. package/drawables/drawable.js +2 -0
  19. package/drawables/drawing-wand.d.ts +23 -0
  20. package/drawables/drawing-wand.js +66 -0
  21. package/gravity.js +35 -1
  22. package/image-magick.js +7 -3
  23. package/internal/exception/exception.js +29 -11
  24. package/magick-color.js +1 -1
  25. package/magick-error.d.ts +2 -0
  26. package/magick-error.js +5 -0
  27. package/magick-format-info.d.ts +1 -1
  28. package/magick-format-info.js +2 -2
  29. package/magick-format.d.ts +5 -0
  30. package/magick-format.js +5 -0
  31. package/magick-geometry.js +30 -1
  32. package/magick-image-collection.d.ts +11 -2
  33. package/magick-image-collection.js +53 -8
  34. package/magick-image.d.ts +73 -13
  35. package/magick-image.js +181 -49
  36. package/magick.d.ts +1 -1
  37. package/magick.js +12 -4
  38. package/package.json +1 -1
  39. package/paint-method.d.ts +8 -0
  40. package/paint-method.js +12 -0
  41. package/percentage.js +3 -0
  42. package/pixel-interpolate-method.d.ts +14 -0
  43. package/pixel-interpolate-method.js +18 -0
  44. package/pixels/pixel-collection.js +2 -2
  45. package/settings/drawing-settings.d.ts +9 -0
  46. package/settings/drawing-settings.js +25 -0
  47. package/settings/magick-read-settings.js +1 -1
  48. package/settings/native-drawing-settings.d.ts +1 -0
  49. package/settings/native-drawing-settings.js +35 -0
  50. package/settings/native-magick-settings.js +7 -10
  51. package/wasm/magick.js +2 -2
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MagickImageCollection = void 0;
4
4
  const image_magick_1 = require("./image-magick");
5
5
  const exception_1 = require("./internal/exception/exception");
6
+ const magick_error_1 = require("./magick-error");
6
7
  const magick_format_1 = require("./magick-format");
7
8
  const magick_image_1 = require("./magick-image");
8
9
  const magick_read_settings_1 = require("./settings/magick-read-settings");
9
10
  const magick_settings_1 = require("./settings/magick-settings");
11
+ const pointer_1 = require("./internal/pointer/pointer");
10
12
  class MagickImageCollection extends Array {
11
13
  constructor() {
12
14
  super();
@@ -47,6 +49,37 @@ class MagickImageCollection extends Array {
47
49
  }
48
50
  });
49
51
  }
52
+ write(func, format) {
53
+ this.throwIfEmpty();
54
+ let bytes = new Uint8Array();
55
+ exception_1.Exception.use(exception => {
56
+ pointer_1.Pointer.use(pointer => {
57
+ const image = this[0];
58
+ const settings = this[0]._getSettings()._clone();
59
+ if (format !== undefined)
60
+ settings.format = format;
61
+ else
62
+ settings.format = image.format;
63
+ settings._use(nativeSettings => {
64
+ let data = 0;
65
+ try {
66
+ this.attachImages();
67
+ data = image_magick_1.ImageMagick._api._MagickImage_WriteBlob(image._instance, nativeSettings._instance, pointer.ptr, exception.ptr);
68
+ if (data !== 0)
69
+ bytes = image_magick_1.ImageMagick._api.HEAPU8.subarray(data, data + pointer.value);
70
+ }
71
+ catch (_a) {
72
+ if (data !== 0)
73
+ image_magick_1.ImageMagick._api._MagickMemory_Relinquish(data);
74
+ }
75
+ finally {
76
+ this.detachImages();
77
+ }
78
+ });
79
+ });
80
+ });
81
+ return func(bytes);
82
+ }
50
83
  static create() {
51
84
  return MagickImageCollection.createObject();
52
85
  }
@@ -63,14 +96,6 @@ class MagickImageCollection extends Array {
63
96
  this.dispose();
64
97
  }
65
98
  }
66
- static createObject() {
67
- return Object.create(MagickImageCollection.prototype);
68
- }
69
- static createSettings(settings) {
70
- if (settings == null)
71
- return new magick_settings_1.MagickSettings();
72
- return new magick_read_settings_1.MagickReadSettings(settings);
73
- }
74
99
  addImages(images, settings) {
75
100
  settings.format = magick_format_1.MagickFormat.Unknown;
76
101
  let image = images;
@@ -81,5 +106,25 @@ class MagickImageCollection extends Array {
81
106
  image = next;
82
107
  }
83
108
  }
109
+ attachImages() {
110
+ for (let i = 0; i < this.length - 1; i++)
111
+ image_magick_1.ImageMagick._api._MagickImage_SetNext(this[i]._instance, this[i + 1]._instance);
112
+ }
113
+ static createObject() {
114
+ return Object.create(MagickImageCollection.prototype);
115
+ }
116
+ static createSettings(settings) {
117
+ if (settings == null)
118
+ return new magick_settings_1.MagickSettings();
119
+ return new magick_read_settings_1.MagickReadSettings(settings);
120
+ }
121
+ detachImages() {
122
+ for (let i = 0; i < this.length - 1; i++)
123
+ image_magick_1.ImageMagick._api._MagickImage_SetNext(this[i]._instance, 0);
124
+ }
125
+ throwIfEmpty() {
126
+ if (this.length === 0)
127
+ throw new magick_error_1.MagickError("operation requires at least one image");
128
+ }
84
129
  }
85
130
  exports.MagickImageCollection = MagickImageCollection;
package/magick-image.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AlphaOption } from './alpha-option';
2
+ import { AutoThresholdMethod } from './auto-threshold-method';
2
3
  import { Channels } from './channels';
3
4
  import { ColorSpace } from './color-space';
4
5
  import { CompositeOperator } from './composite-operator';
@@ -8,6 +9,7 @@ import { ErrorMetric } from './error-metric';
8
9
  import { EvaluateOperator } from './evaluate-operator';
9
10
  import { FilterType } from './filter-type';
10
11
  import { Gravity } from './gravity';
12
+ import { IDrawable } from './drawables/drawable';
11
13
  import { IImageProfile } from './profiles/image-profile';
12
14
  import { IMagickImageCollection } from './magick-image-collection';
13
15
  import { INativeInstance, NativeInstance } from './internal/native-instance';
@@ -19,29 +21,37 @@ import { OrientationType } from './orientation-type';
19
21
  import { Percentage } from './percentage';
20
22
  import { PixelChannel } from './pixel-channel';
21
23
  import { IPixelCollection } from './pixels/pixel-collection';
24
+ import { PixelInterpolateMethod } from './pixel-interpolate-method';
22
25
  import { Point } from './point';
23
26
  import { VirtualPixelMethod } from './virtual-pixel-method';
24
27
  export interface IMagickImage extends INativeInstance {
25
- readonly artifactNames: string[];
28
+ readonly artifactNames: ReadonlyArray<string>;
26
29
  backgroundColor: MagickColor;
30
+ borderColor: MagickColor;
27
31
  readonly channelCount: number;
32
+ colorFuzz: Percentage;
28
33
  colorSpace: ColorSpace;
29
34
  depth: number;
30
35
  filterType: FilterType;
31
- format: string;
36
+ format: MagickFormat;
32
37
  hasAlpha: boolean;
38
+ interpolate: PixelInterpolateMethod;
33
39
  readonly height: number;
34
40
  orientation: OrientationType;
41
+ page: MagickGeometry;
35
42
  quality: number;
36
43
  readonly signature: string | null;
37
44
  virtualPixelMethod: VirtualPixelMethod;
38
45
  width: number;
39
46
  alpha(value: AlphaOption): void;
40
47
  autoOrient(): void;
48
+ autoThreshold(method: AutoThresholdMethod): void;
41
49
  blur(): void;
42
50
  blur(channels: Channels): void;
43
51
  blur(radius: number, sigma: number): void;
44
52
  blur(radius: number, sigma: number, channels: Channels): void;
53
+ border(size: number): void;
54
+ border(width: number, height: number): void;
45
55
  channelOffset(pixelChannel: PixelChannel): number;
46
56
  charcoal(): void;
47
57
  charcoal(radius: number, sigma: number): void;
@@ -74,9 +84,15 @@ export interface IMagickImage extends INativeInstance {
74
84
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, channels: Channels): void;
75
85
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, args: string): void;
76
86
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, args: string, channels: Channels): void;
87
+ crop(geometry: MagickGeometry): void;
88
+ crop(geometry: MagickGeometry, gravity: Gravity): void;
89
+ crop(width: number, height: number): void;
90
+ crop(width: number, height: number, gravity: Gravity): void;
77
91
  deskew(threshold: Percentage): number;
78
92
  distort(method: DistortMethod, params: number[]): void;
79
93
  distort(method: DistortMethod, settings: DistortSettings, params: number[]): void;
94
+ draw(drawables: IDrawable[]): void;
95
+ draw(...drawables: IDrawable[]): void;
80
96
  evaluate(channels: Channels, operator: EvaluateOperator, value: number): void;
81
97
  evaluate(channels: Channels, operator: EvaluateOperator, value: Percentage): void;
82
98
  evaluate(channels: Channels, geometry: MagickGeometry, operator: EvaluateOperator, value: number): void;
@@ -93,10 +109,17 @@ export interface IMagickImage extends INativeInstance {
93
109
  getWriteMask(func: (mask: IMagickImage | null) => void): void;
94
110
  getWriteMask(func: (mask: IMagickImage | null) => Promise<void>): Promise<void>;
95
111
  getPixels<TReturnType>(func: (pixels: IPixelCollection) => TReturnType): TReturnType;
112
+ histogram(): Map<string, number>;
113
+ inverseSigmoidalContrast(contrast: number): void;
114
+ inverseSigmoidalContrast(contrast: number, midpointPercentage: Percentage): void;
115
+ inverseSigmoidalContrast(contrast: number, midpoint: number): void;
116
+ inverseSigmoidalContrast(contrast: number, midpoint: number, channels: Channels): void;
96
117
  level(blackPoint: Percentage, whitePoint: Percentage): void;
97
118
  level(blackPoint: Percentage, whitePoint: Percentage, gamma: number): void;
98
119
  level(channels: Channels, blackPoint: Percentage, whitePoint: Percentage): void;
99
120
  level(channels: Channels, blackPoint: Percentage, whitePoint: Percentage, gamma: number): void;
121
+ liquidRescale(geometry: MagickGeometry): void;
122
+ liquidRescale(width: number, height: number): void;
100
123
  modulate(brightness: Percentage): void;
101
124
  modulate(brightness: Percentage, saturation: Percentage): void;
102
125
  modulate(brightness: Percentage, saturation: Percentage, hue: Percentage): void;
@@ -108,6 +131,7 @@ export interface IMagickImage extends INativeInstance {
108
131
  readFromCanvas(canvas: HTMLCanvasElement): void;
109
132
  removeArtifact(name: string): void;
110
133
  removeWriteMask(): void;
134
+ repage(): void;
111
135
  resize(geometry: MagickGeometry): void;
112
136
  resize(width: number, height: number): void;
113
137
  rotate(degrees: number): void;
@@ -115,11 +139,9 @@ export interface IMagickImage extends INativeInstance {
115
139
  sharpen(radius: number, sigma: number): void;
116
140
  sharpen(radius: number, sigma: number, channels: Channels): void;
117
141
  sigmoidalContrast(contrast: number): void;
118
- sigmoidalContrast(sharpen: boolean, contrast: number): void;
119
- sigmoidalContrast(contrast: number, midpoint: number): void;
120
- sigmoidalContrast(sharpen: boolean, contrast: number, midpoint: number): void;
121
142
  sigmoidalContrast(contrast: number, midpointPercentage: Percentage): void;
122
- sigmoidalContrast(sharpen: boolean, contrast: number, midpointPercentage: Percentage): void;
143
+ sigmoidalContrast(contrast: number, midpoint: number): void;
144
+ sigmoidalContrast(contrast: number, midpoint: number, channels: Channels): void;
123
145
  separate(func: (images: IMagickImageCollection) => void): void;
124
146
  separate(func: (images: IMagickImageCollection) => Promise<void>): Promise<void>;
125
147
  separate(func: (images: IMagickImageCollection) => void, channels: Channels): void;
@@ -128,6 +150,13 @@ export interface IMagickImage extends INativeInstance {
128
150
  setArtifact(name: string, value: boolean): void;
129
151
  setWriteMask(image: IMagickImage): void;
130
152
  toString(): string;
153
+ trim(): void;
154
+ trim(...edges: Gravity[]): void;
155
+ trim(percentage: Percentage): void;
156
+ vignette(): void;
157
+ vignette(radius: number, sigma: number, x: number, y: number): void;
158
+ wave(): void;
159
+ wave(method: PixelInterpolateMethod, amplitude: number, length: number): void;
131
160
  write(func: (data: Uint8Array) => void, format?: MagickFormat): void;
132
161
  write(func: (data: Uint8Array) => Promise<void>, format?: MagickFormat): Promise<void>;
133
162
  writeToCanvas(canvas: HTMLCanvasElement): void;
@@ -135,23 +164,31 @@ export interface IMagickImage extends INativeInstance {
135
164
  export declare class MagickImage extends NativeInstance implements IMagickImage {
136
165
  private readonly _settings;
137
166
  private constructor();
138
- get artifactNames(): string[];
167
+ get artifactNames(): ReadonlyArray<string>;
139
168
  get backgroundColor(): MagickColor;
140
169
  set backgroundColor(value: MagickColor);
170
+ get borderColor(): MagickColor;
171
+ set borderColor(value: MagickColor);
141
172
  get channelCount(): number;
173
+ get colorFuzz(): Percentage;
174
+ set colorFuzz(value: Percentage);
142
175
  get colorSpace(): ColorSpace;
143
176
  set colorSpace(value: ColorSpace);
144
177
  get depth(): number;
145
178
  set depth(value: number);
146
179
  get filterType(): number;
147
180
  set filterType(value: number);
148
- get format(): string;
149
- set format(value: string);
181
+ get format(): MagickFormat;
182
+ set format(value: MagickFormat);
150
183
  get hasAlpha(): boolean;
151
184
  set hasAlpha(value: boolean);
185
+ get interpolate(): PixelInterpolateMethod;
186
+ set interpolate(value: PixelInterpolateMethod);
152
187
  get height(): number;
153
188
  get orientation(): OrientationType;
154
189
  set orientation(value: OrientationType);
190
+ get page(): MagickGeometry;
191
+ set page(value: MagickGeometry);
155
192
  get quality(): number;
156
193
  set quality(value: number);
157
194
  get signature(): string | null;
@@ -160,10 +197,13 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
160
197
  get width(): number;
161
198
  alpha(value: AlphaOption): void;
162
199
  autoOrient(): void;
200
+ autoThreshold(method: AutoThresholdMethod): void;
163
201
  blur(): void;
164
202
  blur(channels: Channels): void;
165
203
  blur(radius: number, sigma: number): void;
166
204
  blur(radius: number, sigma: number, channels: Channels): void;
205
+ border(size: number): void;
206
+ border(width: number, height: number): void;
167
207
  channelOffset(pixelChannel: PixelChannel): number;
168
208
  charcoal(): void;
169
209
  charcoal(radius: number, sigma: number): void;
@@ -196,10 +236,16 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
196
236
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, channels: Channels): void;
197
237
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, args: string): void;
198
238
  compositeGravity(image: IMagickImage, gravity: Gravity, compose: CompositeOperator, point: Point, args: string, channels: Channels): void;
239
+ crop(geometry: MagickGeometry): void;
240
+ crop(geometry: MagickGeometry, gravity: Gravity): void;
241
+ crop(width: number, height: number): void;
242
+ crop(width: number, height: number, gravity: Gravity): void;
199
243
  static create(): IMagickImage;
200
244
  deskew(threshold: Percentage): number;
201
245
  distort(method: DistortMethod, params: number[]): void;
202
246
  distort(method: DistortMethod, settings: DistortSettings, params: number[]): void;
247
+ draw(drawables: IDrawable[]): void;
248
+ draw(...drawables: IDrawable[]): void;
203
249
  evaluate(channels: Channels, operator: EvaluateOperator, value: number): void;
204
250
  evaluate(channels: Channels, operator: EvaluateOperator, value: Percentage): void;
205
251
  evaluate(channels: Channels, geometry: MagickGeometry, operator: EvaluateOperator, value: number): void;
@@ -216,10 +262,17 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
216
262
  getWriteMask(func: (mask: IMagickImage | null) => void): void;
217
263
  getWriteMask(func: (mask: IMagickImage | null) => Promise<void>): Promise<void>;
218
264
  getPixels<TReturnType>(func: (pixels: IPixelCollection) => TReturnType): TReturnType;
265
+ histogram(): Map<string, number>;
266
+ inverseSigmoidalContrast(contrast: number): void;
267
+ inverseSigmoidalContrast(contrast: number, midpointPercentage: Percentage): void;
268
+ inverseSigmoidalContrast(contrast: number, midpoint: number): void;
269
+ inverseSigmoidalContrast(contrast: number, midpoint: number, channels: Channels): void;
219
270
  level(blackPoint: Percentage, whitePoint: Percentage): void;
220
271
  level(blackPoint: Percentage, whitePoint: Percentage, gamma: number): void;
221
272
  level(channels: Channels, blackPoint: Percentage, whitePoint: Percentage): void;
222
273
  level(channels: Channels, blackPoint: Percentage, whitePoint: Percentage, gamma: number): void;
274
+ liquidRescale(geometry: MagickGeometry): void;
275
+ liquidRescale(width: number, height: number): void;
223
276
  modulate(brightness: Percentage): void;
224
277
  modulate(brightness: Percentage, saturation: Percentage): void;
225
278
  modulate(brightness: Percentage, saturation: Percentage, hue: Percentage): void;
@@ -231,6 +284,7 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
231
284
  readFromCanvas(canvas: HTMLCanvasElement): void;
232
285
  removeArtifact(name: string): void;
233
286
  removeWriteMask(): void;
287
+ repage(): void;
234
288
  resize(geometry: MagickGeometry): void;
235
289
  resize(width: number, height: number): void;
236
290
  rotate(degrees: number): void;
@@ -238,11 +292,9 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
238
292
  sharpen(radius: number, sigma: number): void;
239
293
  sharpen(radius: number, sigma: number, channels: Channels): void;
240
294
  sigmoidalContrast(contrast: number): void;
241
- sigmoidalContrast(sharpen: boolean, contrast: number): void;
242
- sigmoidalContrast(contrast: number, midpoint: number): void;
243
- sigmoidalContrast(sharpen: boolean, contrast: number, midpoint: number): void;
244
295
  sigmoidalContrast(contrast: number, midpointPercentage: Percentage): void;
245
- sigmoidalContrast(sharpen: boolean, contrast: number, midpointPercentage: Percentage): void;
296
+ sigmoidalContrast(contrast: number, midpoint: number): void;
297
+ sigmoidalContrast(contrast: number, midpoint: number, channels: Channels): void;
246
298
  separate(func: (images: IMagickImageCollection) => void): void;
247
299
  separate(func: (images: IMagickImageCollection) => Promise<void>): Promise<void>;
248
300
  separate(func: (images: IMagickImageCollection) => void, channels: Channels): void;
@@ -251,10 +303,18 @@ export declare class MagickImage extends NativeInstance implements IMagickImage
251
303
  setArtifact(name: string, value: boolean): void;
252
304
  setWriteMask(image: IMagickImage): void;
253
305
  toString: () => string;
306
+ trim(): void;
307
+ trim(...edges: Gravity[]): void;
308
+ trim(percentage: Percentage): void;
309
+ wave(): void;
310
+ wave(method: PixelInterpolateMethod, amplitude: number, length: number): void;
311
+ vignette(): void;
312
+ vignette(radius: number, sigma: number, x: number, y: number): void;
254
313
  write(func: (data: Uint8Array) => void, format?: MagickFormat): void;
255
314
  write(func: (data: Uint8Array) => Promise<void>, format?: MagickFormat): Promise<void>;
256
315
  writeToCanvas(canvas: HTMLCanvasElement): void;
257
316
  static _use<TReturnType>(func: (image: IMagickImage) => Promise<TReturnType>): Promise<TReturnType>;
317
+ private privateSigmoidalContrast;
258
318
  private static createInstance;
259
319
  private fromBool;
260
320
  private readFromArray;