UNPKG

toosoon-utils

Version:
118 lines (117 loc) 3.97 kB
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; }