vue-pincher
Version:
Vue 3 image cropper component
60 lines (59 loc) • 1.75 kB
TypeScript
import type { Region } from "./crop";
export declare class ImageManipulator {
private readonly _ctx;
private _image;
private _state;
private _trimTo?;
private _attention?;
private readonly resizeObserver;
private resetRequested;
private clientWidth;
private clientHeight;
private canvasWidth;
private canvasHeight;
private fitWidth;
private fitHeight;
constructor(_ctx: CanvasRenderingContext2D, _image: ImageBitmap, _state: State, _trimTo?: Region | undefined, _attention?: Region[] | undefined);
set image(value: ImageBitmap);
set state(value: State);
set attention(value: Region[]);
set trimTo(value: Region | undefined);
/**
* Resets manipulator to default state.
* @param lazy If true, the reset will be requested but not performed immediately.
* This is useful for performance optimization when multiple manipulations are performed in a short time.
* The reset will be performed on the next resize event.
* If false, the reset will be performed immediately.
*/
reset(lazy?: boolean): void;
manipulate(data: Manipulation): void;
showRegion(region: Region, fillTarget?: boolean): void;
getCurrentRegion(): {
x: number;
y: number;
width: number;
height: number;
};
close(): void;
redraw(): void;
private adjustSize;
}
interface Manipulation {
dAngle?: number;
angle?: number;
dScale?: number;
scale?: number;
dOffsetX?: number;
offsetX?: number;
dOffsetY?: number;
offsetY?: number;
centerX?: number;
centerY?: number;
}
interface State {
angle: number;
offsetX: number;
offsetY: number;
scale: number;
}
export {};