@disjukr/croquis-js
Version:
drawing tool library
58 lines (57 loc) • 2.17 kB
TypeScript
import type { Rect } from '../geometry';
import type { StylusState } from '../stylus';
import type { StrokeProtocol } from '../stroke-protocol';
export interface StampFn {
(config: BrushConfig, state: BrushStrokeState, params: StampParams): void;
}
export interface RandomFn {
(): number;
}
export interface BrushConfig {
stamp: StampFn;
flow: number;
applyPressureToFlow: boolean;
size: number;
applyPressureToSize: boolean;
spacing: number;
angle: number;
rotateToTangent: boolean;
angleRandom: RandomFn;
angleSpread: number;
normalRandom: RandomFn;
normalSpread: number;
tangentRandom: RandomFn;
tangentSpread: number;
}
export declare const defaultBrushConfig: Readonly<BrushConfig>;
export declare function getHardRoundStampFn(ctx: CanvasRenderingContext2D, color: string): StampFn;
export declare function getDrawHardRoundFn(color: string): DrawFn;
export declare function getSoftRoundStampFn(ctx: CanvasRenderingContext2D, color: string): StampFn;
export declare function getDrawSoftRoundFn(color: string): DrawFn;
export declare function getStarStampFn(ctx: CanvasRenderingContext2D, color: string, numPoints?: number, innerRatio?: number): StampFn;
export declare function getDrawStarFn(color: string, numPoints?: number, innerRatio?: number): DrawFn;
export declare function getBrushWidth(size: number, aspectRatio: number): number;
export declare function getBrushHeight(size: number): number;
export interface BrushStrokeState {
prev: StylusState;
tangent: number;
delta: number;
lastStamp: StampParams;
reserved: boolean;
boundingRect: Rect;
}
export interface BrushStrokeResult {
boundingRect: Rect;
}
export interface StampParams {
x: number;
y: number;
angle: number;
pressure: number;
}
export interface DrawFn {
(ctx: CanvasRenderingContext2D, width: number, height: number): void;
}
export declare function getStampFn(ctx: CanvasRenderingContext2D, drawFn: DrawFn, aspectRatio?: number): StampFn;
export declare type BrushStroke = StrokeProtocol<BrushConfig, BrushStrokeState, BrushStrokeResult>;
export declare const stroke: BrushStroke;