@hhenrichsen/motion-canvas-graphing
Version:
Some graphing components for Motion Canvas.
104 lines (99 loc) • 4.11 kB
TypeScript
import { LayoutProps, Layout, CanvasStyleSignal, PossibleCanvasStyle, LineProps, Line } from '@motion-canvas/2d';
import { SignalValue, PossibleVector2, PossibleColor, Vector2Signal, SimpleSignal, BBox, Vector2 } from '@motion-canvas/core';
interface PlotProps extends LayoutProps {
minX?: SignalValue<number>;
minY?: SignalValue<number>;
min?: SignalValue<PossibleVector2>;
maxX?: SignalValue<number>;
maxY?: SignalValue<number>;
max?: SignalValue<PossibleVector2>;
ticksX?: SignalValue<number>;
ticksY?: SignalValue<number>;
ticks?: SignalValue<PossibleVector2>;
labelSizeX?: SignalValue<number>;
labelSizeY?: SignalValue<number>;
labelSize?: SignalValue<PossibleVector2>;
labelPaddingX?: SignalValue<number>;
labelPaddingY?: SignalValue<number>;
labelPadding?: SignalValue<PossibleVector2>;
tickPaddingX?: SignalValue<number>;
tickPaddingY?: SignalValue<number>;
tickPadding?: SignalValue<PossibleVector2>;
tickLabelSizeX?: SignalValue<number>;
tickLabelSizeY?: SignalValue<number>;
tickLabelSize?: SignalValue<PossibleVector2>;
tickOverflowX?: SignalValue<number>;
tickOverflowY?: SignalValue<number>;
tickOverflow?: SignalValue<PossibleVector2>;
gridStrokeWidth?: SignalValue<number>;
axisStrokeWidth?: SignalValue<number>;
labelX?: SignalValue<string>;
axisColorX?: SignalValue<PossibleColor>;
axisTextColorX?: SignalValue<PossibleColor>;
labelY?: SignalValue<string>;
axisColorY?: SignalValue<PossibleColor>;
axisTextColorY?: SignalValue<PossibleColor>;
labelFormatterX?: (x: number) => string;
labelFormatterY?: (y: number) => string;
}
declare class Plot extends Layout {
readonly min: Vector2Signal<this>;
readonly max: Vector2Signal<this>;
readonly ticks: Vector2Signal<this>;
readonly labelSize: Vector2Signal<this>;
readonly labelPadding: Vector2Signal<this>;
readonly tickLabelSize: Vector2Signal<this>;
readonly tickOverflow: Vector2Signal<this>;
readonly tickPadding: Vector2Signal<this>;
readonly gridStrokeWidth: Vector2Signal<this>;
readonly axisStrokeWidth: Vector2Signal<this>;
readonly axisColorX: CanvasStyleSignal<this>;
readonly axisTextColorX: CanvasStyleSignal<this>;
readonly labelX: SimpleSignal<string, this>;
readonly axisColorY: CanvasStyleSignal<this>;
readonly axisTextColorY: CanvasStyleSignal<this>;
readonly labelY: SimpleSignal<string, this>;
readonly labelFormatterX: (x: number) => string;
readonly labelFormatterY: (y: number) => string;
private edgePadding;
constructor(props?: PlotProps);
cacheBBox(): BBox;
protected draw(context: CanvasRenderingContext2D): void;
getPath(): Path2D;
getPointFromPlotSpace(point: PossibleVector2): Vector2;
private mapToX;
private mapToY;
private toRelativeGridSize;
makeGraphData(resolution: number, f: (x: number) => number): [number, number][];
}
interface ScatterPlotProps extends LayoutProps {
pointRadius?: number;
pointColor?: PossibleCanvasStyle;
data?: SignalValue<PossibleVector2[]>;
start?: SignalValue<number>;
end?: SignalValue<number>;
}
declare class ScatterPlot extends Layout {
readonly pointRadius: SimpleSignal<number, this>;
readonly pointColor: CanvasStyleSignal<this>;
readonly data: SimpleSignal<[number, number][], this>;
readonly start: SimpleSignal<number, this>;
readonly end: SimpleSignal<number, this>;
private firstIndex;
private firstPointProgress;
private lastIndex;
private pointProgress;
constructor(props?: ScatterPlotProps);
protected draw(context: CanvasRenderingContext2D): void;
}
interface LinePlotProps extends LineProps {
data?: [number, number][];
points?: never;
}
declare class LinePlot extends Line {
readonly data: SimpleSignal<[number, number][], this>;
constructor(props?: LinePlotProps);
parsedPoints(): Vector2[];
protected childrenBBox(): BBox;
}
export { LinePlot, type LinePlotProps, Plot, type PlotProps, ScatterPlot, type ScatterPlotProps };