Skip to content

Commit 0b4167b

Browse files
committed
Added density to MagickImage.
1 parent 3e66d21 commit 0b4167b

File tree

2 files changed

+48
-8
lines changed

2 files changed

+48
-8
lines changed

src/magick-image.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { ColorSpace } from './color-space';
1010
import { ColorType } from './color-type';
1111
import { CompositeOperator } from './composite-operator';
1212
import { CompressionMethod } from './compression-method';
13+
import { Density } from './density';
1314
import { Disposable } from './internal/disposable';
1415
import { DisposableArray } from './internal/disposable-array';
1516
import { DistortMethod } from './distort-method';
@@ -81,6 +82,7 @@ export interface IMagickImage extends IDisposable {
8182
comment: string | null;
8283
compose: CompositeOperator;
8384
readonly compression: CompressionMethod;
85+
density: Density;
8486
depth: number;
8587
filterType: FilterType;
8688
format: MagickFormat;
@@ -421,15 +423,21 @@ export class MagickImage extends NativeInstance implements IMagickImage {
421423
this.setAttribute('comment', value);
422424
}
423425

424-
get compose(): CompositeOperator {
425-
return ImageMagick._api._MagickImage_Compose_Get(this._instance);
426-
}
427-
set compose(value: CompositeOperator) {
428-
ImageMagick._api._MagickImage_Compose_Set(this._instance, value);
429-
}
426+
get compose(): CompositeOperator { return ImageMagick._api._MagickImage_Compose_Get(this._instance); }
427+
set compose(value: CompositeOperator) { ImageMagick._api._MagickImage_Compose_Set(this._instance, value); }
430428

431-
get compression(): CompressionMethod {
432-
return ImageMagick._api._MagickImage_Compression_Get(this._instance);
429+
get compression(): CompressionMethod { return ImageMagick._api._MagickImage_Compression_Get(this._instance); }
430+
431+
get density(): Density {
432+
return new Density(
433+
ImageMagick._api._MagickImage_ResolutionX_Get(this._instance),
434+
ImageMagick._api._MagickImage_ResolutionY_Get(this._instance),
435+
ImageMagick._api._MagickImage_ResolutionUnits_Get(this._instance));
436+
}
437+
set density(value: Density) {
438+
ImageMagick._api._MagickImage_ResolutionX_Set(this._instance, value.x);
439+
ImageMagick._api._MagickImage_ResolutionY_Set(this._instance, value.y);
440+
ImageMagick._api._MagickImage_ResolutionUnits_Set(this._instance, value.units);
433441
}
434442

435443
get depth(): number { return ImageMagick._api._MagickImage_Depth_Get(this._instance); }

tests/magick-image/density.spec.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright Dirk Lemstra https://github.com/dlemstra/magick-wasm.
2+
// Licensed under the Apache License, Version 2.0.
3+
4+
import { Density } from '../../src/density';
5+
import { DensityUnit } from '../../src/density-unit';
6+
import { ImageMagick } from '../../src/image-magick';
7+
import { TestFiles } from '../test-files';
8+
9+
beforeAll(() => { ImageMagick._api = global.native; });
10+
11+
describe('Magick#density', () => {
12+
it('should return the density of the image', () => {
13+
TestFiles.redPng.read((image) => {
14+
const density = image.density;
15+
16+
expect(density.x).toBe(27.95);
17+
expect(density.y).toBe(27.95);
18+
expect(density.units).toBe(DensityUnit.PixelsPerCentimeter);
19+
});
20+
});
21+
22+
it('should change the density of the image', () => {
23+
TestFiles.redPng.read((image) => {
24+
image.density = new Density(42, 24, DensityUnit.PixelsPerInch);
25+
const density = image.density;
26+
27+
expect(density.x).toBe(42);
28+
expect(density.y).toBe(24);
29+
expect(density.units).toBe(DensityUnit.PixelsPerInch);
30+
});
31+
});
32+
});

0 commit comments

Comments
 (0)