Commit Graph
5780 Commits
Author SHA1 Message Date
dotCooCoo 134b8b33a1 Export: placed symbol art keeps its instance's link
An instance whose symbol art has live effects is replaced in the export by a group holding the baked art. That group now takes the instance's attributes as well, so a PDF export keeps the instance's URL as a link annotation over the art where its effects draw it.
2026-11-14 02:59:02 -08:00
dotCooCoo 083180075c Graphs: a black fill set on wedge legend labels stays black on dark wedges
On a pie with Legends in Wedges, the graph draws legend labels white on
dark wedges unless they keep a fill of their own, and it read a kept black
fill as no fill of its own. A label recolored from white to black on a dark
wedge went back to white the next time the graph was drawn.

The graph now marks the legend labels' fill as set when a command sets it
(legendFillSet in the graph's label styles, kept through save and open), and
draws a marked fill on every wedge, black included. Undo clears the mark. A
size, font or stroke change does not set it, and neither does a whole-pie
recolor that gives the legend labels different fills; one that gives them
all the same fill sets it. A swatch edit or color conversion leaves the
default black legend fill as it is, and keeps a non-black legend fill from a
file saved without the mark as the labels' own when it turns black.
2026-11-14 02:54:22 -08:00
dotCooCoo 0397bfa47f Merge main into fix/ai-calligraphic-samples 2026-11-14 02:53:05 -08:00
dotCooCoo 7fbef2b877 Docs: Danish row counts the catalog on current main 2026-11-14 02:51:21 -08:00
dotCooCoo 80fa9015fd Merge main into fix/trace-flat-16-levels 2026-11-14 02:50:21 -08:00
dotCooCoo c594c1781c Merge main into feat/trace-preset-defaults 2026-11-14 02:50:20 -08:00
dotCooCoo 5afedf5804 Merge main into fix/blend-reversed-key-stroke-direction 2026-11-14 02:46:52 -08:00
dotCooCoo b1d364033e Artwork Cleanup: Combine and Join Point Text keep hidden and locked pieces apart
With ids, Combine Point Text and Join Point Text take locked and hidden
type. They kept the first piece's object and removed the others, so
naming a visible piece and a hidden one beside it hid the visible text
or showed the hidden text, and the same held for locked pieces and for
pieces in a locked or hidden group or layer.

A piece now joins only pieces that are as visible and as locked as it
is, counting their groups and layers. The selection route takes only
editable type, so it behaves as before.
2026-11-14 02:45:50 -08:00
dotCooCoo b59ec11b32 Export: symbol art placement skips instances the export leaves out
Hidden instances, instances in hidden groups, on template layers, and
on hidden layers or layers that do not print when the exporter leaves
those out are no longer placed for PDF, print, EPS and DXF. Their art
was baked and counted toward the 16,000,000-object limit for placed
symbol art, so it could leave a visible instance written without its
effects.

bake_document_placing_symbols takes a WrittenLayers value: PDF passes
the layers its settings write, EPS writes layers that do not print but
not hidden ones, and DXF writes both. Print removes the layers that do
not print before baking.
2026-11-14 02:45:49 -08:00
dotCooCoo 3824b15a77 .ai and EPS import: large canvas symbols come in at the file's size
VectorCraft reads the symbol definitions of a large canvas .ai or EPS,
and of a .ai whose page is in larger units, in the same units as its
layers. Opening such a file scaled the layers and graphic styles up to
full size but left the symbols' art as it was. Instances on the layers
drew at the right size, but each one's transform carried the factor N,
and a newly placed instance came in at 1/N of the size, where N is the
file's large canvas scale or its page's unit.

- Opening the file now scales each symbol's art, strokes and effects with
  the layers. Instances on the layers, in symbol art, in pattern tiles
  and in opacity masks keep their own scale and rotation and draw where
  they did.
- A symbol library without layers from such a file gets the same scale
  as its graphic styles.
- Opacity masks on the layers that do not move with their object are
  scaled with the layers too, as are those in symbol art.
- Editing data that VectorCraft wrote (its %%Creator line) keeps its
  symbols and those masks at their own size, as the .ai save writes
  them, so files saved by earlier versions open as before.
2026-11-14 02:43:50 -08:00
dotCooCoo 7e66a990bc PDF export: a stored gray or RGB image keeps its ICC profile
A gray or RGB TIFF that reached PDF export as a TIFF, for example in a
native document or from a script, was decoded to 8-bit RGBA and written
as DeviceRGB, which dropped the ICC profile of its tag 34675, its 16-bit
samples and its gray color space. It is now written in an ICCBased color
space holding that profile, as a tagged PNG is: gray stays gray, 16-bit
samples stay 16-bit from PDF 1.5 on, and the alpha becomes a soft mask
only when some pixel is not opaque.

A gray or RGB image that the Compression settings resample or compress
with JPEG keeps its source profile too, a PNG included. Pixels that the
Output settings convert are written without it, and so is a profile whose
color space differs from the samples'. CMYK images are unchanged.
2026-11-14 02:42:43 -08:00
dotCooCoo 795fbf0148 i18n: Swedish translates 114 more status and error messages
The untranslated report listed these messages as missing from the
Swedish catalog. Among them are the image export encoders and size
limits, color profiles, color books, swatch exchange files, DXF import,
3D and Revolve errors, and the `index` check of document.activate. Each
now has an @msg row in sv.tsv, with its placeholders, backticked names,
format names and values kept as the English writes them. Messages that
open pull requests already translate into Swedish are left to them.

The Swedish row in docs/localization-parity.md is recounted, and
docs/target-app-parity.md gets a line for the Swedish catalog.
2026-11-14 02:42:29 -08:00
dotCooCoo 1c973dc141 SVG import: absolutely placed characters in right-to-left text land on their x
An absolutely placed character starts its own text chunk, anchored on its
own x (SVG 1.1 text chunks). In a right-to-left line the import kerned the
character before each placed one as if kerning moved the placed character
right, but a right-to-left glyph takes its kerning at its left, so the
correction moved the wrong glyph. In <text direction="rtl" font-size="20">,
<tspan x="100 160" y="80 80">אב</tspan> on a second line put the right
edge of א at 393.48 instead of 100.

The placement now works in drawing order: each kerning is a cut after its
character (before it when it runs right to left), each gap between two
placed neighbors takes one cut, and the line's left edge is measured again
every round. Corrections are divided by the character's horizontal scale,
so text stretched with lengthAdjust="spacingAndGlyphs" lands on its x too.

A left-to-right character drawn between two placed right-to-left ones has
no kerning slot before the next one, which then keeps its place in the
line; the import warns about it.
2026-11-14 02:41:16 -08:00
dotCooCoo e7feeb311d SVG import: a raster stored again as PNG keeps its resolution
A raster that SVG import decodes and stores again (a TIFF, a BMP or any
other format that is not PNG, JPEG, GIF or WebP, or an image whose EXIF
or TIFF orientation turns or flips it) was written as a PNG with no pHYs
chunk, and a turned or planar CMYK TIFF was written without resolution
tags, so the image lost the resolution its file declares.

The converted PNG now carries the source's resolution in a pHYs chunk,
and the CMYK TIFF in its resolution tags, as Open and Place store them.
A quarter turn (orientations 5 to 8) swaps the horizontal and vertical
values. An image that declares no resolution is stored without one, and
an image stored unchanged keeps its own bytes.

The PNG, JPEG, TIFF, WebP and BMP resolution readers and the pHYs writer
move from the engine to vectorcraft-doc, so the SVG importer can use
them; the engine and renderer entry points forward to them unchanged.
2026-11-14 02:40:45 -08:00
dotCooCoo 27e75cfce2 Merge main into fix/flat-logo-gray-between-black-and-white 2026-11-14 02:40:29 -08:00
dotCooCoo 7694627a39 Perspective: reapplying the current grid preset adds no undo step
perspective.grid.preset stored the preset's grid every time, so applying
the preset the document already holds recorded an undo step that changed
nothing. It now compares the new grid with the stored one, as
perspective.grid.set does through grid_kept, and records a step only when
the grid changes. When only whether the grid shows or its active plane
differs, the preset sets them without an undo step, as
perspective.grid.show and perspective.plane.set do.
2026-11-14 02:35:48 -08:00
ruchirguitar e0fe953258 docs: sync symbols area row inventory in target-app-parity 2026-11-14 16:05:47 +05:30
dotCooCoo a8c2a405ac Merge main into fix/dxf-ellipse-doc-line 2026-11-14 02:34:12 -08:00
dotCooCoo ef61c9afbd Merge main into feat/da-complete-messages 2026-11-14 02:33:57 -08:00
dotCooCoo 6eb0769dfe Merge main into feat/ai-insert-aki 2026-11-14 02:33:44 -08:00
dotCooCoo dcd3adc445 Merge main into fix/learn-panel-commands 2026-11-14 02:33:25 -08:00
dotCooCoo b391aeafe9 Merge main into fix/pt-br-missing-message-rows 2026-11-14 02:32:22 -08:00
dotCooCoo 110cf34f29 Merge main into feat/ai-import-kinsoku-settings 2026-11-14 02:32:17 -08:00
dotCooCoo 013cd6aa42 Merge main into fix/it-missing-message-rows 2026-11-14 02:30:48 -08:00
dotCooCoo 95450b1e23 i18n: Vietnamese translates 115 status and error messages it lacked
vi.tsv gets an @msg row for each of the 115 status and error messages
that the untranslated report listed as missing from every
complete-message catalog and that no open pull request adds to
Vietnamese. Among them are the image export, color profile, color
book, swatch exchange file, swatch library, DXF and DWG import, 3D and
Revolve errors, the zip, regular expression and script file errors,
and the `index` whole-number error. Placeholders, backticked names,
parameter values and limits stay as the English writes them.

Docs: the Vietnamese row of docs/localization-parity.md and a line in
docs/target-app-parity.md give the new counts.
2026-11-14 02:28:44 -08:00
dotCooCoo a7adb337cf Merge main into feat/arrange-nest 2026-11-14 02:27:15 -08:00
dotCooCoo 9834c58b66 Merge main into fix/links-stored-brush-art 2026-11-14 02:26:44 -08:00
dotCooCoo 9ebd467f8d Merge main into fix/type-dialogs-story-wide 2026-11-14 02:25:49 -08:00
dotCooCoo 5eb428f02f Merge main into fix/nl-message-rows 2026-11-14 02:25:45 -08:00
dotCooCoo be7139c6c5 Merge main into fix/hindi-label-senses 2026-11-14 02:25:08 -08:00
dotCooCoo cd86168e34 Color management: documents behind the front one draw through their own profiles
With Window › Arrange › Tile or floating document windows, every document
other than the front one was drawn through the profiles the front document
is assigned, since the active color settings are process-wide.

- cms::with_active puts other settings in place of the active ones on one
  thread, fast paths included, and puts them back after (also on a panic).
  cms::for_document gives the context a document's assigned profiles make,
  the same one each time for the same profiles and working settings.
- Each pane renders its document's art through colormgmt::doc_cms, on the
  render worker and on the UI thread alike, and draws its paper, artboard
  colors and transparency grid through the same settings.
- Loading or removing a profile redraws the documents assigned it, the
  ones behind the front one included.
- The ink and separation tables keep the tables of up to four color
  settings, so documents with different CMYK profiles side by side do not
  rebuild them on each redraw.

Placed documents inside a document behind the front one still draw through
the front document's profiles.
2026-11-14 02:24:51 -08:00
dotCooCoo a9fbb7aa50 Merge main into fix/svg-clip-path-effects 2026-11-14 02:24:38 -08:00
dotCooCoo 9735e51473 Clipboard: files copied in a file manager paste as art on core Wayland
Where the clipboard goes through the compositor's core Wayland protocol
(the Flatpak on GNOME), Paste now reads the text/uri-list a file manager
offers, else GNOME Files' x-special/gnome-copied-files, and pastes the
first file that is art before the clipboard's other types, as on the
other platforms. The list is read on the read worker and the files on
the paste's background thread. Only file: URIs with no host or
localhost are taken (RFC 8089), percent escapes decoded once (RFC
3986); other URIs are skipped, and a list of more than 1,024 URIs, a
limit of VectorCraft's own, names no file. The Paste menu item is
enabled when a file list is offered.
2026-11-14 02:24:26 -08:00
dotCooCoo 5b5104177a i18n: Danish translates the error for four numbers not below 0
main added the message "`{key}` must be four numbers not below 0:
[tl, tr, br, bl]" to every other catalog. Danish now has its row too,
and the Danish row of docs/localization-parity.md gives the counts on
main at 4c86cb97d: the untranslated report lists the same missing
messages for Danish as for Greek, Spanish and Finnish.
2026-11-14 02:23:18 -08:00
dotCooCoo 897a0c7ba0 Merge main into fix/es-missing-message-rows 2026-11-14 02:22:43 -08:00
dotCooCoo ad628c0f3e Merge main into fix/ai-envelope-budget-warped-type 2026-11-14 02:21:54 -08:00
dotCooCoo ad31fe9527 Merge main into fix/reverse-path-profiles 2026-11-14 02:21:25 -08:00
dotCooCoo 69156f558e Merge main into fix/tr-message-rows 2026-11-14 02:21:12 -08:00
dotCooCoo bf3a23d031 Merge main into fix/graph-label-paint-recolor 2026-11-14 02:19:54 -08:00
dotCooCoo 4678bda849 Merge main into fix/eps-ryumin-light-h 2026-11-14 02:18:10 -08:00
dotCooCoo 9965454983 Merge main into fix/eps-bitmap-glyph-rollback-test 2026-11-14 02:17:57 -08:00
dotCooCoo db35d59c93 Merge main into fix/uk-missing-message-rows 2026-11-14 02:16:29 -08:00
dotCooCoo 0f135f8f09 Merge main into fix/single-line-composer-remeasure 2026-11-14 02:16:06 -08:00
dotCooCoo ded56d3d70 Merge main into fix/graph-series-group-opacity 2026-11-14 02:15:46 -08:00
dotCooCoo 35a9045612 Merge main into fix/text-inset-skips-seams 2026-11-14 02:15:45 -08:00
dotCooCoo 24d7df0372 Merge main into fix/shortcut-optional-typed-params 2026-11-14 02:15:43 -08:00
dotCooCoo cee68c525a Merge main into fix/reflected-dimension-line 2026-11-14 02:15:24 -08:00
dotCooCoo 66ae075f90 Merge main into fix/plugin-unlinked-stop-plates 2026-11-14 02:14:25 -08:00
dotCooCoo f21c9561c5 Merge main into fix/ai-warped-image-pieces-cropped 2026-11-14 02:14:20 -08:00
ruchirguitar 140df22be3 docs: update feature status date and parity revision history for Weather Icons 2026-11-14 15:44:03 +05:30