import { Rectangle } from "../../common/vline"; import { ZTable } from "../z_table"; import { HorizontalAnchor, VerticalAnchor } from "../../common/enums"; import { ITextBox } from "../i_object"; export type CellOption = { cellClass?: string; borderClass?: string; }; export type DirectionType = "top" | "left" | "right" | "bottom"; export declare enum DirectionType2 { topLeft = 0, bottomLeft = 1, bottomRight = 2, topRight = 3 } export type BorderCoodinateType = "x1" | "x2" | "y1" | "y2"; /** * セルをSVGで表現するためのクラスです。 */ export declare class Cell implements ITextBox { constructor(parent: ZTable, _px: number, _py: number, cellMap: Map, option?: CellOption); updateSurfaceWithoutSVGText(): boolean; get stableFlag(): boolean; private set stableFlag(value); get childrenStableFlag(): boolean; get objectID(): string; getBorderPosition(borderType: DirectionType, positionType: BorderCoodinateType): number; private recomputeDefaultProperties; private __currentClass; /** * このセルが強調してるかどうかを返します。 */ get isEmphasized(): boolean; set isEmphasized(v: boolean); /** * テキストのフォントサイズを返します。 */ get fontSize(): number; get primitivePaddingLeft(): number; get primitivePaddingRight(): number; /** テキストとセル間の左のパディング値を返します。 */ get paddingLeft(): number; /** テキストとセル間の右のパディング値を返します。 */ get paddingRight(): number; /** テキストとセル間の上のパディング値を返します。 */ get paddingTop(): number; /** テキストとセル間の下のパディング値を返します。 */ get paddingBottom(): number; get horizontalAnchor(): HorizontalAnchor; /** テキストの水平方向の配置設定を設定します。 */ set horizontalAnchor(value: HorizontalAnchor); /** テキストの垂直方向の配置設定を返します。 */ get verticalAnchor(): VerticalAnchor; /** テキストの垂直方向の配置設定を設定します。 */ set verticalAnchor(value: VerticalAnchor); static readonly cellXName = "data-cellX"; static readonly cellYName = "data-cellY"; static readonly borderXName = "data-borderX"; static readonly borderYName = "data-borderY"; static readonly borderTypeName = "data-borderType"; static readonly masterIDName = "data-masterID"; static readonly masterDiffXName = "data-masterDiffX"; static readonly masterDiffYName = "data-masterDiffY"; private tmpStyle; private _table; /** 所属しているTableを返します。 */ get table(): ZTable; private _svgSurface; /** セルの背景を表現しているSVGRectElementを返します。 */ get svgSurface(): SVGRectElement; private _svgText; /** セルのテキストを表現しているSVGTextElementを返します。 */ get svgText(): SVGTextElement; private _svgGroup; /** セルを表しているSVGGElementを返します。 */ get svgGroup(): SVGGElement; private _observer; private _observerFunc; private get innerExtraPaddingLeft(); private get innerExtraPaddingRight(); /** * このセルのx座標とマスターセルとのX座標の差分を返します。 */ get masterDiffX(): number; /** * このセルのx座標とマスターセルとのX座標の差分を設定します。 */ private setMasterDiffX; /** * このセルのy座標とマスターセルとのy座標の差分を返します。 */ get masterDiffY(): number; /** * このセルのy座標とマスターセルとのy座標の差分を設定します。 */ private setMasterDiffY; /** * マスターセルのx座標を返します。 */ get masterCellX(): number; /** * マスターセルのx座標を設定します。 */ private setMasterCellX; /** * マスターセルのy座標を返します。 */ get masterCellY(): number; /** * マスターセルのy座標を設定します。 */ private setMasterCellY; /** * マスターセルのIDを返します。 */ get masterObjectID(): string; /** * マスターセルを返します。 */ get master(): Cell; /** 単位セルを基準にした自身のX座標を返します。 */ get cellX(): number; /** 単位セルを基準にした自身のX座標を設定します。 */ set cellX(value: number); /** 単位セルを基準にした自身のY座標を返します。 */ get cellY(): number; /** 単位セルを基準にした自身のY座標を設定します。 */ set cellY(value: number); /** CellがDocumentのDOMに所属しているかどうかを返します。 */ get isLocated(): boolean; /** * このセルがマスターセルのときに限りTrueを返します。 */ get isMaster(): boolean; /** * このセルが奴隷セルのときに限りTrueを返します。 */ get isSlave(): boolean; get isErrorCell(): boolean; /** * グループセルの行数を返します。 */ get GroupRowCount(): number; /** * グループセルの列数を返します。 */ get GroupColumnCount(): number; /** * グループセルを構成しているセルを2次元配列で返します。 */ get cellsInGroup(): Cell[][]; /** * グループセルを構成しているセルを配列で返します。 */ get cellArrayInGroup(): Cell[]; /** * このセルがグループセルであるときに限りTrueを返します。 */ get isSingleCell(): boolean; /** * マスターセルかつ行数が1のときに限りTrueを返します。 */ get isMasterCellOfRowCountOne(): boolean; /** * マスターセルかつ列数が1のときに限りTrueを返します。 */ get isMasterCellOfColumnCountOne(): boolean; /** セルのX座標を返します。 */ get x(): number; /** セルのX座標を設定します。 */ set x(value: number); /** セルのY座標を返します。 */ get y(): number; /** セルのY座標を設定します。 */ set y(value: number); /** セルの幅を返します。 */ get width(): number; /** セルの幅を設定します。 */ set width(value: number); /** セルの高さを返します。 */ get height(): number; /** セルの高さを設定します。 */ set height(value: number); /** セルの領域を表すRectangleを返します。領域の基準は属しているテーブルのSVGGElementです。 */ get region(): Rectangle; /** * グループセルの横幅を返します。 */ get computeGroupWidth(): number; /** * グループセルの縦幅を返します。 */ get computeGroupHeight(): number; /** * 2つの線分がオーバーラップしている部分の線分を返します。 * @param v * @param w */ private static computeOverlapRange; /** * 2つの線分がオーバーラップしているときに限り、その結合した線分を返します。 * @param v * @param w */ static computeDisjunction(v: [number, number], w: [number, number]): [number, number] | null; /** * このグループセルの左上のX座標と右上のX座標を返します。 */ get groupColumnRange(): [number, number]; /** * このグループセルの左上のY座標と左下のY座標を返します。 */ get groupRowRange(): [number, number]; computeBorderLength2(dir: DirectionType): number; /** セルの上にある枠を返します */ get svgTopBorder(): SVGLineElement; /** セルの左にある枠を返します */ get svgLeftBorder(): SVGLineElement; /** セルの右にある枠を返します */ get svgRightBorder(): SVGLineElement; /** セルの下にある枠を返します */ get svgBottomBorder(): SVGLineElement; /** 未定義 */ get logicalWidth(): number; /** 未定義 */ get logicalHeight(): number; private computeSidePosition; /** * 与えられた方向にあるセルを返します。 * @param direction */ getNextCell(direction: DirectionType): Cell | null; /** * 与えられた方向にある、このセルが属しているグループセルとは異なる最初のグループセルのマスターセルを返します。 * @param direction */ getNextMasterCell(direction: DirectionType): Cell | null; /** 上にあるセルを返します。 */ get topCell(): Cell | null; /** 左にあるセルを返します。 */ get leftCell(): Cell | null; /** 右にあるセルを返します。 */ get rightCell(): Cell | null; /** 下にあるセルを返します。 */ get bottomCell(): Cell | null; /** * 右下のセルを返します。 */ get bottomRightCell(): Cell | null; /** * 右上のセルを返します。 */ get topRightCell(): Cell | null; /** * 左下のセルを返します。 */ get bottomLeftCell(): Cell | null; /** * 左上のセルを返します。 */ get topLeftCell(): Cell | null; /** * このグループセルの上にあるグループセルのマスターセルを返します。 */ get topMasterCell(): Cell | null; /** * このグループセルの左にあるグループセルのマスターセルを返します。 */ get leftMasterCell(): Cell | null; /** * このグループセルの右にあるグループセルのマスターセルを返します。 */ get rightMasterCell(): Cell | null; /** * このグループセルの下にあるグループセルのマスターセルを返します。 */ get bottomMasterCell(): Cell | null; /** * グループセル内の右端にあるせるセルのX座標を返します。 */ get mostRightCellX(): number; /** * グループセル内の下端にあるせるセルのY座標を返します。 */ get mostBottomCellY(): number; /** * 指定した方向にあるグループセルの配列を返します。 * @param direction */ private getNextGroupCells; /** 未定義 */ private get leftSideGroupCells(); /** 未定義 */ get upperSideGroupCells(): Cell[]; /** * セルの背景を表すSVGRectElementを作成します。 * @param className */ toPlainText(): string; updateNodeRelations(): void; tryUpdateWithUpdateFlag(withUpdate: boolean): boolean; getUpdateFlag(): boolean; /** * このセルを更新します。 */ update(): void; /** * svgGroupの親関係を更新します。 */ private updateSVGGroupParent; private get topBorderRow(); private get bottomBorderRow(); private get leftBorderColumn(); private get rightBorderColumn(); /** * 枠の親関係を更新します。 */ private updateBorderParent; private tryResizeWithUpdateFlag; /** *セルのサイズを再計算します。 */ private resize; /** * 指定した方向の枠を取り除きます。 * @param dir */ removeBorder(dir: DirectionType): void; /** * このセルを取り除きます。 * @param isColumn */ removeFromTable(isColumn: boolean): void; /** * このセルが持つ枠の情報を更新します。 */ private updateBorderAttributes; relocation(): void; /** * 右のグループセルと結合します。 */ mergeRight(): void; /** * 下のグループセルと結合します。 */ mergeBottom(): void; /** * このセルをマスターセルとした横セル数wかつ縦セル数hのグループセルを作成できるとき、Trueを返します。 * @param w * @param h */ canMerge(w: number, h: number): boolean; /** * このセルをマスターセルとした横セル数wかつ縦セル数hのグループセルを作成します。 * @param w * @param h */ merge(w: number, h: number): void; /** * このセルから見て右にあるグループセルとこのセルが属しているグループセルが結合できるとき、そのグループセルの左上のY座標と左下のY座標を返します。 * さもなければnullを返します。 */ getMergedRangeRight(): [number, number] | null; /** * このセルから見て下にあるグループセルとこのセルが属しているグループセルが結合できるとき、そのグループセルの左上のX座標と右上のX座標を返します。 * さもなければnullを返します。 */ getMergedRangeBottom(): [number, number] | null; /** * 右のセルと結合できるときTrueを返します。 */ get canMergeRight(): boolean; /** * 下のセルと結合できるときTrueを返します。 */ get canMergeBottom(): boolean; private decomposeRow; private decomposeColomn; private _assurancevisibility; /** セルの仮想上の領域を返します。 */ getVirtualRegion(): Rectangle; private getVirtualInnerRegion; calculatedSizeUsingGroup(): [number, number]; /** * テキストを再描画します。 */ tryLocateSVGTextWithUpdateFlag(withUpdate: boolean): boolean; /** * テキストを再描画します。 */ private locateSVGText; }