Commit Graph
177 Commits
Author SHA1 Message Date
Dominik StrebelandClaude Opus 5.5 aa6f45ba2c Text: table text takes the master's other-text style
PowerPoint for Mac lays out a table's text in the master's other-text
style (p:otherStyle), while shapes and text boxes take the presentation's
default text style (p:defaultTextStyle). A synthetic deck with an
otherStyle of 14 pt and a defaultTextStyle of 26 pt, exported as PDF,
draws a table cell at 14 pt and a shape's and a text box's text at 26 pt.
DeckCraft laid cells out through a stand-in shape that wasn't a table, so
they took the default text style: a deck whose two styles differ (18 and
20 pt) drew its table text 2 pt too large and wrapped its cells.

master_list_style sends text in a non-placeholder table to otherStyle,
and Shape::table_cell builds the stand-in every cell layout uses (drawing,
row heights, text placement, the caret and selection in a cell) as a
table. The table shape itself resolves the same way, so the formatting
state of a selected table reports the size its cells draw at.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 08:49:42 +02:00
Gert Pellin 39e7fb1d4f Export: PNG with a transparent background (#784)
The renderer lays every slide background over white (as PowerPoint does),
so a PNG export was always opaque. A new transparentBackground option leaves
the slide background out (both the white underlay and the background fill),
so only what is on the slide is drawn over transparency. Shapes filled with
the background (useBgFill) still show it.

- render: RenderOpts::transparent_background
- engine: file.export {transparentBackground} (PNG only; other formats
  refuse it and write nothing), file.render {transparentBackground}
- UI: Transparent background checkbox in the Export dialog (PNG) and in
  File > Export > Change File Type > PNG; the web download honours it
- CLI: render --transparent
2026-10-16 16:30:52 +02:00
Brandon ThomasandClaude Opus 5.5 a15d93acdd Fix up #747 and #772 from review: docs keep their status headers (log rows stay), no milestone renaming; the bullet test no longer saves screenshots; clippy's as_chunks in the bullet render test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 22:00:48 -04:00
Brandon Thomas 561902d0b3 Merge PR #772 from hajdukste: Text: show gray list markers before typing
# Conflicts:
#	crates/render/src/tests.rs
#	crates/text/src/tests.rs
2026-10-14 21:59:44 -04:00
hajdukste 51de1ad2cf Text (#93): show gray markers on empty list paragraphs 2026-10-14 17:58:53 -07:00
Gert Pellin 57c03d36fc Render: decode a cropped picture for the whole image's size, not its box's (#762)
A picture was decoded at the size of its box on screen. A cropped picture
shows only part of the image, magnified, so it was decoded at a fraction of
the resolution it needs and stretched back up: Merge Shapes > Intersect,
which crops the picture to the new smaller box, left it visibly blurred.
Size the decode from the rectangle the whole image occupies instead.
2026-10-15 01:28:10 +02:00
Brandon ThomasandClaude Opus 5.5 67e1ab6373 Merge PR #438 from albayazid: Model: an exhausted id space refuses growth instead of duplicating ids (#407)
Conflicts resolved onto main's newer shape, and the PR's policy applied to
every alloc_id/add_media/new_slide call site main has grown since: commands
answer bad(cmd, NO_ID_SPACE) (slide.reuse, insert.zoom, SmartArt, photo
album, review.accept, handout/notes masters, master placeholders,
background/artistic/compress pictures, transition sound, ink to shape,
paste special, file.new templates); reid/bring_media/renumber/regenerate
and compare::adopt/accept are fallible; outline import keeps what fit.
Tests use expect() on the now-Option results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 16:24:26 -04:00
Brandon ThomasandClaude Opus 5.5 0997d1e4cd Merge PR #520 from NikitkaRa: Insert: Summary, Section and Slide Zoom with Return to Zoom
Fix-ups in the merge (review): zoom targets, sections and titles are looked up with get()
instead of indexing; Hyperlink literals carry both main's sound fields and zoom_return;
duplicated test statements left by the test-file union are removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:58:31 -04:00
Brandon Thomas 081c9fdc5e Merge the landing branch into land-r7
# Conflicts:
#	apps/deckcraft-cli/src/main.rs
#	apps/deckcraft-cli/tests/cli.rs
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/cmd/text.rs
#	crates/engine/src/lib.rs
#	crates/engine/src/tests.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/textures.rs
2026-10-14 15:34:15 -04:00
Brandon ThomasandClaude Opus 5.5 398d34c737 Fix up merged PRs: cargo fmt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:30:29 -04:00
Brandon Thomas 6b62aff539 Merge PR #225 from xmaks82: Render: an unfilled shape's glow follows its line
# Conflicts:
#	crates/render/src/lib.rs
2026-10-14 15:23:36 -04:00
Brandon ThomasandClaude Opus 5.5 708a22c51f Fix up merged PRs: Opaque shapes in tests carry #209's new parts field
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:22:27 -04:00
Brandon ThomasandClaude Opus 5.5 b9851d9329 Merge PR #611 from NikitkaRa: Draw: pen pressure scales ink width
Fix-ups in the merge (review): uniform-width and highlighter strokes are drawn as one path (on
the slide and in the live preview) so see-through ink doesn't darken where segments overlap;
segment pairs are destructured instead of indexed; tests that build pointer events set the new
pressure field.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:18:04 -04:00
Brandon ThomasandClaude Opus 5.5 621efd0290 Merge PR #673 from NikitkaRa: Charts: error bars
Fix-ups in the merge: error-bar statistics are computed once per series (was once per point,
quadratic on long series); reading custom amounts uses the chart-wide point budget (#480).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:14:06 -04:00
Brandon Thomas 3d0c19af45 Merge PR #151 from MarekSpodBiedry: Charts: a missing varyColors varies single-series bar colours by point (#143)
# Conflicts:
#	crates/pptx/src/read/chart.rs
#	crates/render/src/chart.rs
#	crates/render/src/tests.rs
2026-10-14 15:13:35 -04:00
Brandon ThomasandClaude Opus 5.5 0e51b7b1fc Fix up #67: use get_mut in the outline-morph cache instead of indexing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:57:31 -04:00
Brandon Thomas adf273bf4d Merge PR #67 from alexanderalber: Morph: align an outline morph once per transition, not every frame
# Conflicts:
#	crates/render/src/lib.rs
2026-10-14 14:56:45 -04:00
Brandon ThomasandClaude Opus 5.5 748b83a284 Fix up merged PRs: one re-export of the table cell helpers (#618 and #626 both added it)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 14:46:09 -04:00
Brandon Thomas b815568fd7 Merge PR #626 from NikitkaRa: Spelling: squiggles in table cells and speaker notes; UI-thread checking on the web
# Conflicts:
#	crates/engine/src/cmd/text.rs
#	crates/ui-egui/src/status.rs
2026-10-14 14:44:48 -04:00
Brandon Thomas 38e95d8c15 Merge PR #702 from NikitkaRa: Clipboard: rich text and pictures for Pages and Keynote
# Conflicts:
#	crates/engine/src/cmd/edit.rs
#	crates/ui-egui/src/lib.rs
2026-10-14 14:39:36 -04:00
Brandon Thomas 0c2c433ade Merge the chart and EMF+ metafile PRs integrated on land-r2 (#532 #537 #591 #594 #598 #602 #603 #638 #640 #662 #666 #669 #690 #582 #588 #633 #635)
# Conflicts:
#	crates/pptx/src/write/mod.rs
#	crates/pptx/tests/roundtrip.rs
2026-10-14 14:17:35 -04:00
Brandon Thomas 2009242055 Merge PR #684 from NikitkaRa: Export: a PNG or JPEG slide records 144 dpi at the default 2× size
# Conflicts:
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/tests.rs
2026-10-14 14:02:59 -04:00
Brandon Thomas 1360b283f3 Merge PR #633 from NikitkaRa: Metafile: EMF+ cardinal curves and region fills
# Conflicts:
#	crates/render/src/tests.rs
2026-10-14 13:57:48 -04:00
Brandon Thomas b3c9cc099c Merge the PPTX writer, notes/handout master, PDF and slide-show PRs integrated on land-r3 (#518 #531 #535 #533 #572 #573 #577 #580 #583 #592 #685 #528 #483 #490 #441 #671 #679 #649 #656 #660 #664 #224)
# Conflicts:
#	crates/engine/src/tests.rs
#	crates/model/src/lib.rs
#	crates/pptx/src/write/mod.rs
#	crates/render/src/lib.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/thumbs.rs
2026-10-14 13:56:41 -04:00
Brandon Thomas ad7eb45abe Merge PR #690 from NikitkaRa: Charts: a chart frame with no width no longer panics
# Conflicts:
#	crates/render/src/chart.rs
#	crates/render/src/tests.rs
2026-10-14 13:53:49 -04:00
Brandon ThomasandClaude Opus 5.5 bb3627f954 Fix up merged PRs: minor gridlines on a logarithmic axis
#666's minor gridlines stepped in value units, but #669 scales a log axis in
exponents of its base; map each minor step back through the base.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:53:06 -04:00
Brandon Thomas 6d1b01b73d Merge PR #669 from NikitkaRa: Charts: logarithmic value axes
# Conflicts:
#	crates/pptx/src/read/chart.rs
#	crates/render/src/chart.rs
2026-10-14 13:51:30 -04:00
Brandon Thomas 808087e6a5 Merge PR #666 from NikitkaRa: Charts: value-axis minor gridlines
# Conflicts:
#	crates/pptx/src/read/chart.rs
2026-10-14 13:50:53 -04:00
Brandon ThomasandClaude Opus 5.5 5089d615bf Fix up merged PRs: scatter trendlines follow the value x axis
#662 gives scatter and bubble charts one x scale over every series; #603's
trendlines still mapped x over each series' own extent, so a fit drifted off
its points. Use the chart's x scale where there is one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:50:37 -04:00
Brandon Thomas 256ad7057c Merge PR #662 from NikitkaRa: Charts: scatter and bubble charts get a value x axis
# Conflicts:
#	crates/render/src/chart.rs
2026-10-14 13:49:59 -04:00
Brandon ThomasandClaude Opus 5.5 0f28ac96ed Fix up merged PRs: reversed category axes and trendline forecasts agree
#640 orders category slots bottom-to-top on horizontal bars (or reversed via
c:orientation) while #603 pads the axis for trendline forecasts. Slots now
include the forecast padding on the right side, and trendlines map their
category positions through the same slot order as the bars.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:49:35 -04:00
Brandon Thomas 266da52dd9 Merge PR #640 from NikitkaRa: Charts: category axis orientation; horizontal bars list the first category at the bottom
# Conflicts:
#	crates/pptx/src/read/mod.rs
#	crates/pptx/src/write/chart.rs
#	crates/render/src/chart.rs
2026-10-14 13:48:09 -04:00
Brandon Thomas 593f55dfa1 Merge PR #638 from NikitkaRa: Charts: bar widths, column/bar point fills, smoothed lines and chart text colour as the file sets them
# Conflicts:
#	crates/pptx/src/read/chart.rs
#	crates/render/src/chart.rs
2026-10-14 13:47:34 -04:00
Brandon ThomasandClaude Opus 5.5 32a49e8bf6 Fix up merged PRs: a trendline caption in a tiny chart no longer panics
f64::clamp panics when the plot is narrower than the caption's minimum width;
use main's clamp_soft, as the rest of the chart code now does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:47:08 -04:00
Brandon Thomas 8f0640a7b2 Merge PR #603 from NikitkaRa: Render: draw chart trendlines
# Conflicts:
#	crates/render/src/chart.rs
2026-10-14 13:47:08 -04:00
Brandon Thomas b0345cfaf2 Merge PR #602 from NikitkaRa: Charts: polar radar, stock high-low lines and up/down bars, combo sample 2026-10-14 13:42:48 -04:00
Brandon Thomas 82ea49bcf1 Merge PR #598 from NikitkaRa: Charts: keep and draw region map charts 2026-10-14 13:42:45 -04:00
Brandon Thomas 7c46b5b76a Merge PR #594 from NikitkaRa: Charts: multi-level treemaps and sunbursts; inclusive box quartiles 2026-10-14 13:42:41 -04:00
Brandon Thomas 6057715c2a Merge PR #591 from NikitkaRa: Charts: histograms, Pareto and box and whisker; Office 2016 charts save as themselves
# Conflicts:
#	crates/render/src/chart.rs
#	crates/ui-egui/src/ribbon.rs
2026-10-14 13:42:41 -04:00
Brandon Thomas 9479e3b17c Merge PR #537 from NikitkaRa: Charts: draw waterfall, funnel, treemap and sunburst layouts
# Conflicts:
#	crates/model/src/chart.rs
#	crates/render/src/tests.rs
2026-10-14 13:38:34 -04:00
Brandon Thomas 4cd6412a3c Merge PR #583 from NikitkaRa: PDF master header/footer text wraps and keeps mixed formatting (stacked on #580)
# Conflicts:
#	crates/render/src/lib.rs
#	crates/render/src/placed.rs
2026-10-14 13:30:43 -04:00
Brandon Thomas 6af2b0ee21 Merge PR #618 from NikitkaRa: Text: underline an IME composition in a table cell
# Conflicts:
#	crates/render/src/lib.rs
2026-10-14 13:23:32 -04:00
Brandon Thomas 72238c1b6e Merge PR #678 from NikitkaRa: Merge Shapes: text merges as its letters, so a picture can fill them
# Conflicts:
#	crates/render/src/lib.rs
2026-10-14 13:22:48 -04:00
Brandon ThomasandClaude Opus 5.5 edaef792e0 Fix up merged PRs: Edit Points hits select their shape on right click; Hyperlink sound fields in #713's tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:11:36 -04:00
Brandon Thomas 337bd35a31 Merge PR #663 from NikitkaRa: Render: don't lay out table cell text that lands off the slide
# Conflicts:
#	crates/render/src/tests.rs
2026-10-14 13:09:05 -04:00
Brandon Thomas facca31f75 Merge PR #657 from NikitkaRa: Charts: draw axis titles 2026-10-14 13:09:05 -04:00
Brandon Thomas e7a106fcc3 Merge PR #639 from NikitkaRa: Render: cap dash count so a tiny dash on a huge shape can't crash on open 2026-10-14 13:09:03 -04:00
Brandon Thomas 2dcfbdaff4 Merge PR #600 from NikitkaRa: render: 3-D contours 2026-10-14 13:08:59 -04:00
Brandon Thomas d48d66b7f8 Merge PR #597 from NikitkaRa: render: 3-D light rigs and materials, per-side extrusion shading 2026-10-14 13:08:58 -04:00
Brandon Thomas 5d4e08733b Merge PR #595 from NikitkaRa: Render 3-D extrusions: sides under turned cameras (3-D slice 1)
# Conflicts:
#	crates/render/src/tests.rs
2026-10-14 13:08:58 -04:00