Skip to content

Export a board to PowerPoint, one slide per empty-space area - #92

Open
marcosqlbi wants to merge 1 commit into
mainfrom
feature/export-e1-powerpoint
Open

Export a board to PowerPoint, one slide per empty-space area#92
marcosqlbi wants to merge 1 commit into
mainfrom
feature/export-e1-powerpoint

Conversation

@marcosqlbi

Copy link
Copy Markdown
Collaborator

Why

A .wboard is one unbounded plane. Attendees ask for the board after a session, and a deck is what they can open, annotate, and search. Nothing in the file says where a slide begins, so most of this change is deciding that: docs/export.md is the plan and the alternatives, decision 26 the summary, and docs/export-decisions.md every smaller call made while building it, for review.

What it does

  • File → Export (Ctrl+E, mnemonic E on the File strip) opens a dialog that shows the board with the proposed areas outlined and numbered, and a handful of settings that change the preview live: slides per area or whole board, drawing or reading order, the gap that counts as a separation, the smallest text a slide may carry, 16:9 or 4:3, an overview slide, text containers in the notes.
  • Areas are cut only where the board is empty. A container and its linked strokes are one unit; every other stroke is one. A region is cut at the widest empty band on either axis, recursively, until it fits a slide at the requested text size or nothing can be cut, in which case it is scaled down and the dialog says by how much.
  • Each slide is a picture rendered by the same BoardSurface that draws the screen, at up to 3840×2160, so calligraphy, the highlighter, and SVG come out as seen. The slide title comes from the dominant container (the language service's own title for DAX and SQL), and the area's text containers go in the speaker notes so code can be copied.
  • An overview slide first shows the whole board with the areas numbered.

Where the code is

  • SQLBI.Whiteboard.Core/Export: the partitioner and layout options, covered by the smoke tests with synthetic boards.
  • SQLBI.Whiteboard.Export (new, net10.0, no WPF): the deck writer over DocumentFormat.OpenXml (MIT, managed-only, per decision 21). Added to the pipeline's signing step. The smoke tests open the produced deck.
  • SQLBI.Whiteboard/Export: the rasterizer that generalizes the preview.png renderer, the overlay, the exporter, and the dialog.

The version is not bumped; the changelog line is ready when a release is cut.

🤖 Generated with Claude Code

The board is one unbounded plane with no notion of a page. File > Export
cuts it into areas where it is empty: a container keeps its linked ink,
a stroke that spans two containers keeps them together, and a region is
cut at the widest empty band until it fits a slide at the smallest text
the person accepts. Each area becomes a picture slide rendered by the
same BoardSurface that draws the screen, with the text containers in the
speaker notes and an overview slide first. The dialog previews the areas
numbered on the board and updates as the settings move.

The partitioner lives in Core and is smoke-tested; the deck writer is a
new SQLBI.Whiteboard.Export assembly over the Open XML SDK, listed in the
signing step. docs/export.md is the plan, docs/export-decisions.md the
calls made while implementing it, decision 26 the summary.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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