Text wrapping and borders for images

This commit is contained in:
Dolan
2019-01-10 02:10:20 +00:00
parent a37ff90bd7
commit 4541d7c977
11 changed files with 217 additions and 77 deletions

View File

@ -1,14 +1,14 @@
// http://officeopenxml.com/drwPicFloating-textWrap.php
import { IDistance } from "../drawing";
export enum TextWrapStyle {
export enum TextWrappingType {
NONE,
SQUARE,
TIGHT,
TOP_AND_BOTTOM,
}
export enum WrapTextOption {
export enum TextWrappingSide {
BOTH_SIDES = "bothSides",
LEFT = "left",
RIGHT = "right",
@ -16,7 +16,7 @@ export enum WrapTextOption {
}
export interface ITextWrapping {
readonly textWrapStyle: TextWrapStyle;
readonly wrapTextOption?: WrapTextOption;
readonly distanceFromText?: IDistance;
readonly type: TextWrappingType;
readonly side?: TextWrappingSide;
readonly margins?: IDistance;
}

View File

@ -1,10 +1,15 @@
// http://officeopenxml.com/drwPicFloating-textWrap.php
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
import { ITextWrapping, WrapTextOption } from ".";
import { ITextWrapping, TextWrappingSide } from ".";
import { IDistance } from "../drawing";
import { IMargins } from "../floating";
interface IWrapSquareAttributes extends IDistance {
readonly wrapText?: WrapTextOption;
readonly wrapText?: TextWrappingSide;
readonly distT?: number;
readonly distB?: number;
readonly distL?: number;
readonly distR?: number;
}
class WrapSquareAttributes extends XmlAttributeComponent<IWrapSquareAttributes> {
@ -18,13 +23,24 @@ class WrapSquareAttributes extends XmlAttributeComponent<IWrapSquareAttributes>
}
export class WrapSquare extends XmlComponent {
constructor(textWrapping: ITextWrapping) {
constructor(
textWrapping: ITextWrapping,
margins: IMargins = {
top: 0,
bottom: 0,
left: 0,
right: 0,
},
) {
super("wp:wrapSquare");
this.root.push(
new WrapSquareAttributes({
wrapText: textWrapping.wrapTextOption || WrapTextOption.BOTH_SIDES,
...textWrapping.distanceFromText,
wrapText: textWrapping.side || TextWrappingSide.BOTH_SIDES,
distT: margins.top,
distB: margins.bottom,
distL: margins.left,
distR: margins.right,
}),
);
}

View File

@ -1,6 +1,7 @@
// http://officeopenxml.com/drwPicFloating-textWrap.php
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
import { IDistance } from "../drawing";
import { IMargins } from "../floating";
interface IWrapTightAttributes {
readonly distT?: number;
@ -16,17 +17,17 @@ class WrapTightAttributes extends XmlAttributeComponent<IWrapTightAttributes> {
export class WrapTight extends XmlComponent {
constructor(
distanceFromText: IDistance = {
distT: 0,
distB: 0,
margins: IMargins = {
top: 0,
bottom: 0,
},
) {
super("wp:wrapTight");
this.root.push(
new WrapTightAttributes({
distT: distanceFromText.distT,
distB: distanceFromText.distB,
distT: margins.top,
distB: margins.bottom,
}),
);
}

View File

@ -1,6 +1,7 @@
// http://officeopenxml.com/drwPicFloating-textWrap.php
import { XmlAttributeComponent, XmlComponent } from "file/xml-components";
import { IDistance } from "../drawing";
import { IMargins } from "../floating";
interface IWrapTopAndBottomAttributes {
readonly distT?: number;
@ -16,17 +17,17 @@ class WrapTopAndBottomAttributes extends XmlAttributeComponent<IWrapTopAndBottom
export class WrapTopAndBottom extends XmlComponent {
constructor(
distanceFromText: IDistance = {
distT: 0,
distB: 0,
margins: IMargins = {
top: 0,
bottom: 0,
},
) {
super("wp:wrapTopAndBottom");
this.root.push(
new WrapTopAndBottomAttributes({
distT: distanceFromText.distT,
distB: distanceFromText.distB,
distT: margins.top,
distB: margins.bottom,
}),
);
}