You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
2.3 KiB

import { ControlComponent, ImageDisplay } from '../dataset/enum/Control'
import { ElementType } from '../dataset/enum/Element'
import { RowFlex } from '../dataset/enum/Row'
import { ICheckbox } from './Checkbox'
import { IControl } from './Control'
import { IColgroup } from './table/Colgroup'
import { ITr } from './table/Tr'
export interface IElementBasic {
id?: string;
type?: ElementType;
value: string;
}
export interface IElementStyle {
font?: string;
size?: number;
width?: number;
height?: number;
bold?: boolean;
color?: string;
highlight?: string;
italic?: boolean;
underline?: boolean;
strikeout?: boolean;
rowFlex?: RowFlex;
rowMargin?: number;
letterSpacing?: number;
}
export interface ITableAttr {
colgroup?: IColgroup[];
trList?: ITr[];
}
export interface ITableElement {
tdId?: string;
trId?: string;
tableId?: string;
}
export interface IHyperlinkElement {
valueList?: IElement[];
url?: string;
hyperlinkId?: string;
}
export type ITable = ITableAttr & ITableElement
export interface ISuperscriptSubscript {
actualSize?: number;
}
export interface ISeparator {
dashArray?: number[];
}
export interface IControlElement {
control?: IControl;
controlId?: string;
controlComponent?: ControlComponent;
}
export interface ICheckboxElement {
checkbox?: ICheckbox;
}
export interface ILaTexElement {
laTexSVG?: string;
}
export interface IDateElement {
dateFormat?: string;
dateId?: string;
}
export interface IImageElement {
imgDisplay?: ImageDisplay
}
export type IElement = IElementBasic
& IElementStyle
& ITable
& IHyperlinkElement
& ISuperscriptSubscript
& ISeparator
& IControlElement
& ICheckboxElement
& ILaTexElement
& IDateElement
& IImageElement
export interface IElementMetrics {
width: number;
height: number;
boundingBoxAscent: number;
boundingBoxDescent: number;
}
export interface IElementPosition {
pageNo: number;
index: number;
value: string,
rowNo: number;
ascent: number;
lineHeight: number;
metrics: IElementMetrics;
isLastLetter: boolean,
coordinate: {
leftTop: number[];
leftBottom: number[];
rightTop: number[];
rightBottom: number[];
}
}
export interface IElementFillRect {
x: number;
y: number;
width: number;
height: number;
}