UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

135 lines (134 loc) 8.7 kB
import { MathUtils } from '@devexpress/utils/lib/utils/math'; import { BorderInfo } from '../../borders/border-info'; import { TableCellBorders } from '../../borders/table-cell-borders'; import { ShadingInfo } from '../../shadings/shading-info'; import { TableCellMargins, TableCellVerticalAlignment, TextDirection } from '../secondary-structures/table-base-structures'; import { TableWidthUnit } from '../secondary-structures/table-units'; import { TableCellPropertiesBottomBorderDescriptor, TableCellPropertiesBottomMarginDescriptor, TableCellPropertiesFitTextDescriptor, TableCellPropertiesHideCellMarkDescriptor, TableCellPropertiesInsideHorizontalBorderDescriptor, TableCellPropertiesInsideVerticalBorderDescriptor, TableCellPropertiesLeftBorderDescriptor, TableCellPropertiesLeftMarginDescriptor, TableCellPropertiesNoWrapDescriptor, TableCellPropertiesRightBorderDescriptor, TableCellPropertiesRightMarginDescriptor, TableCellPropertiesShadingInfoDescriptor, TableCellPropertiesTextDirectionDescriptor, TableCellPropertiesTopBorderDescriptor, TableCellPropertiesTopLeftDiagonalBorderDescriptor, TableCellPropertiesTopMarginDescriptor, TableCellPropertiesTopRightDiagonalBorderDescriptor, TableCellPropertiesVerticalAlignmentDescriptor } from './table-cell-descriptors'; export class TableCellProperties { constructor() { this.mask = TableCellPropertiesMask.UseNone; this.cellMargins = TableCellMargins.create(TableWidthUnit.createDefault(), TableWidthUnit.createDefault(), TableWidthUnit.createDefault(), TableWidthUnit.createDefault()); this.borders = TableCellBorders.create(new BorderInfo(), new BorderInfo(), new BorderInfo(), new BorderInfo(), new BorderInfo(), new BorderInfo(), new BorderInfo(), new BorderInfo()); this.hideCellMark = false; this.noWrap = false; this.fitText = false; this.textDirection = TextDirection.LeftToRightTopToBottom; this.verticalAlignment = TableCellVerticalAlignment.Top; this.shadingInfo = ShadingInfo.noColor; } calculateHash() { return MathUtils.somePrimes[0] * this.mask ^ MathUtils.somePrimes[1] * this.borders.getHashCode() ^ MathUtils.somePrimes[2] * this.verticalAlignment ^ MathUtils.somePrimes[3] * this.shadingInfo.getHashCode(); } getHashCode() { return this.hash === undefined ? this.hash = this.calculateHash() : this.hash; } equals(obj) { if (!obj) return false; return this.mask == obj.mask && this.cellMargins.equals(obj.cellMargins) && this.borders.equals(obj.borders) && this.hideCellMark == obj.hideCellMark && this.noWrap == obj.noWrap && this.fitText == obj.fitText && this.textDirection == obj.textDirection && this.verticalAlignment == obj.verticalAlignment && this.shadingInfo.equals(obj.shadingInfo); } clone() { var result = new TableCellProperties(); result.copyFrom(this); return result; } copyFrom(obj) { this.mask = obj.mask; this.cellMargins = obj.cellMargins.clone(); this.borders = obj.borders.clone(); this.hideCellMark = obj.hideCellMark; this.noWrap = obj.noWrap; this.fitText = obj.fitText; this.textDirection = obj.textDirection; this.verticalAlignment = obj.verticalAlignment; if (obj.shadingInfo) this.shadingInfo = obj.shadingInfo.clone(); } setUseValue(mask, value) { if (value) this.mask |= mask; else this.mask &= ~mask; } getUseValue(mask) { return (this.mask & mask) != 0; } setValue(desc, value) { desc.setProp(this, value); this.setUseValue(desc.maskValue(), true); } } export var TableCellPropertiesMask; (function (TableCellPropertiesMask) { TableCellPropertiesMask[TableCellPropertiesMask["UseNone"] = 0] = "UseNone"; TableCellPropertiesMask[TableCellPropertiesMask["UseHideCellMark"] = 2] = "UseHideCellMark"; TableCellPropertiesMask[TableCellPropertiesMask["UseNoWrap"] = 4] = "UseNoWrap"; TableCellPropertiesMask[TableCellPropertiesMask["UseFitText"] = 8] = "UseFitText"; TableCellPropertiesMask[TableCellPropertiesMask["UseLeftMargin"] = 16] = "UseLeftMargin"; TableCellPropertiesMask[TableCellPropertiesMask["UseRightMargin"] = 32] = "UseRightMargin"; TableCellPropertiesMask[TableCellPropertiesMask["UseTopMargin"] = 64] = "UseTopMargin"; TableCellPropertiesMask[TableCellPropertiesMask["UseBottomMargin"] = 128] = "UseBottomMargin"; TableCellPropertiesMask[TableCellPropertiesMask["UseTextDirection"] = 256] = "UseTextDirection"; TableCellPropertiesMask[TableCellPropertiesMask["UseVerticalAlignment"] = 512] = "UseVerticalAlignment"; TableCellPropertiesMask[TableCellPropertiesMask["UseCellConditionalFormatting"] = 2048] = "UseCellConditionalFormatting"; TableCellPropertiesMask[TableCellPropertiesMask["UseLeftBorder"] = 4096] = "UseLeftBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseRightBorder"] = 8192] = "UseRightBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseTopBorder"] = 16384] = "UseTopBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseBottomBorder"] = 32768] = "UseBottomBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseInsideHorizontalBorder"] = 65536] = "UseInsideHorizontalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseInsideVerticalBorder"] = 131072] = "UseInsideVerticalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseTopLeftDiagonalBorder"] = 262144] = "UseTopLeftDiagonalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseTopRightDiagonalBorder"] = 524288] = "UseTopRightDiagonalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseShadingInfoIndex"] = 1048576] = "UseShadingInfoIndex"; TableCellPropertiesMask[TableCellPropertiesMask["UseAll"] = 2147483647] = "UseAll"; })(TableCellPropertiesMask || (TableCellPropertiesMask = {})); export class TableCellPropertyDescriptor { static { this.topBorder = new TableCellPropertiesTopBorderDescriptor(); } static { this.rightBorder = new TableCellPropertiesRightBorderDescriptor(); } static { this.bottomBorder = new TableCellPropertiesBottomBorderDescriptor(); } static { this.leftBorder = new TableCellPropertiesLeftBorderDescriptor(); } static { this.topLeftDiagonalBorder = new TableCellPropertiesTopLeftDiagonalBorderDescriptor(); } static { this.topRightDiagonalBorder = new TableCellPropertiesTopRightDiagonalBorderDescriptor(); } static { this.insideHorizontalBorder = new TableCellPropertiesInsideHorizontalBorderDescriptor(); } static { this.insideVerticalBorder = new TableCellPropertiesInsideVerticalBorderDescriptor(); } static { this.topMargin = new TableCellPropertiesTopMarginDescriptor(); } static { this.rightMargin = new TableCellPropertiesRightMarginDescriptor(); } static { this.bottomMargin = new TableCellPropertiesBottomMarginDescriptor(); } static { this.leftMargin = new TableCellPropertiesLeftMarginDescriptor(); } static { this.fitText = new TableCellPropertiesFitTextDescriptor(); } static { this.hideCellMark = new TableCellPropertiesHideCellMarkDescriptor(); } static { this.noWrap = new TableCellPropertiesNoWrapDescriptor(); } static { this.shadingInfo = new TableCellPropertiesShadingInfoDescriptor(); } static { this.textDirection = new TableCellPropertiesTextDirectionDescriptor(); } static { this.vertivalAlignment = new TableCellPropertiesVerticalAlignmentDescriptor(); } static { this.ALL_FIELDS = [ TableCellPropertyDescriptor.topBorder, TableCellPropertyDescriptor.rightBorder, TableCellPropertyDescriptor.bottomBorder, TableCellPropertyDescriptor.leftBorder, TableCellPropertyDescriptor.topLeftDiagonalBorder, TableCellPropertyDescriptor.topRightDiagonalBorder, TableCellPropertyDescriptor.topMargin, TableCellPropertyDescriptor.rightMargin, TableCellPropertyDescriptor.bottomMargin, TableCellPropertyDescriptor.leftMargin, TableCellPropertyDescriptor.fitText, TableCellPropertyDescriptor.hideCellMark, TableCellPropertyDescriptor.noWrap, TableCellPropertyDescriptor.shadingInfo, TableCellPropertyDescriptor.textDirection, TableCellPropertyDescriptor.vertivalAlignment, ]; } }