-
Notifications
You must be signed in to change notification settings - Fork 185
ppt shape
Shapes are the fundamental building block of PowerPoint slides. Every visual element on a slide — text boxes, rectangles, arrows, flowchart symbols, callout bubbles — is a shape. Shapes support 70+ preset geometries, custom SVG-like paths, rich text formatting, fill/outline styling, effects (shadow, glow, reflection, soft edge), 3D transforms, animations, and hyperlinks.
Path: /slide[N]/shape[M]
- add - Add shapes with text, fill, position, effects
- get - Read shape attributes (position, styling, text)
- set - Modify properties, animation, sub-elements
All presets are set via the preset / geometry property. Default is
rect.
| Preset | Aliases | Description |
|---|---|---|
rect |
rectangle |
Rectangle (default) |
roundRect |
roundedrectangle |
Rounded rectangle |
ellipse |
oval |
Ellipse / circle |
triangle |
Isosceles triangle | |
rtTriangle |
righttriangle |
Right triangle |
diamond |
Diamond / rhombus | |
parallelogram |
Parallelogram | |
trapezoid |
Trapezoid | |
pentagon |
Pentagon | |
hexagon |
Hexagon | |
heptagon |
Heptagon | |
octagon |
Octagon | |
decagon |
Decagon | |
dodecagon |
Dodecagon |
| Preset | Description |
|---|---|
star4 |
4-point star |
star5 |
5-point star |
star6 |
6-point star |
star8 |
8-point star |
star10 |
10-point star |
star12 |
12-point star |
star16 |
16-point star |
star24 |
24-point star |
star32 |
32-point star |
| Preset | Aliases | Description |
|---|---|---|
rightArrow |
rarrow |
Right arrow |
leftArrow |
larrow |
Left arrow |
upArrow |
Up arrow | |
downArrow |
Down arrow | |
leftRightArrow |
lrarrow |
Left-right arrow |
upDownArrow |
udarrow |
Up-down arrow |
chevron |
Chevron | |
homePlate |
homeplate |
Home plate / pentagon arrow |
notchedRightArrow |
Notched right arrow | |
bentUpArrow |
Bent up arrow | |
curvedRightArrow |
Curved right arrow | |
stripedRightArrow |
Striped right arrow | |
uturnArrow |
U-turn arrow | |
circularArrow |
Circular arrow |
| Preset | Aliases | Description |
|---|---|---|
callout1 |
callout |
Rectangular callout |
callout2 |
Rectangular callout (variant 2) | |
callout3 |
Rectangular callout (variant 3) | |
wedgeRoundRectCallout |
Rounded rectangle callout | |
wedgeEllipseCallout |
Ellipse callout | |
cloudCallout |
Cloud callout |
| Preset | Aliases | Description |
|---|---|---|
flowChartProcess |
process |
Process |
flowChartDecision |
decision |
Decision (diamond) |
flowChartTerminator |
terminator |
Terminator (rounded) |
flowChartDocument |
document |
Document |
flowChartInputOutput |
flowchartio, io
|
Input/Output |
flowChartData |
data |
Data |
flowChartPredefinedProcess |
predefinedprocess |
Predefined process |
flowChartPreparation |
preparation |
Preparation |
flowChartManualInput |
manualinput |
Manual input |
flowChartManualOperation |
manualoperation |
Manual operation |
flowChartConnector |
flowconnector |
Connector (circle) |
flowChartOffpageConnector |
offpageconnector |
Off-page connector |
flowChartMultidocument |
multidocument |
Multi-document |
flowChartSort |
sort |
Sort |
flowChartMerge |
merge |
Merge |
flowChartExtract |
extract |
Extract |
flowChartDelay |
delay |
Delay |
flowChartDisplay |
display |
Display |
flowChartAlternateProcess |
alternateprocess |
Alternate process |
| Preset | Aliases | Description |
|---|---|---|
plus |
cross |
Plus / cross |
heart |
Heart | |
cloud |
Cloud | |
lightning |
lightningbolt |
Lightning bolt |
sun |
Sun | |
moon |
Moon | |
arc |
Arc | |
donut |
Donut ring | |
noSmoking |
No smoking / prohibited | |
blockArc |
Block arc | |
cube |
3D cube | |
can |
cylinder |
Cylinder / can |
line |
Straight line | |
ribbon |
Ribbon | |
ribbon2 |
Ribbon (variant) | |
brace |
leftbrace |
Left brace {
|
rightBrace |
Right brace }
|
|
leftBracket |
Left bracket [
|
|
rightBracket |
Right bracket ]
|
|
smileyFace |
smiley |
Smiley face |
foldedCorner |
Folded corner | |
frame |
Frame border | |
gear6 |
6-tooth gear | |
gear9 |
9-tooth gear |
Use SVG-like path commands in 0-100 relative coordinate space:
# Custom triangle
officecli add slides.pptx /slide[1] --type shape \
--prop "geometry=M 50,0 L 100,100 L 0,100 Z" \
--prop fill=4472C4Commands: M (move), L (line), C (cubic bezier), Z (close)
| Property | Default | Notes |
|---|---|---|
x / left
|
— | Horizontal position (EMU or units: cm, in, pt, px) |
y / top
|
— | Vertical position |
width / w
|
— | Width |
height / h
|
— | Height |
rotation / rotate
|
0 | Rotation angle in degrees |
flipH |
false |
Flip horizontally |
flipV |
false |
Flip vertically |
zorder / z-order
|
— |
front, back, forward, backward, or absolute position |
| Property | Default | Notes |
|---|---|---|
fill |
— | Hex color, scheme color (accent1-6, dk1, lt1, etc.), or none
|
gradient |
— |
"C1-C2", "C1-C2-angle", "C1@30-C2@70", "RADIAL;C1;C2", "PATH;C1;C2"
|
image / imageFill
|
— | Image file path for picture fill |
opacity |
1.0 | Fill opacity (0-1 or 0-100%) |
| Property | Default | Notes |
|---|---|---|
line / lineColor / line.color
|
— | Hex color, scheme color, or none
|
lineWidth / line.width
|
1pt | Width in pt (or with units: cm, in) |
lineDash / line.dash
|
solid |
solid, dot, dash, dashDot, lgDash, lgDashDot, lgDashDotDot
|
lineOpacity / line.opacity
|
1.0 | Outline opacity (0-1 or 0-100%) |
| Property | Default | Notes |
|---|---|---|
text |
— | Text content (\n for line breaks) |
font |
Calibri |
Font family |
size |
11pt | Font size (pt) |
bold |
false |
Bold |
italic |
false |
Italic |
color |
000000 |
Text color (hex or scheme) |
underline |
false |
true/single, double, heavy, dotted, dash, wavy, none
|
strikethrough / strike
|
false |
true/single, double, none
|
spacing / charSpacing
|
— | Character spacing in points |
baseline |
— |
super, sub, none, or percentage |
textFill / textGradient
|
— | Gradient fill on text: "C1-C2"
|
| Property | Default | Notes |
|---|---|---|
align |
left |
left, center, right, justify
|
valign |
center |
top, center/middle, bottom
|
margin / inset
|
— | Text padding: single value or "left,top,right,bottom"
|
marginLeft / marL
|
— | Paragraph left margin |
marginRight / marR
|
— | Paragraph right margin |
indent |
— | First-line indent |
lineSpacing |
— | Line spacing (pt or %) |
spaceBefore |
— | Space before paragraph (pt) |
spaceAfter |
— | Space after paragraph (pt) |
autoFit |
normal |
true/normal (shrink), shape (resize shape), false/none
|
list |
— |
bullet, dash, arrow, check, star, numbered, alpha, roman, none
|
textWarp / wordArt
|
— | Preset warp: wave, arch, circle, button, or full name |
| Property | Default | Notes |
|---|---|---|
shadow |
— |
"COLOR-BLUR-ANGLE-DIST-OPACITY" (e.g. "000000-6-315-4-50") or none
|
glow |
— |
"COLOR-RADIUS-OPACITY" (e.g. "0070FF-10-60") or none
|
reflection |
— |
tight, half, full, percentage, or none
|
softEdge |
— | Blur radius in points, or none
|
Note: When
fill=none, effects apply to text runs instead of the shape.
| Property | Default | Notes |
|---|---|---|
rot3d / rotation3d
|
— |
"rotX,rotY,rotZ" in degrees, or none
|
rotX, rotY, rotZ
|
— | Individual 3D rotation axes |
bevel / bevelTop
|
— | Preset or "preset-width-height". Presets: circle, relaxedInset, cross, coolSlant, angle, softRound, convex, slope, divot, riblet, hardEdge, artDeco
|
bevelBottom |
— | Bottom bevel (same presets) |
depth / extrusion
|
— | Depth in points, or none
|
material |
— |
warmMatte, plastic, metal, darkEdge, softEdge, flat, wire, powder, clear
|
lighting / lightRig
|
— |
threePt, balanced, soft, harsh, flood, contrasting, morning, sunrise, sunset
|
| Property | Default | Notes |
|---|---|---|
name |
TextBox {N} |
Shape name (morph uses !! prefix) |
alt / altText
|
— | Accessibility alt text |
link |
— | Hyperlink URL |
| Property | Default | Notes |
|---|---|---|
animation |
— |
"EFFECT[-DIRECTION][-DURATION][-TRIGGER][-delay=N][-easein=N][-easeout=N]" or none
|
motionPath |
— |
"M x y L x y E[-DURATION[-TRIGGER]]" (0-1 coordinates) or none
|
Effects: appear, fade, fly, zoom, wipe, bounce, float,
split, wheel, spin, grow, swivel, checkerboard, blinds,
bars, box, circle, diamond, dissolve, flash, plus,
random, strips, wedge, bold, wave, crawl, swipe
Classes: entrance (default), exit, emphasis
Shapes contain text structured as paragraphs and runs:
| Element | Path | Operations |
|---|---|---|
paragraph |
/slide[N]/shape[M]/paragraph[P] |
add, set |
run |
/slide[N]/shape[M]/run[K] |
add, set |
officecli get slides.pptx /slide[1]/shape[1]
officecli get slides.pptx /slide[1]/shape[1] --depth 2Selectors: shape, textbox, title
| Attribute | Description |
|---|---|
font / font!=
|
Filter by font name |
title |
Title placeholder shapes |
Pseudo: :contains("text")
officecli query slides.pptx 'shape:contains("Revenue")'
officecli query slides.pptx "title"
officecli query slides.pptx "shape[font!=Calibri]"officecli remove slides.pptx /slide[1]/shape[2]officecli move slides.pptx /slide[1]/shape[3] --to /slide[2]officecli add slides.pptx /slide[2] --from /slide[1]/shape[1]# Simple text box
officecli add slides.pptx /slide[1] --type shape \
--prop text="Hello World" \
--prop x=2cm --prop y=3cm --prop width=10cm --prop height=5cm
# Styled shape with gradient and shadow
officecli add slides.pptx /slide[1] --type shape \
--prop text="Important" \
--prop x=5cm --prop y=5cm --prop width=15cm --prop height=3cm \
--prop gradient=4472C4-1A1A2E \
--prop color=FFFFFF --prop size=24 --prop bold=true --prop align=center \
--prop "shadow=000000-6-315-4-50"
# Flowchart decision diamond
officecli add slides.pptx /slide[1] --type shape \
--prop preset=decision \
--prop text="Approved?" \
--prop x=8cm --prop y=6cm --prop width=6cm --prop height=4cm \
--prop fill=FFC000 --prop align=center
# Star with 3D bevel and glow
officecli add slides.pptx /slide[1] --type shape \
--prop preset=star5 \
--prop fill=FFD700 --prop line=FF8C00 --prop lineWidth=2 \
--prop x=10cm --prop y=2cm --prop width=5cm --prop height=5cm \
--prop "bevel=circle-8-8" --prop "glow=FFD700-8-60"
# Animated entrance
officecli add slides.pptx /slide[1] --type shape \
--prop text="Animated" \
--prop x=5cm --prop y=5cm --prop width=10cm --prop height=5cm \
--prop animation=flyIn-left-300-after-delay=200-easein=50
# Bulleted list
officecli add slides.pptx /slide[1] --type shape \
--prop "text=Item 1\nItem 2\nItem 3" \
--prop list=bullet \
--prop x=2cm --prop y=5cm --prop width=20cm --prop height=8cmBased on OfficeCLI v1.0.49