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

242 lines
8.0 KiB
JSON

{
"$schema": "../_schema.json",
"format": "pptx",
"element": "picture",
"elementAliases": ["image", "img"],
"parent": "slide",
"operations": {
"add": true,
"set": true,
"get": true,
"query": true,
"remove": true
},
"paths": {
"positional": [
"/slide[N]/picture[M]"
]
},
"note": "Aliases: image, img. 'src' (alias 'path') required. Source resolved by ImageSource — file path, URL, data-URI, raw bytes.",
"extends": [
"_shared/picture",
"_shared/picture.docx-pptx",
"_shared/picture.pptx-xlsx"
],
"properties": {
"id": {
"type": "number",
"description": "cNvPr picture id; @id in /picture[@id=ID]. add honors a caller-supplied id so dump-replay keeps it stable for spTgt animation refs; immutable after creation.",
"add": true,
"set": false,
"get": true,
"readback": "integer shape id (cNvPr)",
"enforcement": "report"
},
"mediaType": {
"type": "string",
"description": "logical media kind derived from VideoFromFile / AudioFromFile presence under the picture. One of `picture`, `video`, `audio`. Surfaces only via the `image`/`video`/`audio`/`media` selectors.",
"add": false,
"set": false,
"get": true,
"readback": "`picture` | `video` | `audio`",
"enforcement": "report"
},
"x": {
"type": "length",
"description": "x offset in EMU/length form (e.g. 2cm). pptx absolute positioning.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop x=0",
"--prop x=1in"
],
"readback": "length string (FormatEmu)",
"enforcement": "report"
},
"y": {
"type": "length",
"description": "y offset in EMU/length form (e.g. 2cm). pptx absolute positioning.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop y=0",
"--prop y=1in"
],
"readback": "length string (FormatEmu)",
"enforcement": "report"
},
"width": {
"type": "length",
"description": "width — EMU/length form (e.g. 1.5cm). Required if not inferred from native ratio.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop width=5",
"--prop width=3in"
],
"readback": "length string",
"enforcement": "report"
},
"height": {
"type": "length",
"description": "height — EMU/length form (e.g. 1.5cm). Required if not inferred from native ratio.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop height=5",
"--prop height=2in"
],
"readback": "length string",
"enforcement": "report"
},
"rotation": {
"type": "number",
"description": "clockwise rotation in degrees. Mirrors shape/connector/group rotation — stored on the same a:xfrm rot attribute (degrees * 60000). Alias: rotate.",
"add": true,
"set": true,
"get": true,
"aliases": ["rotate"],
"examples": [
"--prop rotation=45",
"--prop rotation=-90"
],
"readback": "decimal degrees (e.g. 45 or 22.5)",
"enforcement": "report"
},
"flipH": {
"type": "boolean",
"description": "mirror the picture horizontally (left-right). Mirrors shape/connector flip — stored on the same a:xfrm @flipH attribute. Pass false to clear.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop flipH=true",
"--prop flipH=false"
],
"readback": "true when @flipH is set (omitted otherwise)",
"enforcement": "report"
},
"flipV": {
"type": "boolean",
"description": "mirror the picture vertically (top-bottom). Mirrors shape/connector flip — stored on the same a:xfrm @flipV attribute. Pass false to clear.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop flipV=true",
"--prop flipV=false"
],
"readback": "true when @flipV is set (omitted otherwise)",
"enforcement": "report"
},
"link": {
"type": "string",
"description": "click-hyperlink target attached to the picture's cNvPr (so the whole image is clickable). Accepts absolute URI (https://, mailto:), slide[N] for in-deck jumps, or named actions (firstslide, lastslide, nextslide, previousslide). Pass 'none' or empty to clear.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop link=https://example.com",
"--prop link='slide[3]'",
"--prop link=nextslide"
],
"readback": "URL, slide[N], or named action",
"enforcement": "report"
},
"tooltip": {
"type": "string",
"description": "hover tooltip text for the click-hyperlink. Applied together with `link` in a single set/add call; standalone tooltip change without link is not supported.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop link=https://example.com --prop tooltip=\"Open homepage\""
],
"readback": "string",
"enforcement": "report"
},
"opacity": {
"type": "number",
"description": "picture opacity. Input as a decimal 0.0-1.0 or a percent 2-100. Stored on the blip as a:alphaModFix @amt (value * 100000); readback emits the decimal 0.0-1.0 form.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop opacity=0.5",
"--prop opacity=80"
],
"readback": "decimal in [0.0, 1.0]",
"enforcement": "report"
},
"brightness": {
"type": "number",
"description": "luminance brightness in [-100, 100]. Stored on the blip as a:lum @bright (value * 1000). Combine with `contrast` to mirror PowerPoint's Picture Format → Corrections.",
"add": false,
"set": true,
"get": true,
"examples": [
"--prop brightness=40",
"--prop brightness=-20"
],
"readback": "decimal in [-100, 100]",
"enforcement": "report"
},
"contrast": {
"type": "number",
"description": "luminance contrast in [-100, 100]. Stored on the blip as a:lum @contrast (value * 1000). Combine with `brightness`.",
"add": false,
"set": true,
"get": true,
"examples": [
"--prop contrast=-30",
"--prop contrast=20"
],
"readback": "decimal in [-100, 100]",
"enforcement": "report"
},
"shadow": {
"type": "string",
"description": "outer shadow as `color-blur-angle-dist-opacity` (mirrors shape `shadow`). Input color is hex (with or without `#`, 6- or 8-digit `RRGGBBAA`) or a scheme name; blur/dist in points; angle in degrees; opacity 0-100. Readback emits `#RRGGBB-blur-angle-dist-opacity` (always `#`-prefixed 6-digit color; the alpha is carried solely by the trailing opacity field, never double-encoded as an alpha byte).",
"add": false,
"set": true,
"get": true,
"examples": [
"--prop shadow=000000-10-45-6-50",
"--prop shadow=accent1-8-90-4-60"
],
"readback": "`#RRGGBB-blur-angle-dist-opacity`",
"enforcement": "report"
},
"glow": {
"type": "string",
"description": "outer glow as `color-radius-opacity` (mirrors shape `glow`). color is hex (no `#`) or scheme; radius in points; opacity 0-100.",
"add": false,
"set": true,
"get": true,
"examples": [
"--prop glow=FF0000-12-75",
"--prop glow=accent2-8-50"
],
"readback": "`color-radius-opacity`",
"enforcement": "report"
},
"compressionState": {
"type": "string",
"description": "blip compression target (a:blip cstate attribute). PowerPoint's Picture Format → Compress Pictures → target use. Accepted values: email, print, hqprint, screen, none. `none` (the schema default) is suppressed on readback.",
"add": true,
"set": true,
"get": true,
"examples": [
"--prop compressionState=email",
"--prop compressionState=hqprint"
],
"readback": "email | print | hqprint | screen",
"enforcement": "report"
}
}
}