Underlays are rasterised for the view's scale; DGN V7 strokes one pixel wide

A page shown small was drawn from its full-size raster and thin lines broke
up into dots. Once a zoom settles on another quarter-octave step, PDF, DWF
and DGN underlays are rasterised again near their size on screen (never
above the full-size raster), frames are requested until that happens, and
the adjusted-pixel memo is kept per raster size. V7 element weights no longer
widen strokes, matching V8 models.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-09-28 13:49:33 +03:00
1 parent cb7860e50e
commit 1cbe89ef62
8 files changed
+108 -19

No files matched your search

+2
View File
@@ -850,6 +850,8 @@ impl OpenCADStudio {
self.tabs[i].scene.update(t - self.start);
// Dynamic dimensions keep their screen size across zoom bands.
self.tabs[i].scene.refresh_dynamic_dimension_scales(false);
// Underlays are rasterised again for the zoom once it settles.
self.tabs[i].scene.refresh_underlay_resolution(t);
// If the camera moved since we last synced, write it back to
// the document and mark the file dirty.
+4 -1
View File
@@ -2544,7 +2544,10 @@ impl OpenCADStudio {
// driven by input events, but once the cursor stops no event would fire
// the one full-quality frame that re-renders hatches — this tick does,
// then the scene-render cache holds it and the subscription auto-stops.
let nav_settle = if self.tabs[self.active_tab].scene.is_settling() {
// Underlay rasters follow the zoom once it settles; tick until then.
let nav_settle = if self.tabs[self.active_tab].scene.is_settling()
|| self.tabs[self.active_tab].scene.underlay_resolution_stale()
{
window::frames().map(Message::Tick)
} else {
Subscription::none()