/** * Shared utility functions for SVG shape rendering * Used by VectorShapeView and ShapeGroupView */ /** * Creates an SVG gradient element (linear or radial) * @param {Object} gradientData - The gradient configuration * @param {string} gradientData.gradientType - 'linear' or 'radial' * @param {Array} gradientData.stops - Array of gradient stops * @param {number} gradientData.angle - Angle for linear gradients (in degrees) * @param {string} gradientId - Unique identifier for the gradient * @returns {SVGGradientElement|null} The created gradient element or null */ export function createGradient(gradientData: { gradientType: string; stops: any[]; angle: number; }, gradientId: string): SVGGradientElement | null; /** * Creates an SVG foreignObject with formatted text content. * * @param {Object} textContent - The text content with parts and formatting * @param {Array} textContent.parts - Array of text parts with formatting * @param {string} textContent.parts[].text - The text content * @param {Object} [textContent.parts[].formatting] - Formatting options (bold, italic, color, fontSize, fontFamily) * @param {'PAGE'|'NUMPAGES'} [textContent.parts[].fieldType] - Field type for dynamic content resolution * @param {boolean} [textContent.parts[].isLineBreak] - Whether this part represents a line break * @param {boolean} [textContent.parts[].isEmptyParagraph] - Whether this line break follows an empty paragraph * @param {string} textAlign - Text alignment ('left', 'center', 'right', 'r') * @param {number} width - Width of the text area in pixels * @param {number} height - Height of the text area in pixels * @param {Object} [options={}] - Additional rendering options * @param {{ top: number, right: number, bottom: number, left: number }} [options.textInsets] - Text padding insets in pixels * @param {'top'|'center'|'bottom'} [options.textVerticalAlign] - Vertical alignment of text content * @param {number} [options.pageNumber] - Current page number for PAGE field resolution * @param {number} [options.totalPages] - Total page count for NUMPAGES field resolution * @returns {SVGForeignObjectElement} The created foreignObject element containing the formatted text */ export function createTextElement(textContent: { parts: Array; }, textAlign: string, width: number, height: number, options?: { textInsets?: { top: number; right: number; bottom: number; left: number; } | undefined; textVerticalAlign?: "top" | "center" | "bottom" | undefined; pageNumber?: number | undefined; totalPages?: number | undefined; }): SVGForeignObjectElement; /** * Applies a gradient to all filled elements in an SVG * @param {SVGElement} svg - The SVG element to apply gradient to * @param {Object} gradientData - The gradient configuration * @param {string} gradientData.gradientType - 'linear' or 'radial' * @param {Array} gradientData.stops - Array of gradient stops * @param {number} gradientData.angle - Angle for linear gradients (in degrees) */ export function applyGradientToSVG(svg: SVGElement, gradientData: { gradientType: string; stops: any[]; angle: number; }): void; /** * Applies alpha transparency to all filled elements in an SVG * @param {SVGElement} svg - The SVG element to apply alpha to * @param {Object} alphaData - The alpha configuration * @param {string} alphaData.color - The fill color * @param {number} alphaData.alpha - The alpha value (0-1) */ export function applyAlphaToSVG(svg: SVGElement, alphaData: { color: string; alpha: number; }): void; /** * Generates transform string from shape attributes * @param {Object} attrs - Shape attributes * @param {number} attrs.rotation - Rotation angle in degrees * @param {boolean} attrs.flipH - Horizontal flip * @param {boolean} attrs.flipV - Vertical flip * @returns {string[]} Array of transform strings */ export function generateTransforms(attrs: { rotation: number; flipH: boolean; flipV: boolean; }): string[]; //# sourceMappingURL=svg-utils.d.ts.map