Insert › Icons places seventy Lucide 1.56.0 stroke icons as custom
geometry: no fill, round caps, and a line width scaled from the
24-unit design. The gallery searches by name. SVG paths, including
arcs, are converted when the icon is inserted so the renderer strokes
the outline.
Co-authored-by: Cursor <cursoragent@cursor.com>
Name and Title Organization Chart with a title box per node (DiagramNode.title, smartArt.setNodes title; written as the title box's presentation point text and read back). Half Circle Org Chart draws two half rings per node. New layouts: Vertical Box List, Trapezoid List, Table List, Accent Process, Continuous Block Process, Basic Bending Process, Linear Venn, Stacked Venn, Nested Target. smartArt.fromText (Convert to SmartArt), smartArt.toText and smartArt.toShapes, with a Convert menu in SmartArt Design.
Co-authored-by: Cursor <cursoragent@cursor.com>
Organization Chart and Half Circle Organization Chart with elbow connectors; assistant nodes (Add Assistant, written as asst points and read back) sit beside their parent on a row of their own. Segmented Cycle, Multidirectional Cycle, Cycle Matrix, Segmented Pyramid and Basic Pie. Venn labels move further out so the third circle's no longer runs into the overlap.
Co-authored-by: Cursor <cursoragent@cursor.com>
animation.add stored any `option` string as given, and the renderer reads
direction codes letter by letter, so "fromBottom" (r, t, b) flew in from the
bottom right. The option is now checked against the effect's list; direction
words ("fromBottom", "topLeft", "upRight") map to the stored codes ("b", "lt",
"ru"), and anything else is an error listing the valid options.
animation.options applies the option to each target in its own effect's terms
and leaves targets without such an option alone.
Co-authored-by: Cursor <cursoragent@cursor.com>
The preedit was already stored in the cell. It is now laid out the same
way the cell is drawn, and the editor underlines it in place, thicker
under the part being converted. The caret and the input method's
candidate window sit in that cell. Notes stay an egui text field.
Co-authored-by: Cursor <cursoragent@cursor.com>
Text Cycle, Continuous Cycle, Horizontal Hierarchy, Grid Matrix, Gear and Funnel. Venn labels sit further out, clear of the overlaps. Files where Picture Accent Process was written as pList2 (with DeckCraft's process-category layout part) import as Picture Accent Process again. Round shapes' text shrinks to the inscribed width.
Co-authored-by: Cursor <cursoragent@cursor.com>
Node pictures are written on the data model's presentation points (blip through the data part's rels) and read back into the outline on import. Picture Accent Process is hProcess10, not pList2 (checked against PowerPoint's layout list); pList2 is now Horizontal Picture List. Brick Scene looks through an isometric camera. New layouts: Horizontal Picture List, Basic Timeline, Basic Venn, Basic Target.
Co-authored-by: Cursor <cursoragent@cursor.com>
Each shape's text shrinks so its longest word fits on a line (the pyramid tip no longer breaks words). Three picture layouts (Vertical Picture List, Picture Caption List, Picture Accent Process) with a picture placeholder per node and smartArt.picture to fill it. Five 3-D SmartArt Styles (Polished, Inset, Cartoon, Powder, Brick Scene) drawn with lit bevels, and Colorful Range and Gradient Range colours; all written to and read from the .pptx quickStyle and colors parts.
Co-authored-by: Cursor <cursoragent@cursor.com>
A pen reading of 1 is the full pen width. A lighter touch draws a thinner
stroke, and a zero reading stays visible at 8% of the pen. A mouse, a
missing or non-finite reading, and a stroke whose samples are all the old
placeholder 0.5 still draw at the pen width. PPTX keeps one width per
stroke: the mean of the samples for a pressured stroke, the pen width for
a legacy one. Tilt is not read.
Co-authored-by: Cursor <cursoragent@cursor.com>
Inset each pyramid band's text past the band's mid width so bullets no longer hang over the sloped sides; capped so the tip band still has room.
Co-authored-by: Cursor <cursoragent@cursor.com>
Layouts now include Vertical and Horizontal Bullet List, Basic Block List,
Basic/Chevron/Vertical/Step Up Process, Basic and Block Cycle, Basic Radial,
Basic and Inverted Pyramid (bands drawn as polygons so the slope and the
text stay right), Basic and Titled Matrix, and Hierarchy. Each layout says
which nodes each shape shows, so typed text maps back for any layout.
SmartArt Styles (flat, subtle, intense, white outline) and Change Colors
(colourful or one accent) are kept on the diagram, offered in the SmartArt
Design tab, and written to .pptx as quick style / colour definition ids
(and read back from them).
Co-authored-by: Cursor <cursoragent@cursor.com>
Radar and filled radar charts are drawn polar: spokes per category,
polygon gridlines and value labels up the first spoke. Stock charts
draw high-low lines with close dashes, or up/down bars between open
and close, and are saved as c:stockChart (hiLowLines, upDownBars)
instead of a line chart; c:upDownBars is read, and chart.options takes
upDownBars. New stock charts start as high-low-close and new combo
charts as columns with a line.
Co-authored-by: Cursor <cursoragent@cursor.com>
Export: a group with a diagram becomes a graphicFrame naming ppt/diagrams
data, layout, quickStyle and colors parts, plus the group's shapes as the
cached drawing (dsp). The data model is built from the outline (doc, node,
parTrans/sibTrans points and parOf links). A diagram read from a file keeps
its own layout, quick style and colour parts until its layout is switched.
Import: the outline is rebuilt from the data model's parOf tree, so
PowerPoint diagrams get the Text Pane. Their shapes stay the file's drawing
until the first outline edit (typed text isn't mapped back to nodes then).
Co-authored-by: Cursor <cursoragent@cursor.com>
Read the regionMap chartEx layout as a RegionMap chart (regions and
their colour values), write the part back as read while unchanged, and
when edited rebuild it with the original geography (projection, culture
and cached boundaries) carried over. With no map data in the repo, the
renderer draws each region as a value-coloured tile with a colour scale
and a note that the map itself is not drawn.
Co-authored-by: Cursor <cursoragent@cursor.com>
A SmartArt group now keeps its outline (Shape.diagram: layout + nodes with
levels) and its shapes are regenerated from it inside the group's child
rectangle. New commands: smartArt.nodes, setNodes, addNode (after, before,
above, below), removeNode, promote, demote and layout. Sub-points become
bullets in their parent's shape; the hierarchy layout is a real tree with
connector lines. Text typed into a diagram shape is read back first.
UI: a SmartArt Design contextual tab and a Text Pane (Enter adds a line,
Tab/Shift+Tab demote/promote, Backspace on an empty line removes it).
Co-authored-by: Cursor <cursoragent@cursor.com>
sp3d extrusionH (with extrusionClr, srgb or scheme) under a camera that
turns the shape now draws the shape's sides: its outline swept from the
back face to the front along the camera's view of the depth axis, in the
side colour shaded, before the face. camera::project3 projects points
off the shape's plane.
Read, keep and write every cx:lvl of a chartEx category dimension,
build a category tree from runs of parent labels, and draw treemaps as
nested squarified groups with banners and sunbursts as one ring per
level. Box & whisker honours quartileMethod="inclusive" (QUARTILE.INC)
on import, render, save and the chart.options command.
Co-authored-by: Cursor <cursoragent@cursor.com>
File › New and the start screen offer Briefing, Lesson, Pitch, Field Notes,
Quarterly and Evening Talk. Each is a few slides of our own text on one of
our themes. file.new takes template, and file.templates lists them. Passing
a theme as well, or blank, is refused. PowerPoint's large gallery is still
open.
Co-authored-by: Cursor <cursoragent@cursor.com>
pdf::master_text_pieces turns the text engine's layout of the notes
master's header, date, footer and page number into per-run, per-line
pieces scaled to the page; the Notes Page view paints them in their
sizes and colours. Stacked on #583.
Histograms and Paretos bin their observations (bin count, bin width or
Scott's rule) and draw as touching columns, a Pareto with its cumulative
line on a percentage axis. Box and whisker charts draw exclusive-quartile
boxes, 1.5 IQR whiskers, means and outliers per category group.
Edited and new Office 2016 charts are written as chartEx parts from the
model (with the plain-chart fallback), so a waterfall stays a waterfall.
The chart menus list all seven types, and chart.options sets bins and
waterfall totals.
Co-authored-by: Cursor <cursoragent@cursor.com>
An owned corpus slice checks combo charts with data labels, merged
tables with diagonal borders, and text columns, autofit, vertical text
and a WordArt warp. Trendlines (type, order, period, forecast,
intercept, equation and R²) are now read and written.
New owned corpus test on PowerPoint-shaped XML: a custom-theme deck with
shadow, glow, soft-edge and reflection effects and every common text and
shape hyperlink, and a two-master deck with its own themes and layouts.
The one loss it found: a:hlinkMouseOver on text runs was dropped; it is
now read into RunProps::hover and written back.
Arcs and pies; clip paths and regions clip to their convex outline instead
of the bounding rectangle; DrawString wraps to the layout width; glyph-index
driver strings in the Windows core fonts map back to text; metafile images
draw their nested picture.
Co-authored-by: Cursor <cursoragent@cursor.com>
The sorter draws a bar for each section. Add Section splits at the current
slide, double-click renames in place, the chevron collapses that section, and
dragging the bar moves the section and its slides together.
Co-authored-by: Cursor <cursoragent@cursor.com>
Notes pages and handouts lay out the master's header, date, footer and
page-number placeholders with deckcraft-text (render::place_master_texts),
so their text wraps in the placeholder and keeps mixed run formatting,
drawn as visible glyphs. Stacked on #580.
Builds on the EMF+ only reader: bitmap images (raw pixel formats and
compressed PNG/JPEG payloads) through DrawImage and DrawImagePoints,
DrawString and character-code DrawDriverString, hatch, texture, linear and
path gradient brushes, clip rectangles, paths and regions, and objects
split across several records.
Co-authored-by: Cursor <cursoragent@cursor.com>
Notes Master view draws the current slide inside the slide-image
placeholder. Header, date, footer and page-number text on notes pages
and handouts (PDF and the Notes Page view) uses the placeholder's
resolved font, size, weight, slant and colour, scaled with the page.
Stacked on #577.
PDF notes pages and the Notes Page view put the slide (keeping its aspect)
and the notes where the notes master's slide-image and body placeholders
are, scaled from the notes size to the paper, and print the master's
header, date, footer and page number. PDF handouts print the handout
master's. Decks without these masters keep the old layout. Stacked on #573.
An owned corpus opens, saves and reopens SmartArt and OLE kept as XML, audio and video bookmarks and trims, a section with a hidden slide, slide-number and date fields, ink, .glb models and animation repeat, bounce end and triggers. Relationship-bearing SmartArt and OLE, playback options and rewind stay with their open PRs.
EMF+ only files (no GDI fallback) used to render as empty pictures. Play
their vector records: solid brushes and pens, paths, rects, polygons,
lines, ellipses and Beziers under world/page transforms with save/restore
and containers. Dual files keep drawing their EMF records.
Co-authored-by: Cursor <cursoragent@cursor.com>
View ▸ Notes Master edits the notes master on a notes-size page (creating
PowerPoint's default placeholders if the deck has none); its tab toggles
header, date, slide image, body, footer and page number, sets the
background and closes the view. The PPTX writer now writes an edited
notes master as it is, even in a deck without notes. Stacked on #572.
View ▸ Handout Master opens the handout master (creating one with header,
date, footer and page-number placeholders if the deck has none) on a page
at the notes size, with a dashed preview of where 1-9 slides go. Its
contextual tab toggles the placeholders, sets the background and closes
the view. Stacked on #533, which reads and writes the handout master.
Format > Tabs opens from Home > Line Spacing > Tabs…, from the
Paragraph dialog, or by double-clicking a tab stop on the ruler. It
lists the selected paragraphs' tab stops (inches) with their
alignment. Set adds or replaces a stop at a position with Left,
Center, Right or Decimal alignment, Clear removes one, Clear All
removes them all, and you can change the default tab spacing. OK
applies everything in one undo step through format.tabs, which now
takes `set`. Cancel changes nothing.
The ruler's corner has PowerPoint's tab selector. A click cycles left,
center, right and decimal, and a click on the ruler then sets that
kind of stop. Presses on the rulers no longer reach the slide, so
they don't end text editing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Animations › Preview and Animation Pane › Play All play the current
slide on the canvas instead of opening the slide show. Escape or a
click stops playback. Transitions › Preview still opens the show.
Co-authored-by: Cursor <cursoragent@cursor.com>
While you edit text, the horizontal ruler now shows the text area's
span and the indent and tab markers of the paragraph with the caret.
- First-line indent: the top triangle.
- Hanging indent: the bottom triangle. Dragging it moves the left
indent while the first line stays put.
- Left indent: the box under the hanging triangle. Dragging it moves
both.
- Tab stops are drawn as left, centre, right and decimal marks.
- A click on the ruler adds a left tab, dragging a tab moves it, and
dragging a tab down off the ruler removes it.
Every change goes through a command (format.paragraph or the new
format.tabs). Each is one undo step and applies to the selected
paragraphs, and text editing goes on throughout. format.ruler is a
new query that reports the text area's position and the paragraph's
resolved indents and tabs. Rotated and vertical text show no markers.
Co-authored-by: Cursor <cursoragent@cursor.com>
krilla compressed each slide's print-resolution artwork on the export
thread; with its rayon feature (desktop only) the deflate runs in the
background while the next slide renders. The rendered pixels are also
moved into the image instead of copied.
The title bar's quick access buttons become a list the user controls:
a Customize menu with PowerPoint's common commands and Reset, right-click
any ribbon button to add it, right-click a toolbar button to remove it.
The toolbar is saved with the UI state; app.qat scripts it.
Co-authored-by: Cursor <cursoragent@cursor.com>
An owned corpus of those kinds survives open, save and reopen. A run's
inner shadow, reflection and soft edge were dropped, and a bevel preset
with no kept 3-D XML was not written back, so import and export now keep
them.
View > Guides used to paint two fixed centre lines. Guides now belong
to the presentation (DrawGuide, read from and written to p:guideLst in
viewProps.xml, in eighths of a point), so they survive a save and
reopen in PowerPoint.
- Turning Guides on gives a deck without guides PowerPoint's two
centre guides.
- A guide can be dragged anywhere away from shapes. It moves in whole
points, unless Alt is held or snapping is off, and shows its
distance from the centre while it moves.
- A guide dropped off the slide is deleted.
- The slide context menu's Grid and Guides submenu has Add Vertical
Guide and Add Horizontal Guide.
- While guides are shown, moving and resizing shapes snaps to them.
New commands guide.add, guide.move and guide.delete are undoable;
guide.list is a query.
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds edit.pasteSpecial. Keep Source Formatting bakes the copied shapes'
theme colours and theme fonts into fixed values (captured at copy time),
Picture draws the copied shapes into one PNG picture, and Keep Text Only
pastes plain text. Ctrl+Alt+V, Edit › Paste Special… and the Paste menu
open a Paste Special dialog.
Co-authored-by: Cursor <cursoragent@cursor.com>
The editor had one window, so looking at another slide meant leaving
the one you were editing. View › New Window opens one more window on
the same presentation. That window keeps its own slide and shows edits
from the first window. Closing it leaves the presentation open.
Arrange All is not included.
Co-authored-by: Cursor <cursoragent@cursor.com>
Shapes could only get an action from an action button preset or a
hyperlink to a URL or slide. Insert > Action > Action Settings… opens
PowerPoint's dialog with Mouse Click and Mouse Over tabs: None,
Hyperlink to (next, previous, first, last, last viewed, end show, a
custom show, a slide or a URL), Run program, Play media, and Highlight
click, starting from the shape's current setting.
The new shape.action command sets or clears the click or hover action
of the selected shapes and checks slides, custom shows and required
arguments.
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds text.find (match case, whole words; matches in shape text, table
cells and speaker notes) and text.replace (one match or all, as one
undo step, keeping the first run's formatting). Home gets Find and
Replace buttons, Ctrl+F / Ctrl+H and Edit › Find… / Replace… open a
Find and Replace dialog that steps through matches slide by slide.
Co-authored-by: Cursor <cursoragent@cursor.com>