Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

4.8 KiB
Raw Permalink Blame History

Shape-Mask Transitions

This demo consists of three files that work together:

  • transitions-shapes.sh — Shell script that generates a 12-slide deck covering all shape-mask transition tokens.
  • transitions-shapes.pptx — The generated deck (1 cover + 4 direction-less + 4 in/out + 5 wheel spokes = 14 slides).
  • transitions-shapes.md — This file. Documents the three sub-families and their constraints.

Regenerate

cd examples/ppt/transitions
bash transitions-shapes.sh
# → transitions-shapes.pptx

Slides

Slide 1 — Cover (no transition)

officecli add transitions-shapes.pptx / --type slide
officecli add transitions-shapes.pptx /slide[1] --type shape \
  --prop x=0 --prop y=0 --prop width=33.87cm --prop height=19.05cm \
  --prop fill=1F3864
officecli add transitions-shapes.pptx /slide[1] --type shape \
  --prop text="Shape Transitions" --prop size=44 --prop bold=true \
  --prop color=FFFFFF --prop align=center \
  --prop x=2cm --prop y=7cm --prop width=29.87cm --prop height=4cm

Slides 25 — Direction-less geometric masks

The new slide reveals through a growing geometric shape. No in/out modifier is accepted.

for t in circle diamond plus wedge; do
  officecli add transitions-shapes.pptx / --type slide
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop x=0 --prop y=0 --prop width=33.87cm --prop height=19.05cm \
    --prop fill=C00000
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop text="$t" --prop size=44 --prop bold=true \
    --prop color=FFFFFF --prop align=center \
    --prop x=2cm --prop y=7cm --prop width=29.87cm --prop height=4cm
  officecli set transitions-shapes.pptx "/slide[N]" --prop transition="$t"
done

Passing -in/-out on a direction-less token is rejected:

Error: Transition 'circle' does not accept a direction modifier (got '-in').
Use plain 'transition=circle'.

Features: transition=circle, transition=diamond, transition=plus, transition=wedge

Slides 69 — In/Out direction masks

for combo in zoom-in zoom-out box-in box-out; do
  officecli add transitions-shapes.pptx / --type slide
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop x=0 --prop y=0 --prop width=33.87cm --prop height=19.05cm \
    --prop fill=2E75B6
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop text="$combo" --prop size=44 --prop bold=true \
    --prop color=FFFFFF --prop align=center \
    --prop x=2cm --prop y=7cm --prop width=29.87cm --prop height=4cm
  officecli set transitions-shapes.pptx "/slide[N]" --prop transition="$combo"
done

The default is -in; bare zoom/box round-trip as zoom/box. zoom-out/box-out round-trip with the suffix intact.

Note: box is a PowerPoint 2013+ "modern" transition. officecli writes it with an inline fade fallback so pre-2013 PowerPoint plays a graceful fade instead of nothing.

Features: transition=zoom-in, zoom-out, box-in, box-out

Slides 1014 — Wheel spoke counts

The same rotating-spoke wipe animation with different spoke counts.

for n_spokes in 1 2 3 4 8; do
  officecli add transitions-shapes.pptx / --type slide
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop x=0 --prop y=0 --prop width=33.87cm --prop height=19.05cm \
    --prop fill=7030A0
  officecli add transitions-shapes.pptx "/slide[N]" --type shape \
    --prop text="wheel-$n_spokes ($n_spokes spokes)" --prop size=44 --prop bold=true \
    --prop color=FFFFFF --prop align=center \
    --prop x=2cm --prop y=7cm --prop width=29.87cm --prop height=4cm
  officecli set transitions-shapes.pptx "/slide[N]" --prop transition="wheel-$n_spokes"
done

The integer suffix (132) is the spoke count, not a duration. To set both: wheel-8-1500 (8 spokes + 1500 ms duration). wheel-4 collapses to bare wheel on readback.

Features: transition=wheel-1, wheel-2, wheel-3, wheel-4 (=bare wheel), wheel-8

Complete Feature Coverage

Sub-family Tokens Direction modifier
Direction-less geometric circle, diamond, plus, wedge None (error if provided)
In/Out direction zoom-in, zoom-out, box-in, box-out -in (default) / -out
Spoke count wheel-1 .. wheel-8 (any 132) Integer suffix = spoke count

Inspect the Generated File

officecli query transitions-shapes.pptx slide
officecli get transitions-shapes.pptx /slide[2]
officecli get transitions-shapes.pptx /slide[7]
officecli get transitions-shapes.pptx /slide[12]