@pixerate/editor 0.39.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -952,6 +952,21 @@ interface VectorStrokeSpot {
952
952
  left: Vec2;
953
953
  right: Vec2;
954
954
  }
955
+ /**
956
+ * The width point being edited numerically (double-click with the width tool): `index` is the
957
+ * point's, or null for a new point at `t` (a double-click on a stroke away from its points).
958
+ * `left` / `right` are side widths in document units (how far the stroke reaches on each side),
959
+ * `point` is where it sits on the path, in document space.
960
+ */
961
+ interface VectorWidthPointEdit {
962
+ nodeId: string;
963
+ subpath: number;
964
+ index: number | null;
965
+ t: number;
966
+ left: number;
967
+ right: number;
968
+ point: Vec2;
969
+ }
955
970
  /** A key press as the controller needs it. */
956
971
  interface VectorKeyInput extends VectorModifiers {
957
972
  /** `KeyboardEvent.key`. */
@@ -1028,7 +1043,7 @@ type VectorInteraction = {
1028
1043
  } | {
1029
1044
  type: 'width';
1030
1045
  ref: VectorWidthPointRef;
1031
- mode: 'width' | 'move';
1046
+ mode: 'width' | 'move' | 'copy';
1032
1047
  width: number;
1033
1048
  } | {
1034
1049
  type: 'pen';
@@ -1044,8 +1059,10 @@ interface VectorEditorState {
1044
1059
  selection: readonly string[];
1045
1060
  /** Selected anchors (direct tool). */
1046
1061
  selectedAnchors: readonly VectorAnchorRef[];
1047
- /** The selected width point (width tool); Delete removes it. */
1048
- selectedWidthPoint: VectorWidthPointRef | null;
1062
+ /** The selected width points (width tool, all on one path); Delete removes them. */
1063
+ selectedWidthPoints: readonly VectorWidthPointRef[];
1064
+ /** The width point open for numeric editing (double-click with the width tool), if any. */
1065
+ widthPointEdit: VectorWidthPointEdit | null;
1049
1066
  /** The path whose anchors are being edited, if any. */
1050
1067
  editingId: string | null;
1051
1068
  /** Axis-aligned bounds of the selected nodes in document units. */
@@ -1211,7 +1228,7 @@ interface VectorWidthHandle {
1211
1228
  * vectorcraft `crates/tools/src/distort/width.rs` (MIT OR Apache-2.0, see
1212
1229
  * THIRD_PARTY_NOTICES.md), as are the `width` drag and hover below.
1213
1230
  */
1214
- declare function getVectorWidthHandles(state: Pick<VectorEditorState, 'document' | 'selection' | 'tool' | 'hover' | 'interaction' | 'selectedWidthPoint'>): VectorWidthHandle[];
1231
+ declare function getVectorWidthHandles(state: Pick<VectorEditorState, 'document' | 'selection' | 'tool' | 'hover' | 'interaction' | 'selectedWidthPoints'>): VectorWidthHandle[];
1215
1232
  /** Looks up an anchor (positions in its node's own space). */
1216
1233
  declare function getAnchor(doc: VectorDocument, ref: VectorAnchorRef): VectorAnchor | undefined;
1217
1234
  /** An anchor with its position and handles in document space (its node's transforms applied). */
@@ -1282,7 +1299,8 @@ declare class VectorEditorController {
1282
1299
  private doc;
1283
1300
  private selection;
1284
1301
  private anchors;
1285
- private widthPoint;
1302
+ private widthPoints;
1303
+ private widthEdit;
1286
1304
  private editingId;
1287
1305
  private pen;
1288
1306
  private tool;
@@ -1434,8 +1452,49 @@ declare class VectorEditorController {
1434
1452
  } | null, options?: {
1435
1453
  ids?: readonly string[];
1436
1454
  }): VectorActionResult;
1437
- /** Removes one width point of a path's profile (the width tool's Delete). */
1455
+ /** Removes one width point of a path's profile. */
1438
1456
  removeWidthPoint(ref: Pick<VectorWidthPointRef, 'nodeId' | 'index'>): VectorActionResult;
1457
+ /** Removes width points (default: the selected ones — the width tool's Delete), as one undo step. */
1458
+ removeWidthPoints(refs?: readonly Pick<VectorWidthPointRef, 'nodeId' | 'index'>[]): VectorActionResult;
1459
+ /** Selects width points (width tool); points on other paths than the first are dropped. */
1460
+ selectWidthPoints(refs: readonly VectorWidthPointRef[]): void;
1461
+ /**
1462
+ * Sets one width point numerically: `index` names an existing point of path `nodeId`, null
1463
+ * (or left out) adds one at `values.t`. `left` / `right` are side widths in document units
1464
+ * (how far the stroke reaches on each side of the path), `t` the position along each subpath
1465
+ * (0–1). A point moved onto another one's `t` makes a step there. Selects the point and
1466
+ * refreshes an open width-point editor; one undo step. Ported from ArtCraft vectorcraft's
1467
+ * Width Point Edit dialog (`crates/tools/src/distort/width.rs`, MIT OR Apache-2.0).
1468
+ */
1469
+ setWidthPoint(target: {
1470
+ nodeId: string;
1471
+ index?: number | null;
1472
+ }, values: {
1473
+ t?: number;
1474
+ left?: number;
1475
+ right?: number;
1476
+ }): VectorActionResult;
1477
+ /**
1478
+ * Opens the width-point editor (what a double-click with the width tool does) on a width
1479
+ * point, or on a spot of a stroke (`t` without `index`: applying it adds a point there).
1480
+ * Returns false when the path has no visible stroke.
1481
+ */
1482
+ openWidthPointEdit(target: {
1483
+ nodeId: string;
1484
+ subpath?: number;
1485
+ index?: number | null;
1486
+ t?: number;
1487
+ }): boolean;
1488
+ /** Closes the width-point editor without changing anything. */
1489
+ closeWidthPointEdit(): void;
1490
+ /** Applies `values` to the width point being edited (see `setWidthPoint`) and closes the editor. */
1491
+ commitWidthPointEdit(values: {
1492
+ t?: number;
1493
+ left?: number;
1494
+ right?: number;
1495
+ }): VectorActionResult;
1496
+ /** The editor's view of point `index` (or of the stroke at `t` when index is null) of `nodeId`. */
1497
+ private widthEditFor;
1439
1498
  /**
1440
1499
  * Sets the live corner radius (and optionally the kind) of anchors: `refs`, else the selected
1441
1500
  * anchors (direct tool), else every anchor of the `ids` / selected paths. Radius 0 makes the
@@ -1764,9 +1823,16 @@ declare class VectorEditorController {
1764
1823
  private widthView;
1765
1824
  /** The width point centre or side end under `screen` (width tool). */
1766
1825
  private hitWidthHandle;
1826
+ private hitWidthHandleIn;
1767
1827
  /** The nearest stroked, unlocked visible path whose stroke is under document point `p` (width tool). */
1768
1828
  private strokeSpotAt;
1769
1829
  private downWidth;
1830
+ /**
1831
+ * A width-tool slide to `t` on the dragged point's subpath lands exactly on another width
1832
+ * point (not `skip`) within the pick distance on screen: dropping a point onto another makes
1833
+ * a discontinuous point (two points at one `t`, the width steps there).
1834
+ */
1835
+ private snapWidthT;
1770
1836
  /** The nearest outline point of any visible, unlocked path within the pick distance of document point `p`. */
1771
1837
  private nearestOutline;
1772
1838
  private sameHover;
@@ -1791,7 +1857,10 @@ declare class VectorEditorController {
1791
1857
  pointerLeave(): void;
1792
1858
  /** Abandons the drag in progress (Escape, lost capture). */
1793
1859
  cancelDrag(): void;
1794
- /** Double click: select tool enters path editing, direct tool toggles an anchor or adds one. */
1860
+ /**
1861
+ * Double click: select tool enters path editing, direct tool toggles an anchor or adds one,
1862
+ * width tool opens the width-point editor (`widthPointEdit`).
1863
+ */
1795
1864
  doubleClick(screen: Vec2): void;
1796
1865
  /**
1797
1866
  * Handles editor shortcuts. Returns true when the key was used (call `preventDefault`).
@@ -2404,7 +2473,12 @@ declare function hasStrokeExtras(style: VectorStyle): boolean;
2404
2473
  * uniform width, the variable-width outline (`variableStrokeOutline`) for a profiled one.
2405
2474
  */
2406
2475
  declare function vectorStrokeLineArea(parts: Pick<VectorStrokeParts, 'line' | 'drawWidth'>, style: VectorStyle, tolerance?: number): BezierPath;
2407
- /** The weight of a head: the stroke width times its scale (at least 0.25). A head is 4 weights long and wide. */
2476
+ /**
2477
+ * The weight of a head: the stroke's width just before it times the head's scale (at least
2478
+ * 0.25). A head is 4 weights long and wide. On a variable-width stroke the width there is the
2479
+ * profile's (the mean of its two sides at that end), floored at the stroke width, so a stroke
2480
+ * that tapers to nothing still gets a full-size head and one that swells gets a bigger one.
2481
+ */
2408
2482
  declare function arrowheadWeight(style: VectorStyle, end: 'start' | 'end'): number;
2409
2483
  /** Distance from the tip where the stroke ends, for a stroke whose cap reaches `cap` past its end. */
2410
2484
  declare function arrowheadInset(kind: VectorArrowhead, hw: number, cap: number): number;
@@ -2638,4 +2712,4 @@ declare function planShapeBuilder(m: VectorShapeBuilderMap, touched: VectorBuild
2638
2712
  */
2639
2713
  declare function vectorFillMap(doc: VectorDocument, gap?: number): PlanarMap | null;
2640
2714
 
2641
- export { type AddVectorNodeOptions, AffineMatrix, DEFAULT_VECTOR_PATH_EDIT, DEFAULT_VECTOR_SNAP, IDENTITY_MATRIX, KAPPA, LazyMouse, type NearestSegment, type RecognizeInkOptions, SvgGradientDef, VECTOR_ARROWHEADS, VECTOR_ARROWHEAD_LABELS, VECTOR_BUILDER_HATCH_GAP, VECTOR_CLIPBOARD_TYPE, VECTOR_CONSTRUCTION_ANGLES, VECTOR_CORNER_KINDS, VECTOR_CORNER_KIND_LABELS, VECTOR_CORNER_WIDGET_INSET, VECTOR_EDIT_TOGGLES, VECTOR_FILL_GAP, VECTOR_INK_MAX_CORNERS, VECTOR_OVERLAY_THEME, VECTOR_PATHFINDER_ACTIONS, VECTOR_PATHFINDER_LABELS, VECTOR_PATHFINDER_OPERATIONS, VECTOR_PATH_ACTIONS, VECTOR_PENCIL_STRING_PX, VECTOR_PRESSURE_NOMINAL, VECTOR_ROTATE_HANDLE_OFFSET, VECTOR_STROKE_ALIGN_LABELS, VECTOR_STYLE_KEYS, VECTOR_TOOLS, VECTOR_TOOL_GLYPHS, VECTOR_TOOL_SHORTCUTS, VECTOR_TRANSFORM_HANDLES, VECTOR_WIDTH_PRESETS, VECTOR_WIDTH_PRESET_IDS, VECTOR_WIDTH_PROFILE_MAX_POINTS, VECTOR_WIDTH_PROFILE_MAX_SCALE, VECTOR_WIDTH_SAME_T, type VariableStrokeOptions, type Vec2, type VectorActionResult, type VectorAlign, type VectorAnchor, type VectorAnchorRef, type VectorAnchorType, type VectorArrange, type VectorArrowAlign, type VectorArrowhead, type VectorArrowheadShape, type VectorAverageAxis, type VectorBooleanOperation, type VectorBounds, type VectorBuilderHit, type VectorBuilderLinePiece, type VectorBuilderPreview, type VectorBuilderReplacement, type VectorBuilderTouched, type VectorCommandOptions, type VectorCorner, type VectorCornerInfo, type VectorCornerKind, type VectorCornerWidget, type VectorDefaults, type VectorDistribute, type VectorDocument, VectorEditorController, type VectorEditorOptions, type VectorEditorState, type VectorFillRule, type VectorGroupNode, type VectorGuideKind, type VectorGuideLabel, type VectorGuideLine, type VectorHandleRef, type VectorHover, type VectorInkShape, type VectorInteraction, type VectorKeyInput, type VectorLineCap, type VectorLineJoin, type VectorMatrix, type VectorModifiers, type VectorNode, type VectorNodeListing, type VectorOverlayRenderData, type VectorPaint, type VectorPathAction, type VectorPathEditOptions, type VectorPathEntry, type VectorPathNode, type VectorPathfinderAction, type VectorPathfinderOperation, type VectorPathfinderPaint, type VectorPointSnap, type VectorPointerInput, type VectorRectSnap, type VectorRenderAnchor, type VectorRenderCornerWidget, type VectorRenderGroup, type VectorRenderGuideLabel, type VectorRenderGuideLine, type VectorRenderHandle, type VectorRenderNode, type VectorRenderPath, type VectorRenderStrokeParts, type VectorRenderWidthPoint, type VectorScaleSnap, type VectorSceneRenderData, type VectorSegmentRef, type VectorSelectionBoxGeometry, type VectorSelectionFrame, type VectorSelectionStyle, type VectorShapeBuilderFace, type VectorShapeBuilderMap, type VectorShapeBuilderPlan, type VectorShapeBuilderResult, type VectorShapeInput, type VectorSnapGuides, type VectorSnapKind, type VectorSnapLeave, type VectorSnapOptions, VectorSnapTargets, type VectorStrokeAlign, type VectorStrokeParts, type VectorStrokeSpot, type VectorStyle, type VectorSubpath, type VectorSvgExportOptions, type VectorSvgImportOptions, type VectorTaperOptions, type VectorTool, type VectorTransformHandle, type VectorViewport, type VectorWaveOptions, type VectorWidthHandle, type VectorWidthPoint, type VectorWidthPointRef, type VectorWidthPreset, type VectorWidthPresetInfo, addBuilderHit, applyMatrix, applyMatrixLinear, applyVectorCornersAttribute, arrowheadInset, arrowheadPath, arrowheadWeight, bendSegment, bezierToSubpaths, boundsFromPoints, boundsIntersect, cloneAnchor, cloneSubpath, cloneVectorDocument, cloneVectorNode, collectPathNodes, constrainToLeave, convertAnchor, cornerBisectorPoint, cornerRadiusChange, cornerSetback, createVectorCommands, curvatureMoveAnchor, cutSubpathAt, dashIntervals, decomposeRigid, effectiveStrokeAlign, ellipseSubpath, eraseFromFill, eraseFromOutline, eraserRegion, expandVectorCorners, expandVectorCornersOf, findVectorNode, fitCornerRadius, generateWidthProfile, getAnchor, getAnchorWorld, getEditablePathIds, getTransformHandlePositions, getVectorCornerWidgets, getVectorOverlayRenderData, getVectorSceneRenderData, getVectorSelectionBoxGeometry, getVectorSelectionFrame, getVectorSelectionStyle, getVectorWidthHandles, getVisibleAnchors, getVisibleHandles, hasPaint, hasStrokeExtras, hasVectorCorners, hitTestVectorNode, hitTestVectorNodes, hitTestVectorStroke, inferAnchorType, insertAnchor, insertWidthPoint, invertMatrix, isClosedBezierShape, isIdentityMatrix, isUniformWidthProfile, isVectorTextTarget, joinSubpaths, knifePath, lineSubpath, locateVectorNode, matrixRotation, mirrorWidthProfile, moveAnchorHandle, multiplyMatrices, nearestSegment, nearestStrokePosition, nextVectorCornerKind, nodeMatrix, parseSvgTransform, parseVectorSvg, planShapeBuilder, polygonSubpath, polylineBounds, pressureWidthProfile, recognizeInkShape, rectSubpath, removeAnchorKeepingShape, removeAnchors, removeAnchorsKeepingShape, removeRedundantPoints, removeWidthPoints, reverseSubpath, reverseWidthProfile, rotateMatrix, roundSubpaths, samplePolyline, sanitizeWidthProfile, scaleFor, scaleMatrix, setAnchorCorner, setSubpathCorners, setWidthPoint, simplifyPolyline, smoothSubpath, splitIntoFaces, splitSubpathAt, starSubpath, strokePositionPoint, strokeWidthProfileOf, subpathEnclosesArea, subpathPointAt, subpathSegment, subpathSegmentCount, subpathsToBezier, taperWaveFactor, toVectorKeyInput, toVectorModifiers, toVectorPointerInput, transformVectorNode, translateAnchor, translateMatrix, unionBounds, variableStrokeOutline, variableStrokeRings, vectorBuilderErasedEdges, vectorCornerAt, vectorCorners, vectorCornersAttribute, vectorDiamondPath, vectorDocumentToSvg, vectorFillMap, vectorInkShapeName, vectorNodeBounds, vectorNodeRotation, vectorNodeToBezier, vectorPaintToHex, vectorPaintToSvg, vectorParentMatrix, vectorPathData, vectorPathEntries, vectorPathWorldBezier, vectorPathfinderShape, vectorResizeCursor, vectorResultStyle, vectorShapeBuilderHit, vectorShapeBuilderMap, vectorStrokeLineArea, vectorStrokeOutline, vectorStrokeOutlinePath, vectorStrokeParts, vectorStrokeReach, vectorStrokeSvgParts, vectorStrokeWidthGeometry, vectorToolLabel, vectorWorldMatrix, walkVectorNodes, widthProfileAt, widthProfileFromAttribute, widthProfileMaxScale, widthProfilePreset, widthProfilePresetId, widthProfileToAttribute };
2715
+ export { type AddVectorNodeOptions, AffineMatrix, DEFAULT_VECTOR_PATH_EDIT, DEFAULT_VECTOR_SNAP, IDENTITY_MATRIX, KAPPA, LazyMouse, type NearestSegment, type RecognizeInkOptions, SvgGradientDef, VECTOR_ARROWHEADS, VECTOR_ARROWHEAD_LABELS, VECTOR_BUILDER_HATCH_GAP, VECTOR_CLIPBOARD_TYPE, VECTOR_CONSTRUCTION_ANGLES, VECTOR_CORNER_KINDS, VECTOR_CORNER_KIND_LABELS, VECTOR_CORNER_WIDGET_INSET, VECTOR_EDIT_TOGGLES, VECTOR_FILL_GAP, VECTOR_INK_MAX_CORNERS, VECTOR_OVERLAY_THEME, VECTOR_PATHFINDER_ACTIONS, VECTOR_PATHFINDER_LABELS, VECTOR_PATHFINDER_OPERATIONS, VECTOR_PATH_ACTIONS, VECTOR_PENCIL_STRING_PX, VECTOR_PRESSURE_NOMINAL, VECTOR_ROTATE_HANDLE_OFFSET, VECTOR_STROKE_ALIGN_LABELS, VECTOR_STYLE_KEYS, VECTOR_TOOLS, VECTOR_TOOL_GLYPHS, VECTOR_TOOL_SHORTCUTS, VECTOR_TRANSFORM_HANDLES, VECTOR_WIDTH_PRESETS, VECTOR_WIDTH_PRESET_IDS, VECTOR_WIDTH_PROFILE_MAX_POINTS, VECTOR_WIDTH_PROFILE_MAX_SCALE, VECTOR_WIDTH_SAME_T, type VariableStrokeOptions, type Vec2, type VectorActionResult, type VectorAlign, type VectorAnchor, type VectorAnchorRef, type VectorAnchorType, type VectorArrange, type VectorArrowAlign, type VectorArrowhead, type VectorArrowheadShape, type VectorAverageAxis, type VectorBooleanOperation, type VectorBounds, type VectorBuilderHit, type VectorBuilderLinePiece, type VectorBuilderPreview, type VectorBuilderReplacement, type VectorBuilderTouched, type VectorCommandOptions, type VectorCorner, type VectorCornerInfo, type VectorCornerKind, type VectorCornerWidget, type VectorDefaults, type VectorDistribute, type VectorDocument, VectorEditorController, type VectorEditorOptions, type VectorEditorState, type VectorFillRule, type VectorGroupNode, type VectorGuideKind, type VectorGuideLabel, type VectorGuideLine, type VectorHandleRef, type VectorHover, type VectorInkShape, type VectorInteraction, type VectorKeyInput, type VectorLineCap, type VectorLineJoin, type VectorMatrix, type VectorModifiers, type VectorNode, type VectorNodeListing, type VectorOverlayRenderData, type VectorPaint, type VectorPathAction, type VectorPathEditOptions, type VectorPathEntry, type VectorPathNode, type VectorPathfinderAction, type VectorPathfinderOperation, type VectorPathfinderPaint, type VectorPointSnap, type VectorPointerInput, type VectorRectSnap, type VectorRenderAnchor, type VectorRenderCornerWidget, type VectorRenderGroup, type VectorRenderGuideLabel, type VectorRenderGuideLine, type VectorRenderHandle, type VectorRenderNode, type VectorRenderPath, type VectorRenderStrokeParts, type VectorRenderWidthPoint, type VectorScaleSnap, type VectorSceneRenderData, type VectorSegmentRef, type VectorSelectionBoxGeometry, type VectorSelectionFrame, type VectorSelectionStyle, type VectorShapeBuilderFace, type VectorShapeBuilderMap, type VectorShapeBuilderPlan, type VectorShapeBuilderResult, type VectorShapeInput, type VectorSnapGuides, type VectorSnapKind, type VectorSnapLeave, type VectorSnapOptions, VectorSnapTargets, type VectorStrokeAlign, type VectorStrokeParts, type VectorStrokeSpot, type VectorStyle, type VectorSubpath, type VectorSvgExportOptions, type VectorSvgImportOptions, type VectorTaperOptions, type VectorTool, type VectorTransformHandle, type VectorViewport, type VectorWaveOptions, type VectorWidthHandle, type VectorWidthPoint, type VectorWidthPointEdit, type VectorWidthPointRef, type VectorWidthPreset, type VectorWidthPresetInfo, addBuilderHit, applyMatrix, applyMatrixLinear, applyVectorCornersAttribute, arrowheadInset, arrowheadPath, arrowheadWeight, bendSegment, bezierToSubpaths, boundsFromPoints, boundsIntersect, cloneAnchor, cloneSubpath, cloneVectorDocument, cloneVectorNode, collectPathNodes, constrainToLeave, convertAnchor, cornerBisectorPoint, cornerRadiusChange, cornerSetback, createVectorCommands, curvatureMoveAnchor, cutSubpathAt, dashIntervals, decomposeRigid, effectiveStrokeAlign, ellipseSubpath, eraseFromFill, eraseFromOutline, eraserRegion, expandVectorCorners, expandVectorCornersOf, findVectorNode, fitCornerRadius, generateWidthProfile, getAnchor, getAnchorWorld, getEditablePathIds, getTransformHandlePositions, getVectorCornerWidgets, getVectorOverlayRenderData, getVectorSceneRenderData, getVectorSelectionBoxGeometry, getVectorSelectionFrame, getVectorSelectionStyle, getVectorWidthHandles, getVisibleAnchors, getVisibleHandles, hasPaint, hasStrokeExtras, hasVectorCorners, hitTestVectorNode, hitTestVectorNodes, hitTestVectorStroke, inferAnchorType, insertAnchor, insertWidthPoint, invertMatrix, isClosedBezierShape, isIdentityMatrix, isUniformWidthProfile, isVectorTextTarget, joinSubpaths, knifePath, lineSubpath, locateVectorNode, matrixRotation, mirrorWidthProfile, moveAnchorHandle, multiplyMatrices, nearestSegment, nearestStrokePosition, nextVectorCornerKind, nodeMatrix, parseSvgTransform, parseVectorSvg, planShapeBuilder, polygonSubpath, polylineBounds, pressureWidthProfile, recognizeInkShape, rectSubpath, removeAnchorKeepingShape, removeAnchors, removeAnchorsKeepingShape, removeRedundantPoints, removeWidthPoints, reverseSubpath, reverseWidthProfile, rotateMatrix, roundSubpaths, samplePolyline, sanitizeWidthProfile, scaleFor, scaleMatrix, setAnchorCorner, setSubpathCorners, setWidthPoint, simplifyPolyline, smoothSubpath, splitIntoFaces, splitSubpathAt, starSubpath, strokePositionPoint, strokeWidthProfileOf, subpathEnclosesArea, subpathPointAt, subpathSegment, subpathSegmentCount, subpathsToBezier, taperWaveFactor, toVectorKeyInput, toVectorModifiers, toVectorPointerInput, transformVectorNode, translateAnchor, translateMatrix, unionBounds, variableStrokeOutline, variableStrokeRings, vectorBuilderErasedEdges, vectorCornerAt, vectorCorners, vectorCornersAttribute, vectorDiamondPath, vectorDocumentToSvg, vectorFillMap, vectorInkShapeName, vectorNodeBounds, vectorNodeRotation, vectorNodeToBezier, vectorPaintToHex, vectorPaintToSvg, vectorParentMatrix, vectorPathData, vectorPathEntries, vectorPathWorldBezier, vectorPathfinderShape, vectorResizeCursor, vectorResultStyle, vectorShapeBuilderHit, vectorShapeBuilderMap, vectorStrokeLineArea, vectorStrokeOutline, vectorStrokeOutlinePath, vectorStrokeParts, vectorStrokeReach, vectorStrokeSvgParts, vectorStrokeWidthGeometry, vectorToolLabel, vectorWorldMatrix, walkVectorNodes, widthProfileAt, widthProfileFromAttribute, widthProfileMaxScale, widthProfilePreset, widthProfilePresetId, widthProfileToAttribute };
@@ -952,6 +952,21 @@ interface VectorStrokeSpot {
952
952
  left: Vec2;
953
953
  right: Vec2;
954
954
  }
955
+ /**
956
+ * The width point being edited numerically (double-click with the width tool): `index` is the
957
+ * point's, or null for a new point at `t` (a double-click on a stroke away from its points).
958
+ * `left` / `right` are side widths in document units (how far the stroke reaches on each side),
959
+ * `point` is where it sits on the path, in document space.
960
+ */
961
+ interface VectorWidthPointEdit {
962
+ nodeId: string;
963
+ subpath: number;
964
+ index: number | null;
965
+ t: number;
966
+ left: number;
967
+ right: number;
968
+ point: Vec2;
969
+ }
955
970
  /** A key press as the controller needs it. */
956
971
  interface VectorKeyInput extends VectorModifiers {
957
972
  /** `KeyboardEvent.key`. */
@@ -1028,7 +1043,7 @@ type VectorInteraction = {
1028
1043
  } | {
1029
1044
  type: 'width';
1030
1045
  ref: VectorWidthPointRef;
1031
- mode: 'width' | 'move';
1046
+ mode: 'width' | 'move' | 'copy';
1032
1047
  width: number;
1033
1048
  } | {
1034
1049
  type: 'pen';
@@ -1044,8 +1059,10 @@ interface VectorEditorState {
1044
1059
  selection: readonly string[];
1045
1060
  /** Selected anchors (direct tool). */
1046
1061
  selectedAnchors: readonly VectorAnchorRef[];
1047
- /** The selected width point (width tool); Delete removes it. */
1048
- selectedWidthPoint: VectorWidthPointRef | null;
1062
+ /** The selected width points (width tool, all on one path); Delete removes them. */
1063
+ selectedWidthPoints: readonly VectorWidthPointRef[];
1064
+ /** The width point open for numeric editing (double-click with the width tool), if any. */
1065
+ widthPointEdit: VectorWidthPointEdit | null;
1049
1066
  /** The path whose anchors are being edited, if any. */
1050
1067
  editingId: string | null;
1051
1068
  /** Axis-aligned bounds of the selected nodes in document units. */
@@ -1211,7 +1228,7 @@ interface VectorWidthHandle {
1211
1228
  * vectorcraft `crates/tools/src/distort/width.rs` (MIT OR Apache-2.0, see
1212
1229
  * THIRD_PARTY_NOTICES.md), as are the `width` drag and hover below.
1213
1230
  */
1214
- declare function getVectorWidthHandles(state: Pick<VectorEditorState, 'document' | 'selection' | 'tool' | 'hover' | 'interaction' | 'selectedWidthPoint'>): VectorWidthHandle[];
1231
+ declare function getVectorWidthHandles(state: Pick<VectorEditorState, 'document' | 'selection' | 'tool' | 'hover' | 'interaction' | 'selectedWidthPoints'>): VectorWidthHandle[];
1215
1232
  /** Looks up an anchor (positions in its node's own space). */
1216
1233
  declare function getAnchor(doc: VectorDocument, ref: VectorAnchorRef): VectorAnchor | undefined;
1217
1234
  /** An anchor with its position and handles in document space (its node's transforms applied). */
@@ -1282,7 +1299,8 @@ declare class VectorEditorController {
1282
1299
  private doc;
1283
1300
  private selection;
1284
1301
  private anchors;
1285
- private widthPoint;
1302
+ private widthPoints;
1303
+ private widthEdit;
1286
1304
  private editingId;
1287
1305
  private pen;
1288
1306
  private tool;
@@ -1434,8 +1452,49 @@ declare class VectorEditorController {
1434
1452
  } | null, options?: {
1435
1453
  ids?: readonly string[];
1436
1454
  }): VectorActionResult;
1437
- /** Removes one width point of a path's profile (the width tool's Delete). */
1455
+ /** Removes one width point of a path's profile. */
1438
1456
  removeWidthPoint(ref: Pick<VectorWidthPointRef, 'nodeId' | 'index'>): VectorActionResult;
1457
+ /** Removes width points (default: the selected ones — the width tool's Delete), as one undo step. */
1458
+ removeWidthPoints(refs?: readonly Pick<VectorWidthPointRef, 'nodeId' | 'index'>[]): VectorActionResult;
1459
+ /** Selects width points (width tool); points on other paths than the first are dropped. */
1460
+ selectWidthPoints(refs: readonly VectorWidthPointRef[]): void;
1461
+ /**
1462
+ * Sets one width point numerically: `index` names an existing point of path `nodeId`, null
1463
+ * (or left out) adds one at `values.t`. `left` / `right` are side widths in document units
1464
+ * (how far the stroke reaches on each side of the path), `t` the position along each subpath
1465
+ * (0–1). A point moved onto another one's `t` makes a step there. Selects the point and
1466
+ * refreshes an open width-point editor; one undo step. Ported from ArtCraft vectorcraft's
1467
+ * Width Point Edit dialog (`crates/tools/src/distort/width.rs`, MIT OR Apache-2.0).
1468
+ */
1469
+ setWidthPoint(target: {
1470
+ nodeId: string;
1471
+ index?: number | null;
1472
+ }, values: {
1473
+ t?: number;
1474
+ left?: number;
1475
+ right?: number;
1476
+ }): VectorActionResult;
1477
+ /**
1478
+ * Opens the width-point editor (what a double-click with the width tool does) on a width
1479
+ * point, or on a spot of a stroke (`t` without `index`: applying it adds a point there).
1480
+ * Returns false when the path has no visible stroke.
1481
+ */
1482
+ openWidthPointEdit(target: {
1483
+ nodeId: string;
1484
+ subpath?: number;
1485
+ index?: number | null;
1486
+ t?: number;
1487
+ }): boolean;
1488
+ /** Closes the width-point editor without changing anything. */
1489
+ closeWidthPointEdit(): void;
1490
+ /** Applies `values` to the width point being edited (see `setWidthPoint`) and closes the editor. */
1491
+ commitWidthPointEdit(values: {
1492
+ t?: number;
1493
+ left?: number;
1494
+ right?: number;
1495
+ }): VectorActionResult;
1496
+ /** The editor's view of point `index` (or of the stroke at `t` when index is null) of `nodeId`. */
1497
+ private widthEditFor;
1439
1498
  /**
1440
1499
  * Sets the live corner radius (and optionally the kind) of anchors: `refs`, else the selected
1441
1500
  * anchors (direct tool), else every anchor of the `ids` / selected paths. Radius 0 makes the
@@ -1764,9 +1823,16 @@ declare class VectorEditorController {
1764
1823
  private widthView;
1765
1824
  /** The width point centre or side end under `screen` (width tool). */
1766
1825
  private hitWidthHandle;
1826
+ private hitWidthHandleIn;
1767
1827
  /** The nearest stroked, unlocked visible path whose stroke is under document point `p` (width tool). */
1768
1828
  private strokeSpotAt;
1769
1829
  private downWidth;
1830
+ /**
1831
+ * A width-tool slide to `t` on the dragged point's subpath lands exactly on another width
1832
+ * point (not `skip`) within the pick distance on screen: dropping a point onto another makes
1833
+ * a discontinuous point (two points at one `t`, the width steps there).
1834
+ */
1835
+ private snapWidthT;
1770
1836
  /** The nearest outline point of any visible, unlocked path within the pick distance of document point `p`. */
1771
1837
  private nearestOutline;
1772
1838
  private sameHover;
@@ -1791,7 +1857,10 @@ declare class VectorEditorController {
1791
1857
  pointerLeave(): void;
1792
1858
  /** Abandons the drag in progress (Escape, lost capture). */
1793
1859
  cancelDrag(): void;
1794
- /** Double click: select tool enters path editing, direct tool toggles an anchor or adds one. */
1860
+ /**
1861
+ * Double click: select tool enters path editing, direct tool toggles an anchor or adds one,
1862
+ * width tool opens the width-point editor (`widthPointEdit`).
1863
+ */
1795
1864
  doubleClick(screen: Vec2): void;
1796
1865
  /**
1797
1866
  * Handles editor shortcuts. Returns true when the key was used (call `preventDefault`).
@@ -2404,7 +2473,12 @@ declare function hasStrokeExtras(style: VectorStyle): boolean;
2404
2473
  * uniform width, the variable-width outline (`variableStrokeOutline`) for a profiled one.
2405
2474
  */
2406
2475
  declare function vectorStrokeLineArea(parts: Pick<VectorStrokeParts, 'line' | 'drawWidth'>, style: VectorStyle, tolerance?: number): BezierPath;
2407
- /** The weight of a head: the stroke width times its scale (at least 0.25). A head is 4 weights long and wide. */
2476
+ /**
2477
+ * The weight of a head: the stroke's width just before it times the head's scale (at least
2478
+ * 0.25). A head is 4 weights long and wide. On a variable-width stroke the width there is the
2479
+ * profile's (the mean of its two sides at that end), floored at the stroke width, so a stroke
2480
+ * that tapers to nothing still gets a full-size head and one that swells gets a bigger one.
2481
+ */
2408
2482
  declare function arrowheadWeight(style: VectorStyle, end: 'start' | 'end'): number;
2409
2483
  /** Distance from the tip where the stroke ends, for a stroke whose cap reaches `cap` past its end. */
2410
2484
  declare function arrowheadInset(kind: VectorArrowhead, hw: number, cap: number): number;
@@ -2638,4 +2712,4 @@ declare function planShapeBuilder(m: VectorShapeBuilderMap, touched: VectorBuild
2638
2712
  */
2639
2713
  declare function vectorFillMap(doc: VectorDocument, gap?: number): PlanarMap | null;
2640
2714
 
2641
- export { type AddVectorNodeOptions, AffineMatrix, DEFAULT_VECTOR_PATH_EDIT, DEFAULT_VECTOR_SNAP, IDENTITY_MATRIX, KAPPA, LazyMouse, type NearestSegment, type RecognizeInkOptions, SvgGradientDef, VECTOR_ARROWHEADS, VECTOR_ARROWHEAD_LABELS, VECTOR_BUILDER_HATCH_GAP, VECTOR_CLIPBOARD_TYPE, VECTOR_CONSTRUCTION_ANGLES, VECTOR_CORNER_KINDS, VECTOR_CORNER_KIND_LABELS, VECTOR_CORNER_WIDGET_INSET, VECTOR_EDIT_TOGGLES, VECTOR_FILL_GAP, VECTOR_INK_MAX_CORNERS, VECTOR_OVERLAY_THEME, VECTOR_PATHFINDER_ACTIONS, VECTOR_PATHFINDER_LABELS, VECTOR_PATHFINDER_OPERATIONS, VECTOR_PATH_ACTIONS, VECTOR_PENCIL_STRING_PX, VECTOR_PRESSURE_NOMINAL, VECTOR_ROTATE_HANDLE_OFFSET, VECTOR_STROKE_ALIGN_LABELS, VECTOR_STYLE_KEYS, VECTOR_TOOLS, VECTOR_TOOL_GLYPHS, VECTOR_TOOL_SHORTCUTS, VECTOR_TRANSFORM_HANDLES, VECTOR_WIDTH_PRESETS, VECTOR_WIDTH_PRESET_IDS, VECTOR_WIDTH_PROFILE_MAX_POINTS, VECTOR_WIDTH_PROFILE_MAX_SCALE, VECTOR_WIDTH_SAME_T, type VariableStrokeOptions, type Vec2, type VectorActionResult, type VectorAlign, type VectorAnchor, type VectorAnchorRef, type VectorAnchorType, type VectorArrange, type VectorArrowAlign, type VectorArrowhead, type VectorArrowheadShape, type VectorAverageAxis, type VectorBooleanOperation, type VectorBounds, type VectorBuilderHit, type VectorBuilderLinePiece, type VectorBuilderPreview, type VectorBuilderReplacement, type VectorBuilderTouched, type VectorCommandOptions, type VectorCorner, type VectorCornerInfo, type VectorCornerKind, type VectorCornerWidget, type VectorDefaults, type VectorDistribute, type VectorDocument, VectorEditorController, type VectorEditorOptions, type VectorEditorState, type VectorFillRule, type VectorGroupNode, type VectorGuideKind, type VectorGuideLabel, type VectorGuideLine, type VectorHandleRef, type VectorHover, type VectorInkShape, type VectorInteraction, type VectorKeyInput, type VectorLineCap, type VectorLineJoin, type VectorMatrix, type VectorModifiers, type VectorNode, type VectorNodeListing, type VectorOverlayRenderData, type VectorPaint, type VectorPathAction, type VectorPathEditOptions, type VectorPathEntry, type VectorPathNode, type VectorPathfinderAction, type VectorPathfinderOperation, type VectorPathfinderPaint, type VectorPointSnap, type VectorPointerInput, type VectorRectSnap, type VectorRenderAnchor, type VectorRenderCornerWidget, type VectorRenderGroup, type VectorRenderGuideLabel, type VectorRenderGuideLine, type VectorRenderHandle, type VectorRenderNode, type VectorRenderPath, type VectorRenderStrokeParts, type VectorRenderWidthPoint, type VectorScaleSnap, type VectorSceneRenderData, type VectorSegmentRef, type VectorSelectionBoxGeometry, type VectorSelectionFrame, type VectorSelectionStyle, type VectorShapeBuilderFace, type VectorShapeBuilderMap, type VectorShapeBuilderPlan, type VectorShapeBuilderResult, type VectorShapeInput, type VectorSnapGuides, type VectorSnapKind, type VectorSnapLeave, type VectorSnapOptions, VectorSnapTargets, type VectorStrokeAlign, type VectorStrokeParts, type VectorStrokeSpot, type VectorStyle, type VectorSubpath, type VectorSvgExportOptions, type VectorSvgImportOptions, type VectorTaperOptions, type VectorTool, type VectorTransformHandle, type VectorViewport, type VectorWaveOptions, type VectorWidthHandle, type VectorWidthPoint, type VectorWidthPointRef, type VectorWidthPreset, type VectorWidthPresetInfo, addBuilderHit, applyMatrix, applyMatrixLinear, applyVectorCornersAttribute, arrowheadInset, arrowheadPath, arrowheadWeight, bendSegment, bezierToSubpaths, boundsFromPoints, boundsIntersect, cloneAnchor, cloneSubpath, cloneVectorDocument, cloneVectorNode, collectPathNodes, constrainToLeave, convertAnchor, cornerBisectorPoint, cornerRadiusChange, cornerSetback, createVectorCommands, curvatureMoveAnchor, cutSubpathAt, dashIntervals, decomposeRigid, effectiveStrokeAlign, ellipseSubpath, eraseFromFill, eraseFromOutline, eraserRegion, expandVectorCorners, expandVectorCornersOf, findVectorNode, fitCornerRadius, generateWidthProfile, getAnchor, getAnchorWorld, getEditablePathIds, getTransformHandlePositions, getVectorCornerWidgets, getVectorOverlayRenderData, getVectorSceneRenderData, getVectorSelectionBoxGeometry, getVectorSelectionFrame, getVectorSelectionStyle, getVectorWidthHandles, getVisibleAnchors, getVisibleHandles, hasPaint, hasStrokeExtras, hasVectorCorners, hitTestVectorNode, hitTestVectorNodes, hitTestVectorStroke, inferAnchorType, insertAnchor, insertWidthPoint, invertMatrix, isClosedBezierShape, isIdentityMatrix, isUniformWidthProfile, isVectorTextTarget, joinSubpaths, knifePath, lineSubpath, locateVectorNode, matrixRotation, mirrorWidthProfile, moveAnchorHandle, multiplyMatrices, nearestSegment, nearestStrokePosition, nextVectorCornerKind, nodeMatrix, parseSvgTransform, parseVectorSvg, planShapeBuilder, polygonSubpath, polylineBounds, pressureWidthProfile, recognizeInkShape, rectSubpath, removeAnchorKeepingShape, removeAnchors, removeAnchorsKeepingShape, removeRedundantPoints, removeWidthPoints, reverseSubpath, reverseWidthProfile, rotateMatrix, roundSubpaths, samplePolyline, sanitizeWidthProfile, scaleFor, scaleMatrix, setAnchorCorner, setSubpathCorners, setWidthPoint, simplifyPolyline, smoothSubpath, splitIntoFaces, splitSubpathAt, starSubpath, strokePositionPoint, strokeWidthProfileOf, subpathEnclosesArea, subpathPointAt, subpathSegment, subpathSegmentCount, subpathsToBezier, taperWaveFactor, toVectorKeyInput, toVectorModifiers, toVectorPointerInput, transformVectorNode, translateAnchor, translateMatrix, unionBounds, variableStrokeOutline, variableStrokeRings, vectorBuilderErasedEdges, vectorCornerAt, vectorCorners, vectorCornersAttribute, vectorDiamondPath, vectorDocumentToSvg, vectorFillMap, vectorInkShapeName, vectorNodeBounds, vectorNodeRotation, vectorNodeToBezier, vectorPaintToHex, vectorPaintToSvg, vectorParentMatrix, vectorPathData, vectorPathEntries, vectorPathWorldBezier, vectorPathfinderShape, vectorResizeCursor, vectorResultStyle, vectorShapeBuilderHit, vectorShapeBuilderMap, vectorStrokeLineArea, vectorStrokeOutline, vectorStrokeOutlinePath, vectorStrokeParts, vectorStrokeReach, vectorStrokeSvgParts, vectorStrokeWidthGeometry, vectorToolLabel, vectorWorldMatrix, walkVectorNodes, widthProfileAt, widthProfileFromAttribute, widthProfileMaxScale, widthProfilePreset, widthProfilePresetId, widthProfileToAttribute };
2715
+ export { type AddVectorNodeOptions, AffineMatrix, DEFAULT_VECTOR_PATH_EDIT, DEFAULT_VECTOR_SNAP, IDENTITY_MATRIX, KAPPA, LazyMouse, type NearestSegment, type RecognizeInkOptions, SvgGradientDef, VECTOR_ARROWHEADS, VECTOR_ARROWHEAD_LABELS, VECTOR_BUILDER_HATCH_GAP, VECTOR_CLIPBOARD_TYPE, VECTOR_CONSTRUCTION_ANGLES, VECTOR_CORNER_KINDS, VECTOR_CORNER_KIND_LABELS, VECTOR_CORNER_WIDGET_INSET, VECTOR_EDIT_TOGGLES, VECTOR_FILL_GAP, VECTOR_INK_MAX_CORNERS, VECTOR_OVERLAY_THEME, VECTOR_PATHFINDER_ACTIONS, VECTOR_PATHFINDER_LABELS, VECTOR_PATHFINDER_OPERATIONS, VECTOR_PATH_ACTIONS, VECTOR_PENCIL_STRING_PX, VECTOR_PRESSURE_NOMINAL, VECTOR_ROTATE_HANDLE_OFFSET, VECTOR_STROKE_ALIGN_LABELS, VECTOR_STYLE_KEYS, VECTOR_TOOLS, VECTOR_TOOL_GLYPHS, VECTOR_TOOL_SHORTCUTS, VECTOR_TRANSFORM_HANDLES, VECTOR_WIDTH_PRESETS, VECTOR_WIDTH_PRESET_IDS, VECTOR_WIDTH_PROFILE_MAX_POINTS, VECTOR_WIDTH_PROFILE_MAX_SCALE, VECTOR_WIDTH_SAME_T, type VariableStrokeOptions, type Vec2, type VectorActionResult, type VectorAlign, type VectorAnchor, type VectorAnchorRef, type VectorAnchorType, type VectorArrange, type VectorArrowAlign, type VectorArrowhead, type VectorArrowheadShape, type VectorAverageAxis, type VectorBooleanOperation, type VectorBounds, type VectorBuilderHit, type VectorBuilderLinePiece, type VectorBuilderPreview, type VectorBuilderReplacement, type VectorBuilderTouched, type VectorCommandOptions, type VectorCorner, type VectorCornerInfo, type VectorCornerKind, type VectorCornerWidget, type VectorDefaults, type VectorDistribute, type VectorDocument, VectorEditorController, type VectorEditorOptions, type VectorEditorState, type VectorFillRule, type VectorGroupNode, type VectorGuideKind, type VectorGuideLabel, type VectorGuideLine, type VectorHandleRef, type VectorHover, type VectorInkShape, type VectorInteraction, type VectorKeyInput, type VectorLineCap, type VectorLineJoin, type VectorMatrix, type VectorModifiers, type VectorNode, type VectorNodeListing, type VectorOverlayRenderData, type VectorPaint, type VectorPathAction, type VectorPathEditOptions, type VectorPathEntry, type VectorPathNode, type VectorPathfinderAction, type VectorPathfinderOperation, type VectorPathfinderPaint, type VectorPointSnap, type VectorPointerInput, type VectorRectSnap, type VectorRenderAnchor, type VectorRenderCornerWidget, type VectorRenderGroup, type VectorRenderGuideLabel, type VectorRenderGuideLine, type VectorRenderHandle, type VectorRenderNode, type VectorRenderPath, type VectorRenderStrokeParts, type VectorRenderWidthPoint, type VectorScaleSnap, type VectorSceneRenderData, type VectorSegmentRef, type VectorSelectionBoxGeometry, type VectorSelectionFrame, type VectorSelectionStyle, type VectorShapeBuilderFace, type VectorShapeBuilderMap, type VectorShapeBuilderPlan, type VectorShapeBuilderResult, type VectorShapeInput, type VectorSnapGuides, type VectorSnapKind, type VectorSnapLeave, type VectorSnapOptions, VectorSnapTargets, type VectorStrokeAlign, type VectorStrokeParts, type VectorStrokeSpot, type VectorStyle, type VectorSubpath, type VectorSvgExportOptions, type VectorSvgImportOptions, type VectorTaperOptions, type VectorTool, type VectorTransformHandle, type VectorViewport, type VectorWaveOptions, type VectorWidthHandle, type VectorWidthPoint, type VectorWidthPointEdit, type VectorWidthPointRef, type VectorWidthPreset, type VectorWidthPresetInfo, addBuilderHit, applyMatrix, applyMatrixLinear, applyVectorCornersAttribute, arrowheadInset, arrowheadPath, arrowheadWeight, bendSegment, bezierToSubpaths, boundsFromPoints, boundsIntersect, cloneAnchor, cloneSubpath, cloneVectorDocument, cloneVectorNode, collectPathNodes, constrainToLeave, convertAnchor, cornerBisectorPoint, cornerRadiusChange, cornerSetback, createVectorCommands, curvatureMoveAnchor, cutSubpathAt, dashIntervals, decomposeRigid, effectiveStrokeAlign, ellipseSubpath, eraseFromFill, eraseFromOutline, eraserRegion, expandVectorCorners, expandVectorCornersOf, findVectorNode, fitCornerRadius, generateWidthProfile, getAnchor, getAnchorWorld, getEditablePathIds, getTransformHandlePositions, getVectorCornerWidgets, getVectorOverlayRenderData, getVectorSceneRenderData, getVectorSelectionBoxGeometry, getVectorSelectionFrame, getVectorSelectionStyle, getVectorWidthHandles, getVisibleAnchors, getVisibleHandles, hasPaint, hasStrokeExtras, hasVectorCorners, hitTestVectorNode, hitTestVectorNodes, hitTestVectorStroke, inferAnchorType, insertAnchor, insertWidthPoint, invertMatrix, isClosedBezierShape, isIdentityMatrix, isUniformWidthProfile, isVectorTextTarget, joinSubpaths, knifePath, lineSubpath, locateVectorNode, matrixRotation, mirrorWidthProfile, moveAnchorHandle, multiplyMatrices, nearestSegment, nearestStrokePosition, nextVectorCornerKind, nodeMatrix, parseSvgTransform, parseVectorSvg, planShapeBuilder, polygonSubpath, polylineBounds, pressureWidthProfile, recognizeInkShape, rectSubpath, removeAnchorKeepingShape, removeAnchors, removeAnchorsKeepingShape, removeRedundantPoints, removeWidthPoints, reverseSubpath, reverseWidthProfile, rotateMatrix, roundSubpaths, samplePolyline, sanitizeWidthProfile, scaleFor, scaleMatrix, setAnchorCorner, setSubpathCorners, setWidthPoint, simplifyPolyline, smoothSubpath, splitIntoFaces, splitSubpathAt, starSubpath, strokePositionPoint, strokeWidthProfileOf, subpathEnclosesArea, subpathPointAt, subpathSegment, subpathSegmentCount, subpathsToBezier, taperWaveFactor, toVectorKeyInput, toVectorModifiers, toVectorPointerInput, transformVectorNode, translateAnchor, translateMatrix, unionBounds, variableStrokeOutline, variableStrokeRings, vectorBuilderErasedEdges, vectorCornerAt, vectorCorners, vectorCornersAttribute, vectorDiamondPath, vectorDocumentToSvg, vectorFillMap, vectorInkShapeName, vectorNodeBounds, vectorNodeRotation, vectorNodeToBezier, vectorPaintToHex, vectorPaintToSvg, vectorParentMatrix, vectorPathData, vectorPathEntries, vectorPathWorldBezier, vectorPathfinderShape, vectorResizeCursor, vectorResultStyle, vectorShapeBuilderHit, vectorShapeBuilderMap, vectorStrokeLineArea, vectorStrokeOutline, vectorStrokeOutlinePath, vectorStrokeParts, vectorStrokeReach, vectorStrokeSvgParts, vectorStrokeWidthGeometry, vectorToolLabel, vectorWorldMatrix, walkVectorNodes, widthProfileAt, widthProfileFromAttribute, widthProfileMaxScale, widthProfilePreset, widthProfilePresetId, widthProfileToAttribute };