Very Popular
Latest
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262// Copyright Dirk Lemstra https://github.com/dlemstra/magick-wasm.// Licensed under the Apache License, Version 2.0.import { DrawingSettings } from "../settings/drawing-settings.ts";import { Exception } from "../internal/exception/exception.ts";import { Gravity } from "../gravity.ts";import { IDisposable } from "../disposable.ts";import { IDrawable } from "./drawable.ts";import { ImageMagick } from "../image-magick.ts";import { IMagickImage } from "../magick-image.ts";import { MagickColor } from "../magick-color.ts";import { MagickSettings } from "../settings/magick-settings.ts";import { NativeInstance } from "../native-instance.ts";import { PaintMethod } from "../paint-method.ts";import { TextAlignment } from "../text-alignment.ts";import { TextDecoration } from "../text-decoration.ts";import { _withString } from "../internal/native/string.ts";
export interface IDrawingWand extends IDisposable { color(x: number, y: number, paintMethod: number): void; draw(drawables: IDrawable[]): void; fillColor(value: MagickColor): void; fillOpacity(value: number): void; font(family: string): void; fontPointSize(value: number): void; gravity(value: Gravity): void; rectangle( upperLeftX: number, upperLeftY: number, lowerRightX: number, lowerRightY: number, ): void; roundRectangle( upperLeftX: number, upperLeftY: number, lowerRightX: number, lowerRightY: number, cornerWidth: number, cornerHeight: number, ): void; text(x: number, y: number, value: string): void; textAlignment(value: TextAlignment): void; textAntialias(value: boolean): void; textDecoration(value: TextDecoration): void; textInterlineSpacing(value: number): void; textInterwordspacing(value: number): void; textKerning(value: number): void; textUnderColor(value: MagickColor): void;}
export class DrawingWand extends NativeInstance implements IDrawingWand { private constructor(image: IMagickImage, magickSettings: MagickSettings) { const drawingSettings = DrawingSettings._create(magickSettings); const instance = drawingSettings._use((settings) => { return ImageMagick._api._DrawingWand_Create( image._instance, settings._instance, ); }); const disposeMethod = ImageMagick._api._DrawingWand_Dispose; super(instance, disposeMethod); }
color(x: number, y: number, paintMethod: PaintMethod): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_Color( this._instance, x, y, paintMethod, exception, ); }); }
draw(drawables: IDrawable[]): void { drawables.forEach((drawable) => { drawable.draw(this); });
Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_Render(this._instance, exception); }); }
fillColor(value: MagickColor): void { Exception.usePointer((exception) => { value._use((valuePtr) => { ImageMagick._api._DrawingWand_FillColor( this._instance, valuePtr, exception, ); }); }); }
fillOpacity(value: number): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_FillOpacity( this._instance, value, exception, ); }); }
font(fileName: string): void { Exception.usePointer((exception) => { _withString(fileName, (ptr) => { ImageMagick._api._DrawingWand_Font(this._instance, ptr, exception); }); }); }
fontPointSize(value: number): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_FontPointSize( this._instance, value, exception, ); }); }
gravity(value: Gravity): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_Gravity(this._instance, value, exception); }); }
rectangle( upperLeftX: number, upperLeftY: number, lowerRightX: number, lowerRightY: number, ): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_Rectangle( this._instance, upperLeftX, upperLeftY, lowerRightX, lowerRightY, exception, ); }); }
roundRectangle( upperLeftX: number, upperLeftY: number, lowerRightX: number, lowerRightY: number, cornerWidth: number, cornerHeight: number, ): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_RoundRectangle( this._instance, upperLeftX, upperLeftY, lowerRightX, lowerRightY, cornerWidth, cornerHeight, exception, ); }); }
text(x: number, y: number, value: string): void { Exception.usePointer((exception) => { _withString(value, (valuePtr) => { ImageMagick._api._DrawingWand_Text( this._instance, x, y, valuePtr, exception, ); }); }); }
textAlignment(value: TextAlignment): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextAlignment( this._instance, value, exception, ); }); }
textAntialias(value: boolean): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextAntialias( this._instance, value ? 1 : 0, exception, ); }); }
textDecoration(value: TextDecoration): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextDecoration( this._instance, value, exception, ); }); }
textInterlineSpacing(value: number): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextInterlineSpacing( this._instance, value, exception, ); }); }
textInterwordspacing(value: number): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextInterwordSpacing( this._instance, value, exception, ); }); }
textKerning(value: number): void { Exception.usePointer((exception) => { ImageMagick._api._DrawingWand_TextKerning( this._instance, value, exception, ); }); }
textUnderColor(value: MagickColor): void { Exception.usePointer((exception) => { value._use((valuePtr) => { ImageMagick._api._DrawingWand_TextUnderColor( this._instance, valuePtr, exception, ); }); }); }
/** @internal */ static _create(image: IMagickImage, settings: MagickSettings): DrawingWand { return new DrawingWand(image, settings); }}