vectorcraft/crates/engine/src
bflatastic 1706e84829 Fix #429: Type on a path brackets, flip and Type on a Path Options that keep the type in place
Type on a path could only be repositioned by Type on a Path Options, whose menu item sent
`{start: 0}`, so OK threw the text to the start of its path; nothing showed or dragged its
brackets. Now, as in Illustrator:

- Type on a path flows between a start and an end bracket (`TextKind::OnPath { end }`, None:
  the end of the path or once round a closed one; `TextKind::path_span`). Flipping
  (`TextObject::flip_on_path`) reverses the path keeping a closed path's first anchor and swaps
  the brackets, so the type keeps its stretch of the path.
- Type on a Path Options gains Align to Path (ascender, descender, center, baseline) and
  Spacing (glyphs spaced as if set that far above the path: closed up round the outside of
  curves, opened up round the inside), laid out by the text engine.
- `type.pathOptions {start?, end?, flip?, effect?, alignToPath?, spacing?, ids?}` sets them in
  one undo step; with none of them it queries. The menu item opens the dialog with the selected
  type's Effect, Flip, Align to Path and Spacing (dropdowns for the choices) and leaves the
  brackets alone, so OK as opened changes nothing.
- The Selection and Direct Selection tools show selected type on a path's path and its start,
  centre and end brackets (`tools::pathtype`, with a bracket cursor): dragging the start or end
  bracket sets where the type runs, dragging the centre bracket slides it along the path and,
  across the path, flips it (Cmd/Ctrl held: it only slides). Each drag is one undo step.
- Arc-length measuring moved to `vectorcraft_geom::ArcPath` (layout, the tools and
  `text.createInPath` share it). SVG export outlines path type whose end bracket, alignment or
  spacing `<textPath>` can't express.
- docs/mcp.md documents the command and the drags; ROADMAP updated; dialog strings translated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 12:50:25 +07:00
..
cmd Fix #429: Type on a path brackets, flip and Type on a Path Options that keep the type in place 2026-10-08 12:50:25 +07:00
guard.rs Robustness: VectorCraft never crashes — no panics in shipped code 2026-10-05 06:28:59 +07:00
inspect.rs MCP: skeleton reads and find for large documents 2026-10-08 09:17:06 +07:00
lib.rs Fix #429: Type on a path brackets, flip and Type on a Path Options that keep the type in place 2026-10-08 12:50:25 +07:00
tests.rs MCP: inspect_document slices too, stricter find filters (review of #416) 2026-10-08 09:17:06 +07:00
tests_adjust.rs Fix #122: colour adjustment live effects (Effect > Color Adjustments) 2026-10-06 00:42:26 +07:00
tests_appearance.rs M3.46: three-state knockout groups (on, neutral, off) render, export and edit 2026-10-04 23:04:20 +07:00
tests_assets.rs M4.65: Asset Export panel and the Assets tab of Export for Screens 2026-10-05 15:24:54 +07:00
tests_attributes.rs M3.76: Attributes panel with overprint, centre point, path direction, fill rule, image map, URL and note 2026-10-05 03:46:04 +07:00
tests_bboxrotate.rs Fix #39: rotated objects keep their angle and a rotated bounding box 2026-10-05 23:49:36 +07:00
tests_blendfidelity.rs M8.20: blends interpolate strokes, gradients, groups, type and symbols faithfully 2026-10-06 12:01:28 +07:00
tests_blendopts.rs M8.18: Blend Options dialog and the Blend tool's anchor targeting 2026-10-06 11:01:18 +07:00
tests_blendspine.rs M8.19: blend spine and keys editable on the canvas 2026-10-06 11:12:58 +07:00
tests_brushsym.rs Rename DrawCraft → VectorCraft: crates (vectorcraft-*), apps, binaries, types, env vars, docs, examples (.vectorcraft); old .drawcraft files and preferences still load. Fix: text bounds exact after opening a file; selection no longer marks a document modified (dirty = content differs from the saved document). Screenshots and renders regenerated. 2026-10-01 14:30:09 -04:00
tests_build.rs Fix #374: Shape Builder cuts regions with open paths and lines 2026-10-08 06:55:40 +07:00
tests_charstroke.rs M3.40: stroke on type — the Stroke panel edits the characters' stroke 2026-10-05 01:09:55 +07:00
tests_clip.rs M3.75: layer clipping masks from the Layers panel button 2026-10-05 00:27:31 +07:00
tests_clipboard.rs M4.23: paste placement, Paste Remembers Layers and the Paste menu's enable rule 2026-10-05 09:45:34 +07:00
tests_clipflavours.rs Fix #398: Linux/Wayland bitmap paste, copied files paste as art 2026-10-08 07:44:23 +07:00
tests_clippaint.rs M3.89: a clipping path's fill paints behind the clipped art, its stroke over it 2026-10-05 03:11:04 +07:00
tests_cmdsplit.rs M3.8: register the split paint modules next to paint so the command palette keeps listing them (Stroke Options for "stroke") 2026-10-04 11:32:11 +07:00
tests_cmykflatten.rs M3.90: blend modes and opacity composite inks in CMYK documents 2026-10-05 04:30:06 +07:00
tests_colorguide.rs M3.53: Color Guide has 21 harmony rules, Steps and Variation options, a fixed base colour and Save Colors as Swatches 2026-10-05 00:13:36 +07:00
tests_colorguidelib.rs M3.95: Color Guide Limit to Library and Edit or Apply Colors without art 2026-10-05 05:08:15 +07:00
tests_colormgmt.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_colorthemes.rs M3.96: Color Themes panel with a local theme library 2026-10-05 05:08:28 +07:00
tests_containers.rs M14.4: tests main gained follow the no-panic lint rules 2026-10-05 06:40:34 +07:00
tests_css.rs M4.96: Window › CSS Properties shows, copies and exports the CSS of the selection 2026-10-05 16:03:11 +07:00
tests_cut.rs Fix #122: Mirror & Cut, Line Cut and Rectangle Cut tools 2026-10-06 00:42:26 +07:00
tests_dashalign.rs M3.38: dashes fitted to corners and path ends, a flag of their own that keeps the offset 2026-10-04 23:37:58 +07:00
tests_distort.rs Perspective grid: coming back from a temporary tool keeps a hidden grid hidden (review of #333) 2026-10-08 03:27:36 +07:00
tests_docsetup.rs M4.20: Document Setup with bleed, transparency grid, paper and type options 2026-10-05 08:28:16 +07:00
tests_draw2.rs Path: Remove Anchor Points is Object › Path's one item and shares the Delete Anchor Point refit (review of #241) 2026-10-08 03:27:07 +07:00
tests_editcolors.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_effectedit.rs M3.42: Appearance editing depth — drag effect rows to reorder them or move them into/out of fills and strokes (Alt copies), click an effect name to edit it in its prefilled dialog, choosing an applied effect asks to edit it or add another, Show All Hidden Attributes, multi-select and Alt-drag duplicate of fills/strokes, drag the thumbnail onto art to copy the appearance, stroke rows note brush/Dashed/profile, Shift-click a chip for the mixer, Properties fx opens the effect menu 2026-10-04 23:01:34 +07:00
tests_emptytype.rs Part of #394: Preferences for snapping, handles, rubber bands, pattern tiles, tints and type 2026-10-08 09:43:12 +07:00
tests_envelope.rs clippy: a byte string for the envelope test's newline (byte_char_slices, red on main with Rust 1.99) 2026-10-06 07:09:35 -04:00
tests_envelope_distort.rs M8.16: Envelopes bend images, symbols, gradients, patterns and appearance; warps keep their frame 2026-10-06 12:01:47 +07:00
tests_envelope_edit.rs M8.17: Edit envelopes on the canvas: Edit Contents, mesh points and handles, Control bar 2026-10-06 12:16:59 +07:00
tests_expand.rs M14.4: as_chunks for the pixel loops main gained since the no-panics branch 2026-10-05 06:40:34 +07:00
tests_eyedropper.rs Type: Hebrew and Arabic text laid out right to left (bidi), aligned by its direction 2026-10-08 05:24:44 +07:00
tests_file.rs Tests: Japanese file and folder names save, open, export and title documents 2026-10-07 13:20:07 +07:00
tests_fileinfo.rs M4.55: File Info with author, description, keyword chips, rating and copyright, written to SVG, PDF and PNG 2026-10-05 09:55:47 +07:00
tests_flatpresets.rs M3.93: Edit > Transparency Flattener Presets… manages built-in and saved flattener presets 2026-10-05 02:36:28 +07:00
tests_flatpreview.rs M3.94: Window > Flattener Preview shows what flattening would rasterize, outline and change 2026-10-05 02:36:43 +07:00
tests_flatten.rs M14.4: as_chunks for the pixel loops main gained since the no-panics branch 2026-10-05 06:40:34 +07:00
tests_focal.rs M14.4: tests main gained follow the no-panic lint rules 2026-10-05 06:40:34 +07:00
tests_fontlist.rs Fonts: the font menus leave out macOS's hidden "." families 2026-10-06 15:33:21 -04:00
tests_freeform.rs M3.97: freeform points drag out to delete, spread ring drags, Lines mode draws lines 2026-10-05 04:43:43 +07:00
tests_gradient.rs M3.98: radial annotator extent ellipse, aspect handle and off-centre focal point 2026-10-05 04:43:43 +07:00
tests_gradpanel.rs M3.52: Eyedropper Options with Picks Up / Applies trees, Alt and Shift+Alt modes, image sampling 2026-10-05 02:08:10 +07:00
tests_halftone.rs Fix #122: Object > Vector Halftone 2026-10-06 00:42:26 +07:00
tests_journal.rs Fix #400: Scrub numeric fields by dragging their label 2026-10-08 11:33:57 +07:00
tests_knockout.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_labspots.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_layerclip.rs Layers: sublayers are layers, not objects, and every row has a command 2026-10-07 22:29:15 +07:00
tests_layers.rs Layers: keep clippy happy (menu item type, no unreachable in tests) 2026-10-07 23:06:31 +07:00
tests_linked_stops.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_links.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_linkspanel.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_liquify.rs M8.4: Liquify keeps going while held, leaves non-paths alone, strokes apply incrementally 2026-10-06 12:00:52 +07:00
tests_live.rs M8.16: Envelopes bend images, symbols, gradients, patterns and appearance; warps keep their frame 2026-10-06 12:01:47 +07:00
tests_livecorners.rs Fix #381: round single corners with Direct Selection (per-corner Live Corners) 2026-10-08 06:56:32 +07:00
tests_maskview.rs M3.86: Alt-click the mask thumbnail to view only the mask 2026-10-05 03:11:04 +07:00
tests_menucmds.rs Fix #421: Document Color Mode can put RGB greys on the black plate 2026-10-08 10:30:32 +07:00
tests_nativefile.rs M4.35: native files compress, save atomically, drop unused images, keep newer keys and save down to v1 2026-10-05 12:27:02 +07:00
tests_newart.rs M3.65: new-art appearance template (stroke options and graphic styles with nothing selected, New Art Has Basic Appearance) 2026-10-05 04:38:09 +07:00
tests_newdoc.rs M4.21: New Document with preset categories, details column and More Settings 2026-10-05 08:34:09 +07:00
tests_objexpand.rs M14.4: as_chunks for the pixel loops main gained since the no-panics branch 2026-10-05 06:40:34 +07:00
tests_opacitymask.rs M3.48: Page Isolated Blending and Page Knockout Group 2026-10-04 23:10:06 +07:00
tests_outlinestroke.rs M3.38: dashes fitted to corners and path ends, a flag of their own that keeps the offset 2026-10-04 23:37:58 +07:00
tests_overprint.rs M3.50: Overprint Black dialog with fill/stroke, rich and spot black options 2026-10-05 00:01:02 +07:00
tests_package.rs M4.64: File > Package collects the document, its linked files and fonts with a report; Document Info categories and Save 2026-10-05 12:40:05 +07:00
tests_paintproxy.rs M3.51: Fill/Stroke chips open swatch and mixer popovers; panel shortcuts; Recolor quick action 2026-10-05 02:05:33 +07:00
tests_panelcmds.rs M3.8: split the paint/panel command modules and the dialogs into per-area files 2026-10-04 11:22:23 +07:00
tests_pathops.rs Rename DrawCraft → VectorCraft: crates (vectorcraft-*), apps, binaries, types, env vars, docs, examples (.vectorcraft); old .drawcraft files and preferences still load. Fix: text bounds exact after opening a file; selection no longer marks a document modified (dirty = content differs from the saved document). Screenshots and renders regenerated. 2026-10-01 14:30:09 -04:00
tests_pathtype.rs Fix #429: Type on a path brackets, flip and Type on a Path Options that keep the type in place 2026-10-08 12:50:25 +07:00
tests_pattern.rs Rename DrawCraft → VectorCraft: crates (vectorcraft-*), apps, binaries, types, env vars, docs, examples (.vectorcraft); old .drawcraft files and preferences still load. Fix: text bounds exact after opening a file; selection no longer marks a document modified (dirty = content differs from the saved document). Screenshots and renders regenerated. 2026-10-01 14:30:09 -04:00
tests_pdffidelity.rs M4.59: pattern strokes and freeform gradients keep their look in PDF 2026-10-05 11:52:35 +07:00
tests_pdfmarks.rs M4.72: PDF export draws printer's marks in Registration around each page 2026-10-05 13:05:20 +07:00
tests_pdfpresets.rs M4.86: PDF page thumbnails and fast web view (linearised files) 2026-10-05 18:05:36 +07:00
tests_pdfraster.rs M4.63: Links panel with status, Relink, Go To, Update, Edit Original, Embed/Unembed, Link Info and Placement Options 2026-10-05 12:40:05 +07:00
tests_persp_planes.rs M8.13: Perspective planes move along their normals with widgets, alone, with or copying their objects 2026-10-06 11:44:11 +07:00
tests_persp_select.rs M8.10: Perspective grid view options: Lock Grid, Lock Station Point, Snap to Grid, Show Rulers 2026-10-06 11:49:19 +07:00
tests_persp_text.rs M8.14: Type and symbols in perspective are really projected and stay editable; attachments survive copies 2026-10-06 12:10:00 +07:00
tests_perspgrid.rs Fix #321: the perspective grid hides while a perspective tool is chosen 2026-10-08 03:27:36 +07:00
tests_place.rs M4.54: Placing a text file asks for Text Import Options and sets it as area type 2026-10-05 10:07:23 +07:00
tests_plugins.rs Fix #121: sandboxed WebAssembly plug-ins: object filters and live effects 2026-10-06 00:19:41 +07:00
tests_prefs.rs Part of #394: Preferences for snapping, handles, rubber bands, pattern tiles, tints and type 2026-10-08 09:43:12 +07:00
tests_previewbounds.rs M3.67: Use Preview Bounds measures strokes in transforms, the bounding box and Align 2026-10-05 03:59:37 +07:00
tests_print.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
tests_printadvanced.rs M4.81: Print advanced options: overprints, flattener, printer profile, bitmap 2026-10-05 17:27:00 +07:00
tests_printpresets.rs M4.79: print presets in the Print dialog and Edit > Print Presets 2026-10-05 16:30:46 +07:00
tests_printpreview.rs M4.78: File > Print opens the Print dialog and prints through the system 2026-10-05 16:30:35 +07:00
tests_printps.rs M4.92: Print to a PostScript file 2026-10-05 17:01:36 +07:00
tests_printtiling.rs M4.80: Print Tiling tool and View > Show Print Tiling 2026-10-05 17:26:59 +07:00
tests_proxyitems.rs M3.51: Fill/Stroke chips open swatch and mixer popovers; panel shortcuts; Recolor quick action 2026-10-05 02:05:33 +07:00
tests_puppetwarp.rs M8.6: Puppet Warp pins appear at once, warp from the rest shape and follow Undo 2026-10-06 11:16:10 +07:00
tests_rastersettings.rs M4.56: Document Raster Effects Settings with colour model, background, anti-alias, clipping mask and room around 2026-10-05 09:55:48 +07:00
tests_recolor.rs M3.79: Edit or Apply Color Group opens Recolor Artwork on a colour group 2026-10-05 04:20:27 +07:00
tests_recovery.rs Fix #369: restart the web build's graphics after a lost device or context 2026-10-08 07:18:32 +07:00
tests_registration.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_save.rs M4.17: File menu details: converted files, 30 recent files, one colour-mode command, Show in Folder, saved view 2026-10-05 11:11:19 +07:00
tests_saveoptions.rs M4.38: native and .ai save options: each artboard to its own file, linked files, ICC profiles, PDF content 2026-10-05 15:24:19 +07:00
tests_scalestrokes.rs Fix #291: live corners stay circular when a rectangle is scaled unevenly 2026-10-07 20:25:41 +07:00
tests_slices.rs M4.89: Slice and Slice Selection tools draw, pick, move, resize and delete slices 2026-10-05 12:52:15 +07:00
tests_strokegeom.rs M3.20: visual bounds cover arrowheads so overhanging heads are not culled; one arrowhead-weight helper 2026-10-04 17:40:41 +07:00
tests_strokegradient.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_strokereach.rs M3.63: visual bounds and clicks take in the whole stroke 2026-10-05 02:55:23 +07:00
tests_strokeux.rs Stroke: per-unit weight presets so mm/cm/in dropdowns show clean numbers 2026-10-08 12:26:47 +07:00
tests_stylelib.rs M14.4: as_chunks for the pixel loops main gained since the no-panics branch 2026-10-05 06:40:34 +07:00
tests_stylepanel.rs M14.4: tests main gained follow the no-panic lint rules 2026-10-05 06:40:34 +07:00
tests_styles.rs M3.68: groups, layers and type have their own fills, strokes and effects, with Contents and Characters rows 2026-10-05 00:59:34 +07:00
tests_swatchcmds.rs M3.59: tints of global and spot colours, tint swatches and Global colour balance 2026-10-05 02:29:17 +07:00
tests_swatches.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_swatchlib.rs M3.59: tints of global and spot colours, tint swatches and Global colour balance 2026-10-05 02:29:17 +07:00
tests_targeting.rs M3.69: target circles target layers, groups and objects; drag them to move appearances 2026-10-05 02:15:41 +07:00
tests_textedit.rs Part of #394: Preferences for snapping, handles, rubber bands, pattern tiles, tints and type 2026-10-08 09:43:12 +07:00
tests_textimport.rs M4.54: Placing a text file asks for Text Import Options and sets it as area type 2026-10-05 10:07:23 +07:00
tests_tileedge.rs M3.72: Tile Edge Color dialog and Show Swatch Bounds in pattern editing 2026-10-05 01:50:25 +07:00
tests_tints.rs M4.31: Save PDF dialog and document.exportPdf with PDF settings 2026-10-05 07:22:27 +07:00
tests_toolsettings.rs M8.2: tool options last across tool switches and launches 2026-10-06 09:23:44 +07:00
tests_transparencygrid.rs M3.88: Show Transparency Grid is per-document engine view state 2026-10-05 03:11:04 +07:00
tests_typearea.rs Fix #252: area type resizes its frame with the mouse 2026-10-07 13:02:55 +07:00
tests_units.rs M14.5: Preferences > Units drive every length the UI shows and reads 2026-10-05 07:43:41 +07:00
tests_webexport.rs M4.90: Save for Web (Legacy) previews and saves optimised GIF, JPEG, PNG-8 and PNG-24 images, slices and HTML 2026-10-05 15:24:51 +07:00
tests_widthpoints.rs M3.64: Width tool depth: Width Point Edit, multi-select, Alt-copy and discontinuous points 2026-10-05 04:38:09 +07:00
tests_widthprofiles.rs M3.61: width profile library: Add to Profiles, Delete Profile, Reset Profiles 2026-10-05 02:55:21 +07:00
tests_widthtool.rs M8.7: Width tool edits compound-path strokes, shows every subpath's points, own cursors 2026-10-06 12:01:10 +07:00
tests_xform.rs Artboard tool: share the artboard copy with Duplicate Artboard, report the copies (review of #348) 2026-10-08 03:22:50 +07:00
tooling.rs Part of #394: Preferences for snapping, handles, rubber bands, pattern tiles, tints and type 2026-10-08 09:43:12 +07:00
units.rs M14.5: Preferences > Units drive every length the UI shows and reads 2026-10-05 07:43:41 +07:00