Files
docx-js/src/file/drawing/drawing.ts

58 lines
1.5 KiB
TypeScript
Raw Normal View History

import { IMediaData } from "file/media";
import { XmlComponent } from "file/xml-components";
import { Inline } from "./inline";
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,
};
export class Drawing extends XmlComponent {
2018-06-09 23:33:52 +01:00
private inline: Inline;
constructor(imageData: IMediaData, drawingOptions?: DrawingOptions) {
super("w:drawing");
if (imageData === undefined) {
throw new Error("imageData cannot be undefined");
}
const mergedOptions = {
...defaultDrawingOptions,
...drawingOptions,
};
2018-06-09 23:33:52 +01:00
if (mergedOptions.position === PlacementPosition.INLINE) {
2018-06-09 23:33:52 +01:00
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));
}
}
2018-06-09 23:33:52 +01:00
public scale(factorX: number, factorY: number): void {
this.inline.scale(factorX, factorY);
}
}