With Show Import Options off, a PSD or PSB file placed on its own and
embedded takes the conversion, hidden-layer and Import Slices choices
made last in PSD Import Options, as text and DXF files take theirs.
An importSlices or hiddenLayers the params give is kept. Files from
bytes, which have no file to link to, are embedded even when the Place
dialog's Link is on, alone and in the place cursor. With Show Import
Options on, each PSD file of the place cursor asks for its options.
Automatic counted flat art's colors with a median cut that never splits a
box narrower than 24 levels, so evenly spaced levels about 17 apart (gray)
or 13 apart (sepia) shared boxes: 16 clean gray levels traced in 14 colors
and 16 sepia levels in 9.
When flat art's pixels fall in 2 to 16 histogram bins, each holding at
least the share a color needs to be counted, and every two bins lie at
least 12 levels apart on some channel, Automatic now takes one color per
bin. If mixed-color merging then finds two of those colors mixed through
each other (dithering, or a thin region beside a close level), the picture
is counted by median cut as before, with rare colors added.
Anti-aliased art whose levels lie more than 20 apart is counted level by
level too, because its blended edge pixels are left out of the count.
Noisy pictures, anti-aliased art whose levels lie 20 or fewer apart and
pictures of 17 levels or more are counted as before, and continuous-tone
classification is unchanged.
The Assign tab has a New Row button before Merge. With art selected it
adds a row with no current colors above the first selected row, or at
the top, with that row's new color, and selects it. Merge with the new
row first moves the other rows' current colors into it, and they take
its new color. The row shows an empty slot until then.
An empty row recolors nothing and does not count toward Colors. OK
sends it with the other rows. recolor.apply adds no library swatch for
it and gives a rewritten color group no color from it, in the dialog's
groupColors and in the command's default.
The Variables panel drew each variable as one "name · object" line in
the order the variables were defined, with no headers and no sorting.
The list now has three columns with headers: the type icon, Variables
and Objects. A click on a header sorts the list by that column, and a
second click reverses the order. The new command variable.sort {by:
name|object|type|none, descending?} sets the order, which is panel
state: not saved and not an undo step. variable.list lists the
variables in that order and reports it as sort. An unknown by, or a
descending that is not true or false, is an error.
A clipping path that paints a fill or stroke kept the geometry effects of
those fills and strokes live, so a geometry effect on the clip group or on
a group around it reshaped the path first and the fill's or stroke's
effect applied after it, on the canvas and in export alike. Unpainted
clipping paths already applied them first.
The clipping path now becomes one path per fill and stroke with those
effects applied, as an unpainted one does, in a group marked as such
pieces (`NodeExtras::clip_pieces`, saved with the document). `clip_paint`
paints that group's fill pieces behind the clipped art and its stroke
pieces over it, as the path paints its fills and strokes, also after an
effect around it turns a piece into a compound path or puts it in a group.
The clip group's visual bounds take in the stroke pieces' width, and HP-GL
export draws the clipping path once, in its stroke pieces.
An export of a painted clipping path with such effects in a clip group
without effects of its own also keeps its fill and stroke now, where the
baked pieces painted nothing.
While the Selection, Direct Selection or Group Selection tool moves the
selection, or the Gradient tool draws a vector, W and H show the change
in x and y, with the distance and the angle under them. A Scale tool
drag shows its percentages; a Rotate, Reflect or Shear tool drag shows
the center of the selection's box and its angles. The Zoom tool adds the
magnification and the Paintbrush the name of its brush.
W and H follow Use Preview Bounds. With several objects selected, the
panel shows only the fill, stroke and type values they share, and Show
Options adds a tint's swatch and percentage and a gradient's swatch name.
- Tool::readout and Readout (crates/tools/src/readout.rs).
- info.readout returns the selection's size and the tool's readout.
- Docs: docs/mcp.md, docs/ui-parity.md.
The 3D and Materials panel gets a Render Settings menu with Wireframe.
Extrude & Bevel, Revolve, Inflate and Rotate take a `render` parameter,
`{mode: "shaded" | "wireframe"}`. In wireframe mode the effect stays
live and draws the edges Expand as Wireframes gives, each once, as
0.5 pt black strokes with round joins, with no shadow or graphics. The
object's own opacity, blending mode and opacity mask apply to the mesh.
Commands that set wireframe mode are checked against the edges it
draws: the shaded surface's paint copies, graphics and shadow limits do
not refuse them. A `render` value that is not an object holding only a
valid `mode`, and `render` on the 3D (Classic) effects, are refused.
Docs: docs/three-d.md, docs/mcp.md, docs/effects-parity.md,
docs/target-app-parity.md.
A triple-click with the Live Paint Selection tool on a face now selects
every face of its group with that face's fill, and on an edge every edge
of its group that draws with that edge's stroke paint. Hidden faces and
edges are left out. Before, a triple-click selected only what its third
click selected.
With Shift held, the parts are toggled from the selection there was
before the clicks: the tool keeps what the double-click and the Shift
clicks of the series toggled, and the triple-click toggles those back.
docs/target-app-parity.md's Live Paint Selection line says so.
Replace measured the image inside a PSD or PSB file's clip group only
when the new file brought its own clipping path. A plain image placed
with `replace` over such a clip group took only the group's center and
came in at 100%, losing the image's scale and rotation. The image in
the group is now measured whenever the new art is an image, clipped or
not.
Read image resource 1050 (version 6 records and the version 7 and 8
descriptor) and turn each slice the file did not generate automatically
into a user slice with its name, type, link, target, message, alternative
text, cell text and background color.
- document.open takes importSlices (default true) with either layer
choice; file.place takes it (default true embedded, false linked; true
with link is an error) and moves and scales the slices with the placed
art in the same undo step. file.place.info, file.place.queue and
document.psdInfo report or pass it.
- PSD Import Options gains Import Slices, enabled for a file with slices,
independent of the conversion choice, and remembered with the other
choices; a file with slices asks even with fewer than two layers.
- Slices outside the canvas, and slice data that can't be read, are left
out with a warning while the art comes in. Counts, nesting and text
lengths read from the file are capped.