toosoon-utils
Version:
Utility functions & classes
118 lines (117 loc) • 3.97 kB
TypeScript
import { type Vector2 } from '../geometry';
import { Curve, LineCurve, PolylineCurve, QuadraticBezierCurve, CubicBezierCurve, CatmullRomCurve, SplineCurve, EllipseCurve, ArcCurve } from '../curves';
import Path from './Path';
import PathContext from './PathContext';
/**
* Parameters used for SVG serialization of a path
*/
export type PathSVGSerializationParameters = {
/**
* Flag indicating if given curve should be approximated into straight lines
*/
approximate?: boolean;
/**
* Resolution used for approximations
*/
resolution?: number;
};
/**
* Utility class for manipulating connected curves and generating SVG path
*
* It works by serializing 2D Canvas API to SVG path data
*
* @exports
* @class PathSVG
* @extends PathContext
*/
export default class PathSVG extends PathContext {
/**
* Serialize this path into a SVG path string
*
* @param {PathSVGSerializationParameters} [params] Serialization parameters
* @returns {string}
*/
toString(params?: PathSVGSerializationParameters): string;
/**
* Convert a {@link Curve} into spaced points
*
* @param {Curve} curve Curve to approximate
* @param {number} [resolution=5] Approximation resolution
* @returns
*/
static approximate(curve: Curve<Vector2>, resolution?: number): Vector2[];
/**
* Serialize a {@link Curve}
*
* @param {Curve} curve Curve to serialize
* @param {PathSVGSerializationParameters} [params] Serialization parameters
* @returns {string}
*/
static serialize(curve: Curve<Vector2>, { approximate, resolution }?: PathSVGSerializationParameters): string;
/**
* Serialize a {@link LineCurve}
*
* @param {LineCurve} curve LineCurve to serialize
* @returns {string}
*/
static serializeLineCurve(curve: LineCurve): string;
/**
* Serialize a {@link PolylineCurve}
*
* @param {PolylineCurve} curve PolylineCurve to serialize
* @returns {string}
*/
static serializePolylineCurve(curve: PolylineCurve): string;
/**
* Serialize a {@link QuadraticBezierCurve}
*
* @param {QuadraticBezierCurve} curve QuadraticBezierCurve to serialize
* @returns {string}
*/
static serializeQuadraticBezierCurve(curve: QuadraticBezierCurve): string;
/**
* Serialize a {@link CubicBezierCurve}
*
* @param {CubicBezierCurve} curve CubicBezierCurve to serialize
* @returns {string}
*/
static serializeCubicBezierCurve(curve: CubicBezierCurve): string;
/**
* Serialize a {@link CatmullRomCurve} by approximating it into straight lines
*
* @param {CatmullRomCurve} curve CatmullRomCurve to serialize
* @param {number} [resolution] Approximation resolution
* @returns {string}
*/
static serializeCatmullRomCurve(curve: CatmullRomCurve, resolution?: number): string;
/**
* Serialize a {@link SplineCurve} by approximating it into straight lines
*
* @param {SplineCurve} curve SplineCurve to serialize
* @param {number} [resolution] Approximation resolution
* @returns {string}
*/
static serializeSplineCurve(curve: SplineCurve, resolution?: number): string;
/**
* Serialize an {@link EllipseCurve}
*
* @param {EllipseCurve} curve EllipseCurve to serialize
* @returns {string}
*/
static serializeEllipseCurve(curve: EllipseCurve): string;
/**
* Serialize an {@link ArcCurve}
*
* @param {ArcCurve} curve ArcCurve to serialize
* @returns {string}
*/
static serializeArcCurve(curve: ArcCurve): string;
/**
* Serialize an {@link Path}
*
* @param {Path} path Path to serialize
* @param {PathSVGSerializationParameters} [params] Serialization parameters
* @returns {string}
*/
static serializePath(path: Path<Vector2>, params?: PathSVGSerializationParameters): string;
}