diff --git a/src/file/drawing/drawing.ts b/src/file/drawing/drawing.ts index 55607fadbb..4646d0cc87 100644 --- a/src/file/drawing/drawing.ts +++ b/src/file/drawing/drawing.ts @@ -28,6 +28,8 @@ const defaultDrawingOptions: DrawingOptions = { }; export class Drawing extends XmlComponent { + private inline: Inline; + constructor(imageData: IMediaData, drawingOptions?: DrawingOptions) { super("w:drawing"); @@ -40,10 +42,16 @@ export class Drawing extends XmlComponent { ...drawingOptions, }; + if (mergedOptions.position === PlacementPosition.INLINE) { - this.root.push(new Inline(imageData.referenceId, imageData.dimensions)); + 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)); } } + + public scale(factorX: number, factorY: number): void { + this.inline.scale(factorX, factorY); + } } diff --git a/src/file/paragraph/run/picture-run.ts b/src/file/paragraph/run/picture-run.ts index fac9ae3354..711aa36f05 100644 --- a/src/file/paragraph/run/picture-run.ts +++ b/src/file/paragraph/run/picture-run.ts @@ -1,9 +1,11 @@ import { Drawing } from "../../drawing"; +import { DrawingOptions } from "../../drawing/drawing"; import { IMediaData } from "../../media/data"; import { Run } from "../run"; -import { DrawingOptions } from "../../drawing/drawing"; export class PictureRun extends Run { + private drawing: Drawing; + constructor(imageData: IMediaData, drawingOptions?: DrawingOptions) { super(); @@ -11,6 +13,20 @@ export class PictureRun extends Run { throw new Error("imageData cannot be undefined"); } - this.root.push(new Drawing(imageData, drawingOptions)); + this.drawing = new Drawing(imageData, drawingOptions); + + this.root.push(this.drawing); + } + + public scale(factorX: number, factorY?: number): void { + if (!factorX) { + factorX = 1; + } + + if (!factorY) { + factorY = factorX; + } + + this.drawing.scale(factorX, factorY); } }