ice-entity-designer 0.0.39 → 0.1.0
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/README.md +69 -14
- package/dist/index.cjs +1 -6
- package/dist/index.mjs +1 -6
- package/dist/index.umd.js +1 -6
- package/dist/react.cjs +1 -6
- package/dist/react.mjs +1 -6
- package/dist/types/bpmn/BpmnSimulator.d.mts +3 -3
- package/dist/types/bpmn/BpmnSimulator.d.ts +3 -3
- package/dist/types/bpmn/bpmn_shapes.d.mts +1 -1
- package/dist/types/bpmn/bpmn_shapes.d.ts +1 -1
- package/dist/types/bpmn/bpmn_validate.d.mts +1 -1
- package/dist/types/bpmn/bpmn_validate.d.ts +1 -1
- package/dist/types/bpmn/bpmn_xml.d.mts +1 -1
- package/dist/types/bpmn/bpmn_xml.d.ts +1 -1
- package/dist/types/designer/EntityDesigner.d.mts +3 -3
- package/dist/types/designer/EntityDesigner.d.ts +3 -3
- package/dist/types/er-component/Entity.d.mts +2 -2
- package/dist/types/er-component/Entity.d.ts +2 -2
- package/dist/types/er-component/Relation.d.mts +1 -1
- package/dist/types/er-component/Relation.d.ts +1 -1
- package/dist/types/flow/FlowDesigner.d.mts +4 -4
- package/dist/types/flow/FlowDesigner.d.ts +4 -4
- package/dist/types/flow/FlowEdge.d.mts +2 -2
- package/dist/types/flow/FlowEdge.d.ts +2 -2
- package/dist/types/flow/FlowNode.d.mts +3 -3
- package/dist/types/flow/FlowNode.d.ts +3 -3
- package/dist/types/flow/flow_shapes.d.mts +1 -1
- package/dist/types/flow/flow_shapes.d.ts +1 -1
- package/dist/types/gantt/GanttDependency.d.mts +1 -1
- package/dist/types/gantt/GanttDependency.d.ts +1 -1
- package/dist/types/gantt/GanttDesigner.d.mts +2 -2
- package/dist/types/gantt/GanttDesigner.d.ts +2 -2
- package/dist/types/gantt/GanttRuler.d.mts +2 -2
- package/dist/types/gantt/GanttRuler.d.ts +2 -2
- package/dist/types/gantt/GanttTask.d.mts +1 -1
- package/dist/types/gantt/GanttTask.d.ts +1 -1
- package/dist/types/gantt/gantt_text.d.mts +1 -1
- package/dist/types/gantt/gantt_text.d.ts +1 -1
- package/dist/types/index.d.mts +4 -13
- package/dist/types/index.d.ts +4 -13
- package/dist/types/power/PowerDesigner.d.mts +2 -2
- package/dist/types/power/PowerDesigner.d.ts +2 -2
- package/dist/types/power/power_shapes.d.mts +4 -4
- package/dist/types/power/power_shapes.d.ts +4 -4
- package/dist/types/power/power_voltage.d.mts +1 -1
- package/dist/types/power/power_voltage.d.ts +1 -1
- package/dist/types/react/context.d.mts +2 -2
- package/dist/types/react/context.d.ts +2 -2
- package/dist/types/react/index.d.mts +0 -1
- package/dist/types/react/index.d.ts +0 -1
- package/dist/types/react/session.d.mts +4 -4
- package/dist/types/react/session.d.ts +4 -4
- package/dist/types/react/types.d.mts +7 -7
- package/dist/types/react/types.d.ts +7 -7
- package/dist/types/secondary/SecondaryDesigner.d.mts +1 -1
- package/dist/types/secondary/SecondaryDesigner.d.ts +1 -1
- package/dist/types/secondary/secondary_shapes.d.mts +2 -2
- package/dist/types/secondary/secondary_shapes.d.ts +2 -2
- package/dist/types/statechart/StateNode.d.mts +2 -2
- package/dist/types/statechart/StateNode.d.ts +2 -2
- package/dist/types/statechart/StateTransition.d.mts +1 -1
- package/dist/types/statechart/StateTransition.d.ts +1 -1
- package/dist/types/statechart/StatechartDesigner.d.mts +1 -1
- package/dist/types/statechart/StatechartDesigner.d.ts +1 -1
- package/dist/types/statechart/statechart_text.d.mts +1 -1
- package/dist/types/statechart/statechart_text.d.ts +1 -1
- package/dist/types/uml/UmlClass.d.mts +2 -2
- package/dist/types/uml/UmlClass.d.ts +2 -2
- package/dist/types/uml/UmlDesigner.d.mts +1 -1
- package/dist/types/uml/UmlDesigner.d.ts +1 -1
- package/dist/types/uml/UmlRelation.d.mts +4 -4
- package/dist/types/uml/UmlRelation.d.ts +4 -4
- package/dist/types/uml/uml_text.d.mts +1 -1
- package/dist/types/uml/uml_text.d.ts +1 -1
- package/dist/types/utils/project_codec.d.mts +2 -2
- package/dist/types/utils/project_codec.d.ts +2 -2
- package/dist/types/utils/project_schema.d.mts +1 -1
- package/dist/types/utils/project_schema.d.ts +1 -1
- package/dist/types/utils/schema_validator.d.mts +1 -1
- package/dist/types/utils/schema_validator.d.ts +1 -1
- package/package.json +24 -20
- package/dist/types/gl-matrix.d.mts +0 -3273
- package/dist/types/gl-matrix.d.ts +0 -3273
- package/dist/types/ice-render/FrameManager.d.mts +0 -26
- package/dist/types/ice-render/FrameManager.d.ts +0 -26
- package/dist/types/ice-render/ICE.d.mts +0 -424
- package/dist/types/ice-render/ICE.d.ts +0 -424
- package/dist/types/ice-render/a11y/accessibility.d.mts +0 -46
- package/dist/types/ice-render/a11y/accessibility.d.ts +0 -46
- package/dist/types/ice-render/animation/AnimationManager.d.mts +0 -96
- package/dist/types/ice-render/animation/AnimationManager.d.ts +0 -96
- package/dist/types/ice-render/animation/Easing.d.mts +0 -33
- package/dist/types/ice-render/animation/Easing.d.ts +0 -33
- package/dist/types/ice-render/consts/BIG_ZINDEX_NUMBER.d.mts +0 -14
- package/dist/types/ice-render/consts/BIG_ZINDEX_NUMBER.d.ts +0 -14
- package/dist/types/ice-render/consts/COMPONENT_TYPE_MAPPING.d.mts +0 -45
- package/dist/types/ice-render/consts/COMPONENT_TYPE_MAPPING.d.ts +0 -45
- package/dist/types/ice-render/consts/DOM_EVENT_MAPPING_CONSTS.d.mts +0 -37
- package/dist/types/ice-render/consts/DOM_EVENT_MAPPING_CONSTS.d.ts +0 -37
- package/dist/types/ice-render/consts/ICE_EVENT_NAME_CONSTS.d.mts +0 -27
- package/dist/types/ice-render/consts/ICE_EVENT_NAME_CONSTS.d.ts +0 -27
- package/dist/types/ice-render/control-panel/AlignmentGuideManager.d.mts +0 -92
- package/dist/types/ice-render/control-panel/AlignmentGuideManager.d.ts +0 -92
- package/dist/types/ice-render/control-panel/ICEControlPanel.d.mts +0 -37
- package/dist/types/ice-render/control-panel/ICEControlPanel.d.ts +0 -37
- package/dist/types/ice-render/control-panel/ICEControlPanelManager.d.mts +0 -25
- package/dist/types/ice-render/control-panel/ICEControlPanelManager.d.ts +0 -25
- package/dist/types/ice-render/control-panel/link-controls/LineControlPanel.d.mts +0 -39
- package/dist/types/ice-render/control-panel/link-controls/LineControlPanel.d.ts +0 -39
- package/dist/types/ice-render/control-panel/transform-controls/ResizeControl.d.mts +0 -38
- package/dist/types/ice-render/control-panel/transform-controls/ResizeControl.d.ts +0 -38
- package/dist/types/ice-render/control-panel/transform-controls/RotateControl.d.mts +0 -12
- package/dist/types/ice-render/control-panel/transform-controls/RotateControl.d.ts +0 -12
- package/dist/types/ice-render/control-panel/transform-controls/TransformControlPanel.d.mts +0 -83
- package/dist/types/ice-render/control-panel/transform-controls/TransformControlPanel.d.ts +0 -83
- package/dist/types/ice-render/control-panel/transform-controls/constraints.d.mts +0 -24
- package/dist/types/ice-render/control-panel/transform-controls/constraints.d.ts +0 -24
- package/dist/types/ice-render/cross-platform/Path2DRecorder.d.mts +0 -76
- package/dist/types/ice-render/cross-platform/Path2DRecorder.d.ts +0 -76
- package/dist/types/ice-render/cross-platform/PolyfillPath2D.d.mts +0 -21
- package/dist/types/ice-render/cross-platform/PolyfillPath2D.d.ts +0 -21
- package/dist/types/ice-render/cross-platform/root.d.mts +0 -7
- package/dist/types/ice-render/cross-platform/root.d.ts +0 -7
- package/dist/types/ice-render/event/DOMEventDispatcher.d.mts +0 -75
- package/dist/types/ice-render/event/DOMEventDispatcher.d.ts +0 -75
- package/dist/types/ice-render/event/DOMEventInterceptor.d.mts +0 -36
- package/dist/types/ice-render/event/DOMEventInterceptor.d.ts +0 -36
- package/dist/types/ice-render/event/EventBus.d.mts +0 -27
- package/dist/types/ice-render/event/EventBus.d.ts +0 -27
- package/dist/types/ice-render/event/ICEEvent.d.mts +0 -46
- package/dist/types/ice-render/event/ICEEvent.d.ts +0 -46
- package/dist/types/ice-render/event/ICEEventTarget.d.mts +0 -106
- package/dist/types/ice-render/event/ICEEventTarget.d.ts +0 -106
- package/dist/types/ice-render/event/input-normalize.d.mts +0 -75
- package/dist/types/ice-render/event/input-normalize.d.ts +0 -75
- package/dist/types/ice-render/export/SvgExporter.d.mts +0 -54
- package/dist/types/ice-render/export/SvgExporter.d.ts +0 -54
- package/dist/types/ice-render/geometry/GeoLine.d.mts +0 -24
- package/dist/types/ice-render/geometry/GeoLine.d.ts +0 -24
- package/dist/types/ice-render/geometry/GeoPoint.d.mts +0 -53
- package/dist/types/ice-render/geometry/GeoPoint.d.ts +0 -53
- package/dist/types/ice-render/geometry/GeoUtil.d.mts +0 -73
- package/dist/types/ice-render/geometry/GeoUtil.d.ts +0 -73
- package/dist/types/ice-render/geometry/ICEBoundingBox.d.mts +0 -81
- package/dist/types/ice-render/geometry/ICEBoundingBox.d.ts +0 -81
- package/dist/types/ice-render/graphic/ICEComponent.d.mts +0 -535
- package/dist/types/ice-render/graphic/ICEComponent.d.ts +0 -535
- package/dist/types/ice-render/graphic/ICEDotPath.d.mts +0 -99
- package/dist/types/ice-render/graphic/ICEDotPath.d.ts +0 -99
- package/dist/types/ice-render/graphic/ICEImage.d.mts +0 -17
- package/dist/types/ice-render/graphic/ICEImage.d.ts +0 -17
- package/dist/types/ice-render/graphic/ICEPath.d.mts +0 -46
- package/dist/types/ice-render/graphic/ICEPath.d.ts +0 -46
- package/dist/types/ice-render/graphic/container/ICEGroup.d.mts +0 -111
- package/dist/types/ice-render/graphic/container/ICEGroup.d.ts +0 -111
- package/dist/types/ice-render/graphic/link/ICEBezier.d.mts +0 -23
- package/dist/types/ice-render/graphic/link/ICEBezier.d.ts +0 -23
- package/dist/types/ice-render/graphic/link/ICELinkHook.d.mts +0 -52
- package/dist/types/ice-render/graphic/link/ICELinkHook.d.ts +0 -52
- package/dist/types/ice-render/graphic/link/ICELinkSlot.d.mts +0 -54
- package/dist/types/ice-render/graphic/link/ICELinkSlot.d.ts +0 -54
- package/dist/types/ice-render/graphic/link/ICELinkSlotManager.d.mts +0 -28
- package/dist/types/ice-render/graphic/link/ICELinkSlotManager.d.ts +0 -28
- package/dist/types/ice-render/graphic/link/ICEPolyLine.d.mts +0 -316
- package/dist/types/ice-render/graphic/link/ICEPolyLine.d.ts +0 -316
- package/dist/types/ice-render/graphic/link/ICEVisioLink.d.mts +0 -163
- package/dist/types/ice-render/graphic/link/ICEVisioLink.d.ts +0 -163
- package/dist/types/ice-render/graphic/shape/ICECircle.d.mts +0 -19
- package/dist/types/ice-render/graphic/shape/ICECircle.d.ts +0 -19
- package/dist/types/ice-render/graphic/shape/ICEEllipse.d.mts +0 -29
- package/dist/types/ice-render/graphic/shape/ICEEllipse.d.ts +0 -29
- package/dist/types/ice-render/graphic/shape/ICEIsogon.d.mts +0 -52
- package/dist/types/ice-render/graphic/shape/ICEIsogon.d.ts +0 -52
- package/dist/types/ice-render/graphic/shape/ICERect.d.mts +0 -10
- package/dist/types/ice-render/graphic/shape/ICERect.d.ts +0 -10
- package/dist/types/ice-render/graphic/shape/ICERose.d.mts +0 -41
- package/dist/types/ice-render/graphic/shape/ICERose.d.ts +0 -41
- package/dist/types/ice-render/graphic/shape/ICEStar.d.mts +0 -45
- package/dist/types/ice-render/graphic/shape/ICEStar.d.ts +0 -45
- package/dist/types/ice-render/graphic/text/ICEText.d.mts +0 -158
- package/dist/types/ice-render/graphic/text/ICEText.d.ts +0 -158
- package/dist/types/ice-render/index.d.mts +0 -59
- package/dist/types/ice-render/index.d.ts +0 -59
- package/dist/types/ice-render/layout/ICEBorderLayout.d.mts +0 -34
- package/dist/types/ice-render/layout/ICEBorderLayout.d.ts +0 -34
- package/dist/types/ice-render/layout/ICEBoxLayout.d.mts +0 -30
- package/dist/types/ice-render/layout/ICEBoxLayout.d.ts +0 -30
- package/dist/types/ice-render/layout/ICECardLayout.d.mts +0 -36
- package/dist/types/ice-render/layout/ICECardLayout.d.ts +0 -36
- package/dist/types/ice-render/layout/ICEFlowLayout.d.mts +0 -31
- package/dist/types/ice-render/layout/ICEFlowLayout.d.ts +0 -31
- package/dist/types/ice-render/layout/ICEGridLayout.d.mts +0 -33
- package/dist/types/ice-render/layout/ICEGridLayout.d.ts +0 -33
- package/dist/types/ice-render/layout/ICELayeredLayout.d.mts +0 -49
- package/dist/types/ice-render/layout/ICELayeredLayout.d.ts +0 -49
- package/dist/types/ice-render/layout/ICELayoutManager.d.mts +0 -33
- package/dist/types/ice-render/layout/ICELayoutManager.d.ts +0 -33
- package/dist/types/ice-render/layout/ICEOverlayLayout.d.mts +0 -25
- package/dist/types/ice-render/layout/ICEOverlayLayout.d.ts +0 -25
- package/dist/types/ice-render/persistence/Deserializer.d.mts +0 -43
- package/dist/types/ice-render/persistence/Deserializer.d.ts +0 -43
- package/dist/types/ice-render/persistence/Serializer.d.mts +0 -35
- package/dist/types/ice-render/persistence/Serializer.d.ts +0 -35
- package/dist/types/ice-render/plugin/PluginHost.d.mts +0 -86
- package/dist/types/ice-render/plugin/PluginHost.d.ts +0 -86
- package/dist/types/ice-render/renderer/CanvasRenderer.d.mts +0 -150
- package/dist/types/ice-render/renderer/CanvasRenderer.d.ts +0 -150
- package/dist/types/ice-render/renderer/ObjectCache.d.mts +0 -79
- package/dist/types/ice-render/renderer/ObjectCache.d.ts +0 -79
- package/dist/types/ice-render/renderer/dirty-rect-util.d.mts +0 -86
- package/dist/types/ice-render/renderer/dirty-rect-util.d.ts +0 -86
- package/dist/types/ice-render/theme/ICETheme.d.mts +0 -382
- package/dist/types/ice-render/theme/ICETheme.d.ts +0 -382
- package/dist/types/ice-render/util/ImageCache.d.mts +0 -19
- package/dist/types/ice-render/util/ImageCache.d.ts +0 -19
- package/dist/types/ice-render/util/data-util.d.mts +0 -43
- package/dist/types/ice-render/util/data-util.d.ts +0 -43
- package/dist/types/ice-render/util/gl-matrix-skew.d.mts +0 -14
- package/dist/types/ice-render/util/gl-matrix-skew.d.ts +0 -14
- package/dist/types/ice-render/util/lang.d.mts +0 -28
- package/dist/types/ice-render/util/lang.d.ts +0 -28
- package/dist/types/ice-render/util/uuid.d.mts +0 -1
- package/dist/types/ice-render/util/uuid.d.ts +0 -1
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2022 大漠穷秋.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
import type ICEGroup from '../graphic/container/ICEGroup';
|
|
9
|
-
import ICELayoutManager from './ICELayoutManager';
|
|
10
|
-
/**
|
|
11
|
-
* @class ICEOverlayLayout 叠加布局
|
|
12
|
-
*
|
|
13
|
-
* 对齐 Java Swing 的 OverlayLayout:所有子组件叠放在同一位置(左上角)。
|
|
14
|
-
* 可用于做图层叠加效果。
|
|
15
|
-
*
|
|
16
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
17
|
-
*/
|
|
18
|
-
declare class ICEOverlayLayout extends ICELayoutManager {
|
|
19
|
-
/**
|
|
20
|
-
* @overwrite
|
|
21
|
-
* 所有子组件叠放到容器左上角。
|
|
22
|
-
*/
|
|
23
|
-
layoutContainer(container: ICEGroup): void;
|
|
24
|
-
}
|
|
25
|
-
export default ICEOverlayLayout;
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 序列化格式迁移表:`to` 为目标版本,按升序执行。
|
|
3
|
-
*
|
|
4
|
-
* 需要变更数据格式时,把 SERIALIZATION_VERSION 加 1 并在此追加一条迁移:
|
|
5
|
-
* `SERIALIZATION_MIGRATIONS.push({ to: 2, run: (json) => { ...改写 json 结构... } });`
|
|
6
|
-
* 当前版本为 1,尚无迁移(仅保留机制与回归用例)。
|
|
7
|
-
*/
|
|
8
|
-
export declare const SERIALIZATION_MIGRATIONS: Array<{
|
|
9
|
-
to: number;
|
|
10
|
-
run: (jsonObj: any) => void;
|
|
11
|
-
}>;
|
|
12
|
-
/**
|
|
13
|
-
* @class Deserializer
|
|
14
|
-
*
|
|
15
|
-
* 把 JSON 字符串反解析成图形。
|
|
16
|
-
*
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
export default class Deserializer {
|
|
20
|
-
private ice;
|
|
21
|
-
constructor(ice: any);
|
|
22
|
-
/** 本次反序列化中遇到的、未注册的组件类型名(去重)。供应用层提示用户 registerType 后重载。 */
|
|
23
|
-
private _unknownTypes;
|
|
24
|
-
get unknownTypes(): string[];
|
|
25
|
-
fromJSONObject(jsonObj: any): void;
|
|
26
|
-
fromJSONString(jsonStr: string): void;
|
|
27
|
-
/**
|
|
28
|
-
* 版本迁移钩子:当序列化格式版本变化时,在此处按版本逐级升级数据结构。
|
|
29
|
-
* 当前版本为 {@link SERIALIZATION_VERSION},低于该版本的旧数据在此迁移。
|
|
30
|
-
*/
|
|
31
|
-
private migrate;
|
|
32
|
-
/**
|
|
33
|
-
* 递归反序列化。
|
|
34
|
-
*
|
|
35
|
-
* 容错:遇到未注册的类型时**跳过该节点(含其子树)并记录**,而不是抛错终止整图加载
|
|
36
|
-
* (旧实现直接 `new undefined(...)` 抛 TypeError,一个未知组件会导致整份数据打不开)。
|
|
37
|
-
* 注意:生产构建会用 rollup-plugin-strip 去掉 console.*,因此告警也可能消失;
|
|
38
|
-
* 应用层应以 `deserializer.unknownTypes` 为准做提示。
|
|
39
|
-
*
|
|
40
|
-
* @returns 创建出的实例;跳过时返回 null
|
|
41
|
-
*/
|
|
42
|
-
private decodeRecursively;
|
|
43
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 序列化格式迁移表:`to` 为目标版本,按升序执行。
|
|
3
|
-
*
|
|
4
|
-
* 需要变更数据格式时,把 SERIALIZATION_VERSION 加 1 并在此追加一条迁移:
|
|
5
|
-
* `SERIALIZATION_MIGRATIONS.push({ to: 2, run: (json) => { ...改写 json 结构... } });`
|
|
6
|
-
* 当前版本为 1,尚无迁移(仅保留机制与回归用例)。
|
|
7
|
-
*/
|
|
8
|
-
export declare const SERIALIZATION_MIGRATIONS: Array<{
|
|
9
|
-
to: number;
|
|
10
|
-
run: (jsonObj: any) => void;
|
|
11
|
-
}>;
|
|
12
|
-
/**
|
|
13
|
-
* @class Deserializer
|
|
14
|
-
*
|
|
15
|
-
* 把 JSON 字符串反解析成图形。
|
|
16
|
-
*
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
export default class Deserializer {
|
|
20
|
-
private ice;
|
|
21
|
-
constructor(ice: any);
|
|
22
|
-
/** 本次反序列化中遇到的、未注册的组件类型名(去重)。供应用层提示用户 registerType 后重载。 */
|
|
23
|
-
private _unknownTypes;
|
|
24
|
-
get unknownTypes(): string[];
|
|
25
|
-
fromJSONObject(jsonObj: any): void;
|
|
26
|
-
fromJSONString(jsonStr: string): void;
|
|
27
|
-
/**
|
|
28
|
-
* 版本迁移钩子:当序列化格式版本变化时,在此处按版本逐级升级数据结构。
|
|
29
|
-
* 当前版本为 {@link SERIALIZATION_VERSION},低于该版本的旧数据在此迁移。
|
|
30
|
-
*/
|
|
31
|
-
private migrate;
|
|
32
|
-
/**
|
|
33
|
-
* 递归反序列化。
|
|
34
|
-
*
|
|
35
|
-
* 容错:遇到未注册的类型时**跳过该节点(含其子树)并记录**,而不是抛错终止整图加载
|
|
36
|
-
* (旧实现直接 `new undefined(...)` 抛 TypeError,一个未知组件会导致整份数据打不开)。
|
|
37
|
-
* 注意:生产构建会用 rollup-plugin-strip 去掉 console.*,因此告警也可能消失;
|
|
38
|
-
* 应用层应以 `deserializer.unknownTypes` 为准做提示。
|
|
39
|
-
*
|
|
40
|
-
* @returns 创建出的实例;跳过时返回 null
|
|
41
|
-
*/
|
|
42
|
-
private decodeRecursively;
|
|
43
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 序列化格式版本号。数据结构发生变化时递增,并在 Deserializer 中做对应迁移。
|
|
3
|
-
*/
|
|
4
|
-
export declare const SERIALIZATION_VERSION = 1;
|
|
5
|
-
/**
|
|
6
|
-
* @class Serializer
|
|
7
|
-
*
|
|
8
|
-
* 把图形序列化成 JSON 字符串。
|
|
9
|
-
*
|
|
10
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
11
|
-
*/
|
|
12
|
-
export default class Serializer {
|
|
13
|
-
private ice;
|
|
14
|
-
constructor(ice: any);
|
|
15
|
-
/**
|
|
16
|
-
* 把对象序列化成 JSON 字符串:
|
|
17
|
-
* - 容器型组件需要负责子节点的序列化操作
|
|
18
|
-
* - 如果组件不需要序列化,需要返回 null
|
|
19
|
-
* @returns Object
|
|
20
|
-
*/
|
|
21
|
-
toJSONString(): string;
|
|
22
|
-
/**
|
|
23
|
-
* 把对象序列化成 JSON 对象:
|
|
24
|
-
* - 容器型组件需要负责子节点的序列化操作
|
|
25
|
-
* - 如果组件不需要序列化,需要返回 null
|
|
26
|
-
* @returns Object
|
|
27
|
-
*/
|
|
28
|
-
toJSONObject(): object;
|
|
29
|
-
private encodeRecursively;
|
|
30
|
-
/**
|
|
31
|
-
* 只序列化用户数据,排除运行时缓存/计算值(linearMatrix/composedMatrix/localOrigin/
|
|
32
|
-
* absoluteOrigin/dots/textHeight 等)。
|
|
33
|
-
*/
|
|
34
|
-
private pickSerializableState;
|
|
35
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 序列化格式版本号。数据结构发生变化时递增,并在 Deserializer 中做对应迁移。
|
|
3
|
-
*/
|
|
4
|
-
export declare const SERIALIZATION_VERSION = 1;
|
|
5
|
-
/**
|
|
6
|
-
* @class Serializer
|
|
7
|
-
*
|
|
8
|
-
* 把图形序列化成 JSON 字符串。
|
|
9
|
-
*
|
|
10
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
11
|
-
*/
|
|
12
|
-
export default class Serializer {
|
|
13
|
-
private ice;
|
|
14
|
-
constructor(ice: any);
|
|
15
|
-
/**
|
|
16
|
-
* 把对象序列化成 JSON 字符串:
|
|
17
|
-
* - 容器型组件需要负责子节点的序列化操作
|
|
18
|
-
* - 如果组件不需要序列化,需要返回 null
|
|
19
|
-
* @returns Object
|
|
20
|
-
*/
|
|
21
|
-
toJSONString(): string;
|
|
22
|
-
/**
|
|
23
|
-
* 把对象序列化成 JSON 对象:
|
|
24
|
-
* - 容器型组件需要负责子节点的序列化操作
|
|
25
|
-
* - 如果组件不需要序列化,需要返回 null
|
|
26
|
-
* @returns Object
|
|
27
|
-
*/
|
|
28
|
-
toJSONObject(): object;
|
|
29
|
-
private encodeRecursively;
|
|
30
|
-
/**
|
|
31
|
-
* 只序列化用户数据,排除运行时缓存/计算值(linearMatrix/composedMatrix/localOrigin/
|
|
32
|
-
* absoluteOrigin/dots/textHeight 等)。
|
|
33
|
-
*/
|
|
34
|
-
private pickSerializableState;
|
|
35
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 插件宿主:为引擎提供「组件 / 渲染 / 交互工具」三层注册点。
|
|
3
|
-
*
|
|
4
|
-
* 设计取向与 09-roadmap 的边界一致——**只提供原语,不做应用层 UX**:
|
|
5
|
-
* - 组件层:插件声明自定义图元类型,宿主代为 `registerType`(因此自动获得
|
|
6
|
-
* 序列化 typeId 反查能力,见 `ICE.getTypeId`)。
|
|
7
|
-
* - 渲染层:插件拿到每帧的绘制回调,在与组件相同的坐标系(世界坐标)下叠加绘制。
|
|
8
|
-
* 局部重绘帧里回调在 clip 之内执行,语义与组件一致(超出脏区域的旧内容不会被擦除也不会被重画;
|
|
9
|
-
* 若插件内容会随时间变化而没有任何组件变脏,引擎本身会因「无脏组件」回退全量,仍然正确)。
|
|
10
|
-
* - 交互工具层:插件按 `match(component)` 声明自己的工具组件;宿主复用既有 `toolNodes`
|
|
11
|
-
* 机制做 add/remove,`exclusive` 为真时禁用内置变换/连线面板。
|
|
12
|
-
*
|
|
13
|
-
* 生命周期:`ICE.use(plugin)` 幂等(按 `name` 去重)→ 调用 `setup(ice)`;
|
|
14
|
-
* `ICE.unuse(name)` → 调用 `teardown(ice)` 并撤销该插件注册的工具与渲染回调。
|
|
15
|
-
* 类型注册(`components`)在 unuse 后**保留**——反序列化仍可能依赖它,且撤销类型会让已存数据失效。
|
|
16
|
-
*
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
export interface ICERenderFrame {
|
|
20
|
-
ctx: any;
|
|
21
|
-
/** 当前渲染模式 */
|
|
22
|
-
mode: 'full' | 'dirty-rect';
|
|
23
|
-
/** 局部重绘时的脏区域(世界坐标 [minX,minY,maxX,maxY]);全量帧为 null */
|
|
24
|
-
region: number[] | null;
|
|
25
|
-
/** 画布尺寸(设备像素) */
|
|
26
|
-
width: number;
|
|
27
|
-
height: number;
|
|
28
|
-
}
|
|
29
|
-
export type ICERenderHook = (frame: ICERenderFrame) => void;
|
|
30
|
-
export interface ICEPluginTool {
|
|
31
|
-
/** 插件内唯一 id(用于幂等注册与撤销) */
|
|
32
|
-
id: string;
|
|
33
|
-
/** 该工具是否应作用于当前选中的组件 */
|
|
34
|
-
match: (component: any, ice: any) => boolean;
|
|
35
|
-
/** 创建工具组件(会被加到 ICE.toolNodes,不参与序列化) */
|
|
36
|
-
create: () => any;
|
|
37
|
-
/**
|
|
38
|
-
* 命中时是否屏蔽内置变换/连线面板。
|
|
39
|
-
* 默认 false(叠加在内置面板之上);为 true 时内置面板会被禁用,避免与插件工具重叠。
|
|
40
|
-
*/
|
|
41
|
-
exclusive?: boolean;
|
|
42
|
-
/** 可选:目标组件变化时回调(同一工具实例被复用,避免每次选中都重建) */
|
|
43
|
-
onTargetChange?: (tool: any, component: any) => void;
|
|
44
|
-
}
|
|
45
|
-
export interface ICEPlugin {
|
|
46
|
-
/** 插件唯一名(幂等注册键) */
|
|
47
|
-
name: string;
|
|
48
|
-
/** 组件层:typeId → 构造函数 */
|
|
49
|
-
components?: Record<string, new (...args: any[]) => any>;
|
|
50
|
-
/** 渲染层:每帧绘制回调(世界坐标) */
|
|
51
|
-
render?: ICERenderHook;
|
|
52
|
-
/** 交互工具层 */
|
|
53
|
-
tools?: ICEPluginTool[];
|
|
54
|
-
/** 注册时调用(可在此绑定事件、注册主题等) */
|
|
55
|
-
setup?: (ice: any) => void;
|
|
56
|
-
/** 注销时调用(应释放自己申请的资源) */
|
|
57
|
-
teardown?: (ice: any) => void;
|
|
58
|
-
}
|
|
59
|
-
export default class PluginHost {
|
|
60
|
-
private ice;
|
|
61
|
-
private plugins;
|
|
62
|
-
/** 渲染回调,按注册顺序调用 */
|
|
63
|
-
private renderHooks;
|
|
64
|
-
private tools;
|
|
65
|
-
constructor(ice: any);
|
|
66
|
-
/** 已注册插件名(只读快照) */
|
|
67
|
-
get names(): string[];
|
|
68
|
-
has(name: string): boolean;
|
|
69
|
-
hasRenderHooks(): boolean;
|
|
70
|
-
/** 幂等注册:同名插件重复 use 直接返回 false(不重复 setup) */
|
|
71
|
-
use(plugin: ICEPlugin): boolean;
|
|
72
|
-
/** 注销插件:撤销其渲染回调与工具,并调用 teardown(类型注册保留) */
|
|
73
|
-
unuse(name: string): boolean;
|
|
74
|
-
/** 渲染钩子:由 CanvasRenderer 在绘制完组件与工具后调用(世界坐标、clip 之内) */
|
|
75
|
-
invokeRenderHooks(frame: ICERenderFrame): void;
|
|
76
|
-
/**
|
|
77
|
-
* 选中变化时同步插件工具:命中的挂上、失配的摘下。
|
|
78
|
-
* @returns 是否存在「排他」工具命中(命中时调用方应禁用内置面板)
|
|
79
|
-
*/
|
|
80
|
-
syncTools(component: any): boolean;
|
|
81
|
-
/** 全部摘下(如 clearAll 时) */
|
|
82
|
-
detachAllTools(): void;
|
|
83
|
-
private detachTool;
|
|
84
|
-
/** destroy 时清空(不调用 teardown,交由 ICE.destroy 统一处理) */
|
|
85
|
-
clear(): void;
|
|
86
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 插件宿主:为引擎提供「组件 / 渲染 / 交互工具」三层注册点。
|
|
3
|
-
*
|
|
4
|
-
* 设计取向与 09-roadmap 的边界一致——**只提供原语,不做应用层 UX**:
|
|
5
|
-
* - 组件层:插件声明自定义图元类型,宿主代为 `registerType`(因此自动获得
|
|
6
|
-
* 序列化 typeId 反查能力,见 `ICE.getTypeId`)。
|
|
7
|
-
* - 渲染层:插件拿到每帧的绘制回调,在与组件相同的坐标系(世界坐标)下叠加绘制。
|
|
8
|
-
* 局部重绘帧里回调在 clip 之内执行,语义与组件一致(超出脏区域的旧内容不会被擦除也不会被重画;
|
|
9
|
-
* 若插件内容会随时间变化而没有任何组件变脏,引擎本身会因「无脏组件」回退全量,仍然正确)。
|
|
10
|
-
* - 交互工具层:插件按 `match(component)` 声明自己的工具组件;宿主复用既有 `toolNodes`
|
|
11
|
-
* 机制做 add/remove,`exclusive` 为真时禁用内置变换/连线面板。
|
|
12
|
-
*
|
|
13
|
-
* 生命周期:`ICE.use(plugin)` 幂等(按 `name` 去重)→ 调用 `setup(ice)`;
|
|
14
|
-
* `ICE.unuse(name)` → 调用 `teardown(ice)` 并撤销该插件注册的工具与渲染回调。
|
|
15
|
-
* 类型注册(`components`)在 unuse 后**保留**——反序列化仍可能依赖它,且撤销类型会让已存数据失效。
|
|
16
|
-
*
|
|
17
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
18
|
-
*/
|
|
19
|
-
export interface ICERenderFrame {
|
|
20
|
-
ctx: any;
|
|
21
|
-
/** 当前渲染模式 */
|
|
22
|
-
mode: 'full' | 'dirty-rect';
|
|
23
|
-
/** 局部重绘时的脏区域(世界坐标 [minX,minY,maxX,maxY]);全量帧为 null */
|
|
24
|
-
region: number[] | null;
|
|
25
|
-
/** 画布尺寸(设备像素) */
|
|
26
|
-
width: number;
|
|
27
|
-
height: number;
|
|
28
|
-
}
|
|
29
|
-
export type ICERenderHook = (frame: ICERenderFrame) => void;
|
|
30
|
-
export interface ICEPluginTool {
|
|
31
|
-
/** 插件内唯一 id(用于幂等注册与撤销) */
|
|
32
|
-
id: string;
|
|
33
|
-
/** 该工具是否应作用于当前选中的组件 */
|
|
34
|
-
match: (component: any, ice: any) => boolean;
|
|
35
|
-
/** 创建工具组件(会被加到 ICE.toolNodes,不参与序列化) */
|
|
36
|
-
create: () => any;
|
|
37
|
-
/**
|
|
38
|
-
* 命中时是否屏蔽内置变换/连线面板。
|
|
39
|
-
* 默认 false(叠加在内置面板之上);为 true 时内置面板会被禁用,避免与插件工具重叠。
|
|
40
|
-
*/
|
|
41
|
-
exclusive?: boolean;
|
|
42
|
-
/** 可选:目标组件变化时回调(同一工具实例被复用,避免每次选中都重建) */
|
|
43
|
-
onTargetChange?: (tool: any, component: any) => void;
|
|
44
|
-
}
|
|
45
|
-
export interface ICEPlugin {
|
|
46
|
-
/** 插件唯一名(幂等注册键) */
|
|
47
|
-
name: string;
|
|
48
|
-
/** 组件层:typeId → 构造函数 */
|
|
49
|
-
components?: Record<string, new (...args: any[]) => any>;
|
|
50
|
-
/** 渲染层:每帧绘制回调(世界坐标) */
|
|
51
|
-
render?: ICERenderHook;
|
|
52
|
-
/** 交互工具层 */
|
|
53
|
-
tools?: ICEPluginTool[];
|
|
54
|
-
/** 注册时调用(可在此绑定事件、注册主题等) */
|
|
55
|
-
setup?: (ice: any) => void;
|
|
56
|
-
/** 注销时调用(应释放自己申请的资源) */
|
|
57
|
-
teardown?: (ice: any) => void;
|
|
58
|
-
}
|
|
59
|
-
export default class PluginHost {
|
|
60
|
-
private ice;
|
|
61
|
-
private plugins;
|
|
62
|
-
/** 渲染回调,按注册顺序调用 */
|
|
63
|
-
private renderHooks;
|
|
64
|
-
private tools;
|
|
65
|
-
constructor(ice: any);
|
|
66
|
-
/** 已注册插件名(只读快照) */
|
|
67
|
-
get names(): string[];
|
|
68
|
-
has(name: string): boolean;
|
|
69
|
-
hasRenderHooks(): boolean;
|
|
70
|
-
/** 幂等注册:同名插件重复 use 直接返回 false(不重复 setup) */
|
|
71
|
-
use(plugin: ICEPlugin): boolean;
|
|
72
|
-
/** 注销插件:撤销其渲染回调与工具,并调用 teardown(类型注册保留) */
|
|
73
|
-
unuse(name: string): boolean;
|
|
74
|
-
/** 渲染钩子:由 CanvasRenderer 在绘制完组件与工具后调用(世界坐标、clip 之内) */
|
|
75
|
-
invokeRenderHooks(frame: ICERenderFrame): void;
|
|
76
|
-
/**
|
|
77
|
-
* 选中变化时同步插件工具:命中的挂上、失配的摘下。
|
|
78
|
-
* @returns 是否存在「排他」工具命中(命中时调用方应禁用内置面板)
|
|
79
|
-
*/
|
|
80
|
-
syncTools(component: any): boolean;
|
|
81
|
-
/** 全部摘下(如 clearAll 时) */
|
|
82
|
-
detachAllTools(): void;
|
|
83
|
-
private detachTool;
|
|
84
|
-
/** destroy 时清空(不调用 teardown,交由 ICE.destroy 统一处理) */
|
|
85
|
-
clear(): void;
|
|
86
|
-
}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import ICEEventTarget from '../event/ICEEventTarget.mjs';
|
|
2
|
-
import ICE from '../ICE.mjs';
|
|
3
|
-
/**
|
|
4
|
-
* @class CanvasRenderer Canvas 渲染器
|
|
5
|
-
*
|
|
6
|
-
* - 一个 ICE 实例上,只能有一个渲染器实例。
|
|
7
|
-
* - 默认渲染策略为「脏矩形局部重绘」(renderMode: 'dirty-rect'):
|
|
8
|
-
* 只 clear 脏区域、按 z 序重画与区域相交的组件;不满足局部条件时自动回退全量重绘
|
|
9
|
-
* (结构变更 / 未 prime / 脏占比过高 / 区域过大 / 折线或文本等特殊类别 / 能力缺失)。
|
|
10
|
-
* 两种模式像素一致(组件 render 已做 ctx 泄漏属性归位,见 ICEComponent.__resetLeakyCtxState)。
|
|
11
|
-
*
|
|
12
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
13
|
-
*/
|
|
14
|
-
declare class CanvasRenderer extends ICEEventTarget {
|
|
15
|
-
private ice;
|
|
16
|
-
private stopped;
|
|
17
|
-
private renderMode;
|
|
18
|
-
/** @internal 内部测试钩子:强制走全量路径(对比/调试用,非公开 API)。 */
|
|
19
|
-
__forceFullRender: boolean;
|
|
20
|
-
private componentQueue;
|
|
21
|
-
private toolsQueue;
|
|
22
|
-
private __queueDirty;
|
|
23
|
-
private __zSnap;
|
|
24
|
-
/**
|
|
25
|
-
* 每个「曾上屏」组件的世界轴对齐包围盒快照([minX,minY,maxX,maxY],已含 paint pad)。
|
|
26
|
-
* WeakMap:不污染组件 state/props(序列化安全)、对 zIndex 重排免疫、组件 GC 自动回收。
|
|
27
|
-
* 用于:部分重绘帧的旧区域擦除 + 未变组件的「是否与本帧区域相交」判断。
|
|
28
|
-
*/
|
|
29
|
-
private __snap;
|
|
30
|
-
/** 距离最近一次队列重建后,是否已完成过至少一次「全量/prime」渲染(快照就绪)。 */
|
|
31
|
-
private __primed;
|
|
32
|
-
/** 组件级离屏缓存(v1 缓存 ICEText),与快照一样不污染组件 state/props。 */
|
|
33
|
-
private cache;
|
|
34
|
-
/** @internal 上一帧被视口裁剪掉的组件数(仅供性能观测与测试断言)。 */
|
|
35
|
-
__lastFrameCulled: number;
|
|
36
|
-
constructor(ice: ICE, options?: {
|
|
37
|
-
renderMode?: 'full' | 'dirty-rect';
|
|
38
|
-
});
|
|
39
|
-
/**
|
|
40
|
-
* @method markQueueDirty 标记组件树结构已变化,下一次渲染需重建渲染队列。
|
|
41
|
-
* 由 ICE / ICEGroup 在 addChild / removeChild 等结构性变更时调用。
|
|
42
|
-
* 结构变更必然回退全量重绘(并重新 prime 快照)。
|
|
43
|
-
*/
|
|
44
|
-
markQueueDirty(): void;
|
|
45
|
-
setRenderMode(mode: 'full' | 'dirty-rect'): void;
|
|
46
|
-
getRenderMode(): 'full' | 'dirty-rect';
|
|
47
|
-
start(): this;
|
|
48
|
-
stop(): this;
|
|
49
|
-
private frameEvtHandler;
|
|
50
|
-
private refreshQueue;
|
|
51
|
-
private __rebuildQueue;
|
|
52
|
-
/**
|
|
53
|
-
* 把当前 componentQueue + toolsQueue 的 zIndex 顺序快照到复用的 __zSnap 数组,
|
|
54
|
-
* 供下一帧做稳定性比对,避免每帧分配新数组。
|
|
55
|
-
*/
|
|
56
|
-
private __snapshotZ;
|
|
57
|
-
/**
|
|
58
|
-
* 对比当前队列的 zIndex 与上次快照,任一不同(或长度变化)即认为顺序已变。
|
|
59
|
-
*/
|
|
60
|
-
private __zOrderChanged;
|
|
61
|
-
private doRenderFull;
|
|
62
|
-
/**
|
|
63
|
-
* 收集脏区域并做局部重绘可行性判定。
|
|
64
|
-
* 返回 null = 不满足局部条件(由调用方回退全量);否则返回本帧脏区域 [minX,minY,maxX,maxY]。
|
|
65
|
-
*
|
|
66
|
-
* 区域来源:
|
|
67
|
-
* - 可见且 dirty 的组件/工具:旧快照盒 ∪ 新几何盒(可能移动/变形)。
|
|
68
|
-
* - display:false 且 dirty 且曾上屏的组件/工具:旧快照盒(仅擦除)。
|
|
69
|
-
*
|
|
70
|
-
* 判定顺序(性能关键):先做**零开销预检**(只读 display/dirty 标志),
|
|
71
|
-
* 能确定要回退全量的情况(无可见脏组件 / 脏占比超阈)绝不进入
|
|
72
|
-
* 「场景门控 + 逐组件算包围盒」的昂贵路径——否则动画全量帧会被重复 compose 翻倍。
|
|
73
|
-
*/
|
|
74
|
-
private __collect;
|
|
75
|
-
/** 渲染视口(dpr·viewport)。ICE 侧有缓存,dpr===1 时直接返回 viewport 本身。 */
|
|
76
|
-
private __renderViewport;
|
|
77
|
-
/**
|
|
78
|
-
* 预检:只读组件标志(display/dirty/快照存在),不触发矩阵/样式计算。
|
|
79
|
-
* @returns { visible: 可见数量, dirty: 可见且脏数量, hiddenErase: 是否有曾上屏的隐藏脏组件 }
|
|
80
|
-
*/
|
|
81
|
-
private __preCount;
|
|
82
|
-
/**
|
|
83
|
-
* 区域收集 pass:仅当预检通过、即将走局部时才调用。
|
|
84
|
-
* 把「可见且脏」组件的旧快照盒 ∪ 新几何盒、以及「隐藏且曾上屏」组件的旧快照盒
|
|
85
|
-
* 逐条推进 `boxes`(聚合交给 `coalesceRegions`,这里不做并集)。
|
|
86
|
-
* 返回 false = 有组件盒非法(回退全量)。
|
|
87
|
-
*/
|
|
88
|
-
private __collectDirtyBoxes;
|
|
89
|
-
/**
|
|
90
|
-
* 相交级门控:判断「对本帧脏区域有 AA 风险的组件」是否真的与区域相交。
|
|
91
|
-
*
|
|
92
|
-
* 有风险的类别(与整场景门控时代一致):
|
|
93
|
-
* - 点集路径(星形/正N边形/玫瑰/折线):clip 会切断折线抗锯齿边缘
|
|
94
|
-
* - 文本:clip 会改变字形 AA
|
|
95
|
-
* - 非不透明落墨(rgba/hsla 色、阴影、globalAlpha≠1、非 source-over)
|
|
96
|
-
*
|
|
97
|
-
* 例外:已离屏缓存的组件在主画布上只是 drawImage(不透明位图整像素采样),
|
|
98
|
-
* 不再受 clip 影响,因此不阻塞。
|
|
99
|
-
*
|
|
100
|
-
* **刚变脏的 risky 组件一律回退**:它本轮要重建位图/重算参数,而实际墨迹范围可能超出
|
|
101
|
-
* 几何盒(文本的字形与描边尤甚,实测「文本内容变更」时墨迹会超出盒若干像素),
|
|
102
|
-
* 在 clip 下重绘无法保证与全量逐像素一致。dirty-rect 像素回归正是靠这条兜住的。
|
|
103
|
-
*
|
|
104
|
-
* 干净的 risky 组件才做相交判定,盒取上屏快照(世界轴对齐盒,含 paint pad);
|
|
105
|
-
* 快照缺失(从未上屏)时无法判定 → 保守回退。
|
|
106
|
-
*/
|
|
107
|
-
private __riskyIntersectsRegions;
|
|
108
|
-
private __renderDirtyRect;
|
|
109
|
-
/**
|
|
110
|
-
* 调用插件渲染钩子。要求:
|
|
111
|
-
* - 与世界坐标一致:先把 CTM 设为「渲染视口」(dpr · viewport),插件即可按世界坐标绘制
|
|
112
|
-
* - 在两条渲染路径中都调用;局部重绘时处于 clip 之内,语义与组件一致
|
|
113
|
-
* - 未注册任何钩子时零开销(不构造 frame 对象)
|
|
114
|
-
*/
|
|
115
|
-
private __invokePluginRender;
|
|
116
|
-
private __ensureContext;
|
|
117
|
-
/**
|
|
118
|
-
* @internal 取组件上一次上屏的世界包围盒(含 paint pad,格式 [minX,minY,maxX,maxY])。
|
|
119
|
-
* 供命中检测做「廉价包围盒预筛」,避免对屏外组件做矩阵反变换 + 形状判定。无快照返回 null。
|
|
120
|
-
*/
|
|
121
|
-
getWorldBox(component: any): Float64Array | null;
|
|
122
|
-
/**
|
|
123
|
-
* 当前视口对应的可见世界矩形 [minX,minY,maxX,maxY]。画布尺寸缺失时返回 null(不裁剪)。
|
|
124
|
-
*/
|
|
125
|
-
private __visibleWorldRect;
|
|
126
|
-
/**
|
|
127
|
-
* 组件渲染入口:可缓存组件走离屏位图(命中贴图 / 纯平移复用 / 重建),
|
|
128
|
-
* 否则回退到普通 render()。
|
|
129
|
-
*/
|
|
130
|
-
private __renderComponent;
|
|
131
|
-
private __isDotPath;
|
|
132
|
-
private __isText;
|
|
133
|
-
/**
|
|
134
|
-
* 计算 dirty 组件的「新盒」(含 paint pad,世界坐标)。
|
|
135
|
-
* 需要先刷新组件参数(文本 measure / dot-path calcDots),再 refresh 合成矩阵。
|
|
136
|
-
* 返回 null = 盒非法或计算失败(回退全量)。
|
|
137
|
-
*/
|
|
138
|
-
private __freshBox;
|
|
139
|
-
/**
|
|
140
|
-
* 渲染后捕获组件的世界包围盒(含 pad)到快照,供后续帧做旧区域擦除与相交判断。
|
|
141
|
-
*/
|
|
142
|
-
private __capture;
|
|
143
|
-
/**
|
|
144
|
-
* 隐藏组件(display:false)曾上屏过、且仍挂着脏标记(render 提前返回不会自清):
|
|
145
|
-
* 本帧它的旧区域已被擦除(全量 clear 或局部 erase 区域),因此清除脏位并移除快照,
|
|
146
|
-
* 避免「永久脏组件把后续局部帧反复顶成全量」。display 重新打开时 setState 会重新置脏。
|
|
147
|
-
*/
|
|
148
|
-
private __finalizeHidden;
|
|
149
|
-
}
|
|
150
|
-
export default CanvasRenderer;
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import ICEEventTarget from '../event/ICEEventTarget';
|
|
2
|
-
import ICE from '../ICE';
|
|
3
|
-
/**
|
|
4
|
-
* @class CanvasRenderer Canvas 渲染器
|
|
5
|
-
*
|
|
6
|
-
* - 一个 ICE 实例上,只能有一个渲染器实例。
|
|
7
|
-
* - 默认渲染策略为「脏矩形局部重绘」(renderMode: 'dirty-rect'):
|
|
8
|
-
* 只 clear 脏区域、按 z 序重画与区域相交的组件;不满足局部条件时自动回退全量重绘
|
|
9
|
-
* (结构变更 / 未 prime / 脏占比过高 / 区域过大 / 折线或文本等特殊类别 / 能力缺失)。
|
|
10
|
-
* 两种模式像素一致(组件 render 已做 ctx 泄漏属性归位,见 ICEComponent.__resetLeakyCtxState)。
|
|
11
|
-
*
|
|
12
|
-
* @author 大漠穷秋<damoqiongqiu@126.com>
|
|
13
|
-
*/
|
|
14
|
-
declare class CanvasRenderer extends ICEEventTarget {
|
|
15
|
-
private ice;
|
|
16
|
-
private stopped;
|
|
17
|
-
private renderMode;
|
|
18
|
-
/** @internal 内部测试钩子:强制走全量路径(对比/调试用,非公开 API)。 */
|
|
19
|
-
__forceFullRender: boolean;
|
|
20
|
-
private componentQueue;
|
|
21
|
-
private toolsQueue;
|
|
22
|
-
private __queueDirty;
|
|
23
|
-
private __zSnap;
|
|
24
|
-
/**
|
|
25
|
-
* 每个「曾上屏」组件的世界轴对齐包围盒快照([minX,minY,maxX,maxY],已含 paint pad)。
|
|
26
|
-
* WeakMap:不污染组件 state/props(序列化安全)、对 zIndex 重排免疫、组件 GC 自动回收。
|
|
27
|
-
* 用于:部分重绘帧的旧区域擦除 + 未变组件的「是否与本帧区域相交」判断。
|
|
28
|
-
*/
|
|
29
|
-
private __snap;
|
|
30
|
-
/** 距离最近一次队列重建后,是否已完成过至少一次「全量/prime」渲染(快照就绪)。 */
|
|
31
|
-
private __primed;
|
|
32
|
-
/** 组件级离屏缓存(v1 缓存 ICEText),与快照一样不污染组件 state/props。 */
|
|
33
|
-
private cache;
|
|
34
|
-
/** @internal 上一帧被视口裁剪掉的组件数(仅供性能观测与测试断言)。 */
|
|
35
|
-
__lastFrameCulled: number;
|
|
36
|
-
constructor(ice: ICE, options?: {
|
|
37
|
-
renderMode?: 'full' | 'dirty-rect';
|
|
38
|
-
});
|
|
39
|
-
/**
|
|
40
|
-
* @method markQueueDirty 标记组件树结构已变化,下一次渲染需重建渲染队列。
|
|
41
|
-
* 由 ICE / ICEGroup 在 addChild / removeChild 等结构性变更时调用。
|
|
42
|
-
* 结构变更必然回退全量重绘(并重新 prime 快照)。
|
|
43
|
-
*/
|
|
44
|
-
markQueueDirty(): void;
|
|
45
|
-
setRenderMode(mode: 'full' | 'dirty-rect'): void;
|
|
46
|
-
getRenderMode(): 'full' | 'dirty-rect';
|
|
47
|
-
start(): this;
|
|
48
|
-
stop(): this;
|
|
49
|
-
private frameEvtHandler;
|
|
50
|
-
private refreshQueue;
|
|
51
|
-
private __rebuildQueue;
|
|
52
|
-
/**
|
|
53
|
-
* 把当前 componentQueue + toolsQueue 的 zIndex 顺序快照到复用的 __zSnap 数组,
|
|
54
|
-
* 供下一帧做稳定性比对,避免每帧分配新数组。
|
|
55
|
-
*/
|
|
56
|
-
private __snapshotZ;
|
|
57
|
-
/**
|
|
58
|
-
* 对比当前队列的 zIndex 与上次快照,任一不同(或长度变化)即认为顺序已变。
|
|
59
|
-
*/
|
|
60
|
-
private __zOrderChanged;
|
|
61
|
-
private doRenderFull;
|
|
62
|
-
/**
|
|
63
|
-
* 收集脏区域并做局部重绘可行性判定。
|
|
64
|
-
* 返回 null = 不满足局部条件(由调用方回退全量);否则返回本帧脏区域 [minX,minY,maxX,maxY]。
|
|
65
|
-
*
|
|
66
|
-
* 区域来源:
|
|
67
|
-
* - 可见且 dirty 的组件/工具:旧快照盒 ∪ 新几何盒(可能移动/变形)。
|
|
68
|
-
* - display:false 且 dirty 且曾上屏的组件/工具:旧快照盒(仅擦除)。
|
|
69
|
-
*
|
|
70
|
-
* 判定顺序(性能关键):先做**零开销预检**(只读 display/dirty 标志),
|
|
71
|
-
* 能确定要回退全量的情况(无可见脏组件 / 脏占比超阈)绝不进入
|
|
72
|
-
* 「场景门控 + 逐组件算包围盒」的昂贵路径——否则动画全量帧会被重复 compose 翻倍。
|
|
73
|
-
*/
|
|
74
|
-
private __collect;
|
|
75
|
-
/** 渲染视口(dpr·viewport)。ICE 侧有缓存,dpr===1 时直接返回 viewport 本身。 */
|
|
76
|
-
private __renderViewport;
|
|
77
|
-
/**
|
|
78
|
-
* 预检:只读组件标志(display/dirty/快照存在),不触发矩阵/样式计算。
|
|
79
|
-
* @returns { visible: 可见数量, dirty: 可见且脏数量, hiddenErase: 是否有曾上屏的隐藏脏组件 }
|
|
80
|
-
*/
|
|
81
|
-
private __preCount;
|
|
82
|
-
/**
|
|
83
|
-
* 区域收集 pass:仅当预检通过、即将走局部时才调用。
|
|
84
|
-
* 把「可见且脏」组件的旧快照盒 ∪ 新几何盒、以及「隐藏且曾上屏」组件的旧快照盒
|
|
85
|
-
* 逐条推进 `boxes`(聚合交给 `coalesceRegions`,这里不做并集)。
|
|
86
|
-
* 返回 false = 有组件盒非法(回退全量)。
|
|
87
|
-
*/
|
|
88
|
-
private __collectDirtyBoxes;
|
|
89
|
-
/**
|
|
90
|
-
* 相交级门控:判断「对本帧脏区域有 AA 风险的组件」是否真的与区域相交。
|
|
91
|
-
*
|
|
92
|
-
* 有风险的类别(与整场景门控时代一致):
|
|
93
|
-
* - 点集路径(星形/正N边形/玫瑰/折线):clip 会切断折线抗锯齿边缘
|
|
94
|
-
* - 文本:clip 会改变字形 AA
|
|
95
|
-
* - 非不透明落墨(rgba/hsla 色、阴影、globalAlpha≠1、非 source-over)
|
|
96
|
-
*
|
|
97
|
-
* 例外:已离屏缓存的组件在主画布上只是 drawImage(不透明位图整像素采样),
|
|
98
|
-
* 不再受 clip 影响,因此不阻塞。
|
|
99
|
-
*
|
|
100
|
-
* **刚变脏的 risky 组件一律回退**:它本轮要重建位图/重算参数,而实际墨迹范围可能超出
|
|
101
|
-
* 几何盒(文本的字形与描边尤甚,实测「文本内容变更」时墨迹会超出盒若干像素),
|
|
102
|
-
* 在 clip 下重绘无法保证与全量逐像素一致。dirty-rect 像素回归正是靠这条兜住的。
|
|
103
|
-
*
|
|
104
|
-
* 干净的 risky 组件才做相交判定,盒取上屏快照(世界轴对齐盒,含 paint pad);
|
|
105
|
-
* 快照缺失(从未上屏)时无法判定 → 保守回退。
|
|
106
|
-
*/
|
|
107
|
-
private __riskyIntersectsRegions;
|
|
108
|
-
private __renderDirtyRect;
|
|
109
|
-
/**
|
|
110
|
-
* 调用插件渲染钩子。要求:
|
|
111
|
-
* - 与世界坐标一致:先把 CTM 设为「渲染视口」(dpr · viewport),插件即可按世界坐标绘制
|
|
112
|
-
* - 在两条渲染路径中都调用;局部重绘时处于 clip 之内,语义与组件一致
|
|
113
|
-
* - 未注册任何钩子时零开销(不构造 frame 对象)
|
|
114
|
-
*/
|
|
115
|
-
private __invokePluginRender;
|
|
116
|
-
private __ensureContext;
|
|
117
|
-
/**
|
|
118
|
-
* @internal 取组件上一次上屏的世界包围盒(含 paint pad,格式 [minX,minY,maxX,maxY])。
|
|
119
|
-
* 供命中检测做「廉价包围盒预筛」,避免对屏外组件做矩阵反变换 + 形状判定。无快照返回 null。
|
|
120
|
-
*/
|
|
121
|
-
getWorldBox(component: any): Float64Array | null;
|
|
122
|
-
/**
|
|
123
|
-
* 当前视口对应的可见世界矩形 [minX,minY,maxX,maxY]。画布尺寸缺失时返回 null(不裁剪)。
|
|
124
|
-
*/
|
|
125
|
-
private __visibleWorldRect;
|
|
126
|
-
/**
|
|
127
|
-
* 组件渲染入口:可缓存组件走离屏位图(命中贴图 / 纯平移复用 / 重建),
|
|
128
|
-
* 否则回退到普通 render()。
|
|
129
|
-
*/
|
|
130
|
-
private __renderComponent;
|
|
131
|
-
private __isDotPath;
|
|
132
|
-
private __isText;
|
|
133
|
-
/**
|
|
134
|
-
* 计算 dirty 组件的「新盒」(含 paint pad,世界坐标)。
|
|
135
|
-
* 需要先刷新组件参数(文本 measure / dot-path calcDots),再 refresh 合成矩阵。
|
|
136
|
-
* 返回 null = 盒非法或计算失败(回退全量)。
|
|
137
|
-
*/
|
|
138
|
-
private __freshBox;
|
|
139
|
-
/**
|
|
140
|
-
* 渲染后捕获组件的世界包围盒(含 pad)到快照,供后续帧做旧区域擦除与相交判断。
|
|
141
|
-
*/
|
|
142
|
-
private __capture;
|
|
143
|
-
/**
|
|
144
|
-
* 隐藏组件(display:false)曾上屏过、且仍挂着脏标记(render 提前返回不会自清):
|
|
145
|
-
* 本帧它的旧区域已被擦除(全量 clear 或局部 erase 区域),因此清除脏位并移除快照,
|
|
146
|
-
* 避免「永久脏组件把后续局部帧反复顶成全量」。display 重新打开时 setState 会重新置脏。
|
|
147
|
-
*/
|
|
148
|
-
private __finalizeHidden;
|
|
149
|
-
}
|
|
150
|
-
export default CanvasRenderer;
|