File

src/toolbox/pixels/Pixels.ts

Extends

ToolBox

Index

Properties
Methods
Accessors

Properties

Public autoClear
Default value : false
Inherited from ToolBox
Defined in ToolBox:9
Public history
Type : HistoryCallback[]
Default value : []
Inherited from ToolBox
Defined in ToolBox:8
Public Readonly layer
Type : Layer
Inherited from ToolBox
Defined in ToolBox:9

Methods

Public clearTransformer
clearTransformer()
Returns : void
Public Async createRawTransformer
createRawTransformer(src: IllustratorImageSource)
Parameters :
Name Type Optional
src IllustratorImageSource No
Returns : any
Public Async createTransformer
createTransformer(context: PixelTransformerContext)
Parameters :
Name Type Optional
context PixelTransformerContext No
Returns : any
Public crop
crop(context: PixelTransformerContext)
Parameters :
Name Type Optional
context PixelTransformerContext No
Returns : this
Public gaussianBlur
gaussianBlur(sigma: number)
Parameters :
Name Type Optional
sigma number No
Returns : this
Public Async getImage
getImage()
Returns : unknown
Public getImageSync
getImageSync()
Returns : any
Public hueRotate
hueRotate(hue: number)
Parameters :
Name Type Optional
hue number No
Returns : this
Public invert
invert()
Returns : this
Public Async renderTransformer
renderTransformer(context: PixelTransformerRenderContext)
Parameters :
Name Type Optional
context PixelTransformerRenderContext No
Returns : any
Public renderTransformerSync
renderTransformerSync(context: PixelTransformerRenderContext)
Parameters :
Name Type Optional
context PixelTransformerRenderContext No
Returns : void
Public resize
resize(width: number, height?: number | null, algorithm?: K | null)
Type parameters :
  • K
Parameters :
Name Type Optional
width number No
height number | null Yes
algorithm K | null Yes
Returns : this
Public rotate
rotate(orientation: K)
Type parameters :
  • K
Parameters :
Name Type Optional
orientation K No
Returns : this
Public setBrightness
setBrightness(brightness: number)
Parameters :
Name Type Optional
brightness number No
Returns : this
Public setContrast
setContrast(contrast: number)
Parameters :
Name Type Optional
contrast number No
Returns : this
Public unsharpMasking
unsharpMasking(sigma: number, threshold: number)
Parameters :
Name Type Optional
sigma number No
threshold number No
Returns : this
Public render
render()
Inherited from ToolBox
Defined in ToolBox:27
Returns : void
Public restore
restore()
Inherited from ToolBox
Defined in ToolBox:19
Returns : this
Public save
save()
Inherited from ToolBox
Defined in ToolBox:11
Returns : this

Accessors

transformer
gettransformer()
import { ToolBox } from "../exports";
import { IllustratorImageSource } from "../../image/ImageLoader";
import { IllustratorImage, IllustratorImageEnums } from "../../image/IllustratorImage";

export interface PixelTransformerContext {
    from: number;
    to: number;
    width: number;
    height: number;
}

export interface PixelTransformerRenderContext {
    from: number;
    to: number;
    width?: number;
    height?: number;
}

export class PixelsTool extends ToolBox {
    #transformer!: IllustratorImage | null;

    public async createRawTransformer(src: IllustratorImageSource) {
        const transformer = await this.layer.illustrator.image.loadImage(src);
        this.#transformer = transformer;
    }

    public async createTransformer(context: PixelTransformerContext) {
        const data = this.layer.context.getImageData(context.from, context.to, context.width, context.height);
        const transformer = await IllustratorImage.fromImageData(data);
        this.#transformer = transformer;
    }

    public rotate<K extends keyof typeof IllustratorImageEnums.Orientation>(orientation: K) {
        this.#ensureTransformer();
        // @ts-expect-error
        this.#transformer?.rotate(IllustratorImageEnums.Orientation[orientation]);

        return this;
    }

    public crop(context: PixelTransformerContext) {
        this.#ensureTransformer();
        this.#transformer?.crop(context.from, context.to, context.width, context.height);
        return this;
    }

    public invert() {
        this.#ensureTransformer();
        this.#transformer?.invert();
        return this;
    }

    public setBrightness(brightness: number) {
        this.#ensureTransformer();
        this.#transformer?.brighten(brightness);
        return this;
    }

    public setContrast(contrast: number) {
        this.#ensureTransformer();
        this.#transformer?.adjustContrast(contrast);
        return this;
    }

    public hueRotate(hue: number) {
        this.#ensureTransformer();
        this.#transformer?.huerotate(hue);
        return this;
    }

    public gaussianBlur(sigma: number) {
        this.#ensureTransformer();
        this.#transformer?.blur(sigma);
        return this;
    }

    public unsharpMasking(sigma: number, threshold: number) {
        this.#ensureTransformer();
        this.#transformer?.unsharpen(sigma, threshold);
        return this;
    }

    public resize<K extends keyof typeof IllustratorImageEnums.ResizeFilterType>(
        width: number,
        height?: number | null,
        algorithm?: K | null
    ) {
        this.#ensureTransformer();
        // @ts-expect-error
        this.#transformer?.resize(width, height, IllustratorImageEnums.ResizeFilterType[algorithm]);
        return this;
    }

    public get transformer() {
        return this.#transformer;
    }

    public async getImage() {
        this.#ensureTransformer();
        // eslint-disable-next-line
        return await this.#transformer!.toImage();
    }

    public getImageSync() {
        this.#ensureTransformer();
        // eslint-disable-next-line
        return this.#transformer!.toImageSync();
    }

    public async renderTransformer(context: PixelTransformerRenderContext) {
        const data = await this.getImage();
        this.history.push((ctx) => {
            if ("width" in context && "height" in context) {
                // eslint-disable-next-line
                ctx.drawImage(data, context.from, context.to, context.width!, context.height!);
            } else {
                ctx.drawImage(data, context.from, context.to);
            }
        });
    }

    public renderTransformerSync(context: PixelTransformerRenderContext) {
        const data = this.getImageSync();
        this.history.push((ctx) => {
            if ("width" in context && "height" in context) {
                // eslint-disable-next-line
                ctx.drawImage(data, context.from, context.to, context.width!, context.height!);
            } else {
                ctx.drawImage(data, context.from, context.to);
            }
        });
    }

    public clearTransformer() {
        this.#transformer = null;
    }

    #ensureTransformer() {
        if (!this.#transformer) throw new Error("transformer is not created");
    }
}

results matching ""

    No results matching ""