Skip to content

fix(pptx): honor slide background for useBgFill - #2048

Merged
developer0hye merged 4 commits into
mainfrom
fix/issue-1879-use-bg-fill
Oct 10, 2026
Merged

developer0hye merged 4 commits into
mainfrom
fix/issue-1879-use-bg-fill

Conversation

@developer0hye

@developer0hye developer0hye commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

File submission policy

  • Submitted evidence uses the existing public fixture and satisfies the submission policy.

Summary

PPTX shapes with p:sp/@useBgFill="1" now use the resolved slide background instead of the style a:fillRef color. The parser resolves the background before it finalizes slide, layout, and master shapes, and the regression covers both a focused style-fill case and the public issue fixture.

Related issue

Related: #1879

Testing

  • cargo fmt --all -- --check — passed.
  • git diff --check origin/main...HEAD — passed.
  • Added parser regressions for a shape-level background fill and the issue fixture.
  • cargo test --locked --workspace --profile ci — passed locally after the shape-finalization refactor.
  • cargo clippy --locked --workspace --all-targets -- -D warnings — passed locally.
  • Shape finalization reuses SlideParseContext to avoid duplicating its inputs.
  • Integrated main 71e10311; hosted runtime CI passed on the matching integration tree. The fresh native PowerPoint layout, text, render and strict-cluster audit is complete.

Visual impact

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

Visual audit

  • Issue: PPTX: a useBgFill shape paints its style fillRef colour instead of the slide background #1879
  • Fixture: tests/fixtures/pptx/1-slide.pptx
  • Page(s): 1
  • Renderer and DPI: pdftoppm, 150 DPI
  • Evidence mode: fix
  • Layout audit report: assets/bugfixes/issue-1879/layout-audit.json
  • Render cluster reports: assets/bugfixes/issue-1879/render-clusters-page-1.json
  • Reference exporter differences: None
  • Fine-detail threshold: 1pt
  • Layout audit page count: Pass
  • Layout audit text flow: Pass
  • Layout audit visible fills: Pass
  • Layout audit rectangle geometry: Pass
  • Layout audit large shifts: Pass
  • Layout audit fine shifts: Pass
  • New follow-up issues found in this audit: None
  • Model vision findings: The previously purple panel now takes the white slide background, as p:sp/@useBgFill="1" specifies. PAGE 1, the right-side picture, both black rules, their flat endpoints, and the picture crop agree with native PowerPoint. The rules are solid 3.5pt and 1pt strokes (a:ln/@w=44450 and 12700); no dash, emphasis, rotation, clipping, or missing element was observed. Full pages, the pixel diff, and matched title/rule/picture crops show only boundary coverage and photo resampling fragments below the material-cluster floor. There are zero current material clusters.
  • GT: assets/bugfixes/issue-1879/gt.jpg
  • Before: assets/bugfixes/issue-1879/before.jpg
  • After: assets/bugfixes/issue-1879/after.jpg
  • Native: None

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
Element presence Matches GT
Position/size Matches GT
Rotation/flip No deviation observed
Fill Fixed — useBgFill panel is white like the slide background.
Stroke/border Matches GT
Shape outline geometry Matches GT
Text content Matches GT
Font family/weight/style Matches GT
Text color Matches GT
Alignment Matches GT
Line/paragraph spacing Matches GT
Clipping/overflow No deviation observed

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>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
Signed-off-by: Yonghye Kwon <developer.0hye@gmail.com>
@developer0hye
developer0hye marked this pull request as ready for review October 10, 2026 15:38
@developer0hye
developer0hye merged commit 61c39d1 into main Oct 10, 2026
26 of 27 checks passed
@developer0hye
developer0hye deleted the fix/issue-1879-use-bg-fill branch October 10, 2026 15:52
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