intellicrop
Version:
Simple JavaScript solution to edge detection assisted image cropping.
90 lines (88 loc) • 3.17 kB
TypeScript
type Pt = [number, number];
interface Corners {
tl: Pt;
tr: Pt;
br: Pt;
bl: Pt;
}
interface EdgeCenters {
t: Pt;
r: Pt;
b: Pt;
l: Pt;
}
interface ViewCenter {
c: Pt;
}
export interface CropperTheme {
/** Color used for background and margin */
backgroundColor?: string;
/** Color used for tinting the surroundings of the selected area */
surroundingOverlayColor?: string;
/** Radius of corner grabbers in rem */
cornerGrabberRadius?: number;
/** Color of corner grabbers */
cornerGrabberColor?: string;
/** Line thickness of edges in rem (0 to hide edges) */
edgeThickness?: number;
/** Color of edges */
edgeColor?: string;
/** Radius of edge grabbers in rem (0 to hide edge grabbers) */
edgeGrabberRadius?: number;
/** Color of edge grabbers */
edgeGrabberColor?: string;
/** Radius of center grabber in rem (0 to hide center grabber) */
centerGrabberRadius?: number;
/** Color of center grabber */
centerGrabberColor?: string;
/** Factor by which to expand grabbers when hovered */
grabberExpansionFactor?: number;
/** Factor for scaling grabber hitboxes (increase for touch devices) */
grabberHitboxFactor?: number;
/** Line thickness of crosslines in rem (0 to hide crosslines) */
crossLineThickness?: number;
/** Color of crosslines */
crossLineColor?: string;
/** Radius of zoom lens in rem (0 to hide zoom lens) */
zoomLensRadius?: number;
/** Margin between zoom lens and grabber in rem */
zoomLensMargin?: number;
/** Zoom factor of zoom lens */
zoomLensFactor?: number;
/** Border thickness of zoom lens in rem */
zoomLensBorderThickness?: number;
/** Border color of zoom lens */
zoomLensBorderColor?: string;
/** Overlay color of zoom lens */
zoomLensOverlayColor?: string;
}
export interface CropperOptions {
/** Use edge detection for placing draggable corners */
useEdgeDetection?: boolean;
/** Theme to be used for Cropper UI */
theme?: CropperTheme;
/** Canvas element to show edge detection results */
debugCanvas?: HTMLCanvasElement;
/** Log debug information in console */
debugLogs?: boolean;
/** Initial placement draggable corners (overrides useEdgeDetection) */
corners?: Corners;
/** Initial amount of clockwise 90° rotations */
rotations?: number;
}
export default class Cropper {
static initialization(): Promise<void>;
static isReady(): boolean;
constructor(canvas: HTMLCanvasElement, img: HTMLImageElement, options?: CropperOptions);
/** Discards event listeners */
discard(): void;
setDragged(dragged: keyof Corners | keyof EdgeCenters | keyof ViewCenter | undefined): void;
setHovered(hovered: keyof Corners | keyof EdgeCenters | keyof ViewCenter | undefined): void;
/** Returns image cropped according to current position of draggable corners */
getResult(type?: string, quality?: number): HTMLImageElement;
rotateLeft(): void;
rotateRight(): void;
getRotations(): number;
getCorners(): Corners;
}
//# sourceMappingURL=intellicrop.d.ts.map