devexpress-richedit
Version: 
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
32 lines (31 loc) • 1.89 kB
JavaScript
import { __awaiter } from "tslib";
import { PaperKind, PaperSizeConverter } from '../../../../../../common/model/section/paper-kind';
import { Size } from '@devexpress/utils/lib/geometry/size';
import { LeafElementDestination } from '../destination';
export class SectionPageSizeDestination extends LeafElementDestination {
    get secProps() {
        return this.data.sectionImporter.properties;
    }
    processElementOpen(reader) {
        return __awaiter(this, void 0, void 0, function* () {
            this.secProps.pageSize.width = this.data.readerHelper.getWpSTIntegerValue(reader, 'w', this.secProps.pageSize.width);
            this.secProps.pageSize.height = this.data.readerHelper.getWpSTIntegerValue(reader, 'h', this.secProps.pageSize.height);
            this.secProps.landscape = (reader.getAttributeNS('orient', this.data.constants.wordProcessingNamespaceConst) == 'landscape');
            const paperKind = this.data.readerHelper.getWpSTIntegerValue(reader, 'code', PaperKind.Custom);
            this.validatePaperKind(paperKind, this.secProps);
            return Promise.resolve();
        });
    }
    validatePaperKind(paperKind, secProps) {
        const paperKindSize = PaperSizeConverter.calculatePaperSize(paperKind);
        if (secProps.pageSize.width <= 0)
            secProps.pageSize.width = secProps.landscape ? paperKindSize.height : paperKindSize.width;
        if (secProps.pageSize.height <= 0)
            secProps.pageSize.height = secProps.landscape ? paperKindSize.width : paperKindSize.height;
        else {
            const size = secProps.landscape ? new Size(secProps.pageSize.height, secProps.pageSize.width) : secProps.pageSize.clone();
            paperKind = PaperSizeConverter.calculatePaperKind(size, PaperKind.Custom, 0, PaperKind.Letter);
            secProps.paperKind = paperKind;
        }
    }
}