2017-12-30 21:18:55 +00:00
|
|
|
import { IMediaData } from "file/media";
|
2017-12-30 20:59:05 +00:00
|
|
|
import { XmlComponent } from "file/xml-components";
|
|
|
|
import { Inline } from "./inline";
|
2018-06-08 16:03:04 +02:00
|
|
|
import { Anchor } from "./anchor";
|
|
|
|
import { TextWrapping } from "./text-wrap";
|
|
|
|
import { Floating } from "./floating";
|
|
|
|
|
|
|
|
export enum PlacementPosition {
|
|
|
|
INLINE,
|
|
|
|
FLOATING,
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Distance {
|
|
|
|
distT?: number;
|
|
|
|
distB?: number;
|
|
|
|
distL?: number;
|
|
|
|
distR?: number;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface DrawingOptions {
|
|
|
|
position?: PlacementPosition;
|
|
|
|
textWrapping?: TextWrapping;
|
|
|
|
floating?: Floating;
|
|
|
|
}
|
|
|
|
|
|
|
|
const defaultDrawingOptions: DrawingOptions = {
|
|
|
|
position: PlacementPosition.INLINE,
|
|
|
|
};
|
2017-12-30 20:59:05 +00:00
|
|
|
|
|
|
|
export class Drawing extends XmlComponent {
|
2018-06-08 16:03:04 +02:00
|
|
|
constructor(imageData: IMediaData, drawingOptions?: DrawingOptions) {
|
2017-12-30 20:59:05 +00:00
|
|
|
super("w:drawing");
|
|
|
|
|
|
|
|
if (imageData === undefined) {
|
|
|
|
throw new Error("imageData cannot be undefined");
|
|
|
|
}
|
|
|
|
|
2018-06-08 16:03:04 +02:00
|
|
|
const mergedOptions = {
|
|
|
|
...defaultDrawingOptions,
|
|
|
|
...drawingOptions,
|
|
|
|
};
|
|
|
|
|
|
|
|
if (mergedOptions.position === PlacementPosition.INLINE) {
|
|
|
|
this.root.push(new Inline(imageData.referenceId, imageData.dimensions));
|
|
|
|
} else if (mergedOptions.position === PlacementPosition.FLOATING) {
|
|
|
|
this.root.push(new Anchor(imageData.referenceId, imageData.dimensions, mergedOptions));
|
|
|
|
}
|
2017-12-30 20:59:05 +00:00
|
|
|
}
|
|
|
|
}
|