Export vector PDF pages: ink as paths, text as text, images as images - #95
Merged
Conversation
marcosqlbi
force-pushed
the
feature/export-e3-editable-deck
branch
from
September 3, 2026 18:27
c20fe20 to
94a3ad7
Compare
marcosqlbi
force-pushed
the
feature/export-e4-vector-pdf
branch
from
September 3, 2026 18:27
18fb9bb to
87cb28f
Compare
marcosqlbi
force-pushed
the
feature/export-e3-editable-deck
branch
from
September 3, 2026 21:54
94a3ad7 to
6b416d9
Compare
marcosqlbi
force-pushed
the
feature/export-e4-vector-pdf
branch
from
September 3, 2026 21:54
87cb28f to
86bdf04
Compare
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
force-pushed
the
feature/export-e4-vector-pdf
branch
from
September 3, 2026 21:58
86bdf04 to
d738e3c
Compare
marcosqlbi
added a commit
that referenced
this pull request
Sep 3, 2026
## Why Phase E5 of [docs/export.md](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](docs/export-decisions.md). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Fable 5.1 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Phase E4 of docs/export.md, on top of #94 (base is the E3 branch; retarget to
mainonce it merges). A picture page is exact but soft under zoom and dead to selection. A reader who wants to copy the DAX off a page, or print at any size, needs the text to be text and the ink to be paths.What it does
Where the code is
SQLBI.Whiteboard.Export/ExportPage.cs:SlideInkElement,SlideStroke,SlidePoint.PdfDocumentWriter: draws elements into the rectangle the picture would have used; the font resolver serves both families in four styles.EditableSlidebuilds strokes in z-order when asked;ExportSettingsand the dialog gain the page content choice.The smaller calls are under E4 in docs/export-decisions.md; decision 26 is updated.
🤖 Generated with Claude Code