Commit Graph
14082 Commits
Author SHA1 Message Date
dotCooCoo a558632cd9 Merge main into fix/uk-missing-message-rows 2026-11-14 06:05:29 -08:00
dotCooCoo 9efde43f1d Metafile import: EMF and WMF are read through craft-metafile, so EMF+ pictures open
EMF and WMF import now plays the records with the shared craft-metafile
reader (storytold/craft-libs#778, at the craft-libs rev the SVG, EPS and
DXF crates already use) and maps its picture onto the document here:
paths with their fills, strokes, caps, joins, miter limits and dashes,
clipping groups, images and point type. The EMF and WMF record players in
crates/metafile/src/import and the DIB decoder they used are removed. The
writers are unchanged, and the PICT reader keeps its own player.

What changes for a file being opened, placed or pasted, and for an EPS
file's Windows metafile preview (read when its PostScript can't be):

- An EMF that draws with EMF+ records is read from them. It opened empty,
  with a warning that EMF+ is not read. A file with both kinds of record
  is read from its EMF+ records too.
- Hatched and pattern brushes fill with the average color of the brush's
  tile, translucent where the tile has gaps. Hatches filled with the hatch
  color and pattern brushes with gray.
- Translucent fills, strokes and EMF+ text keep their alpha as opacity.
- Text keeps a stretch across from the world transform; it kept only the
  turn. Text the file clips to a rectangle is clipped to it, and an
  underlined or struck-through font gives underlined or struck-through
  type.
- A clip path whose bounding box holds the whole picture is kept unless
  it is that rectangle; a diamond or a bow tie around the picture was
  dropped.
- Images drawn with SRCAND, SRCPAINT or SRCINVERT are drawn as they look
  over white, and images drawn with other raster operations are drawn as
  a plain copy. They were left out with a warning.
- Excluded clip rectangles and the other clip region modes are applied.
  A clip path combined with RGN_OR, RGN_XOR or RGN_DIFF is ignored
  without the warning it gave.
- An image past the reader's size or pixel limits, or one that can't be
  decoded, is left out without a warning of its own. A file past the
  reader's limits (more than 32 nested clip paths, 200,000 drawn items,
  256 MiB held) is read up to that point without a warning.
- An EMF record whose size is not a multiple of 4 ends the file, with the
  "ends early" warning.

Tests: an EMF+ only picture imports its fill (it failed before), a dual
EMF+ file draws its translucent EMF+ fill and not its fallback, hatch and
pattern brush colors, clipped and underlined text, excluded clip
rectangles, a shared clipping group, an odd record size, WMF at 1440
units an inch without a placeable header and at its own units with an
inverted box, an EMF without a frame, diamond and bow-tie clips, text with a
stretch, clips nested past the stack and 200,000 clip records; the fuzz
test gains random EMF+ records.
2026-11-14 06:04:19 -08:00
dotCooCoo e45c6f518e PDF export: PDF/X-1a writes tagged gray images in DeviceGray
PDF/X-1a allows device colors only, but a gray TIFF that carried a gray
ICC profile kept it when no color conversion applied, and the export
then failed its PDF/X check. A gray or RGB PNG or JPEG with a profile
went the same way through the PDF writer. In PDF/X-1a, images are now
written without the profile they carry; the other standards and plain
exports keep it.
2026-11-14 06:02:55 -08:00
dotCooCoo 4f7a10c002 Merge main into fix/3d-shadow-builds-once 2026-11-14 06:02:41 -08:00
dotCooCoo 551b8bd235 Merge main into fix/live-paint-make-drawn-rows 2026-11-14 06:01:57 -08:00
dotCooCoo 62fea70bbb Merge main into fix/it-missing-message-rows 2026-11-14 06:01:32 -08:00
dotCooCoo d058086fc6 Merge main into feat/arrange-nest 2026-11-14 06:00:51 -08:00
dotCooCoo 80854eb4b8 Merge main into fix/export-bakes-symbol-art-effects 2026-11-14 06:00:09 -08:00
dotCooCoo 4d6b24c1d3 Merge main into feat/da-complete-messages 2026-11-14 05:59:28 -08:00
dotCooCoo e2a8b9f66d Merge main into fix/svg-rtl-absolute-chunks 2026-11-14 05:58:49 -08:00
dotCooCoo c05f5b83cf Merge main into feat/smooth-keeps-corners 2026-11-14 05:58:33 -08:00
dotCooCoo d233cd8291 Merge main into fix/graph-series-group-opacity 2026-11-14 05:57:05 -08:00
dotCooCoo f37b8f3c83 Merge main into fix/tr-message-rows 2026-11-14 05:56:57 -08:00
dotCooCoo aca4f3dcd1 Merge main into fix/ja-message-rows 2026-11-14 05:56:44 -08:00
dotCooCoo 11225df118 Type: tests expect the Single-line Composer to break mixed-size overflow lines as the Every-line Composer does 2026-11-14 05:55:44 -08:00
dotCooCoo 38a2019f8f Color: format the mesh-point opacity test as rustfmt lays it out 2026-11-14 05:51:39 -08:00
dotCooCoo e599fcb738 Docs: Hindi pages state the untranslated report's Hindi gaps
The Hindi localization page said the untranslated report has no Hindi
section, and the language table said Hindi has no gaps in it. On main
f793044f83 the report lists 608 missing Hindi rows (28 menu strings,
30 tl! strings, 11 undo labels and 539 messages) and 68 more that every
checked language lacks (10 menu strings, 2 undo labels and 56 messages).
Both pages now give these counts, and the table's remaining work for
Hindi includes the reported rows.
2026-11-14 05:51:34 -08:00
dotCooCoo e086cf6d83 PDF, EPS and print: brush art painting onto the page keeps its path 2026-11-14 05:51:22 -08:00
dotCooCoo d02bef929a Merge main into fix/hu-message-rows 2026-11-14 05:50:45 -08:00
dotCooCoo 8f6c957e41 Merge main into fix/trace-downscale-alpha 2026-11-14 05:48:15 -08:00
dotCooCoo 648aedbe37 Type: a COLR glyph whose radial gradient draws no circle draws nothing
A radial gradient whose circles both have the same negative radius (as a
variable font's instance can give) draws no circle. A glyph painted with
only that gradient was read as no colour glyph, so layout drew its
outline instead. It is now colour art that draws nothing.
2026-11-14 05:45:32 -08:00
dotCooCoo a3d468b226 Docs: the localization page lists Indonesian once and marks Bosnian by what it translates
Indonesian had a row in both tables with different counts. Keep the row
in the key-language table and give it the counts on main at a47d7eec91.

Bosnian was described as having complete messages, but `bs` is not in
COMPLETE_MESSAGES. Its row now gives its counts and the menu, `tl!`
and undo gaps the untranslated report lists, and the measurement note
names Bosnian with the other languages outside COMPLETE_MESSAGES.
2026-11-14 05:45:14 -08:00
ncic cd89999939 Merge remote-tracking branch 'upstream/main' into pencil-cursors
# Conflicts:
#	docs/target-app-parity.md
2026-11-14 14:42:23 +01:00
dotCooCoo 4a517b0c4b Merge main into fix/monitor-profile-after-blending 2026-11-14 05:40:33 -08:00
dotCooCoo b718b756cb Merge main into fix/paste-copied-file-size-limit 2026-11-14 05:39:15 -08:00
BFlat 9f91f96f18 Merge pull request #7286 from dotCooCoo/fix/actions-load-reports-unknown-commands
Actions: Load Actions reports steps with unknown command ids
2026-11-14 20:39:02 +07:00
BFlat 8d1aa857d5 Merge pull request #7276 from dotCooCoo/fix/issue-6784
Contextual Task Bar: Smooth opens the Smooth slider with Direct Selection
2026-11-14 20:38:54 +07:00
BFlat 94237e00a9 Merge pull request #7268 from dotCooCoo/fix/ai-warped-image-pieces-cropped
.ai export: the pieces of a warped image write only the pixels they show
2026-11-14 20:38:46 +07:00
dotCooCoo 1304014e65 Merge main into fix/text-wrap-offset-refused 2026-11-14 05:38:38 -08:00
BFlat 035d22b3e2 Merge pull request #7476 from dotCooCoo/fix/svg-clip-path-effects
Effects: a clipping path's geometry effects shape the clip on the canvas
2026-11-14 20:38:37 +07:00
dotCooCoo e464b612cf Paste: a copied file over 64 MiB is skipped before it is read
Paste read a file copied in a file manager whole with std::fs::read,
with no size limit. It now checks the opened file's size against
MAX_BYTES (64 MiB, the limit the Wayland clipboard reads already use,
now shared) before reading its first bytes, and reads the rest with a
bounded reader, so a file that grows after the check is read to at
most one byte past the limit and skipped. A skipped file lets the next
copied file that is art paste, as an unreadable one does.
2026-11-14 05:38:36 -08:00
BFlat 678a64259d Merge pull request #7575 from dotCooCoo/fix/recovery-write-keeps-newer-status
Recovery: a recovery copy that finishes later keeps a newer status line
2026-11-14 20:38:29 +07:00
BFlat 31f6a9f15e Merge pull request #7367 from dotCooCoo/fix/ai-calligraphic-samples
.ai import: Calligraphic paths with pen samples keep their drawn look
2026-11-14 20:38:22 +07:00
BFlat 4bcb0026da Merge pull request #7569 from dotCooCoo/perf/3d-validation-builds-once
3D: effect validation builds each Extrude and Inflate solid once
2026-11-14 20:38:09 +07:00
BFlat 3c15649730 Merge pull request #7427 from dotCooCoo/fix/live-paint-expand-drawn-stroke
Live Paint: Expand keeps the faces and edges that draw
2026-11-14 20:37:59 +07:00
BFlat 9f55dbdd46 Merge pull request #7327 from dotCooCoo/fix/graph-label-paint-recolor
Graphs: recolor, stroke and gradient edits on labels are kept for their kind
2026-11-14 20:37:50 +07:00
BFlat ca0050be1b Merge pull request #7578 from dotCooCoo/fix/gradient-spot-colorants-drawn-stops
PDF and EPS export: gradients name only the spot inks of stops that color something
2026-11-14 20:37:42 +07:00
BFlat e5153bd625 Merge pull request #7574 from dotCooCoo/fix/issue-7411
Fix #7411: a selection grabbed by an anchor snaps it onto other paths
2026-11-14 20:37:33 +07:00
BFlat 9800d48e58 Merge pull request #7571 from dotCooCoo/fix/cmyk-tiff-alpha-16-bit
TIFF: a 16-bit CMYK or gray TIFF with alpha converts at 16 bits
2026-11-14 20:37:26 +07:00
BFlat a967f28548 Merge pull request #7421 from dotCooCoo/fix/art-brush-proportional-weight
Brushes: Scale Proportionately art grows with the stroke weight
2026-11-14 20:37:17 +07:00
BFlat c8230b469a Merge pull request #7422 from dotCooCoo/fix/dcs-placement-clip-keeps-file-clip
Place: Placement Options clip a DCS image inside its file's clipping path
2026-11-14 20:37:10 +07:00
BFlat 50ac301797 Merge pull request #7416 from dotCooCoo/fix/plugin-unlinked-stop-plates
Plug-ins: unlinking a gradient stop's spot swatch also clears its plates
2026-11-14 20:37:02 +07:00
BFlat a1d320917e Merge pull request #7438 from dotCooCoo/feat/ai-import-kinsoku-settings
.ai import: reads Kinsoku, Kinsoku Shori Type, Burasagari and Bunri-Kinshi
2026-11-14 20:36:54 +07:00
BFlat f793044f83 Merge pull request #7587 from dotCooCoo/fix/open-dimension-labels-own-fonts
Dimensions: an opened file redraws its labels in its own composite fonts
2026-11-14 20:36:46 +07:00
BFlat f8faab6597 Merge pull request #7429 from dotCooCoo/fix/live-shape-replay-negative-radius
Live Shapes: saved object.setLiveShape steps with a negative radius or out-of-range sides replay again
2026-11-14 20:36:38 +07:00
BFlat 487b60d63c Merge pull request #7577 from dotCooCoo/fix/hu-missing-message-rows
i18n: Hungarian translates 115 status and error messages it showed in English
2026-11-14 20:35:20 +07:00
BFlat 48b947692b Merge pull request #7576 from dotCooCoo/fix/svg-path-type-before-start
SVG import: type on a closed path wraps around past the path's start
2026-11-14 20:35:12 +07:00
BFlat 9aa328047a Merge pull request #7420 from dotCooCoo/fix/dxf-ellipse-doc-line
Docs: DXF export of a non-circular ellipse is listed as a native ELLIPSE
2026-11-14 20:35:00 +07:00
BFlat d2b4b5f956 Merge pull request #7410 from dotCooCoo/fix/de-missing-message-rows
i18n: German translates the messages no catalog had a row for
2026-11-14 20:34:51 +07:00
BFlat bbb5a38100 Merge pull request #7362 from dotCooCoo/fix/nl-message-rows
i18n: Dutch translates 1,813 of the status and error messages the untranslated report lists
2026-11-14 20:34:40 +07:00