// http://officeopenxml.com/drwPicInline.php import { IMediaData, IMediaDataTransformation } from "@file/media"; import { BuilderElement, XmlComponent } from "@file/xml-components"; import { DocProperties, DocPropertiesOptions } from "./../doc-properties/doc-properties"; import { createEffectExtent } from "./../effect-extent/effect-extent"; import { createExtent } from "./../extent/extent"; import { createGraphicFrameProperties } from "./../graphic-frame/graphic-frame-properties"; import { Graphic } from "./../inline/graphic"; import { OutlineOptions } from "./graphic/graphic-data/pic/shape-properties/outline/outline"; type InlineOptions = { readonly mediaData: IMediaData; readonly transform: IMediaDataTransformation; readonly docProperties?: DocPropertiesOptions; readonly outline?: OutlineOptions; }; // // // // // // // // // // // // // export const createInline = ({ mediaData, transform, docProperties, outline }: InlineOptions): XmlComponent => new BuilderElement({ name: "wp:inline", attributes: { distanceTop: { key: "distT", value: 0, }, distanceBottom: { key: "distB", value: 0, }, distanceLeft: { key: "distL", value: 0, }, distanceRight: { key: "distR", value: 0, }, }, children: [ createExtent({ x: transform.emus.x, y: transform.emus.y }), createEffectExtent( outline ? { top: (outline.width ?? 9525) * 2, right: (outline.width ?? 9525) * 2, bottom: (outline.width ?? 9525) * 2, left: (outline.width ?? 9525) * 2, } : { top: 0, right: 0, bottom: 0, left: 0 }, ), new DocProperties(docProperties), createGraphicFrameProperties(), new Graphic({ mediaData, transform, outline }), ], });