UNPKG

devexpress-richedit

Version:

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

131 lines (130 loc) 8.18 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, 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()); 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["UseTopLeftDiagonalBorder"] = 262144] = "UseTopLeftDiagonalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseTopRightDiagonalBorder"] = 524288] = "UseTopRightDiagonalBorder"; TableCellPropertiesMask[TableCellPropertiesMask["UseShadingInfoIndex"] = 1048576] = "UseShadingInfoIndex"; TableCellPropertiesMask[TableCellPropertiesMask["UseAll"] = 2147483647] = "UseAll"; })(TableCellPropertiesMask || (TableCellPropertiesMask = {})); export class TableCellPropertyDescriptor { } TableCellPropertyDescriptor.topBorder = new TableCellPropertiesTopBorderDescriptor(); TableCellPropertyDescriptor.rightBorder = new TableCellPropertiesRightBorderDescriptor(); TableCellPropertyDescriptor.bottomBorder = new TableCellPropertiesBottomBorderDescriptor(); TableCellPropertyDescriptor.leftBorder = new TableCellPropertiesLeftBorderDescriptor(); TableCellPropertyDescriptor.topLeftDiagonalBorder = new TableCellPropertiesTopLeftDiagonalBorderDescriptor(); TableCellPropertyDescriptor.topRightDiagonalBorder = new TableCellPropertiesTopRightDiagonalBorderDescriptor(); TableCellPropertyDescriptor.topMargin = new TableCellPropertiesTopMarginDescriptor(); TableCellPropertyDescriptor.rightMargin = new TableCellPropertiesRightMarginDescriptor(); TableCellPropertyDescriptor.bottomMargin = new TableCellPropertiesBottomMarginDescriptor(); TableCellPropertyDescriptor.leftMargin = new TableCellPropertiesLeftMarginDescriptor(); TableCellPropertyDescriptor.fitText = new TableCellPropertiesFitTextDescriptor(); TableCellPropertyDescriptor.hideCellMark = new TableCellPropertiesHideCellMarkDescriptor(); TableCellPropertyDescriptor.noWrap = new TableCellPropertiesNoWrapDescriptor(); TableCellPropertyDescriptor.shadingInfo = new TableCellPropertiesShadingInfoDescriptor(); TableCellPropertyDescriptor.textDirection = new TableCellPropertiesTextDirectionDescriptor(); TableCellPropertyDescriptor.vertivalAlignment = new TableCellPropertiesVerticalAlignmentDescriptor(); TableCellPropertyDescriptor.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, ];