Add floating image support and documentation
This commit is contained in:
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user