Commit Graph
14127 Commits
Author SHA1 Message Date
dotCooCoo 8301810b22 Merge main into feat/ai-import-kinsoku-settings 2026-11-14 04:36:29 -08:00
dotCooCoo 9cab12cecf Merge main into fix/followup-7304 2026-11-14 04:36:18 -08:00
dotCooCoo 6a273193b2 Merge main into fix/wireframe-transform-measures-shadow 2026-11-14 04:35:50 -08:00
dotCooCoo 9b252a9d58 Merge main into fix/live-shape-replay-negative-radius 2026-11-14 04:35:32 -08:00
dotCooCoo cc9f786c60 Merge main into fix/eps-johab-code-space 2026-11-14 04:35:05 -08:00
dotCooCoo 7f17649731 Guides: document and layer guide edits share one set of one-pass helpers
Document::guides_to_saved, remove_edit_layer, retain_guides and the
artboard guide moves now call the layer helpers in node/ops.rs
(held_guides, strip_held, map_held), which Node::strip_ruler_guides and
Node::map_ruler_guide_positions already use. The copies in
document_guides.rs (picked_in_layers, drop_picked, edit_picked) are
removed. Picked stays for the walks through objects and opacity-mask art.

Results, guide order, copies kept for undo and the number of nodes each
walk looks at are unchanged.
2026-11-14 04:34:05 -08:00
dotCooCoo 7e8d9bce31 Merge main into fix/dcs-placement-clip-keeps-file-clip 2026-11-14 04:32:45 -08:00
dotCooCoo 00767dcf57 Color: picked gradient mesh points are the color the panels show and edit
With points of a gradient mesh picked (Mesh tool, Direct Selection or the
Lasso), a solid fill color from the Color panel recolors just those points,
but the Fill proxy, the Color panel, the Color Wheel and the Control bar's
fill chip kept showing the mesh object's own fill, so the panel's sliders
jumped back after each drag.

- The new `Session::fill_mesh_points` resolves the targets as
  `paint.setFill` does: the picked points of every selected mesh, unless the
  Appearance panel's active row is a fill or an object of a symbol instance
  is selected. When the first selected object is a mesh among them, the Fill
  proxy (`paint.proxies`) shows its first picked point's color, and "?"
  compares the picked points' colors with each other and with the other
  selected objects' fills.
- `Session::mesh_points_picked` lists the points `transparency.set` fades: it
  is empty while the Appearance panel's active row takes the opacity, and
  `transparency.info` and the Transparency panel now follow it there too.
- The cached "?" state and the Transparency panel's values are recomputed when
  other points are picked, which gives the document no new revision.
- The Control bar's opacity shows the first picked point's opacity, which
  `transparency.set` changes then.
- The `paint.setFill` and `transparency.set` params texts name the picked
  points instead of the point last clicked, and the `paint.proxies` text,
  docs/mcp.md and the progress doc describe what the panels show.
2026-11-14 04:32:44 -08:00
dotCooCoo b569c9a859 Merge main into fix/plugin-unlinked-stop-plates 2026-11-14 04:32:42 -08:00
dotCooCoo a00198ffd8 Merge main into fix/it-missing-message-rows 2026-11-14 04:32:38 -08:00
dotCooCoo 23726c5215 Merge main into fix/fr-missing-message-rows 2026-11-14 04:32:32 -08:00
dotCooCoo 75674da743 Merge main into fix/ai-envelope-budget-warped-type 2026-11-14 04:32:11 -08:00
dotCooCoo 3ce51de132 Merge main into fix/web-locks-monotonic-clock 2026-11-14 04:31:59 -08:00
dotCooCoo 6d8412c4d4 Merge main into fix/dxf-ellipse-doc-line 2026-11-14 04:31:45 -08:00
dotCooCoo 4a5f916fe2 Merge main into fix/warichu-rtl-gap-caret 2026-11-14 04:31:30 -08:00
dotCooCoo bfa0c8e15e Dimensions: an opened file redraws its labels in its own composite fonts
When a document opens or is reverted with dimensions whose art is not in
its color mode, the dimensions are drawn again before the document's
composite fonts are registered. A label whose font names a composite font
that another open document defines differently was measured in that other
definition, so it was centered off its anchor. The redraw now measures the
labels in the document's own composite fonts, in front and in the back.
2026-11-14 04:31:29 -08:00
dotCooCoo a050c27a72 Merge main into fix/type-dialogs-story-wide 2026-11-14 04:31:25 -08:00
dotCooCoo fa22d8ca2c Merge main into fix/line-break-latest-fitting 2026-11-14 04:31:08 -08:00
dotCooCoo deb3c4345a Merge main into fix/art-brush-proportional-weight 2026-11-14 04:31:00 -08:00
dotCooCoo 94b6b905a3 Merge main into fix/live-paint-expand-drawn-stroke 2026-11-14 04:30:58 -08:00
dotCooCoo 0e6151011d Export: clipping type with geometry effects clips where the canvas does
Type used as a clip group's clipping path, with a geometry effect on the
object, on one of its fills or strokes, or a perspective, was baked into
its outlined pieces with the effects applied, so SVG, PDF and the other
exports clipped by all of them while the canvas clips by the plain glyph
outlines. The baked clipping path was also a group, so the type's fills
and strokes were not painted.

bake_node now bakes such a clip group as the canvas draws it: the
clipping path is a path of the region effects::clip_outline gives, the
type's fills (effects baked) paint behind the clipped art inside the
clip, and its strokes paint over it outside the clip, in a group that
keeps the clip group's id and transparency.
2026-11-14 04:30:45 -08:00
dotCooCoo b276e97440 Merge main into fix/web-open-keeps-both-link-lines 2026-11-14 04:27:37 -08:00
dotCooCoo 5909f1c643 Merge main into fix/de-missing-message-rows 2026-11-14 04:27:37 -08:00
dotCooCoo e292dab8d2 Merge main into fix/rtl-tab-end-trim 2026-11-14 04:27:02 -08:00
dotCooCoo d43ff88b38 Merge main into fix/shortcut-optional-typed-params 2026-11-14 04:26:54 -08:00
dotCooCoo e6f9210f28 Merge main into feat/arrange-nest 2026-11-14 04:26:44 -08:00
dotCooCoo 061cdda496 Merge main into feat/smooth-keeps-corners 2026-11-14 04:26:43 -08:00
dotCooCoo 3a6b016253 Blend: steps between gradients linked to the same spot swatch keep its process plates
A blend between two gradients whose matching stops are tints of one spot
swatch kept the link and interpolated the tint, but every step's stop lost
the process inks (C, M, Y, K) printed with the spot ink, so PDF export wrote
the steps as the spot ink alone.

- Matching stops linked to one swatch interpolate each process ink with the
  tint; a stop without process inks counts as none of each, and the ends
  keep their own.
- Gradients with different stop counts keep the inks at every resampled
  stop, interpolated with the midpoint-adjusted fraction between two stops
  of one swatch.
- A solid blended with a gradient brings no process inks of its own: its
  stand-in gradient no longer copies the other gradient's.

Stops of different swatches, or linked and unlinked stops, still blend into
unlinked process colors without plates.
2026-11-14 04:25:55 -08:00
ncic fc47e4782b Pencil: Use Precise Cursors shows the plain crosshair again; a far close is a straight segment 2026-11-14 13:23:22 +01:00
dotCooCoo fdb58f4951 Merge main into fix/nl-message-rows 2026-11-14 04:22:24 -08:00
dotCooCoo f3a83b22b5 Merge main into fix/tr-message-rows 2026-11-14 04:22:17 -08:00
dotCooCoo e784370c77 Merge main into fix/reflected-dimension-line 2026-11-14 04:22:15 -08:00
dotCooCoo 5e21d265ef Merge main into fix/ai-calligraphic-samples 2026-11-14 04:22:11 -08:00
dotCooCoo aabeec34f6 Merge main into feat/learn-progress-rings 2026-11-14 04:21:47 -08:00
dotCooCoo 48ed8dcc7f Merge main into fix/colored-light-seams 2026-11-14 04:21:46 -08:00
dotCooCoo 1d8fd3f9dd Merge main into fix/actions-load-reports-unknown-commands 2026-11-14 04:18:07 -08:00
dotCooCoo 61a7784588 Merge main into fix/graph-label-paint-recolor 2026-11-14 04:18:07 -08:00
dotCooCoo eb2abee705 Merge main into fix/ja-message-rows 2026-11-14 04:17:47 -08:00
dotCooCoo 70c20c3bd3 Merge main into fix/graph-series-group-opacity 2026-11-14 04:17:39 -08:00
dotCooCoo 72e790503e Merge main into fix/issue-6784 2026-11-14 04:17:39 -08:00
dotCooCoo c90759af77 Merge main into fix/ai-warped-image-pieces-cropped 2026-11-14 04:17:17 -08:00
FredApps c9a199ff91 Merge branch 'main' into fix/spiral-decay-setting-20261011 2026-11-14 13:15:33 +01:00
dotCooCoo 4247805eeb Merge main into fix/hu-message-rows 2026-11-14 04:13:23 -08:00
dotCooCoo ecfa5480f0 Merge main into fix/hindi-label-senses 2026-11-14 04:13:04 -08:00
dotCooCoo e012d80f88 Merge main into fix/smooth-keeps-closed-start 2026-11-14 04:13:01 -08:00
dotCooCoo 5114deb578 i18n: Brazilian Portuguese spells Relink correctly and calls process colors "cor de processo" in two messages
"Relink", "Relink…" and "Relink to Folder…" read "Revinculcar"; they now
use "Revincular", as every other Relink row in the catalog does. Two
messages about process colors said "cor de seleção" (selection color);
they now say "cor de processo", matching the Process Color label.

A new i18n test checks both.
2026-11-14 04:12:58 -08:00
dotCooCoo efb31aa51a PDF and EPS export: gradients name only the spot inks of stops that color something
A gradient's Separation or DeviceN space, and EPS's %%DocumentCustomColors,
named the spot ink of every linked stop. A stop out of order whose
neighboring stretches have no width, a stop at a tint of 0 without process
plates, and in PDF a stop whose stretches are fully transparent print no
ink, but their spot inks were still declared, so separations got an empty
plate.

- vectorcraft-color: Gradient::drawn_stops (the rule Document Info uses,
  moved here) and Gradient::reached_stops (every stop taken as opaque).
- PDF: Separation and DeviceN shadings, the Perceptual spot shadings and
  the spot-image warning name only inks of drawn stops at a tint above 0
  or with process plates; other stops are written with no ink, so their
  process inks and RGB or Lab colors no longer shape the space either.
- EPS: the same with reached stops, since EPS writes stops opaque; a
  transparent spot stop keeps its ink.

Output is unchanged when every stop colors part of the gradient and every
spot stop has a tint above 0 or process plates.
2026-11-14 04:11:40 -08:00
dotCooCoo 8fa551e173 Selection: clicks in a clip group follow the region its clipping path's effects give it
The canvas clips a clip group by its clipping path with the path's live
geometry effects applied, but clicks, hovers and marquees still tested
the plain clipping path. A click where a Transform effect had moved the
clip selected nothing, and a click on the clipping path's own place
selected art that was not drawn there.

- The engine registers the effect-shaped region with the doc crate
  (`hit::set_clip_region`), as it does for image paint and live art. It
  gives a region only when the clipping path holds a visible geometry
  effect; otherwise clicks keep the plain shapes, and type keeps
  counting by its frame.
- Clicks, `objects_at`, the hidden art of a selected object, the Unlock
  submenu's list and marquees inside a clip group or a clipping layer
  use that region. Outline view and layers with Preview off draw no
  effects and keep the plain shapes; the Selection, Direct Selection
  and Enclosing Lasso marquees pass the view's outline state
  (`hit::marquee_in_view`). Each container around a selected object
  tests its clipping path in the outline state a click has there.
- A marquee touches the clipping path itself by its own geometry, as a
  click on its outline finds it, and also on the edge of the region, so
  a marquee around a clipping path that an effect moved into large art
  still selects it. `hit::marquee_in` keeps the plain shapes for the
  Color Theme Picker, which clips by them.
- The region is kept per thread until the clipping path or the live
  inputs change. A clip group's reach takes in the region's box, so
  culling does not skip art the region moved past the plain clipping
  path. Up to 4096 boxes are kept; when they are full, a new box
  replaces only as many others as it needs room for.

Docs: docs/target-app-parity.md.
2026-11-14 04:08:03 -08:00
dotCooCoo 77dc581b1c Type: Create Outlines keeps a run's gradient across the whole text
Create Outlines copied each character run's fills and strokes onto every
glyph, ruby glyph and underline or strikethrough bar as they were, so a
gradient with no vector of its own refitted to each piece's own box,
while the canvas fits it across the whole layout. A gradient with a
vector kept its text-space coordinates in the document, and the
characters' stroke kept its text-space weight on scaled type.

Each piece is now painted by paint_type_piece, the rule outline_text
already used: unplaced gradients are fixed to the layout's bounds, then
the type's transform places the piece, its gradients, stroke weights and
pattern tiles. Object > Expand outlines type the same way, and
object.expand.info measures gradient fills on the same paths.
2026-11-14 04:05:18 -08:00
dotCooCoo 490c803080 SVG import: type on a closed path wraps around past the path's start
Text on a path of one closed subpath that is anchored to start before
the path's start point (text-anchor end or middle, right-to-left start,
or a negative startOffset) started at the start point, and text offset
past the path's end started at its end. It now wraps around the path,
as SVG 2's startOffset attribute describes for a single closed subpath
(https://www.w3.org/TR/SVG2/text.html#TextPathElementStartOffsetAttribute):
text-anchor end at startOffset 0 ends at the start point. Open paths
and paths of several subpaths still start the text at the path's start
or end.
2026-11-14 04:04:48 -08:00