Skip to content

Draw slides on the board as frames, which Export takes as they are - #96

Merged
marcosqlbi merged 1 commit into
mainfrom
feature/export-e5-frames
Sep 3, 2026
Merged

Draw slides on the board as frames, which Export takes as they are#96
marcosqlbi merged 1 commit into
mainfrom
feature/export-e5-frames

Conversation

@marcosqlbi

Copy link
Copy Markdown
Collaborator

Why

Phase E5 of docs/export.md, on top of #95 (base is the E4 branch; retarget to main once it merges). The automatic cut serves a board drawn without a deck in mind. Someone preparing a board for a deck wants to say where the slides are, and on a whiteboard the way to say it is to draw a rectangle. Decision 27 is the summary.

What it does

  • View → Frame (mnemonic A) adds a frame the size of the visible board, titled "Slide n", and selects it. Drag its edge to move it, the handle to resize it (aspect kept, so it stays slide-shaped), F2 to rename it, Delete to remove it, Bring to front and Send to back to reorder it, which under Drawing order is also the slide order.
  • A frame is selected by its edge or its title tab, never by its inside, so everything in it stays reachable to the pen and the mouse. Moving a frame moves nothing inside it: it is a label over content, read at export time.
  • A frame is not a container. It links no strokes and takes no part in the single-container test, so a frame drawn around a picture does not stop ink from linking to the picture.
  • Frames win in the partitioner: whatever sits inside one is that slide, with the frame's rectangle and title; frames come first; the rest of the board is cut as before. Frames appear in no export picture, no overview, and no preview.png.
  • The archive version moves to 6 only for a board that holds a frame. A board without one is still written as version 5 and keeps opening in every release since format 5.

Where the code is

  • Core/Model: FrameBoardObject with its edge-and-tab hit test; BoardDocument.HitTestTopContainer takes the zoom and reaches frames by their edge; BoardArchive writes and reads frame, choosing the version per board.
  • Core/Export/BoardPartitioner: frames first.
  • SQLBI.Whiteboard: BoardSurface draws frames over everything when asked and the rasterizer and preview renderer ask it not to; MainWindow gains the command, the rename, and frame cases in the gesture code; FrameTitleWindow is the rename dialog.
  • Smoke tests: archive round trip and version choice, partition with a frame, hit testing.

The smaller calls are under E5 in docs/export-decisions.md.

🤖 Generated with Claude Code

@marcosqlbi
marcosqlbi force-pushed the feature/export-e4-vector-pdf branch from 18fb9bb to 87cb28f Compare September 3, 2026 18:27
@marcosqlbi
marcosqlbi force-pushed the feature/export-e5-frames branch from f1cbb47 to 4dd812d Compare September 3, 2026 18:27
@marcosqlbi
marcosqlbi force-pushed the feature/export-e4-vector-pdf branch from 87cb28f to 86bdf04 Compare September 3, 2026 21:54
@marcosqlbi
marcosqlbi force-pushed the feature/export-e5-frames branch from 4dd812d to e06d354 Compare September 3, 2026 21:54
@marcosqlbi
marcosqlbi force-pushed the feature/export-e4-vector-pdf branch from 86bdf04 to d738e3c Compare September 3, 2026 21:58
@marcosqlbi
marcosqlbi force-pushed the feature/export-e5-frames branch from e06d354 to f2c9640 Compare September 3, 2026 21:58
Base automatically changed from feature/export-e4-vector-pdf to main September 3, 2026 22:03
Phase of docs/export.md squashed onto its base after the previous phase merged; the tree is unchanged.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
@marcosqlbi
marcosqlbi force-pushed the feature/export-e5-frames branch from f2c9640 to 3f4c881 Compare September 3, 2026 22:03
@marcosqlbi
marcosqlbi merged commit 4d7fe63 into main Sep 3, 2026
5 checks passed
@marcosqlbi
marcosqlbi deleted the feature/export-e5-frames branch September 3, 2026 22:07
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