#1506 paired each comment with a Chinese line; the codebase comments in English. Code and test data are unchanged.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
opencadcodec a35f43e reads R13/R14 LAYER records as plottable, the root
cause #1507 worked around on load; drop the host-side correction. Its
tests stay and now cover the codec fix end to end. They wrote one temp
file per version and ran in parallel, so each test now gets its own.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Brings in bounded object storage on DWG import (#62) and R13/R14 LAYER
records reading as plottable. Pins opencadcodec a35f43e, opencadkernel
ee41029, opencadgraph 8b8c7f3.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shares the benchmark harness between both suites, extracts the plan/batch/apply helpers out of the EXPLODE command arm, and adds the command_benchmarks target.
The LAYER record only grew a plot flag in R2000: R13/R14 carry frozen,
off, frozen-in-new-viewport and locked as four separate bits and nothing
else, so the reader has no bit to read and leaves `is_plottable` at the
`false` it starts from. Every layer of such a drawing then read as "don't
plot", the plot pass dropped every wire, and PLOT, the preview and
QUICKPRINT all rendered a blank sheet while the drawing still looked right
on screen — display and plot visibility are separate flags, so nothing
about the drawing itself looked wrong.
Restore what the format means by default — a layer plots unless a file
says otherwise — for the two versions that carry the four-bit record, on
both load entry points (bytes and path). R2000 and later keep the flag the
file stores, so a genuinely unplottable layer (DEFPOINTS) stays unplottable.
Tests: an R14 DWG written and read back keeps every layer plottable, the
path-based entry point does the same for R13, a modern file keeps the flag
it stored, and an R14 drawing tessellating to wires that are all
plot_visible locks the whole chain that used to blank the page.
DFKai-SB (kaiu.ttf), MingLiU and other early DynaLab fonts assemble each
ideograph from stroke components that only the TrueType instructions move
into place. ttf-parser's `outline_glyph` returns the raw, unhinted `glyf`
outline, so these fonts rendered with missing or displaced strokes
('自' drawn as '目'; 範, 直, 啟, 動 broken). FreeType calls them "tricky"
and always runs the interpreter for them.
Every non-test `outline_glyph` call site in ttf_glyph.rs (`glyph`,
`outline_char` - shared by both native fallback paths -, the web
`build_fallback`, and both `build_shaped` variants) now goes through
`outline_glyph_into`; `outline_char` takes the font data and face index
for that. When skrifa's `require_interpreter()` says the face
is hint-reliant, the glyph is hinted with the TrueType interpreter
(Target::Mono) at 512 ppem and scaled back to font units (x upem / 512);
every other font keeps the exact ttf-parser outline. The decision and the
HintingInstance are cached once per face, keyed by (byte length, face
index, head.checkSumAdjustment) because fontdb may hand out a new buffer
per call. The hinted path is recorded first and replayed only on success,
so a failed draw falls back to ttf-parser without a half-drawn glyph.
skrifa 0.42.1 is already in the lockfile (via hayro / glifo).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Brings in: unchanged ACSH extrusion history and DIMASSOC records kept
byte for byte; native dynamic-action field layouts corrected; evaluation
graph expressions written as owned; evaluated block metadata copy;
source class numbers kept on same-version legacy saves; explicit block
attribute flags kept.
The dynamic-action model now names its fields after their native
meaning, so the object summaries read parameter ids, the move offsets'
distance multiplier and the lookup table's columns. The empty
PropertiesTable variant is gone; such tables stay opaque objects.
Pins opencadcodec 4f7bd51, opencadkernel 8186605, opencadgraph 048c9c5.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The branch added by #1498 repeated finish_dispatch's focus and dynamic-input sync; call it instead.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
FlatPark installs the official AppImage through Flatpak extra-data and
follows new releases. The Flatpak works through the file chooser, so
external references and underlays need the home filesystem override.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
When a plugin command was dispatched, record_recent was called but
tabs[i].last_cmd was never set. Consequently, pressing Enter or Space on
an empty command line after running a plugin command failed to repeat it.
This records tabs[i].last_cmd on plugin dispatch and requests command-line
focus and dynamic input syncing when an interactive plugin command starts.
Since the stored text point became authoritative (85619f49), new linear
and aligned dimensions drew their text at the placeholder the commands
stored (the middle of the dimension line), so DIMTAD Above/Below and the
text offset had no effect; a style or override edit left the stale point
in place too.
reset_automatic_text_position clears the point of text the user did not
place, so it is laid out from the current settings. DIMLINEAR, DIMALIGNED,
DIMBASELINE, DIMCONTINUE and QDIM call it on creation; a DIMSTYLE edit, a
dimension override row and a style change call it for the dimensions they
touch. Loaded, untouched dimensions keep their pictured position.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Height and distance steps (PUSHPULL, CYLINDER, CONE, PYRAMID, BOX,
EXTRUDE) replaced the point with the cursor's screen mapping onto the
command axis, discarding an acquired 3D object snap. A genuine snap now
supplies its own coordinate along the axis, as axis grips already do.
Base steps after the first base point (BOX/WEDGE opposite corner and cube
size, CYLINDER/CONE/PYRAMID radius) read the cursor on the base plane
through that point. A base started on a raised face intersected the ray
with world XY instead, so in oblique views the footprint ran far past the
mouse.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Every glyph advanced by the face's letter spacing, including CJK glyphs a
style's big font or the TrueType fallback supplies. Their advances already
carry the gap (big font) or side bearings (TrueType), so with an LFF primary
such as iso each ideograph took 1.33 heights instead of one.
Face::spacing_after(ch) gives the tracking only to glyphs the stroke font
draws itself; every layout path uses it.
The 1.8-height widths in the report were the TEXT bounds estimate counting
UTF-8 bytes; opencadcodec 1109d52 counts characters.
Pins opencadcodec 1109d52, opencadkernel 8a246b0, opencadgraph 3c4af1c.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Inventor DWG exports place every sheet block with AcIdBlockReference,
which the codec skipped, so these drawings opened blank. opencadcodec
7c20aa7 decodes it as an INSERT and keeps the viewport each model-space
view reference is bound to.
Those view blocks overlap in model space, so a content viewport now also
hides model-space references bound to a different viewport. The handles
join the viewport's frozen-layer set (entity and layer handles never
collide), which the wire and render-graph visibility checks and every
per-viewport cache key already use.
Pins opencadcodec 7c20aa7, opencadkernel d71a828, opencadgraph 1543a5a.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Review of #1489: the chips and the chosen page tiles drew a check mark and
the import preview's previous / next buttons single guillemets as text.
The web build's bundled font has no check-mark glyph, so it showed as an
empty box; UI icons are SVG. The ticks use the CHECK icon in the chip's or
tile's accent colour and the page buttons the shared arrow icons.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Review of #1485: VPCLIP added the polygon it drew to the drawing before
checking its area, so a boundary with no usable area was refused but left
behind as a stray object. It is erased again. The VPCLIP prompts and
messages go through t! like the rest of mview.rs.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Review of #1484:
- The underlay's snap geometry became one hidden wire per segment, but
every piece took the whole page's bounding box, so each cursor move
visited every piece. Each piece now gets its own box.
- Assigning unlayered images to the last layer compared Debug strings of
every layered path and text per drawn item (quadratic, formatted anew
each time); the owners are keyed once in a map.
- The `snap` automation op used (0, 0, 0) for a missing point; it now
answers invalid_point. It also left the live snapper's base point set
to the query's; the base point is restored.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
#1488 added ImageModel::pixelated; the PDF export image check builds one
by hand and no longer compiled.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
#1481 skipped the shortcut whenever any text input had focus. The command
line is focused almost always, so copied drawing objects no longer pasted
with Ctrl+V. The probe now tells the command line apart from other fields:
another field keeps Ctrl+V to itself; over the command line copied objects
start PASTECLIP and plain text is left to the input's native paste; with
nothing focused text goes to the command line as before. PASTECLIP goes
through Message::Command again, which also closes the context menus. The
tests use the codec crate name and cover the command-line case.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The single Attach button gives way to Attach XREF (XATTACH, the external
reference picker and dialog) and Attach PDF (PDFATTACH, the PDF picker and
Attach PDF Underlay dialog) with their own icons. ATTACH stays available
as a command. The Turkish label reads "PDF Bağla".
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The PDF Underlay and External Reference ribbon tabs are gone. While only
PDF underlays are selected their tools (Display in Monochrome, Create
Clipping Boundary, Remove Clipping, Show Underlay, Enable Snap, External
References, Edit Layers, Import As Objects) sit on the right-edge toolbar,
the switches drawn as on while on; while only xrefs are selected the xref
tools do. Contrast and fade stay in Properties. Toolbar tooltips are
translated.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Every message that makes another document active (switching, opening,
creating or closing a tab) resyncs the contextual tab with that document's
selection, so a tab offered for one drawing no longer stays on another.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Attach PDF Underlay, Underlay Layers, PDF Import Settings and Import PDF
are laid out with rounded cards and accent titles, segmented controls for
path type, import layers and rotation, toggle chips for the on-screen
choices and import options, a page preview with previous/next for Import
PDF, always-visible file details, and a footer with help on the left and
the named action (Attach, Apply, Save, Import) on the right.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The chord direction step takes a typed angle and defaults to the last
segment's direction on Enter; CEnter's Angle and Length prompts carry the
direction switch hint as the reference words them.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Raster image textures use nearest magnification; PDF pages and OLE
pictures keep bilinear filtering.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- VPCLIP arc mode takes Angle, CEnter, Direction, Radius and Second pt with
the reference prompts, and CLose closes with a tangent arc; the arc math
is shared with PLINE.
- Viewport clip boundaries from MVIEW and VPCLIP stay visible; picking or
erasing a boundary takes its viewport along.
- XCLIP Clipdepth: a rejected front plane keeps the old front plane and
clears the back plane.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- PDFIMPORTIMAGEPATH names the image extraction folder: relative to the
PDF's folder (default "PDF Images"), absolute as given, "." for none.
- Every import of the session gets the next prefix (PDF_, PDF2_, PDF3_ ...),
also when the same file is imported again.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Shown and brought forward while only xrefs are selected: Edit Reference
In-Place, Open Reference, Create Clipping Boundary, Remove Clipping and
External References.
Co-Authored-By: Claude Opus 5.5 <[email protected]>