@gedit/editor-2d 0.3.4 → 0.3.6
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/LICENSE +21 -0
- package/lib/browser/editor2d-anim-path-selection-service.d.ts +24 -0
- package/lib/browser/editor2d-anim-path-selection-service.d.ts.map +1 -0
- package/lib/browser/editor2d-anim-path-selection-service.js +52 -0
- package/lib/browser/editor2d-anim-path-selection-service.js.map +1 -0
- package/lib/browser/editor2d-context-key-service.js +7 -10
- package/lib/browser/editor2d-context-key-service.js.map +1 -1
- package/lib/browser/editor2d-contribution.js +25 -28
- package/lib/browser/editor2d-contribution.js.map +1 -1
- package/lib/browser/editor2d-frontend-module.d.ts.map +1 -1
- package/lib/browser/editor2d-frontend-module.js +38 -38
- package/lib/browser/editor2d-frontend-module.js.map +1 -1
- package/lib/browser/editor2d-label-provider.js +18 -21
- package/lib/browser/editor2d-label-provider.js.map +1 -1
- package/lib/browser/editor2d-model-provider.js +16 -19
- package/lib/browser/editor2d-model-provider.js.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.js +13 -16
- package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
- package/lib/browser/editor2d-service.d.ts +2 -0
- package/lib/browser/editor2d-service.d.ts.map +1 -1
- package/lib/browser/editor2d-service.js +28 -27
- package/lib/browser/editor2d-service.js.map +1 -1
- package/lib/browser/index.d.ts +2 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +6 -20
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/model/editor2d-document.d.ts +22 -9
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +248 -133
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/model/editor2d-iterator.js +1 -5
- package/lib/browser/model/editor2d-iterator.js.map +1 -1
- package/lib/browser/model/editor2d-model-container.js +22 -26
- package/lib/browser/model/editor2d-model-container.js.map +1 -1
- package/lib/browser/model/editor2d-model.js +21 -24
- package/lib/browser/model/editor2d-model.js.map +1 -1
- package/lib/browser/model/editor2d-selection.js +7 -10
- package/lib/browser/model/editor2d-selection.js.map +1 -1
- package/lib/browser/model/editor2d-widget.js +17 -20
- package/lib/browser/model/editor2d-widget.js.map +1 -1
- package/lib/browser/model/editor2d.d.ts.map +1 -1
- package/lib/browser/model/editor2d.js +37 -35
- package/lib/browser/model/editor2d.js.map +1 -1
- package/lib/browser/model/index.js +7 -23
- package/lib/browser/model/index.js.map +1 -1
- package/lib/browser/model/utils/anim.utils.d.ts +2 -1
- package/lib/browser/model/utils/anim.utils.d.ts.map +1 -1
- package/lib/browser/model/utils/anim.utils.js +14 -16
- package/lib/browser/model/utils/anim.utils.js.map +1 -1
- package/lib/browser/model/utils/index.js +1 -17
- package/lib/browser/model/utils/index.js.map +1 -1
- package/lib/browser/playground/anim-path-edit-layer.d.ts +33 -0
- package/lib/browser/playground/anim-path-edit-layer.d.ts.map +1 -0
- package/lib/browser/playground/anim-path-edit-layer.js +352 -0
- package/lib/browser/playground/anim-path-edit-layer.js.map +1 -0
- package/lib/browser/playground/canvas-draw.d.ts +3 -0
- package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
- package/lib/browser/playground/canvas-draw.js +57 -39
- package/lib/browser/playground/canvas-draw.js.map +1 -1
- package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
- package/lib/browser/playground/canvas-layer.js +29 -32
- package/lib/browser/playground/canvas-layer.js.map +1 -1
- package/lib/browser/playground/entities/document-entity.js +2 -6
- package/lib/browser/playground/entities/document-entity.js.map +1 -1
- package/lib/browser/playground/entities/editor2d-entity.js +3 -7
- package/lib/browser/playground/entities/editor2d-entity.js.map +1 -1
- package/lib/browser/playground/entities/extend-entity.js +2 -6
- package/lib/browser/playground/entities/extend-entity.js.map +1 -1
- package/lib/browser/playground/entities/index.js +3 -19
- package/lib/browser/playground/entities/index.js.map +1 -1
- package/lib/browser/playground/extend-edit/gradient-conic-node.d.ts +4 -0
- package/lib/browser/playground/extend-edit/gradient-conic-node.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit/gradient-conic-node.js +69 -0
- package/lib/browser/playground/extend-edit/gradient-conic-node.js.map +1 -0
- package/lib/browser/playground/{extend-edit-layer-point-event.d.ts → extend-edit/gradient-edit-layer-point-event.d.ts} +1 -1
- package/lib/browser/playground/extend-edit/gradient-edit-layer-point-event.d.ts.map +1 -0
- package/lib/browser/playground/{extend-edit-layer-point-event.js → extend-edit/gradient-edit-layer-point-event.js} +3 -28
- package/lib/browser/playground/extend-edit/gradient-edit-layer-point-event.js.map +1 -0
- package/lib/browser/playground/extend-edit/gradient-node.d.ts +13 -0
- package/lib/browser/playground/extend-edit/gradient-node.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit/gradient-node.js +154 -0
- package/lib/browser/playground/extend-edit/gradient-node.js.map +1 -0
- package/lib/browser/playground/extend-edit-layer.d.ts +0 -8
- package/lib/browser/playground/extend-edit-layer.d.ts.map +1 -1
- package/lib/browser/playground/extend-edit-layer.js +30 -249
- package/lib/browser/playground/extend-edit-layer.js.map +1 -1
- package/lib/browser/playground/index.js +11 -30
- package/lib/browser/playground/index.js.map +1 -1
- package/lib/browser/playground/path-edit/anim-path-edit-svg.d.ts +17 -0
- package/lib/browser/playground/path-edit/anim-path-edit-svg.d.ts.map +1 -0
- package/lib/browser/playground/path-edit/anim-path-edit-svg.js +58 -0
- package/lib/browser/playground/path-edit/anim-path-edit-svg.js.map +1 -0
- package/lib/browser/playground/path-edit/index.js +3 -19
- package/lib/browser/playground/path-edit/index.js.map +1 -1
- package/lib/browser/playground/path-edit/path-edit-layer-move-point.d.ts +1 -1
- package/lib/browser/playground/path-edit/path-edit-layer-move-point.d.ts.map +1 -1
- package/lib/browser/playground/path-edit/path-edit-layer-move-point.js +9 -39
- package/lib/browser/playground/path-edit/path-edit-layer-move-point.js.map +1 -1
- package/lib/browser/playground/path-edit/path-edit-layer-svg-path.d.ts +2 -6
- package/lib/browser/playground/path-edit/path-edit-layer-svg-path.d.ts.map +1 -1
- package/lib/browser/playground/path-edit/path-edit-layer-svg-path.js +20 -50
- package/lib/browser/playground/path-edit/path-edit-layer-svg-path.js.map +1 -1
- package/lib/browser/playground/path-edit/utils.js +64 -100
- package/lib/browser/playground/path-edit/utils.js.map +1 -1
- package/lib/browser/playground/path-edit-layer.d.ts.map +1 -1
- package/lib/browser/playground/path-edit-layer.js +67 -95
- package/lib/browser/playground/path-edit-layer.js.map +1 -1
- package/lib/browser/playground/playground-context.d.ts +3 -3
- package/lib/browser/playground/playground-context.d.ts.map +1 -1
- package/lib/browser/playground/playground-context.js +48 -54
- package/lib/browser/playground/playground-context.js.map +1 -1
- package/lib/browser/playground/playground-contribution.d.ts.map +1 -1
- package/lib/browser/playground/playground-contribution.js +41 -42
- package/lib/browser/playground/playground-contribution.js.map +1 -1
- package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
- package/lib/browser/playground/selection-entity-manager.js +26 -54
- package/lib/browser/playground/selection-entity-manager.js.map +1 -1
- package/lib/browser/playground/selector-extend-icons.js +12 -39
- package/lib/browser/playground/selector-extend-icons.js.map +1 -1
- package/lib/browser/playground/selector-extend-renderer.js +22 -52
- package/lib/browser/playground/selector-extend-renderer.js.map +1 -1
- package/lib/browser/utils/bezier.path.utils.d.ts +23 -0
- package/lib/browser/utils/bezier.path.utils.d.ts.map +1 -0
- package/lib/browser/utils/bezier.path.utils.js +64 -0
- package/lib/browser/utils/bezier.path.utils.js.map +1 -0
- package/lib/browser/utils/bounds.d.ts.map +1 -1
- package/lib/browser/utils/bounds.js +17 -22
- package/lib/browser/utils/bounds.js.map +1 -1
- package/lib/browser/utils/snapshot.js +17 -20
- package/lib/browser/utils/snapshot.js.map +1 -1
- package/lib/i18n/zh-CN.js +1 -3
- package/lib/i18n/zh-CN.js.map +1 -1
- package/package.json +11 -10
- package/src/browser/editor2d-anim-path-selection-service.ts +48 -0
- package/src/browser/editor2d-frontend-module.ts +2 -0
- package/src/browser/editor2d-service.ts +2 -0
- package/src/browser/index.ts +2 -1
- package/src/browser/model/editor2d-document.ts +198 -20
- package/src/browser/model/editor2d.ts +13 -2
- package/src/browser/model/utils/anim.utils.ts +10 -6
- package/src/browser/playground/anim-path-edit-layer.tsx +435 -0
- package/src/browser/playground/canvas-draw.ts +37 -2
- package/src/browser/playground/canvas-layer.ts +1 -0
- package/src/browser/playground/extend-edit/gradient-conic-node.tsx +106 -0
- package/src/browser/playground/extend-edit/gradient-node.tsx +232 -0
- package/src/browser/playground/extend-edit-layer.tsx +32 -312
- package/src/browser/playground/path-edit/anim-path-edit-svg.tsx +168 -0
- package/src/browser/playground/path-edit/path-edit-layer-move-point.tsx +1 -1
- package/src/browser/playground/path-edit/path-edit-layer-svg-path.tsx +3 -7
- package/src/browser/playground/path-edit/utils.tsx +1 -1
- package/src/browser/playground/path-edit-layer.tsx +4 -4
- package/src/browser/playground/playground-context.ts +2 -6
- package/src/browser/playground/playground-contribution.ts +2 -0
- package/src/browser/playground/selection-entity-manager.tsx +7 -7
- package/src/browser/style/path-edit-layer.less +13 -5
- package/src/browser/utils/bezier.path.utils.ts +89 -0
- package/src/browser/utils/bounds.ts +0 -1
- package/lib/browser/playground/extend-edit-layer-point-event.d.ts.map +0 -1
- package/lib/browser/playground/extend-edit-layer-point-event.js.map +0 -1
- /package/src/browser/playground/{extend-edit-layer-point-event.tsx → extend-edit/gradient-edit-layer-point-event.tsx} +0 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import {
|
|
4
|
+
getPointsToPaths,
|
|
5
|
+
PathChild,
|
|
6
|
+
PATH_FUNC_TYPE,
|
|
7
|
+
} from '@gedit/canvas-draw';
|
|
8
|
+
import { PathPointSelection } from '@gedit/playground';
|
|
9
|
+
|
|
10
|
+
interface AnimSvgPathProps {
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
paths: PathChild[];
|
|
14
|
+
scale: number;
|
|
15
|
+
noBezier: boolean;
|
|
16
|
+
selection: PathPointSelection<number>[];
|
|
17
|
+
onPointMouseDown?: (
|
|
18
|
+
e: React.MouseEvent<SVGCircleElement>,
|
|
19
|
+
point: PathChild,
|
|
20
|
+
paths: PathChild[]
|
|
21
|
+
) => void;
|
|
22
|
+
onBezierPointMouseDown?: (
|
|
23
|
+
e: React.MouseEvent<SVGCircleElement>,
|
|
24
|
+
point: PathChild,
|
|
25
|
+
key: string,
|
|
26
|
+
paths: PathChild[]
|
|
27
|
+
) => void;
|
|
28
|
+
onCancelSelection?: (e: React.MouseEvent<SVGSVGElement>) => void;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const AnimSvgPath = (props: AnimSvgPathProps) => {
|
|
32
|
+
const {
|
|
33
|
+
width,
|
|
34
|
+
height,
|
|
35
|
+
paths,
|
|
36
|
+
scale,
|
|
37
|
+
selection,
|
|
38
|
+
noBezier,
|
|
39
|
+
onPointMouseDown,
|
|
40
|
+
onBezierPointMouseDown,
|
|
41
|
+
onCancelSelection,
|
|
42
|
+
} = props;
|
|
43
|
+
const onClickStopPropagation = (e: React.MouseEvent) => {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
e.stopPropagation();
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const bezierSelect =
|
|
49
|
+
selection[0] && typeof selection[0].bezierKey !== 'undefined';
|
|
50
|
+
const pathsStringArray = getPointsToPaths(paths);
|
|
51
|
+
|
|
52
|
+
const allPoints = paths.map((item, i) => (
|
|
53
|
+
<circle
|
|
54
|
+
className={clsx('gedit-anim-path-edit-layer-point', {
|
|
55
|
+
'gedit-anim-path-edit-layer-point-active':
|
|
56
|
+
selection.some(c => c.pointId === item.id) && !bezierSelect,
|
|
57
|
+
})}
|
|
58
|
+
cx={item.x}
|
|
59
|
+
cy={item.y}
|
|
60
|
+
r={4 / scale}
|
|
61
|
+
key={item.id}
|
|
62
|
+
strokeWidth="1"
|
|
63
|
+
onMouseMove={onClickStopPropagation}
|
|
64
|
+
onClick={onClickStopPropagation}
|
|
65
|
+
onMouseDown={e => {
|
|
66
|
+
onClickStopPropagation(e);
|
|
67
|
+
|
|
68
|
+
onPointMouseDown?.(e, item, paths);
|
|
69
|
+
}}
|
|
70
|
+
/>
|
|
71
|
+
));
|
|
72
|
+
// 贝塞尔点
|
|
73
|
+
const bezierPointNodes: JSX.Element[] = [];
|
|
74
|
+
const bezierPathNodes: JSX.Element[] = [];
|
|
75
|
+
|
|
76
|
+
paths.forEach((p, i) => {
|
|
77
|
+
if (p.type === PATH_FUNC_TYPE.STRAIGHT) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const selectionNode = selection.find(c => c.pointId === p.id);
|
|
81
|
+
const { bezierKey, pointId: currentPointId } = selectionNode || {};
|
|
82
|
+
if ('x1' in p && 'y1' in p) {
|
|
83
|
+
bezierPathNodes.push(
|
|
84
|
+
<path
|
|
85
|
+
key={`${p.id}_${i}_x1-line`}
|
|
86
|
+
className="gedit-anim-path-edit-layer-point-bezier-line"
|
|
87
|
+
strokeWidth={0.5 / scale}
|
|
88
|
+
d={`M${p.x},${p.y} L${p.x1},${p.y1}`}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
91
|
+
bezierPointNodes.push(
|
|
92
|
+
<circle
|
|
93
|
+
key={`${p.id}_${i}_x1_point`}
|
|
94
|
+
className={clsx('gedit-anim-path-edit-layer-point-bezier', {
|
|
95
|
+
'gedit-anim-path-edit-layer-point-active':
|
|
96
|
+
bezierKey === 'left' && currentPointId === p.id,
|
|
97
|
+
})}
|
|
98
|
+
cx={p.x1}
|
|
99
|
+
cy={p.y1}
|
|
100
|
+
r={3 / scale}
|
|
101
|
+
onMouseMove={onClickStopPropagation}
|
|
102
|
+
onClick={onClickStopPropagation}
|
|
103
|
+
onMouseDown={e => {
|
|
104
|
+
onClickStopPropagation(e);
|
|
105
|
+
onBezierPointMouseDown?.(e, p, 'left', paths);
|
|
106
|
+
}}
|
|
107
|
+
/>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
if ('x2' in p && 'y2' in p) {
|
|
111
|
+
bezierPathNodes.push(
|
|
112
|
+
<path
|
|
113
|
+
key={`${p.id}_${i}_x2-line`}
|
|
114
|
+
className="gedit-anim-path-edit-layer-point-bezier-line"
|
|
115
|
+
strokeWidth={1 / scale}
|
|
116
|
+
d={`M${p.x},${p.y} L${p.x2},${p.y2}`}
|
|
117
|
+
/>
|
|
118
|
+
);
|
|
119
|
+
bezierPointNodes.push(
|
|
120
|
+
<circle
|
|
121
|
+
key={`${p.id}_${i}x2_point`}
|
|
122
|
+
className={clsx('gedit-anim-path-edit-layer-point-bezier', {
|
|
123
|
+
'gedit-anim-path-edit-layer-point-active':
|
|
124
|
+
bezierKey === 'right' && currentPointId === p.id,
|
|
125
|
+
})}
|
|
126
|
+
cx={p.x2}
|
|
127
|
+
cy={p.y2}
|
|
128
|
+
r={3 / scale}
|
|
129
|
+
onMouseMove={onClickStopPropagation}
|
|
130
|
+
onClick={onClickStopPropagation}
|
|
131
|
+
onMouseDown={e => {
|
|
132
|
+
onClickStopPropagation(e);
|
|
133
|
+
onBezierPointMouseDown?.(e, p, 'right', paths);
|
|
134
|
+
}}
|
|
135
|
+
/>
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
return (
|
|
141
|
+
<svg
|
|
142
|
+
width={width}
|
|
143
|
+
height={height}
|
|
144
|
+
className="gedit-anim-path-edit-layer-svg"
|
|
145
|
+
onMouseDown={e => {
|
|
146
|
+
if (selection.length) {
|
|
147
|
+
onClickStopPropagation(e);
|
|
148
|
+
}
|
|
149
|
+
}}
|
|
150
|
+
onClick={e => {
|
|
151
|
+
onCancelSelection?.(e);
|
|
152
|
+
}}
|
|
153
|
+
>
|
|
154
|
+
{pathsStringArray.map((p, i) => (
|
|
155
|
+
<path
|
|
156
|
+
className={clsx('gedit-anim-path-edit-layer-path')}
|
|
157
|
+
key={i.toString()}
|
|
158
|
+
strokeLinecap="round"
|
|
159
|
+
strokeWidth={1 / scale}
|
|
160
|
+
d={p}
|
|
161
|
+
/>
|
|
162
|
+
))}
|
|
163
|
+
{!noBezier && bezierPathNodes}
|
|
164
|
+
{allPoints}
|
|
165
|
+
{!noBezier && bezierPointNodes}
|
|
166
|
+
</svg>
|
|
167
|
+
);
|
|
168
|
+
};
|
|
@@ -11,20 +11,16 @@ import {
|
|
|
11
11
|
import { PathEditLayerEventContext } from '../path-edit-layer';
|
|
12
12
|
import clsx from 'clsx';
|
|
13
13
|
import { generateUuid } from '@gedit/utils';
|
|
14
|
-
import { PathSelectMode } from '@gedit/playground';
|
|
14
|
+
import { PathSelectMode, PathPointSelection } from '@gedit/playground';
|
|
15
15
|
import { Editor2dPathNode } from '../../model';
|
|
16
16
|
|
|
17
|
-
export interface PointSelection {
|
|
18
|
-
pointId?: string;
|
|
19
|
-
bezierKey?: string;
|
|
20
|
-
}
|
|
21
17
|
export interface PathSVGProps {
|
|
22
18
|
width: number;
|
|
23
19
|
height: number;
|
|
24
20
|
paths: PathChild[];
|
|
25
21
|
node?: Editor2dPathNode;
|
|
26
22
|
scale: number;
|
|
27
|
-
selection?:
|
|
23
|
+
selection?: PathPointSelection[];
|
|
28
24
|
selectMode?: PathSelectMode;
|
|
29
25
|
getPosFromMouseEvent: PointDefaultProps['getPosFromMouseEvent'];
|
|
30
26
|
getPointIsStartOrEnd: () => boolean;
|
|
@@ -267,7 +263,7 @@ export const SvgPath = ({
|
|
|
267
263
|
paths={paths}
|
|
268
264
|
scale={scale}
|
|
269
265
|
closePath={closePath}
|
|
270
|
-
currentPointId={selection[0]?.pointId}
|
|
266
|
+
currentPointId={selection[0]?.pointId as string}
|
|
271
267
|
/>
|
|
272
268
|
)}
|
|
273
269
|
{pathsStringArray.map((p, i) => (
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from '@gedit/utils';
|
|
23
23
|
import { PointSchema } from './path-edit-layer-move-point';
|
|
24
24
|
import { Editor2dPathNode } from '../../model';
|
|
25
|
-
|
|
25
|
+
const cloneDeep = require('lodash.clonedeep');
|
|
26
26
|
|
|
27
27
|
export const transformRotation = (p1: Point, p2: Point, rotation: number) => {
|
|
28
28
|
if (!rotation) {
|
|
@@ -29,7 +29,6 @@ import {
|
|
|
29
29
|
SvgPath,
|
|
30
30
|
getNewPoint,
|
|
31
31
|
setBezierMovePoint,
|
|
32
|
-
PointSelection,
|
|
33
32
|
updatePathNodeData,
|
|
34
33
|
inverseTransformToData,
|
|
35
34
|
transformToData,
|
|
@@ -392,7 +391,9 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
|
|
|
392
391
|
this.editorState.is(EditorState.EDIT_PATH_STATE.id) &&
|
|
393
392
|
this.pathPointSelection.selectMode === PathSelectMode.SELECT_BEZIER;
|
|
394
393
|
if (isExit) {
|
|
395
|
-
const playgroundLayer = this.pipelineLayers.find(
|
|
394
|
+
const playgroundLayer = this.pipelineLayers.find(
|
|
395
|
+
c => c.id === 'playgroundLayer'
|
|
396
|
+
) as PlaygroundLayer;
|
|
396
397
|
playgroundLayer?.keydownEvent?.({ key: 'Escape' } as KeyboardEvent);
|
|
397
398
|
}
|
|
398
399
|
}),
|
|
@@ -621,7 +622,6 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
|
|
|
621
622
|
}
|
|
622
623
|
}
|
|
623
624
|
}
|
|
624
|
-
this.config.finalScale;
|
|
625
625
|
const startNodeClone = deepClone(node.path.paths);
|
|
626
626
|
|
|
627
627
|
this.startDrag(e.clientX, e.clientY, {
|
|
@@ -800,7 +800,7 @@ export class PathEditLayer extends Layer<PlaygroundContext2d> {
|
|
|
800
800
|
getPosFromMouseEvent={this.getPosFromMouseEvent.bind(this)}
|
|
801
801
|
node={this.currentPathNode}
|
|
802
802
|
paths={paths}
|
|
803
|
-
selection={this.pathPointSelection?.selection as
|
|
803
|
+
selection={this.pathPointSelection?.selection as PathPointSelection[]}
|
|
804
804
|
selectMode={this.pathPointSelection?.selectMode}
|
|
805
805
|
getPointIsStartOrEnd={this.getPointIsStartOrEnd.bind(this)}
|
|
806
806
|
scale={this.config.finalScale}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { inject, injectable } from 'inversify';
|
|
2
2
|
import { RenderEngineIDEService } from '@gedit/render-engine-ide';
|
|
3
|
-
import type { DisplayAssetMetaData } from '@gedit/render-engine-ide';
|
|
4
3
|
import { SelectableTreeNode, TreeSelection } from '@gedit/tree';
|
|
5
4
|
import { AppConfigService } from '@gedit/app-config';
|
|
6
5
|
import { debounce, Emitter, URI } from '@gedit/utils';
|
|
@@ -9,6 +8,7 @@ import type { SelectionEntityManager } from './selection-entity-manager';
|
|
|
9
8
|
import { PathPointSelectionEntity, PathSelectMode, Playground } from '@gedit/playground';
|
|
10
9
|
import { Editor2dDocument } from '../model/editor2d-document';
|
|
11
10
|
import { Editor2dSelection } from '../model/editor2d-selection';
|
|
11
|
+
import { Editor2dAnimPathSelectionService } from '../';
|
|
12
12
|
import { Editor2dModelOptions, Editor2dNode } from '../model/editor2d';
|
|
13
13
|
import { SelectionService } from '@gedit/application-common';
|
|
14
14
|
import { Editor2dContextKeyService } from '../editor2d-context-key-service';
|
|
@@ -18,7 +18,6 @@ import { FormService } from '@gedit/ui';
|
|
|
18
18
|
import { OpenerService } from '@gedit/application-common/lib/browser';
|
|
19
19
|
import { WorkspaceService } from '@gedit/workspace-2d';
|
|
20
20
|
import { HistoryService } from '@gedit/history';
|
|
21
|
-
import { AssetsMetaCache } from '@gedit/assets-2d/lib/browser/assets-meta-cache';
|
|
22
21
|
|
|
23
22
|
export const Editor2dPlayGround = Symbol('Editor2dPlayGround');
|
|
24
23
|
|
|
@@ -36,6 +35,7 @@ export class PlaygroundContext2d {
|
|
|
36
35
|
@inject(RenderEngineIDEService) readonly renderEngine: RenderEngineIDEService,
|
|
37
36
|
@inject(Editor2dDocument) readonly document: Editor2dDocument,
|
|
38
37
|
@inject(Editor2dSelection) readonly selection: Editor2dSelection,
|
|
38
|
+
@inject(Editor2dAnimPathSelectionService) readonly animPathSelection: Editor2dAnimPathSelectionService,
|
|
39
39
|
@inject(SelectionService) readonly selectionService: SelectionService,
|
|
40
40
|
@inject(AppConfigService) readonly appConfig: AppConfigService,
|
|
41
41
|
@inject(Editor2dModelOptions) readonly options: Editor2dModelOptions,
|
|
@@ -45,16 +45,12 @@ export class PlaygroundContext2d {
|
|
|
45
45
|
@inject(WorkspaceService)
|
|
46
46
|
protected readonly workspaceService: WorkspaceService,
|
|
47
47
|
@inject(HistoryService) readonly historyService: HistoryService,
|
|
48
|
-
@inject(AssetsMetaCache) readonly assetsMetaCache: AssetsMetaCache
|
|
49
48
|
) {
|
|
50
49
|
this.rootURI = new URI(this.workspaceService.currentRoot!.uri);
|
|
51
50
|
this.document.toDispose.push(this.onCanvasDataChangedEmitter);
|
|
52
51
|
if (options.onCanvasDataChanged) {
|
|
53
52
|
this.onCanvasDataChanged(drawer => options.onCanvasDataChanged!(drawer));
|
|
54
53
|
}
|
|
55
|
-
this.document.toDispose.push(this.assetsMetaCache.onAssetsChanged((e: DisplayAssetMetaData[]) => {
|
|
56
|
-
this.document.reloadAssets(e);
|
|
57
|
-
}));
|
|
58
54
|
}
|
|
59
55
|
/**
|
|
60
56
|
* 刷新 tree selection
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
} from '@gedit/playground';
|
|
13
13
|
import { CanvasLayer } from './canvas-layer';
|
|
14
14
|
import { PathEditLayer } from './path-edit-layer';
|
|
15
|
+
import { AnimPathEditLayer } from './anim-path-edit-layer';
|
|
15
16
|
// import { SelectionLayer } from './selection-layer';
|
|
16
17
|
import { AppConfigData, AppConfigService } from '@gedit/app-config';
|
|
17
18
|
import { HistoryService } from '@gedit/history';
|
|
@@ -36,6 +37,7 @@ export class PlaygroundContribution2d implements PlaygroundContribution {
|
|
|
36
37
|
registry.registerLayer(CanvasLayer);
|
|
37
38
|
registry.registerLayer(PathEditLayer);
|
|
38
39
|
registry.registerLayer(ExtendEditLayer);
|
|
40
|
+
registry.registerLayer(AnimPathEditLayer);
|
|
39
41
|
// registry.registerLayer(SelectionLayer);
|
|
40
42
|
}
|
|
41
43
|
onDispose(playground: Playground): void {
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
PlaygroundConfigEntity,
|
|
10
10
|
SelectorConfigEntity,
|
|
11
11
|
SelectorEntityRendererProps,
|
|
12
|
+
TransformSchema,
|
|
12
13
|
} from '@gedit/playground';
|
|
13
14
|
import type { PlaygroundContext2d } from './playground-context';
|
|
14
15
|
import { Rectangle } from '@gedit/math';
|
|
@@ -193,15 +194,14 @@ export class SelectionEntityManager {
|
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
196
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
currentTransform[key] = node[key];
|
|
197
|
+
let oldTransform: TransformSchema = {} as TransformSchema;
|
|
198
|
+
Object.keys(entity.transform.data).forEach((key: keyof typeof entity.transform.data) => {
|
|
199
|
+
oldTransform[key] = node[key]! as any;
|
|
200
200
|
});
|
|
201
|
-
|
|
202
|
-
|
|
201
|
+
oldTransform = numberToFixed4(oldTransform);
|
|
202
|
+
if (JSON.stringify(oldTransform) !== JSON.stringify(newTransform)) {
|
|
203
|
+
document.updateNode(node, newTransform, true);
|
|
203
204
|
}
|
|
204
|
-
document.updateNode(node, newTransform, true);
|
|
205
205
|
});
|
|
206
206
|
|
|
207
207
|
// ableManager是全局的,所以每个节点销毁后得注销时间
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
.gedit-path-edit-layer {
|
|
1
|
+
.gedit-path-edit-layer, .gedit-anim-path-edit-layer {
|
|
2
2
|
position: absolute;
|
|
3
3
|
left: 0;
|
|
4
4
|
top: 0;
|
|
5
5
|
overflow: visible;
|
|
6
|
-
z-index:
|
|
6
|
+
z-index: 51;
|
|
7
7
|
&-point {
|
|
8
8
|
stroke: #ccc;
|
|
9
9
|
fill: #fff;
|
|
10
10
|
cursor: pointer;
|
|
11
11
|
z-index: 50;
|
|
12
|
-
transition: stroke 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
|
|
12
|
+
transition: stroke 0.2s ease-in-out, fill 0.2s ease-in-out, stroke-width 0.2s ease-in-out;
|
|
13
13
|
&-move {
|
|
14
14
|
z-index: 0;
|
|
15
15
|
}
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
&-point-active {
|
|
32
|
-
stroke: #
|
|
33
|
-
|
|
32
|
+
stroke: #fff;
|
|
33
|
+
fill: var(--g-playground-select)
|
|
34
34
|
}
|
|
35
35
|
&-pen {
|
|
36
36
|
cursor: url(../svg/pen_add.svg), copy;
|
|
@@ -57,3 +57,11 @@
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
|
|
61
|
+
.gedit-anim-path-edit-layer {
|
|
62
|
+
&-path {
|
|
63
|
+
&:hover {
|
|
64
|
+
stroke: #fff000;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview
|
|
3
|
+
* 贝塞尔曲线工具类
|
|
4
|
+
* 提供给 timeline 的 pathMotion 动画和 PIXI、DOM 的 path 操作使用
|
|
5
|
+
* 暂时先放这里;
|
|
6
|
+
*/
|
|
7
|
+
import {
|
|
8
|
+
asVec,
|
|
9
|
+
getLineWidth,
|
|
10
|
+
PathChild,
|
|
11
|
+
} from '@gedit/canvas-draw';
|
|
12
|
+
import { PathPointSelection } from '@gedit/playground';
|
|
13
|
+
import type { PointSchema } from '../playground';
|
|
14
|
+
|
|
15
|
+
export type PointKey = 'x' | 'y' | 'x1' | 'y1' | 'x2' | 'y2';
|
|
16
|
+
|
|
17
|
+
export const getPathPoint = (
|
|
18
|
+
paths: PathChild[],
|
|
19
|
+
selection?: PathPointSelection
|
|
20
|
+
): PathChild => {
|
|
21
|
+
// const editorState = context.model.playground.entityManager.getEntity<EditorStateConfigEntity>(EditorStateConfigEntity);
|
|
22
|
+
// const isPath = editorState?.is('ADD_PATH');\
|
|
23
|
+
let point = paths[paths.length - 1];
|
|
24
|
+
if (selection && selection.pointId) {
|
|
25
|
+
point = paths.find((c: any) => c.id === selection.pointId) || point;
|
|
26
|
+
}
|
|
27
|
+
return point;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const getBezierKey = (selection?: PathPointSelection, reverse?: boolean) => {
|
|
31
|
+
const k = selection && selection.bezierKey === 'right' ? '2' : '1';
|
|
32
|
+
if (reverse) {
|
|
33
|
+
return k === '1' ? '2' : '1';
|
|
34
|
+
}
|
|
35
|
+
return k;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const getPointKey = (type: 'x' | 'y', selection?: PathPointSelection) =>
|
|
39
|
+
(selection && selection.bezierKey
|
|
40
|
+
? `${type}${getBezierKey(selection)}`
|
|
41
|
+
: type) as PointKey; // keyof PathChild;
|
|
42
|
+
|
|
43
|
+
export const getPointPositionKey = (
|
|
44
|
+
type: 'x' | 'y',
|
|
45
|
+
point: PathChild,
|
|
46
|
+
selection?: PathPointSelection
|
|
47
|
+
) => {
|
|
48
|
+
const key = getPointKey(type, selection);
|
|
49
|
+
const v = point[key];
|
|
50
|
+
return v;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
// 求线外一点到平行线上的一点的一半距离
|
|
54
|
+
export const getParallelPositionByPoint = (
|
|
55
|
+
p1: PointSchema,
|
|
56
|
+
p2: PointSchema,
|
|
57
|
+
p3: PointSchema
|
|
58
|
+
) => {
|
|
59
|
+
if (p1 === p2) {
|
|
60
|
+
p2 = { x: p1.x + 1, y: p1.y + 1 };
|
|
61
|
+
}
|
|
62
|
+
const v = asVec(p1, p2);
|
|
63
|
+
const left = getLineWidth(p1, p3) / 3;
|
|
64
|
+
const right = getLineWidth(p2, p3) / 3;
|
|
65
|
+
const r = Math.max(left, right);
|
|
66
|
+
const leftPoint = {
|
|
67
|
+
x: p3.x - r * Math.cos(v.ang),
|
|
68
|
+
y: p3.y - r * Math.sin(v.ang),
|
|
69
|
+
};
|
|
70
|
+
const rightPoint = {
|
|
71
|
+
x: p3.x + r * Math.cos(v.ang),
|
|
72
|
+
y: p3.y + r * Math.sin(v.ang),
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* 计算点的位置;
|
|
76
|
+
* 1. 左点 X 大于中心点,右点 X 小于中心点;默认
|
|
77
|
+
* 2. 右点 X 大于中心点,左点 X 小于中心点;反转
|
|
78
|
+
* 3. 左右点 X 都小于中心点,左点 Y 大于右点 Y,默认
|
|
79
|
+
* 4. 左右点 X 都小于中心点,左点 Y 小于右点 Y,反转
|
|
80
|
+
* 5. 左右点 X 都大于中心点,左点 Y 大于右点 Y,反转
|
|
81
|
+
* 6. 左右点 X 都大于中心点,左点 Y 小于右点 Y, 默认
|
|
82
|
+
*/
|
|
83
|
+
/* const isReverse =
|
|
84
|
+
(p1.x > p3.x && p2.x < p3.x) ||
|
|
85
|
+
(p1.x < p3.x && p2.x < p3.x && p1.y < p2.y) ||
|
|
86
|
+
(p1.x > p3.x && p2.x > p3.x && p1.y > p2.y); */
|
|
87
|
+
|
|
88
|
+
return { p1: leftPoint, p2: rightPoint /* isReverse */ };
|
|
89
|
+
};
|
|
@@ -61,7 +61,6 @@ export const getPIXILocalBoundsByNode = (obj: GameObjectData): ChildBounds => {
|
|
|
61
61
|
) {
|
|
62
62
|
if (c.children?.length) {
|
|
63
63
|
const childSize = getPIXILocalBoundsByNode(c);
|
|
64
|
-
console.log(childSize, c);
|
|
65
64
|
width = childSize.maxX - childSize.x;
|
|
66
65
|
height = childSize.maxY - childSize.y;
|
|
67
66
|
} else {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extend-edit-layer-point-event.d.ts","sourceRoot":"","sources":["../../../src/browser/playground/extend-edit-layer-point-event.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjC;AAED,UAAU,KAAK;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;CACrC;gCAEsB,KAAK;AAA5B,wBAiDE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extend-edit-layer-point-event.js","sourceRoot":"","sources":["../../../src/browser/playground/extend-edit-layer-point-event.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAqB/B,kBAAe,CAAC,KAAY,EAAE,EAAE;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAA4B,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,CAAa,EAAE,EAAE;;QAClC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,MAAA,KAAK,CAAC,SAAS,sDAAG,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE;;QACpC,IAAI,UAAU,CAAC,OAAO,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACpB,MAAA,KAAK,CAAC,QAAQ,sDAAG;gBACf,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;gBACjB,IAAI,EAAE,SAAS,CAAC,OAAO;gBACvB,KAAK,EAAE,UAAU,CAAC,OAAO;aAC1B,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,GAAG;gBAClB,CAAC,EAAE,CAAC,CAAC,OAAO;gBACZ,CAAC,EAAE,CAAC,CAAC,OAAO;aACb,CAAC;SACH;IACH,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;;QAC1C,UAAU,CAAC,OAAO,GAAG;YACnB,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;SACb,CAAC;QACF,SAAS,CAAC,OAAO,GAAG;YAClB,CAAC,EAAE,CAAC,CAAC,OAAO;YACZ,CAAC,EAAE,CAAC,CAAC,OAAO;SACb,CAAC;QACF,MAAA,KAAK,CAAC,WAAW,sDAAG,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC,CAAC;IACF,OAAO,CACL,6BAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;QACjD,6BACE,SAAS,EAAE,KAAK,CAAC,cAAc,EAC/B,KAAK,EAAE,KAAK,CAAC,UAAU,EACvB,WAAW,EAAE,WAAW,GACxB,CACE,CACP,CAAC;AACJ,CAAC,CAAC"}
|