Vector Tools
Complete vector design tools with shapes, paths, boolean operations, and precision editing.
What It Is
Varve provides a comprehensive set of vector design tools including shape primitives (rectangles, ellipses, circles, lines), path editing, boolean operations, and transformation tools. All vector operations are backed by the kurbo geometry library for precision and performance.

Key Capabilities
- Shape primitives: Rectangle, ellipse, circle, line, arrow, polygon, star with precise controls
- Pen tool: Click or tap to place Bézier anchors, drag to create smooth handles, and finish, close, cancel, or undo anchors without relying on a keyboard
- Pencil tool: Freehand drawing with automatic Bézier curve fitting (Schneider algorithm), preserving endpoints and intentional corners
- Node editing: Select one or many anchors, edit compound-path holes, drag Bézier handles, bend segments, and use precise local coordinate fields
- Boolean operations: Union, subtract, intersect, exclude on selected shapes
- Shape Builder: Preview individual overlap regions, then merge, erase, extract, create, or divide them with one undoable operation; stroke-blocked selections offer an in-panel outline-and-retry action
- Transformation: Move, rotate, scale with affine transforms and centroid-based scaling
- Layers: A dense, virtualized hierarchy with search, filters, thumbnails, compact drag handles, inline rename, batch rename with find/replace preview, and precise before/after/into reparenting
- Groups and frames: Group/ungroup, spatial containers with flex and grid auto-layout
- Snapping: Sticky snap to edges, centers, and other objects with configurable thresholds
- Image trace: Convert a raster image to editable paths locally in black and white, greyscale, colour, pixel-art, or centerline modes (centerline in the desktop app). Prepared-source, overlay, and vector previews render the curves that will be committed; border-connected background removal keeps enclosed white detail; regions can be cut out with real holes or stacked; every trace records its full settings and can be re-traced in place

Technical Depth
The vector system is built on kurbo, a Rust geometry library providing Point, Rect, Affine, Circle, Ellipse, Line, and Path types. The ShapeNode enum encapsulates all shape types with point-containment testing for hit detection. The scene graph uses fractional-indexing for CRDT-safe concurrent ordering.
Path editing uses relative Bézier handles with explicit corner, smooth, symmetric, and automatic node modes. Selection-only clicks stay out of history; an accepted drag is one undo step and Escape restores the pre-drag geometry. Insertion uses the nearest curve parameter and de Casteljau subdivision, including a closed contour's closing segment. The pencil tool fits freehand strokes to cubic Bézier curves using least-squares optimization. Boolean operations use polygon clipping with support for self-intersecting paths and degenerate geometry.
Pointer input is normalized once for mouse, touch, and stylus. A second touch cancels only a provisional first contact before navigation begins, and a remaining finger after a pinch must be lifted before drawing resumes. See the touch and pen guide for the reversible finger-drawing preference and route-specific pen limitations.
Limitations
Current limitations:
- Complex boolean and Shape Builder results on curved paths use bounded, documented approximation; original sources remain available with Create
- Break/split into separate path objects and joining separate endpoint objects are not yet exposed in node editing; dependent text-on-path, mask, motion, and interaction paths are protected until detached or converted
- Advanced grid track functions and absolute-child anchoring remain limited; use the Auto Layout guide for the supported responsive subset
- Image tracing reads source pixels only — masks, crops, and effects are not composited into the trace input. Abutting cutout regions can show hairline seams at high simplification tolerances; switch to stacked output or lower the tolerance. Centerline tracing requires the desktop app.