@hailin-zheng/editor-core 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/doc-ruler.d.ts +1 -0
- package/lib/doc-ruler.d.ts.map +1 -0
- package/lib/framework/common-util.d.ts +1 -0
- package/lib/framework/common-util.d.ts.map +1 -0
- package/lib/framework/document-change.d.ts +1 -0
- package/lib/framework/document-change.d.ts.map +1 -0
- package/lib/framework/document-combine.d.ts +1 -0
- package/lib/framework/document-combine.d.ts.map +1 -0
- package/lib/framework/document-comment.d.ts +1 -0
- package/lib/framework/document-comment.d.ts.map +1 -0
- package/lib/framework/document-context.d.ts +1 -0
- package/lib/framework/document-context.d.ts.map +1 -0
- package/lib/framework/document-eval-func.d.ts +1 -0
- package/lib/framework/document-eval-func.d.ts.map +1 -0
- package/lib/framework/document-event.d.ts +1 -0
- package/lib/framework/document-event.d.ts.map +1 -0
- package/lib/framework/document-history.d.ts +1 -0
- package/lib/framework/document-history.d.ts.map +1 -0
- package/lib/framework/document-images-loader.d.ts +1 -0
- package/lib/framework/document-images-loader.d.ts.map +1 -0
- package/lib/framework/document-input-cursor.d.ts +1 -0
- package/lib/framework/document-input-cursor.d.ts.map +1 -0
- package/lib/framework/document-paint.d.ts +1 -0
- package/lib/framework/document-paint.d.ts.map +1 -0
- package/lib/framework/document-print-offscreen.d.ts +1 -0
- package/lib/framework/document-print-offscreen.d.ts.map +1 -0
- package/lib/framework/document-print.d.ts +1 -0
- package/lib/framework/document-print.d.ts.map +1 -0
- package/lib/framework/document-segmenter.d.ts +1 -0
- package/lib/framework/document-segmenter.d.ts.map +1 -0
- package/lib/framework/document-selection.d.ts +1 -0
- package/lib/framework/document-selection.d.ts.map +1 -0
- package/lib/framework/document-template.d.ts +1 -0
- package/lib/framework/document-template.d.ts.map +1 -0
- package/lib/framework/document-textline-mode.d.ts +1 -0
- package/lib/framework/document-textline-mode.d.ts.map +1 -0
- package/lib/framework/element-define.d.ts +1 -0
- package/lib/framework/element-define.d.ts.map +1 -0
- package/lib/framework/element-event-define.d.ts +1 -0
- package/lib/framework/element-event-define.d.ts.map +1 -0
- package/lib/framework/element-measure.d.ts +1 -0
- package/lib/framework/element-measure.d.ts.map +1 -0
- package/lib/framework/element-paint.d.ts +1 -0
- package/lib/framework/element-paint.d.ts.map +1 -0
- package/lib/framework/element-props.d.ts +2 -1
- package/lib/framework/element-props.d.ts.map +1 -0
- package/lib/framework/element-reader.d.ts +1 -0
- package/lib/framework/element-reader.d.ts.map +1 -0
- package/lib/framework/element-render-cut.d.ts +1 -0
- package/lib/framework/element-render-cut.d.ts.map +1 -0
- package/lib/framework/element-serialize.d.ts +1 -0
- package/lib/framework/element-serialize.d.ts.map +1 -0
- package/lib/framework/element-util.d.ts +1 -0
- package/lib/framework/element-util.d.ts.map +1 -0
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts +1 -0
- package/lib/framework/impl/checkbox/checkbox-impl.d.ts.map +1 -0
- package/lib/framework/impl/comments/comment-content-impl.d.ts +1 -0
- package/lib/framework/impl/comments/comment-content-impl.d.ts.map +1 -0
- package/lib/framework/impl/comments/comment-element-impl.d.ts +1 -0
- package/lib/framework/impl/comments/comment-element-impl.d.ts.map +1 -0
- package/lib/framework/impl/comments/comments-container-impl.d.ts +1 -0
- package/lib/framework/impl/comments/comments-container-impl.d.ts.map +1 -0
- package/lib/framework/impl/comments/comments-util.d.ts +1 -0
- package/lib/framework/impl/comments/comments-util.d.ts.map +1 -0
- package/lib/framework/impl/comments/validate-msg-impl.d.ts +1 -0
- package/lib/framework/impl/comments/validate-msg-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-decorate-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-barcode.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-barcode.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-base-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-check-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-date-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-group-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-image-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-list-impl.d.ts.map +1 -0
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts +1 -0
- package/lib/framework/impl/data-element/data-element-text-impl.d.ts.map +1 -0
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts +1 -0
- package/lib/framework/impl/decorate/fill-null-space-imple.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-body-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-body-impl.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-body-part-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-body-part-impl.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-container-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-container-impl.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-footer-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-footer-impl.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-header-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-header-impl.d.ts.map +1 -0
- package/lib/framework/impl/document/doc-impl.d.ts +1 -0
- package/lib/framework/impl/document/doc-impl.d.ts.map +1 -0
- package/lib/framework/impl/index.d.ts +37 -0
- package/lib/framework/impl/index.d.ts.map +1 -0
- package/lib/framework/impl/media-formula/menstrual-history.d.ts +1 -0
- package/lib/framework/impl/media-formula/menstrual-history.d.ts.map +1 -0
- package/lib/framework/impl/paragraph/p-impl.d.ts +1 -0
- package/lib/framework/impl/paragraph/p-impl.d.ts.map +1 -0
- package/lib/framework/impl/picture/image-impl.d.ts +1 -0
- package/lib/framework/impl/picture/image-impl.d.ts.map +1 -0
- package/lib/framework/impl/radio/radio-impl.d.ts +1 -0
- package/lib/framework/impl/radio/radio-impl.d.ts.map +1 -0
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts +1 -0
- package/lib/framework/impl/symbol/br-symbol-impl.d.ts.map +1 -0
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts +1 -0
- package/lib/framework/impl/symbol/p-symbol-impl.d.ts.map +1 -0
- package/lib/framework/impl/table/table-cell-impl.d.ts +1 -0
- package/lib/framework/impl/table/table-cell-impl.d.ts.map +1 -0
- package/lib/framework/impl/table/table-impl.d.ts +1 -0
- package/lib/framework/impl/table/table-impl.d.ts.map +1 -0
- package/lib/framework/impl/table/table-row-impl.d.ts +1 -0
- package/lib/framework/impl/table/table-row-impl.d.ts.map +1 -0
- package/lib/framework/impl/table/table-split-cell-patch.d.ts +1 -0
- package/lib/framework/impl/table/table-split-cell-patch.d.ts.map +1 -0
- package/lib/framework/impl/table/table-split-cell.d.ts +1 -0
- package/lib/framework/impl/table/table-split-cell.d.ts.map +1 -0
- package/lib/framework/impl/table/table-util.d.ts +1 -0
- package/lib/framework/impl/table/table-util.d.ts.map +1 -0
- package/lib/framework/impl/text/text-impl.d.ts +1 -0
- package/lib/framework/impl/text/text-impl.d.ts.map +1 -0
- package/lib/framework/impl/text/track-run-impl.d.ts +1 -0
- package/lib/framework/impl/text/track-run-impl.d.ts.map +1 -0
- package/lib/framework/notify.d.ts +1 -0
- package/lib/framework/notify.d.ts.map +1 -0
- package/lib/framework/range-util.d.ts +1 -0
- package/lib/framework/range-util.d.ts.map +1 -0
- package/lib/framework/render-context.d.ts +1 -0
- package/lib/framework/render-context.d.ts.map +1 -0
- package/lib/framework/render-define.d.ts +1 -0
- package/lib/framework/render-define.d.ts.map +1 -0
- package/lib/framework/selection-overlays.d.ts +1 -0
- package/lib/framework/selection-overlays.d.ts.map +1 -0
- package/lib/index.d.ts +35 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +15671 -0
- package/lib/texteditor.d.ts +3 -2
- package/lib/texteditor.d.ts.map +1 -0
- package/lib/util/subject.d.ts +1 -0
- package/lib/util/subject.d.ts.map +1 -0
- package/lib/util/table-bind.d.ts +1 -0
- package/lib/util/table-bind.d.ts.map +1 -0
- package/package.json +32 -23
- package/README.md +0 -1613
- package/lib/doc-ruler.js +0 -313
- package/lib/doc-ruler.js.map +0 -1
- package/lib/framework/common-util.js +0 -178
- package/lib/framework/common-util.js.map +0 -1
- package/lib/framework/document-change.js +0 -1342
- package/lib/framework/document-change.js.map +0 -1
- package/lib/framework/document-combine.js +0 -40
- package/lib/framework/document-combine.js.map +0 -1
- package/lib/framework/document-comment.js +0 -148
- package/lib/framework/document-comment.js.map +0 -1
- package/lib/framework/document-context.js +0 -330
- package/lib/framework/document-context.js.map +0 -1
- package/lib/framework/document-eval-func.js +0 -48
- package/lib/framework/document-eval-func.js.map +0 -1
- package/lib/framework/document-event.js +0 -1054
- package/lib/framework/document-event.js.map +0 -1
- package/lib/framework/document-history.js +0 -65
- package/lib/framework/document-history.js.map +0 -1
- package/lib/framework/document-images-loader.js +0 -66
- package/lib/framework/document-images-loader.js.map +0 -1
- package/lib/framework/document-input-cursor.js +0 -239
- package/lib/framework/document-input-cursor.js.map +0 -1
- package/lib/framework/document-paint.js +0 -103
- package/lib/framework/document-paint.js.map +0 -1
- package/lib/framework/document-print-offscreen.js +0 -128
- package/lib/framework/document-print-offscreen.js.map +0 -1
- package/lib/framework/document-print.js +0 -203
- package/lib/framework/document-print.js.map +0 -1
- package/lib/framework/document-segmenter.js +0 -106
- package/lib/framework/document-segmenter.js.map +0 -1
- package/lib/framework/document-selection.js +0 -358
- package/lib/framework/document-selection.js.map +0 -1
- package/lib/framework/document-template.js +0 -20
- package/lib/framework/document-template.js.map +0 -1
- package/lib/framework/document-textline-mode.js +0 -30
- package/lib/framework/document-textline-mode.js.map +0 -1
- package/lib/framework/element-define.js +0 -579
- package/lib/framework/element-define.js.map +0 -1
- package/lib/framework/element-event-define.js +0 -108
- package/lib/framework/element-event-define.js.map +0 -1
- package/lib/framework/element-measure.js +0 -551
- package/lib/framework/element-measure.js.map +0 -1
- package/lib/framework/element-paint.js +0 -170
- package/lib/framework/element-paint.js.map +0 -1
- package/lib/framework/element-props.js +0 -809
- package/lib/framework/element-props.js.map +0 -1
- package/lib/framework/element-reader.js +0 -151
- package/lib/framework/element-reader.js.map +0 -1
- package/lib/framework/element-render-cut.js +0 -449
- package/lib/framework/element-render-cut.js.map +0 -1
- package/lib/framework/element-serialize.js +0 -113
- package/lib/framework/element-serialize.js.map +0 -1
- package/lib/framework/element-util.js +0 -1463
- package/lib/framework/element-util.js.map +0 -1
- package/lib/framework/impl/checkbox/checkbox-impl.js +0 -64
- package/lib/framework/impl/checkbox/checkbox-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-content-impl.js +0 -105
- package/lib/framework/impl/comments/comment-content-impl.js.map +0 -1
- package/lib/framework/impl/comments/comment-element-impl.js +0 -62
- package/lib/framework/impl/comments/comment-element-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-container-impl.js +0 -62
- package/lib/framework/impl/comments/comments-container-impl.js.map +0 -1
- package/lib/framework/impl/comments/comments-util.js +0 -67
- package/lib/framework/impl/comments/comments-util.js.map +0 -1
- package/lib/framework/impl/comments/validate-msg-impl.js +0 -83
- package/lib/framework/impl/comments/validate-msg-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-decorate-impl.js +0 -91
- package/lib/framework/impl/data-element/data-decorate-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-barcode.js +0 -115
- package/lib/framework/impl/data-element/data-element-barcode.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-base-impl.js +0 -205
- package/lib/framework/impl/data-element/data-element-base-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-check-impl.js +0 -133
- package/lib/framework/impl/data-element/data-element-check-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-date-impl.js +0 -111
- package/lib/framework/impl/data-element/data-element-date-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-group-impl.js +0 -130
- package/lib/framework/impl/data-element/data-element-group-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-image-impl.js +0 -137
- package/lib/framework/impl/data-element/data-element-image-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-list-impl.js +0 -131
- package/lib/framework/impl/data-element/data-element-list-impl.js.map +0 -1
- package/lib/framework/impl/data-element/data-element-text-impl.js +0 -103
- package/lib/framework/impl/data-element/data-element-text-impl.js.map +0 -1
- package/lib/framework/impl/decorate/fill-null-space-imple.js +0 -43
- package/lib/framework/impl/decorate/fill-null-space-imple.js.map +0 -1
- package/lib/framework/impl/document/doc-body-impl.js +0 -79
- package/lib/framework/impl/document/doc-body-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-body-part-impl.js +0 -94
- package/lib/framework/impl/document/doc-body-part-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-container-impl.js +0 -21
- package/lib/framework/impl/document/doc-container-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-footer-impl.js +0 -77
- package/lib/framework/impl/document/doc-footer-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-header-impl.js +0 -83
- package/lib/framework/impl/document/doc-header-impl.js.map +0 -1
- package/lib/framework/impl/document/doc-impl.js +0 -209
- package/lib/framework/impl/document/doc-impl.js.map +0 -1
- package/lib/framework/impl/media-formula/menstrual-history.js +0 -153
- package/lib/framework/impl/media-formula/menstrual-history.js.map +0 -1
- package/lib/framework/impl/paragraph/p-impl.js +0 -156
- package/lib/framework/impl/paragraph/p-impl.js.map +0 -1
- package/lib/framework/impl/picture/image-impl.js +0 -124
- package/lib/framework/impl/picture/image-impl.js.map +0 -1
- package/lib/framework/impl/radio/radio-impl.js +0 -72
- package/lib/framework/impl/radio/radio-impl.js.map +0 -1
- package/lib/framework/impl/symbol/br-symbol-impl.js +0 -54
- package/lib/framework/impl/symbol/br-symbol-impl.js.map +0 -1
- package/lib/framework/impl/symbol/p-symbol-impl.js +0 -54
- package/lib/framework/impl/symbol/p-symbol-impl.js.map +0 -1
- package/lib/framework/impl/table/table-cell-impl.js +0 -145
- package/lib/framework/impl/table/table-cell-impl.js.map +0 -1
- package/lib/framework/impl/table/table-impl.js +0 -363
- package/lib/framework/impl/table/table-impl.js.map +0 -1
- package/lib/framework/impl/table/table-row-impl.js +0 -75
- package/lib/framework/impl/table/table-row-impl.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell-patch.js +0 -89
- package/lib/framework/impl/table/table-split-cell-patch.js.map +0 -1
- package/lib/framework/impl/table/table-split-cell.js +0 -464
- package/lib/framework/impl/table/table-split-cell.js.map +0 -1
- package/lib/framework/impl/table/table-util.js +0 -678
- package/lib/framework/impl/table/table-util.js.map +0 -1
- package/lib/framework/impl/text/text-impl.js +0 -149
- package/lib/framework/impl/text/text-impl.js.map +0 -1
- package/lib/framework/impl/text/track-run-impl.js +0 -112
- package/lib/framework/impl/text/track-run-impl.js.map +0 -1
- package/lib/framework/notify.js +0 -116
- package/lib/framework/notify.js.map +0 -1
- package/lib/framework/range-util.js +0 -312
- package/lib/framework/range-util.js.map +0 -1
- package/lib/framework/render-context.js +0 -384
- package/lib/framework/render-context.js.map +0 -1
- package/lib/framework/render-define.js +0 -195
- package/lib/framework/render-define.js.map +0 -1
- package/lib/framework/selection-overlays.js +0 -124
- package/lib/framework/selection-overlays.js.map +0 -1
- package/lib/texteditor.js +0 -913
- package/lib/texteditor.js.map +0 -1
- package/lib/util/subject.js +0 -88
- package/lib/util/subject.js.map +0 -1
- package/lib/util/table-bind.js +0 -6
- package/lib/util/table-bind.js.map +0 -1
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"element-measure.js","sourceRoot":"lib/","sources":["framework/element-measure.ts"],"names":[],"mappings":"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","sourcesContent":["import { runTextLineRender } from \"./document-textline-mode\";\nimport {\n BlockContainerElement,\n BlockContentElement,\n BranchElement,\n Element,\n InlineGroupElement,\n LeafElement,\n ModifyFlag,\n ViewOptions\n} from \"./element-define\";\nimport { DataEleBaseProps, DataEleBaseTextProps, TextProps } from \"./element-props\";\nimport { ElementUtil } from \"./element-util\";\nimport { DataElementInlineGroup } from \"./impl/data-element/data-element-base-impl\";\nimport { FillNullSpaceRenderObject } from \"./impl/decorate/fill-null-space-imple\";\nimport { DocumentElement, DocumentRenderObject } from \"./impl/document/doc-impl\";\nimport { ParagraphElement, ParagraphLineRectRenderObject, ParagraphRenderObject } from \"./impl/paragraph/p-impl\";\nimport { TextGroupElement, TextGroupRenderObject } from \"./impl/text/text-impl\";\nimport { RenderContenxtType } from \"./render-context\";\nimport {\n BlockContainerRenderObject,\n BlockContentRenderObject,\n BranchRenderObject,\n InlineGroupRenderObject,\n LeafRenderObject,\n RenderObject\n} from \"./render-define\";\ninterface ICutLineData { firstItem: RenderObject | null, lastItem: RenderObject | null, br?: boolean }\n/**\n * 测量阶段,生成Render-UI\n */\nexport class ElementMeasure {\n constructor(private options: ViewOptions, private renderCtx: RenderContenxtType) { }\n\n measureDocument(document: DocumentElement): DocumentRenderObject {\n this.clearPaintCache(document);\n const docRender = this.measureControl(document, this.options.docPageSettings.width) as DocumentRenderObject;\n this.setMeasureCompletedModifyFlag(document);\n runTextLineRender(document, this.options, this.renderCtx);\n return docRender;\n }\n\n measureControl(element: Element, maxWidth: number): RenderObject | null {\n if (element.modifyFlag === ModifyFlag.None) {\n return element.measureRender;\n }\n if (element instanceof BlockContentElement) {\n const render = element.createRenderObject(this.options, this.renderCtx) as BlockContentRenderObject;\n element.measureRender = render;\n //测量阶段,只限制最大宽度即可\n render.setRenderWidth(maxWidth);\n if (element instanceof ParagraphElement) {\n this.measureParagraph(element, render as ParagraphRenderObject);\n } else {\n throw new Error('未实现');\n }\n return render;\n\n } else if (element instanceof BlockContainerElement) {\n ElementUtil.fixBlockContainer(element);\n let render: BlockContainerRenderObject | null = null;\n if (element.modifyFlag === ModifyFlag.Modify || element.modifyFlag === ModifyFlag.Track) {\n ElementUtil.fixBlockContainer(element);\n element.measureRender = null;\n render = element.createRenderObject(this.options, this.renderCtx) as BlockContainerRenderObject;\n if (!render) {\n element.measureRender = null;\n return null;\n }\n if (render.rect.maxWidth === 0) {\n render.setRenderWidth(maxWidth);\n }\n }\n if (!render) {\n throw new Error('render is null')\n }\n element.measureRender = render;\n const innerMaxWidth = render.getInnerMaxWidth();\n for (let i = 0; i < element.length; i++) {\n const child = element.getChild(i);\n const blockContentELement = child as BlockContentElement;\n const childRender = this.measureControl(blockContentELement, innerMaxWidth) as BlockContentRenderObject;\n if (!childRender) {\n continue;\n }\n render.addChild(childRender);\n }\n ElementUtil.remeasure(render);\n return render;\n } else {\n throw new Error('未实现');\n }\n }\n\n /**\n * 生成段落 UI 树\n * @param para \n * @param render \n */\n measureParagraph(para: ParagraphElement, render: ParagraphRenderObject): void {\n ElementUtil.fixParagraphContent(para);\n this.setParagraphDefaultTextProps(para);\n const renderObjects: Array<RenderObject> = [];\n for (let i = 0; i < para.length; i++) {\n const child = para.getChild(i);\n if (child instanceof InlineGroupElement) {\n child.measureRender = this.getInlineGroupRenderItem(child);\n if (child.measureRender) {\n renderObjects.push(child.measureRender);\n }\n }\n else if (child instanceof LeafElement) {\n child.measureRender = child.createRenderObject(this.options, this.renderCtx);\n if (child.measureRender) {\n renderObjects.push(child.measureRender);\n }\n }\n }\n this.measureInnerParagraph(render, para, renderObjects);\n }\n\n\n /**\n * 设置段落默认文本属性\n * 当前段落属于空段落时,键入文本时,文本的默认属性\n */\n setParagraphDefaultTextProps(para: ParagraphElement): void {\n const lastTextGroup = ElementUtil.getLastLeafElement(para, (item) => item instanceof TextGroupElement) as TextGroupElement;\n const defaultTextProps = lastTextGroup ? lastTextGroup.props.clone(new TextProps()) : ElementUtil.createTextProps(null, this.options);\n if (para.props.textProps && para.props.textProps.equals(defaultTextProps)) {\n return;\n }\n para.props.textProps = defaultTextProps;\n }\n\n /**\n * 根据段落UI元素,进行排列\n * @param render \n * @param paragraph \n * @param renderObjects \n */\n measureInnerParagraph(render: ParagraphRenderObject, paragraph: ParagraphElement, renderObjects: Array<RenderObject>) {\n let lineRect = render.createLineRect();\n //行内框\n const innerLineRects: Array<ParagraphLineRectRenderObject> = [];\n const addInnerLineFunc = (lineRect: ParagraphLineRectRenderObject): void => {\n innerLineRects.push(lineRect);\n if (lineRect.rect.maxWidth <= 0) {\n throw new Error('lineRect.rect.maxWidth is ' + lineRect.rect.maxWidth)\n }\n if (innerLineRects.indexOf(lineRect) === 0) {\n if (paragraph.props.indent > 0) {\n lineRect.rect.maxWidth -= paragraph.props.indent;\n }\n } else {\n lineRect.rect.maxWidth -= paragraph.props.hanging;\n }\n };\n addInnerLineFunc(lineRect);\n let i = 0;\n let currItem = renderObjects[i++];\n const inCloseBody = paragraph.parent.type === 'body';\n while (currItem) {\n const maxWidth = lineRect.rect.maxWidth as number;\n const nextItem = renderObjects[i];\n const { firstItem, lastItem, br } = this.cutRenderItem(currItem, nextItem, maxWidth - lineRect.rect.width, lineRect.length === 0, inCloseBody);\n if (firstItem) {\n if (lastItem) {\n renderObjects.splice(i, 0, lastItem);\n }\n currItem = firstItem;\n } else {\n lineRect = render.createLineRect();\n addInnerLineFunc(lineRect);\n continue;\n }\n lineRect.addChild(currItem);\n currItem.rect.x = lineRect.rect.width;\n if (currItem.rect.height > lineRect.rect.height) {\n lineRect.rect.height = currItem.rect.height;\n }\n lineRect.rect.width += currItem.rect.width;\n if (br) {\n //lineRect.rect.maxWidth = lineRect.rect.width;\n lineRect = render.createLineRect();\n addInnerLineFunc(lineRect);\n }\n currItem = renderObjects[i++];\n }\n for (let i = 0; i < innerLineRects.length; i++) {\n const innerLineRect = innerLineRects[i] as ParagraphLineRectRenderObject;\n innerLineRect.rect.x = this.getParaLineRectStartX(innerLineRects.length, i, paragraph, render, innerLineRect);\n //限制最大行高\n const maxLineHeight = Math.floor(14 * 1.3);\n //fillLineHeight填充行高\n let fillLineHeight = Math.ceil(innerLineRect.rect.height * (paragraph.props.lineHeight - 1));\n fillLineHeight = fillLineHeight > maxLineHeight ? maxLineHeight : fillLineHeight;\n const lineHeight = innerLineRect.rect.height + fillLineHeight;\n const paddingBottom = Math.ceil(fillLineHeight / 2);\n innerLineRect.rect.height = lineHeight;\n for (let j = 0; j < innerLineRect.length; j++) {\n const leaf = innerLineRect.getChild(j);\n leaf.rect.y = innerLineRect.rect.height - paddingBottom - leaf.rect.height;\n }\n //render.rect.height += lineRect.rect.height;\n const outterLineRect = render.createLineRect();\n outterLineRect.rect.width = outterLineRect.rect.maxWidth as number;\n outterLineRect.addChild(innerLineRect);\n ElementUtil.remeasure(outterLineRect, false);\n render.addChild(outterLineRect);\n }\n ElementUtil.remeasure(render);\n }\n\n /**\n * 获取段落行布局横向坐标起始位置,被段落text-align影响\n */\n getParaLineRectStartX(counter: number, paraLineIndex: number, paraElement: ParagraphElement, paraRenderObject: ParagraphRenderObject, paraLineRender: ParagraphLineRectRenderObject): number {\n //左对齐,首行缩进\n let indent = paraElement.props.indent;\n //存在项目符号\n if (paraLineIndex > 0) {\n indent = paraElement.props.hanging;\n }\n if (paraElement.props.textAlign === 'center') {\n const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;\n return Math.ceil(remainSpace / 2) + indent;\n } else if (paraElement.props.textAlign === 'right') {\n const remainSpace = paraRenderObject.rect.width - paraLineRender.rect.width;\n return remainSpace + indent;\n } else if (paraElement.props.textAlign === 'justify') {\n const renderUnitCount = this.getRenderUnitLength(paraLineRender);\n if (paraLineIndex === counter - 1 || renderUnitCount === 1) {\n return indent;\n }\n const spaceWidth = (<number>paraLineRender.rect.maxWidth - paraLineRender.rect.width) / (renderUnitCount - 1);\n this.setAlignJustify(paraLineRender, 0, spaceWidth);\n return indent;\n } else {\n return indent;\n }\n }\n\n /**\n * 设置两端对齐\n * @param render \n * @param count \n * @param spaceWidth \n */\n private setAlignJustify(render: RenderObject, count: number, spaceWidth: number): number {\n if (render instanceof BranchRenderObject) {\n let width = 0;\n for (let i = 0; i < render.length; i++) {\n const currRender = render.getChild(i);\n count += this.setAlignJustify(currRender, count, spaceWidth);\n currRender.rect.x = width;\n width += currRender.rect.width;\n }\n render.rect.width = width;\n } else if (render instanceof LeafRenderObject) {\n if (render instanceof TextGroupRenderObject) {\n let i = count === 0 ? 1 : 0;\n for (; i < render.textMeasures.length; i++) {\n render.textMeasures[i].actualSize = render.textMeasures[i].actualSize + spaceWidth;\n }\n render.measure();\n count += render.textMeasures.length;\n } else {\n if (count !== 0) {\n render.rect.width += spaceWidth;\n }\n count += 1;\n }\n }\n return count;\n }\n\n /**\n * 获取段落行渲染单位个数,字符需要计算为字符长度\n */\n private getRenderUnitLength(paraLine: RenderObject): number {\n if (paraLine instanceof LeafRenderObject) {\n if (paraLine instanceof TextGroupRenderObject) {\n return paraLine.textMeasures.length;\n } else {\n return 1;\n }\n } else if (paraLine instanceof BranchRenderObject) {\n let count = 0;\n for (let i = 0; i < paraLine.length; i++) {\n count += this.getRenderUnitLength(paraLine.getChild(i));\n }\n return count;\n }\n throw new Error('未到达计算位置')\n }\n\n\n getInlineGroupRenderItem(item: InlineGroupElement): RenderObject | null {\n const inlineGroupRender = item.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;\n if (!inlineGroupRender) {\n return null;\n }\n for (let i = 0; i < item.length; i++) {\n const child = item.getChild(i);\n child.beginMeasure();\n if (child instanceof LeafElement) {\n child.measureRender = child.createRenderObject(this.options, this.renderCtx);\n if (child.measureRender) {\n inlineGroupRender.addChild(child.measureRender);\n }\n } else if (child instanceof InlineGroupElement) {\n item.measureRender = this.getInlineGroupRenderItem(child);\n if (item.measureRender) {\n inlineGroupRender.addChild(item.measureRender);\n }\n } else {\n throw new Error('未实现')\n }\n }\n\n ElementUtil.remeasureInlineGroupRender(inlineGroupRender);\n //限制最小长度\n if (item instanceof DataElementInlineGroup) {\n //需要填充null-text\n if (item.length === 2) {\n const nullText = new TextGroupElement();\n nullText.isDecorate = true;\n nullText.disableClick = true;\n const baseTextProps = (<any>item).props as DataEleBaseTextProps;\n nullText.text = baseTextProps.nullText as string;\n baseTextProps.nullTextProps.clone(nullText.props);\n const nullTextRender = nullText.createRenderObject(this.options, this.renderCtx);\n inlineGroupRender.insertChild(nullTextRender, 1);\n ElementUtil.remeasureInlineGroupRender(inlineGroupRender);\n }\n const props = (<any>item).props as DataEleBaseProps;\n let minLength = props.minLength ?? 14;\n minLength = minLength < 14 ? 14 : minLength;\n if (item instanceof DataElementInlineGroup && inlineGroupRender.rect.width < minLength) {\n const fillNullSpace = new FillNullSpaceRenderObject();\n fillNullSpace.rect.width = minLength - inlineGroupRender.rect.width;\n fillNullSpace.rect.height = inlineGroupRender.rect.height;\n inlineGroupRender.insertChild(fillNullSpace, inlineGroupRender.length - 1);\n }\n ElementUtil.remeasureInlineGroupRender(inlineGroupRender);\n }\n return inlineGroupRender;\n }\n\n\n cutRenderItem(render: RenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {\n if (render instanceof LeafRenderObject) {\n if (render.rect.width > limitWidth && render instanceof TextGroupRenderObject) {\n return this.cutTextRender(render, nextRender, limitWidth, lineEmpty, inCloseBody);\n }\n if (render instanceof FillNullSpaceRenderObject) {\n return this.cutFillNullRender(render, limitWidth);\n }\n if (render.rect.width < limitWidth || lineEmpty || render.element.type === 'br' || render.element.type === 'psym') {\n return { firstItem: render, lastItem: null, br: render.element.type === 'br' };\n }\n return { firstItem: null, lastItem: null };\n } else if (render instanceof InlineGroupRenderObject) {\n return this.cutInlineGroupRenderItem(render, limitWidth, lineEmpty, inCloseBody);\n }\n throw new Error('到达计算边界')\n }\n\n cutTextRender(render: TextGroupRenderObject, nextRender: RenderObject, limitWidth: number, lineEmpty: boolean, inCloseBody: boolean): ICutLineData {\n let sumWidth = 0;\n const cutRender = render.clone() as TextGroupRenderObject;\n cutRender.textMeasures.length = 0;\n let i = 0;\n for (; i < render.textMeasures.length; i++) {\n sumWidth += render.textMeasures[i].actualSize;\n if (sumWidth > limitWidth) {\n if (lineEmpty && i === 0) {\n i = 1;\n }\n break;\n }\n }\n //后置标点处理\n i = this.patchHandlePostPunctuation(render, nextRender, i, inCloseBody, lineEmpty);\n //前置标点处理\n i = this.patchHandleLeadingPunctuation(render, i, lineEmpty);\n if (i <= 0) {\n return { firstItem: null, lastItem: null };\n }\n\n cutRender.textMeasures = render.textMeasures.splice(0, i);\n render.measure();\n cutRender.measure();\n return { firstItem: cutRender, lastItem: render, br: true };\n }\n\n /**\n * 处理前置标点,前置标点不能出现在末尾\n * @param render \n * @param i \n */\n private patchHandleLeadingPunctuation(render: TextGroupRenderObject, i: number, lineEmpty: boolean): number {\n if (i === 1 && lineEmpty) {\n return i;\n }\n if (this.containLeadingPunctuation(render.textMeasures[i]?.char)) {\n return i--;\n }\n return i;\n }\n\n /**\n * 处理后置标点,后置标点不能出现在行首\n * @param render \n * @param i \n * @param lineEmpty \n */\n private patchHandlePostPunctuation(render: TextGroupRenderObject, nextRender: RenderObject, i: number, inCloseBody: boolean, lineEmpty: boolean): number {\n if (i === render.textMeasures.length - 1) {\n //紧跟着的字符包含后置标点\n if (this.containerStartSymbolInTextStart(nextRender)) {\n i--;\n }\n }\n if (inCloseBody && this.containPostPunctuation(render.textMeasures[i]?.char)) {\n if (this.containPostPunctuation(render.textMeasures[i + 1]?.char)) {\n i--;\n } else {\n i++;\n }\n } else {\n if (i <= 1) {\n //debugger;\n }\n if (i > 1 && this.containPostPunctuation(render.textMeasures[i]?.char)) {\n i--;\n }\n }\n return i;\n }\n\n /**\n * 是否包含后置标点\n * @param str \n * @returns \n */\n private containPostPunctuation(str: string): boolean {\n return '!),.:;?]}¨·ˇˉ―‖’”…∶、。〃々〉》」』】〕〗!"'),.:;?]`|}~¢'.indexOf(str) > -1;\n }\n\n //是否包含前置标点\n private containLeadingPunctuation(str: string): boolean {\n return '‘“〈《「『【〔〖([{£'.indexOf(str) > -1;\n }\n\n /**\n * 文本开头是否包含后置标点\n * @param render \n * @returns \n */\n private containerStartSymbolInTextStart(render: RenderObject): boolean {\n //return false;\n if (render instanceof TextGroupRenderObject) {\n if (render.textMeasures.length > 0) {\n return this.containPostPunctuation(render.textMeasures[0].char);\n }\n }\n return false;\n }\n\n cutFillNullRender(render: FillNullSpaceRenderObject, limitWidth: number): ICutLineData {\n if (limitWidth === 0) {\n return { firstItem: null, lastItem: null }\n }\n if (render.rect.width > limitWidth) {\n const cutRender = new FillNullSpaceRenderObject();\n cutRender.rect.width = limitWidth;\n cutRender.rect.height = render.rect.height;\n render.rect.width = render.rect.width - limitWidth;\n return { firstItem: cutRender, lastItem: render }\n } else {\n return { firstItem: render, lastItem: null }\n }\n }\n\n /**\n * 行内编组元素超出行内可用空间,需要根据剩余空间长度进行截断\n */\n cutInlineGroupRenderItem(render: InlineGroupRenderObject, limitWidth: number, emptyLine: boolean, inCloseBody: boolean): ICutLineData {\n const cutRender = render.element.createRenderObject(this.options, this.renderCtx) as InlineGroupRenderObject;\n let x = 0;\n let br = false;\n const items = [...render.getItems()];\n for (let i = 0; i < items.length; i++) {\n const child = items[i];\n if (child instanceof LeafRenderObject) {\n if (x + child.rect.width > limitWidth) {\n const { firstItem, lastItem, br: childBr } = this.cutRenderItem(child, items[i + 1], limitWidth - x, emptyLine && cutRender.length === 0, inCloseBody);\n if (firstItem) {\n cutRender.addChild(firstItem);\n if (lastItem) {\n //items.push(lastItem);\n //items.splice(i + 1, 0, lastItem)\n }\n }\n br = childBr || br;\n break;\n } else {\n render.removeChild(child);\n cutRender.addChild(child);\n }\n //软换行符\n if (child.element && child.element.type === 'br') {\n br = true;\n break;\n }\n } else if (child instanceof InlineGroupRenderObject) {\n if (x + child.rect.width > limitWidth) {\n const { firstItem, br: childBr } = this.cutInlineGroupRenderItem(child, limitWidth - x, emptyLine && cutRender.length === 0, inCloseBody);\n if (firstItem) {\n cutRender.addChild(firstItem);\n }\n br = childBr || br;\n break;\n } else {\n render.removeChild(child);\n cutRender.addChild(child);\n }\n }\n x += child.rect.width;\n }\n if (!cutRender.length) {\n return { firstItem: null, lastItem: null };\n }\n ElementUtil.remeasureInlineGroupRender(cutRender);\n ElementUtil.remeasureInlineGroupRender(render);\n return { firstItem: cutRender, lastItem: render.length ? render : null, br };\n }\n\n /**\n * 修改测量完毕后的元素状态\n * @param ele \n */\n setMeasureCompletedModifyFlag(ele: Element): void {\n if (ele instanceof BranchElement) {\n for (let i = 0; i < ele.length; i++) {\n this.setMeasureCompletedModifyFlag(ele.getChild(i));\n }\n }\n ele.modifyFlag = ModifyFlag.None;\n }\n\n clearPaintCache(ele: Element): void {\n ele.beginMeasure();\n if (ele instanceof BranchElement) {\n for (let i = 0; i < ele.length; i++) {\n this.clearPaintCache(ele.getChild(i));\n }\n }\n }\n\n endMeasures(ele: Element): void {\n if (ele instanceof BranchElement) {\n for (let i = 0; i < ele.length; i++) {\n this.endMeasures(ele.getChild(i));\n }\n }\n }\n\n\n\n}\n"]}
|
@@ -1,170 +0,0 @@
|
|
1
|
-
import { BranchRenderObject, LeafRenderObject } from "./render-define";
|
2
|
-
import { ElementUtil } from "./element-util";
|
3
|
-
import { CommsContainerRenderObject } from "./impl/comments/comments-container-impl";
|
4
|
-
import { CommentsUtil } from "./impl/comments/comments-util";
|
5
|
-
import { TextGroupElement } from "./impl/text/text-impl";
|
6
|
-
import { RangeUtil } from "./range-util";
|
7
|
-
import { DataElementRenderObject } from "./impl/data-element/data-element-base-impl";
|
8
|
-
export class ElementPaint {
|
9
|
-
viewOptions;
|
10
|
-
renderCtx;
|
11
|
-
//存储元素和绘制元素的映射关系
|
12
|
-
//paintElementMap: Map<Element, Array<RenderObject>> = new Map();
|
13
|
-
selectedSets;
|
14
|
-
measureCommContainer;
|
15
|
-
rePaint;
|
16
|
-
constructor(viewOptions, renderCtx) {
|
17
|
-
this.viewOptions = viewOptions;
|
18
|
-
this.renderCtx = renderCtx;
|
19
|
-
}
|
20
|
-
//审阅标记的位置对应关系
|
21
|
-
paintCommMap;
|
22
|
-
paintPagePos;
|
23
|
-
drawPages(docContainer, selectedSets, measureCommContainer, rePaint) {
|
24
|
-
this.rePaint = rePaint;
|
25
|
-
this.measureCommContainer = measureCommContainer;
|
26
|
-
const { viewSettings, docPageSettings, viewBackcolor } = this.viewOptions;
|
27
|
-
this.renderCtx.clear();
|
28
|
-
this.selectedSets = selectedSets;
|
29
|
-
docContainer.rect.x = Math.floor((viewSettings.width - docPageSettings.width) / 2);
|
30
|
-
this.renderCtx.overlaysContext.fillRect(0, 0, viewSettings.width, viewSettings.height, viewBackcolor);
|
31
|
-
const pageCount = docContainer.length;
|
32
|
-
const containerPos = { x: docContainer.rect.x, y: docContainer.rect.y - this.viewOptions.translateY };
|
33
|
-
for (let i = 0; i < pageCount; i++) {
|
34
|
-
const doc = docContainer.getChild(i);
|
35
|
-
const { x: rx, y: ry, width: rw, height: rh } = doc.rect;
|
36
|
-
const currPosition = { x: rx + containerPos.x, y: ry + containerPos.y };
|
37
|
-
let inViewPort = (currPosition.y >= 0 && currPosition.y <= this.viewOptions.viewPaintHeight) || (currPosition.y < 0 && currPosition.y + rh > 0);
|
38
|
-
if (this.viewOptions.fullPageView) {
|
39
|
-
//inViewPort = undefined;
|
40
|
-
}
|
41
|
-
this.paintCommMap = [];
|
42
|
-
this.paintPagePos = currPosition;
|
43
|
-
this.drawRenderObject(doc, containerPos, inViewPort);
|
44
|
-
if (inViewPort) {
|
45
|
-
this.invokedPagePaintCompleted(doc, containerPos);
|
46
|
-
}
|
47
|
-
}
|
48
|
-
docContainer.endRender(this.renderCtx, containerPos);
|
49
|
-
this.renderCtx.commit(null);
|
50
|
-
}
|
51
|
-
drawRenderObject(renderObject, parent, parentInViewPort = false) {
|
52
|
-
const element = renderObject.element;
|
53
|
-
if (this.rePaint && element) {
|
54
|
-
element.paintRenders.push(renderObject);
|
55
|
-
}
|
56
|
-
const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;
|
57
|
-
const currPosition = { x: rx + parent.x, y: ry + parent.y };
|
58
|
-
//判断当前绘制元素是否在视窗内
|
59
|
-
let inViewPort = parentInViewPort;
|
60
|
-
if (parentInViewPort === undefined || this.viewOptions.fullPageView) {
|
61
|
-
inViewPort = (currPosition.y >= 0 && currPosition.y <= this.viewOptions.viewPaintHeight) || (currPosition.y < 0 && currPosition.y + rh > 0);
|
62
|
-
}
|
63
|
-
if (renderObject instanceof BranchRenderObject) {
|
64
|
-
if (inViewPort || this.rePaint) {
|
65
|
-
//审阅窗口重新计算位置
|
66
|
-
if (this.viewOptions.showReviewWindow && renderObject instanceof CommsContainerRenderObject) {
|
67
|
-
if (!renderObject.isMeasureComm) {
|
68
|
-
CommentsUtil.remeasureComments(this.renderCtx, renderObject, this.measureCommContainer, this.paintCommMap);
|
69
|
-
renderObject.isMeasureComm = true;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
renderObject.beginRender(this.renderCtx, currPosition);
|
73
|
-
for (let i = 0; i < renderObject.length; i++) {
|
74
|
-
const child = renderObject.getChild(i);
|
75
|
-
this.drawRenderObject(child, currPosition, inViewPort);
|
76
|
-
}
|
77
|
-
renderObject.endRender(this.renderCtx, currPosition);
|
78
|
-
}
|
79
|
-
}
|
80
|
-
else if (renderObject instanceof LeafRenderObject) {
|
81
|
-
if (inViewPort) {
|
82
|
-
renderObject.render(this.renderCtx, currPosition);
|
83
|
-
}
|
84
|
-
//审阅信息
|
85
|
-
if (this.viewOptions.showReviewWindow && element && element.type === 'comm') {
|
86
|
-
const commElement = element;
|
87
|
-
if (commElement.props.markType === 'start') {
|
88
|
-
//获取当前绘制元素相对于当前页的坐标
|
89
|
-
this.paintCommMap.push({ ele: commElement, render: renderObject, pos: { x: currPosition.x - this.paintPagePos.x, y: currPosition.y - this.paintPagePos.y } });
|
90
|
-
}
|
91
|
-
}
|
92
|
-
}
|
93
|
-
//处理选中拖蓝
|
94
|
-
if (inViewPort && this.selectedSets.has(element)) {
|
95
|
-
const range = this.selectedSets.get(element);
|
96
|
-
if (renderObject instanceof LeafRenderObject) {
|
97
|
-
const overlayRect = { x: currPosition.x, y: currPosition.y, width: rw, height: rh };
|
98
|
-
const paraLinePos = ElementUtil.getParaLinePos(renderObject, { x: currPosition.x, y: currPosition.y });
|
99
|
-
if (range.isFullSelected) {
|
100
|
-
this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, this.viewOptions.selectionOverlaysColor);
|
101
|
-
}
|
102
|
-
else {
|
103
|
-
if (element instanceof TextGroupElement && range.endOffset > range.startOffset) {
|
104
|
-
const { startX, endX } = ElementUtil.getTextRenderHorX(renderObject, range.startOffset, range.endOffset);
|
105
|
-
overlayRect.width = endX - startX;
|
106
|
-
overlayRect.x += startX;
|
107
|
-
this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, this.viewOptions.selectionOverlaysColor);
|
108
|
-
}
|
109
|
-
}
|
110
|
-
}
|
111
|
-
else if (range.isFullSelected && element.type === 'tbc') {
|
112
|
-
this.renderCtx.overlaysContext.fillRect(currPosition.x, currPosition.y, renderObject.rect.width, renderObject.rect.height, this.viewOptions.selectionOverlaysColor);
|
113
|
-
}
|
114
|
-
}
|
115
|
-
if (inViewPort && this.viewOptions.showReviewWindow && this.measureCommContainer.selectedSet.has(element)) {
|
116
|
-
if (renderObject instanceof LeafRenderObject || renderObject instanceof DataElementRenderObject) {
|
117
|
-
const range = this.measureCommContainer.selectedSet.get(element);
|
118
|
-
if (range.isFullSelected) {
|
119
|
-
let commentRangePaintColor = '#ffd591';
|
120
|
-
for (let i = 0; i < this.measureCommContainer.commentRangeStatus.length; i++) {
|
121
|
-
const commentRangeStatus = this.measureCommContainer.commentRangeStatus[i];
|
122
|
-
if (commentRangeStatus.commContent.focus) {
|
123
|
-
if (RangeUtil.checkElementFullInRange(commentRangeStatus.range, element)) {
|
124
|
-
commentRangePaintColor = '#fa8c16';
|
125
|
-
}
|
126
|
-
}
|
127
|
-
}
|
128
|
-
const overlayRect = { x: currPosition.x, y: currPosition.y, width: rw, height: rh };
|
129
|
-
const paraLinePos = ElementUtil.getParaLinePos(renderObject, { x: currPosition.x, y: currPosition.y });
|
130
|
-
this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, commentRangePaintColor);
|
131
|
-
}
|
132
|
-
}
|
133
|
-
}
|
134
|
-
}
|
135
|
-
/**
|
136
|
-
* 触发页面绘制结束事件
|
137
|
-
*/
|
138
|
-
invokedPagePaintCompleted(renderObject, parent) {
|
139
|
-
const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;
|
140
|
-
const currPosition = { x: rx + parent.x, y: ry + parent.y };
|
141
|
-
renderObject.pagePaintCompleted(this.renderCtx, currPosition);
|
142
|
-
if (renderObject instanceof BranchRenderObject) {
|
143
|
-
for (let i = 0; i < renderObject.length; i++) {
|
144
|
-
this.invokedPagePaintCompleted(renderObject.getChild(i), currPosition);
|
145
|
-
}
|
146
|
-
}
|
147
|
-
}
|
148
|
-
static drawPage(renderCtx, renderObject, parent) {
|
149
|
-
const { x: rx, y: ry } = renderObject.rect;
|
150
|
-
const currPosition = { x: rx + parent.x, y: ry + parent.y };
|
151
|
-
if (renderObject instanceof BranchRenderObject) {
|
152
|
-
renderObject.beginRender(renderCtx, currPosition);
|
153
|
-
for (let i = 0; i < renderObject.length; i++) {
|
154
|
-
const child = renderObject.getChild(i);
|
155
|
-
this.drawPage(renderCtx, child, currPosition);
|
156
|
-
}
|
157
|
-
renderObject.endRender(renderCtx, currPosition);
|
158
|
-
}
|
159
|
-
else if (renderObject instanceof LeafRenderObject) {
|
160
|
-
renderObject.render(renderCtx, currPosition);
|
161
|
-
}
|
162
|
-
}
|
163
|
-
getLeafElementPaintMap(element, shadowRenderIndex = 0) {
|
164
|
-
return element.paintRenders[shadowRenderIndex];
|
165
|
-
}
|
166
|
-
getShadowRenderIndex(element, render) {
|
167
|
-
return element.paintRenders.indexOf(render);
|
168
|
-
}
|
169
|
-
}
|
170
|
-
//# sourceMappingURL=element-paint.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"element-paint.js","sourceRoot":"lib/","sources":["framework/element-paint.ts"],"names":[],"mappings":"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","sourcesContent":["import { RenderContenxtType } from \"./render-context\";\nimport { Element, LeafElement, Position, SelectionContentRange, ViewOptions } from \"./element-define\";\nimport { BranchRenderObject, LeafRenderObject, RenderObject } from \"./render-define\";\nimport { DocumentContainerRender } from \"./impl/document/doc-container-impl\";\nimport { ElementUtil } from \"./element-util\";\nimport { CommentElement } from \"./impl/comments/comment-element-impl\";\nimport { CommsContainerRenderObject } from \"./impl/comments/comments-container-impl\";\nimport { CommentsUtil } from \"./impl/comments/comments-util\";\nimport { TextGroupElement, TextGroupRenderObject } from \"./impl/text/text-impl\";\nimport { RangeUtil } from \"./range-util\";\nimport { DataElementRenderObject } from \"./impl/data-element/data-element-base-impl\";\nexport interface PrintOptions {\n beforePrintPage: (pageIndex: number, pageCount: number) => void;\n afterPrintPage: (pageIndex: number, pageCount: number) => void;\n}\nexport class ElementPaint {\n //存储元素和绘制元素的映射关系\n //paintElementMap: Map<Element, Array<RenderObject>> = new Map();\n private selectedSets!: Map<Element, SelectionContentRange>;\n private measureCommContainer!: CommsContainerRenderObject;\n private rePaint!: boolean;\n constructor(private viewOptions: ViewOptions, private renderCtx: RenderContenxtType) { }\n //审阅标记的位置对应关系\n paintCommMap!: Array<{ ele: CommentElement, render: RenderObject, pos: Position }>;\n paintPagePos!: Position;\n drawPages(docContainer: DocumentContainerRender, selectedSets: Map<Element, SelectionContentRange>, measureCommContainer: CommsContainerRenderObject, rePaint: boolean): void {\n this.rePaint = rePaint;\n this.measureCommContainer = measureCommContainer;\n const { viewSettings, docPageSettings, viewBackcolor } = this.viewOptions;\n this.renderCtx.clear();\n this.selectedSets = selectedSets;\n docContainer.rect.x = Math.floor((viewSettings.width - docPageSettings.width) / 2);\n this.renderCtx.overlaysContext.fillRect(0, 0, viewSettings.width, viewSettings.height, viewBackcolor);\n const pageCount = docContainer.length;\n const containerPos = { x: docContainer.rect.x, y: docContainer.rect.y - this.viewOptions.translateY };\n for (let i = 0; i < pageCount; i++) {\n const doc = docContainer.getChild(i);\n const { x: rx, y: ry, width: rw, height: rh } = doc.rect;\n const currPosition = { x: rx + containerPos.x, y: ry + containerPos.y };\n let inViewPort: boolean | undefined = (currPosition.y >= 0 && currPosition.y <= this.viewOptions.viewPaintHeight) || (currPosition.y < 0 && currPosition.y + rh > 0);\n if (this.viewOptions.fullPageView) {\n //inViewPort = undefined;\n }\n this.paintCommMap = [];\n this.paintPagePos = currPosition;\n this.drawRenderObject(doc, containerPos, inViewPort);\n if (inViewPort) {\n this.invokedPagePaintCompleted(doc, containerPos);\n }\n\n }\n docContainer.endRender(this.renderCtx, containerPos)\n this.renderCtx.commit(null);\n }\n\n drawRenderObject(renderObject: RenderObject<any>, parent: { x: number, y: number }, parentInViewPort: boolean | undefined = false): void {\n const element = renderObject.element;\n if (this.rePaint && element) {\n element.paintRenders.push(renderObject);\n }\n const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;\n const currPosition = { x: rx + parent.x, y: ry + parent.y };\n //判断当前绘制元素是否在视窗内\n let inViewPort: boolean = parentInViewPort;\n if (parentInViewPort === undefined || this.viewOptions.fullPageView) {\n inViewPort = (currPosition.y >= 0 && currPosition.y <= this.viewOptions.viewPaintHeight) || (currPosition.y < 0 && currPosition.y + rh > 0);\n }\n if (renderObject instanceof BranchRenderObject) {\n if (inViewPort || this.rePaint) {\n //审阅窗口重新计算位置\n if (this.viewOptions.showReviewWindow && renderObject instanceof CommsContainerRenderObject) {\n if (!renderObject.isMeasureComm) {\n CommentsUtil.remeasureComments(this.renderCtx, renderObject, this.measureCommContainer, this.paintCommMap);\n renderObject.isMeasureComm = true;\n }\n }\n renderObject.beginRender(this.renderCtx, currPosition);\n for (let i = 0; i < renderObject.length; i++) {\n const child = renderObject.getChild(i);\n this.drawRenderObject(child, currPosition, inViewPort)\n }\n renderObject.endRender(this.renderCtx, currPosition);\n }\n } else if (renderObject instanceof LeafRenderObject) {\n if (inViewPort) {\n renderObject.render(this.renderCtx, currPosition);\n }\n //审阅信息\n if (this.viewOptions.showReviewWindow && element && element.type === 'comm') {\n const commElement = element as CommentElement;\n if (commElement.props.markType === 'start') {\n //获取当前绘制元素相对于当前页的坐标\n this.paintCommMap.push({ ele: commElement, render: renderObject, pos: { x: currPosition.x - this.paintPagePos.x, y: currPosition.y - this.paintPagePos.y } });\n }\n }\n }\n //处理选中拖蓝\n if (inViewPort && this.selectedSets.has(element)) {\n const range = this.selectedSets.get(element) as SelectionContentRange;\n if (renderObject instanceof LeafRenderObject) {\n const overlayRect = { x: currPosition.x, y: currPosition.y, width: rw, height: rh };\n const paraLinePos = ElementUtil.getParaLinePos(renderObject, { x: currPosition.x, y: currPosition.y });\n if (range.isFullSelected) {\n this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, this.viewOptions.selectionOverlaysColor);\n } else {\n if (element instanceof TextGroupElement && range.endOffset > range.startOffset) {\n const { startX, endX } = ElementUtil.getTextRenderHorX(<TextGroupRenderObject>renderObject, range.startOffset, range.endOffset);\n overlayRect.width = endX - startX;\n overlayRect.x += startX;\n this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, this.viewOptions.selectionOverlaysColor);\n }\n }\n } else if (range.isFullSelected && element.type === 'tbc') {\n this.renderCtx.overlaysContext.fillRect(currPosition.x, currPosition.y, renderObject.rect.width, renderObject.rect.height, this.viewOptions.selectionOverlaysColor);\n }\n }\n if (inViewPort && this.viewOptions.showReviewWindow && this.measureCommContainer.selectedSet.has(element)) {\n if (renderObject instanceof LeafRenderObject || renderObject instanceof DataElementRenderObject) {\n const range = this.measureCommContainer.selectedSet.get(element) as SelectionContentRange;\n if (range.isFullSelected) {\n let commentRangePaintColor = '#ffd591';\n for (let i = 0; i < this.measureCommContainer.commentRangeStatus.length; i++) {\n const commentRangeStatus = this.measureCommContainer.commentRangeStatus[i];\n if (commentRangeStatus.commContent.focus) {\n if (RangeUtil.checkElementFullInRange(commentRangeStatus.range, element)) {\n commentRangePaintColor = '#fa8c16';\n }\n }\n }\n const overlayRect = { x: currPosition.x, y: currPosition.y, width: rw, height: rh };\n const paraLinePos = ElementUtil.getParaLinePos(renderObject, { x: currPosition.x, y: currPosition.y });\n this.renderCtx.overlaysContext.fillRect(overlayRect.x, paraLinePos.y, overlayRect.width, paraLinePos.height, commentRangePaintColor);\n }\n }\n\n }\n }\n\n /**\n * 触发页面绘制结束事件\n */\n invokedPagePaintCompleted(renderObject: RenderObject, parent: { x: number, y: number }): void {\n const { x: rx, y: ry, width: rw, height: rh } = renderObject.rect;\n const currPosition = { x: rx + parent.x, y: ry + parent.y };\n renderObject.pagePaintCompleted(this.renderCtx, currPosition);\n if (renderObject instanceof BranchRenderObject) {\n for (let i = 0; i < renderObject.length; i++) {\n this.invokedPagePaintCompleted(renderObject.getChild(i), currPosition);\n }\n }\n }\n\n static drawPage(renderCtx: RenderContenxtType, renderObject: RenderObject, parent: { x: number, y: number }): void {\n const { x: rx, y: ry } = renderObject.rect;\n const currPosition = { x: rx + parent.x, y: ry + parent.y };\n if (renderObject instanceof BranchRenderObject) {\n renderObject.beginRender(renderCtx, currPosition);\n for (let i = 0; i < renderObject.length; i++) {\n const child = renderObject.getChild(i);\n this.drawPage(renderCtx, child, currPosition);\n }\n renderObject.endRender(renderCtx, currPosition);\n } else if (renderObject instanceof LeafRenderObject) {\n renderObject.render(renderCtx, currPosition);\n }\n }\n\n\n getLeafElementPaintMap(element: LeafElement, shadowRenderIndex = 0): LeafRenderObject {\n return element.paintRenders[shadowRenderIndex] as LeafRenderObject;\n }\n\n getShadowRenderIndex(element: LeafElement, render: LeafRenderObject): number {\n return element.paintRenders.indexOf(render);\n }\n}\n"]}
|