UNPKG

@disjukr/croquis-js

Version:
58 lines (57 loc) 2.17 kB
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;