Skip to content

fix: paint chart axes before overlapping series markers - #1591

Merged
developer0hye merged 1 commit into
mainfrom
fix/issue-1578-chart-marker-paint-order
Sep 6, 2026
Merged

fix: paint chart axes before overlapping series markers#1591
developer0hye merged 1 commit into
mainfrom
fix/issue-1578-chart-marker-paint-order

Conversation

@developer0hye

@developer0hye developer0hye commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

Paint line/scatter axes and ticks before series so opaque markers cover overlapping axis rules, matching native Excel. Preserve all existing primitive geometry, paint, opacity and values; hollow and disabled markers keep the rule visible.

Related: #1578.

Testing

  • The compiled-frame regression fails before the fix for opaque/hollow circles at two overlapping values and passes after it; disabled-marker controls retain the axis.
  • cargo test --locked --workspace --no-fail-fast: 3,490 passed, 15 ignored. After updating to main 75d4046, cargo test --locked --workspace --lib passed 2,893 tests; all five two-page native probe outputs retain identical candidate paint traces.
  • cargo clippy --locked --workspace --all-targets -- -D warnings, cargo fmt --all -- --check, and git diff --check passed.
  • Five native Excel 16.112.3 cases: original, re-zip, red fill, no fill, disabled marker. All ten sheet PDFs passed integrity checks after recovering a final-quit AppleScript error; native/converter re-zip controls match. Every before/after paint primitive is preserved.
  • Five-page 300-DPI audit: all 2,052 material clusters have explicit passing dispositions. Layout and text-layer reports preserve baseline findings; default extraction retains baseline table reading-order differences and eight extra space-census entries; pdftotext -layout has matching non-whitespace text.
  • Documentation freshness review: PASS. See the evidence README and scripts/probes/issue-1578-marker-overlap.json for reproduction.

Visual impact

  • No rendered PDF change
  • Rendered PDF change or visual evidence added

Visual audit

Visual comparison

GT Before After
GT Before After

Required inspection

  • Rendered all evidence at 150 DPI or higher
  • Stored progressive JPEG quality 86 assets with metadata stripped
  • Used Codex/Claude vision to inspect the full GT/output pages, diff, and matched crops
  • Inspected matched region crops at full resolution
  • Ran compare_layout.py --audit --fine-shift PT and dispositioned every fine/large text-instance shift, rectangle geometry deviation, painted-text visibility mismatch, and visible-fill occlusion
  • Ran compare_render.py --cluster-report PATH --strict-clusters and dispositioned every material 5% fuzz diff cluster by explicit ID
  • Inventoried hairlines and border dash styles
  • Inventoried font weight, italic, and underline emphasis

Deviation audit

Check Result
Page count/order Matches GT: original two sheets plus three deliberate marker probes
Element presence Remaining: #1566 omitted worksheet separators. Marker-disabled control intentionally has no circle.
Position/size Remaining: #1272 chart frame, #1542 drawing origin, #1543 fitted column width, #1545 row text, #1550 title height, #1552 footer, #1577 cached marker value.
Rotation/flip No deviation observed
Fill Fixed: opaque markers cover the category rule; hollow controls remain transparent.
Stroke/border Remaining: #1564 worksheet rule thickness/placement, #1566 missing separators, #1590 series round caps/joins. Fixed: category rule paints underneath series. Gray chart axes, teal totals and brown expense rules retain paint; no new source dash loss.
Shape outline geometry Remaining: #1272 chart frame, #1550 title band, #1590 series cap/join. Marker diameter and outline preserved.
Text content Matches GT: non-whitespace sequence under pdftotext -layout; both contain narrow-cell ##### totals. Default extraction retains baseline table reading-order differences and eight extra space-census entries.
Font family/weight/style Matches GT: Arial bold title, Trebuchet instructions/expense labels, Cambria headings/months and Aptos footer retain emphasis.
Text color Matches GT: white title, teal headings/totals, gray body, orange negatives and brown expense labels.
Alignment Remaining: #1542 drawing labels, #1545 row seating, #1550 title/content, #1552 footer, #1577 marker origin.
Line/paragraph spacing Remaining: #1545 row seating and #1551 wrapped note pitch.
Clipping/overflow No deviation observed beyond matching native narrow-cell ##### totals.

Checklist

  • Commits include a Signed-off-by line
  • PR scope contains one root cause
  • Remaining converter or harness deviations each reference an open issue

Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
@developer0hye
developer0hye merged commit 38a6927 into main Sep 6, 2026
18 checks passed
@developer0hye
developer0hye deleted the fix/issue-1578-chart-marker-paint-order branch September 6, 2026 07:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant