Skip to content

API reference / Common / Engine types / ShapeNonVisualProperties

Interface: ShapeNonVisualProperties ​

The non-visual data of a shape-tree content: its stable identity and the per-application metadata some hosts attach, kept apart from the element's visual properties (geometry, fill, line).

One shared struct, but no single XML element. Each doc type wraps the same data in its own non-visual container on import/export, so this struct is deliberately element-agnostic and the format layer owns the mapping:

  • PresentationML shape → p:nvSpPr = a:cNvPr + p:cNvSpPr + p:nvPr (the [ShapePlaceholder] p:ph lives in p:nvPr);
  • SpreadsheetML drawing shape → xdr:nvSpPr;
  • WordprocessingML drawing → wp:docPr + wps:cNvPr;
  • a picture in any host → *:nvPicPr = a:cNvPr + *:cNvPicPr.

The common a:cNvPr name, alt-text and links are the part every host shares; the rest is a superset union. A field only one host uses — the PresentationML [ShapePlaceholder] most notably — still lives here in the shared model rather than being forked per doc type. Hosts that don't use it leave it unset, and each layout engine honors only the parts of the union it understands (presentation resolves the placeholder against its layout and master; spreadsheet and word ignore it).

The element's identity is its ShapeNodeId, carried beside this, not here. The file's a:cNvPr/@id is not in the model: the loader's OriginalIdMap pairs it with that id.

Properties ​

PropertyDescription
name
string
@name.
description
string | null
@descr — alt-text description.
title
string | null
@title.
hidden
boolean
@hidden.
placeholder
ShapePlaceholder | null
p:ph — the PresentationML placeholder this element fills, if any. Part of the superset union: only the presentation layout engine acts on it; other hosts leave it unset and ignore it.
media?
ShapeMedia
p:nvPr's a:EG_Media and its p14:media extension — the audio or video the element plays. PresentationML-only, like placeholder. Boxed: almost no element carries one.
hyperlink?
TextHyperlink
a:hlinkClick — where a click on the element goes, and what it does. The [TextHyperlink] a run's a:hlinkClick is: both are one CT_Hyperlink. Boxed, as media is.
hoverHyperlink?
TextHyperlink
a:hlinkHover — where the pointer resting on the element goes, and what it does (ECMA-376 §20.1.2.2.23).