Add floating image support and documentation

This commit is contained in:
Dolan
2019-01-09 01:16:47 +00:00
parent 3a1a21e498
commit 12ed54c9fd
11 changed files with 254 additions and 176 deletions

View File

@ -5,11 +5,6 @@ import { IFloating } from "./floating";
import { Inline } from "./inline";
import { ITextWrapping } from "./text-wrap";
export enum PlacementPosition {
INLINE,
FLOATING,
}
export interface IDistance {
readonly distT?: number;
readonly distB?: number;
@ -18,35 +13,25 @@ export interface IDistance {
}
export interface IDrawingOptions {
readonly position?: PlacementPosition;
readonly textWrapping?: ITextWrapping;
readonly floating?: IFloating;
}
const defaultDrawingOptions: IDrawingOptions = {
position: PlacementPosition.INLINE,
};
export class Drawing extends XmlComponent {
private readonly inline: Inline;
constructor(imageData: IMediaData, drawingOptions?: IDrawingOptions) {
constructor(imageData: IMediaData, drawingOptions: IDrawingOptions = {}) {
super("w:drawing");
if (imageData === undefined) {
throw new Error("imageData cannot be undefined");
}
const mergedOptions = {
...defaultDrawingOptions,
...drawingOptions,
};
if (mergedOptions.position === PlacementPosition.INLINE) {
if (!drawingOptions.floating) {
this.inline = new Inline(imageData.referenceId, imageData.dimensions);
this.root.push(this.inline);
} else if (mergedOptions.position === PlacementPosition.FLOATING) {
this.root.push(new Anchor(imageData.referenceId, imageData.dimensions, mergedOptions));
} else {
this.root.push(new Anchor(imageData.referenceId, imageData.dimensions, drawingOptions));
}
}