UNPKG

devexpress-richedit

Version:

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

59 lines (58 loc) 2.54 kB
import { RenderPageVertivalInfo } from '../view-settings/views-settings'; import { Size } from '@devexpress/utils/lib/geometry/size'; import { DomUtils } from '@devexpress/utils/lib/utils/dom'; import { SizeUtils } from '../utils/size-utils'; export class CanvasSizeInfo { topSpacing = -1; betweenPageSpacing = 1; scrollXVisible; scrollYVisible; visibleAreaSize = new Size(-1, -1); scrollWidth = -1; zoomLevelHolder; pageVerticalInfo = new RenderPageVertivalInfo(); constructor(zoomLevelHolder) { this.zoomLevelHolder = zoomLevelHolder; this.scrollWidth = DomUtils.getVerticalScrollBarWidth(); } isInitialized() { return this.topSpacing >= 0; } initialize(page, canvas) { this.pageVerticalInfo.init(DomUtils.getCurrentStyle(page)); this.topSpacing = this.pageVerticalInfo.topPageBorderWidth + this.pageVerticalInfo.topMargin; this.betweenPageSpacing = this.pageVerticalInfo.betweenPageSpacing; this.setVisibleAreaSize(SizeUtils.getClientWidth(canvas), SizeUtils.getClientHeight(canvas)); } getPageOffsetY(layoutPage) { return layoutPage.y + (this.topSpacing + layoutPage.index * this.betweenPageSpacing); } get zoomLevel() { return this.zoomLevelHolder.zoomLevel; } setVisibleAreaSize(width, height) { this.visibleAreaSize.width = width; this.visibleAreaSize.height = height; } getVisibleAreaWidth(includeScrollBars) { if (!includeScrollBars) return this.visibleAreaSize.width; return this.scrollYVisible ? this.visibleAreaSize.width + this.scrollWidth : this.visibleAreaSize.width; } getVisibleAreaHeight(includeScrollBars) { if (!includeScrollBars) return this.visibleAreaSize.height; return this.scrollXVisible ? this.visibleAreaSize.height + this.scrollWidth : this.visibleAreaSize.height; } updateScrollVisibility(canvas) { this.scrollXVisible = SizeUtils.getHeightInfo(canvas).scrollbarSize > 0; this.scrollYVisible = SizeUtils.getWidthInfo(canvas).scrollbarSize > 0; } updateSize(canvas) { const width = SizeUtils.getClientWidth(canvas); const height = SizeUtils.getClientHeight(canvas); if (this.visibleAreaSize.width !== width || this.visibleAreaSize.height !== height) { this.setVisibleAreaSize(width, height); return true; } return false; } }