Change docx folder to more appropriate "file" folder
This commit is contained in:
27
src/file/drawing/drawing.spec.ts
Normal file
27
src/file/drawing/drawing.spec.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import { assert } from "chai";
|
||||
import * as fs from "fs";
|
||||
|
||||
import { Utility } from "../../tests/utility";
|
||||
import { Drawing } from "./";
|
||||
|
||||
describe("Drawing", () => {
|
||||
let currentBreak: Drawing;
|
||||
|
||||
beforeEach(() => {
|
||||
const path = "./demo/penguins.jpg";
|
||||
currentBreak = new Drawing({
|
||||
fileName: "test.jpg",
|
||||
referenceId: 1,
|
||||
stream: fs.createReadStream(path),
|
||||
path: path,
|
||||
});
|
||||
});
|
||||
|
||||
describe("#constructor()", () => {
|
||||
it("should create a Drawing with correct root key", () => {
|
||||
const newJson = Utility.jsonify(currentBreak);
|
||||
assert.equal(newJson.rootKey, "w:drawing");
|
||||
// console.log(JSON.stringify(newJson, null, 2));
|
||||
});
|
||||
});
|
||||
});
|
16
src/file/drawing/index.ts
Normal file
16
src/file/drawing/index.ts
Normal file
@ -0,0 +1,16 @@
|
||||
import { IData } from "../media";
|
||||
import { XmlComponent } from "../xml-components";
|
||||
import { Inline } from "./inline";
|
||||
|
||||
export class Drawing extends XmlComponent {
|
||||
|
||||
constructor(imageData: IData) {
|
||||
super("w:drawing");
|
||||
|
||||
if (imageData === undefined) {
|
||||
throw new Error("imageData cannot be undefined");
|
||||
}
|
||||
|
||||
this.root.push(new Inline(imageData.referenceId));
|
||||
}
|
||||
}
|
10
src/file/drawing/inline/graphic/graphic-data/index.ts
Normal file
10
src/file/drawing/inline/graphic/graphic-data/index.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { XmlComponent } from "../../../../xml-components";
|
||||
import { Pic } from "./pic";
|
||||
|
||||
export class GraphicData extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("a:graphicData");
|
||||
this.root.push(new Pic(referenceId));
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
import { XmlComponent } from "../../../../../../xml-components";
|
||||
import { Blip } from "./blip";
|
||||
import { SourceRectangle } from "./source-rectangle";
|
||||
import { Stretch } from "./stretch";
|
||||
|
||||
export class BlipFill extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("pic:blipFill");
|
||||
this.root.push(new Blip(referenceId));
|
||||
this.root.push(new SourceRectangle());
|
||||
this.root.push(new Stretch());
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { XmlAttributeComponent, XmlComponent } from "../../../../../../xml-components";
|
||||
|
||||
interface IBlipProperties {
|
||||
embed: string;
|
||||
}
|
||||
|
||||
class BlipAttributes extends XmlAttributeComponent<IBlipProperties> {
|
||||
protected xmlKeys = {
|
||||
embed: "r:embed",
|
||||
};
|
||||
}
|
||||
|
||||
export class Blip extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("a:blip");
|
||||
this.root.push(new BlipAttributes({
|
||||
embed: `rId${referenceId}`,
|
||||
}));
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
import { XmlComponent } from "../../../../../../xml-components";
|
||||
|
||||
export class SourceRectangle extends XmlComponent {
|
||||
|
||||
constructor() {
|
||||
super("a:srcRect");
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
import { XmlComponent } from "../../../../../../xml-components";
|
||||
|
||||
class FillRectangle extends XmlComponent {
|
||||
|
||||
constructor() {
|
||||
super("a:fillRect");
|
||||
}
|
||||
}
|
||||
|
||||
export class Stretch extends XmlComponent {
|
||||
|
||||
constructor() {
|
||||
super("a:stretch");
|
||||
this.root.push(new FillRectangle());
|
||||
}
|
||||
}
|
10
src/file/drawing/inline/graphic/graphic-data/pic/index.ts
Normal file
10
src/file/drawing/inline/graphic/graphic-data/pic/index.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { XmlComponent } from "../../../../../xml-components";
|
||||
import { BlipFill } from "./blip/blip-fill";
|
||||
|
||||
export class Pic extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("pic:pic");
|
||||
this.root.push(new BlipFill(referenceId));
|
||||
}
|
||||
}
|
23
src/file/drawing/inline/graphic/index.ts
Normal file
23
src/file/drawing/inline/graphic/index.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { XmlAttributeComponent, XmlComponent } from "../../../xml-components";
|
||||
import { GraphicData } from "./graphic-data";
|
||||
|
||||
interface IGraphicProperties {
|
||||
a: string;
|
||||
}
|
||||
|
||||
class GraphicAttributes extends XmlAttributeComponent<IGraphicProperties> {
|
||||
protected xmlKeys = {
|
||||
a: "xmlns:a",
|
||||
};
|
||||
}
|
||||
|
||||
export class Graphic extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("a:graphic");
|
||||
this.root.push(new GraphicAttributes({
|
||||
a: "http://schemas.openxmlformats.org/drawingml/2006/main",
|
||||
}));
|
||||
this.root.push(new GraphicData(referenceId));
|
||||
}
|
||||
}
|
10
src/file/drawing/inline/index.ts
Normal file
10
src/file/drawing/inline/index.ts
Normal file
@ -0,0 +1,10 @@
|
||||
import { XmlComponent } from "../../xml-components";
|
||||
import { Graphic } from "./graphic";
|
||||
|
||||
export class Inline extends XmlComponent {
|
||||
|
||||
constructor(referenceId: number) {
|
||||
super("wp:inline");
|
||||
this.root.push(new Graphic(referenceId));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user