@nasser-sw/fabric 7.0.1-beta3 → 7.0.1-beta5
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/0 +0 -0
- package/dist/index.js +345 -162
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +345 -162
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +345 -162
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +345 -162
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/shapes/Line.d.ts +32 -86
- package/dist/src/shapes/Line.d.ts.map +1 -1
- package/dist/src/shapes/Line.min.mjs +1 -1
- package/dist/src/shapes/Line.min.mjs.map +1 -1
- package/dist/src/shapes/Line.mjs +345 -161
- package/dist/src/shapes/Line.mjs.map +1 -1
- package/dist-extensions/src/shapes/CustomLine.d.ts +10 -0
- package/dist-extensions/src/shapes/CustomLine.d.ts.map +1 -0
- package/dist-extensions/src/shapes/Line.d.ts +32 -86
- package/dist-extensions/src/shapes/Line.d.ts.map +1 -1
- package/fabric-test-editor.html +157 -8
- package/fabric-test2.html +513 -0
- package/fabric.ts +182 -182
- package/package.json +1 -1
- package/src/shapes/Line.ts +397 -164
- package/debug/konva/CHANGELOG.md +0 -1474
- package/debug/konva/LICENSE +0 -22
- package/debug/konva/README.md +0 -205
- package/debug/konva/gulpfile.mjs +0 -110
- package/debug/konva/package.json +0 -139
- package/debug/konva/release.sh +0 -65
- package/debug/konva/resources/doc-includes/ContainerParams.txt +0 -6
- package/debug/konva/resources/doc-includes/NodeParams.txt +0 -20
- package/debug/konva/resources/doc-includes/ShapeParams.txt +0 -53
- package/debug/konva/resources/jsdoc.conf.json +0 -28
- package/debug/konva/rollup.config.mjs +0 -32
- package/debug/konva/src/Animation.ts +0 -237
- package/debug/konva/src/BezierFunctions.ts +0 -826
- package/debug/konva/src/Canvas.ts +0 -193
- package/debug/konva/src/Container.ts +0 -649
- package/debug/konva/src/Context.ts +0 -1017
- package/debug/konva/src/Core.ts +0 -5
- package/debug/konva/src/DragAndDrop.ts +0 -173
- package/debug/konva/src/Factory.ts +0 -246
- package/debug/konva/src/FastLayer.ts +0 -29
- package/debug/konva/src/Global.ts +0 -210
- package/debug/konva/src/Group.ts +0 -31
- package/debug/konva/src/Layer.ts +0 -546
- package/debug/konva/src/Node.ts +0 -3477
- package/debug/konva/src/PointerEvents.ts +0 -67
- package/debug/konva/src/Shape.ts +0 -2081
- package/debug/konva/src/Stage.ts +0 -1000
- package/debug/konva/src/Tween.ts +0 -811
- package/debug/konva/src/Util.ts +0 -1123
- package/debug/konva/src/Validators.ts +0 -210
- package/debug/konva/src/_CoreInternals.ts +0 -85
- package/debug/konva/src/_FullInternals.ts +0 -171
- package/debug/konva/src/canvas-backend.ts +0 -36
- package/debug/konva/src/filters/Blur.ts +0 -388
- package/debug/konva/src/filters/Brighten.ts +0 -48
- package/debug/konva/src/filters/Brightness.ts +0 -30
- package/debug/konva/src/filters/Contrast.ts +0 -75
- package/debug/konva/src/filters/Emboss.ts +0 -207
- package/debug/konva/src/filters/Enhance.ts +0 -154
- package/debug/konva/src/filters/Grayscale.ts +0 -25
- package/debug/konva/src/filters/HSL.ts +0 -108
- package/debug/konva/src/filters/HSV.ts +0 -106
- package/debug/konva/src/filters/Invert.ts +0 -23
- package/debug/konva/src/filters/Kaleidoscope.ts +0 -274
- package/debug/konva/src/filters/Mask.ts +0 -220
- package/debug/konva/src/filters/Noise.ts +0 -44
- package/debug/konva/src/filters/Pixelate.ts +0 -107
- package/debug/konva/src/filters/Posterize.ts +0 -46
- package/debug/konva/src/filters/RGB.ts +0 -82
- package/debug/konva/src/filters/RGBA.ts +0 -103
- package/debug/konva/src/filters/Sepia.ts +0 -27
- package/debug/konva/src/filters/Solarize.ts +0 -29
- package/debug/konva/src/filters/Threshold.ts +0 -44
- package/debug/konva/src/index.ts +0 -3
- package/debug/konva/src/shapes/Arc.ts +0 -176
- package/debug/konva/src/shapes/Arrow.ts +0 -231
- package/debug/konva/src/shapes/Circle.ts +0 -76
- package/debug/konva/src/shapes/Ellipse.ts +0 -121
- package/debug/konva/src/shapes/Image.ts +0 -319
- package/debug/konva/src/shapes/Label.ts +0 -386
- package/debug/konva/src/shapes/Line.ts +0 -364
- package/debug/konva/src/shapes/Path.ts +0 -1013
- package/debug/konva/src/shapes/Rect.ts +0 -79
- package/debug/konva/src/shapes/RegularPolygon.ts +0 -167
- package/debug/konva/src/shapes/Ring.ts +0 -94
- package/debug/konva/src/shapes/Sprite.ts +0 -370
- package/debug/konva/src/shapes/Star.ts +0 -125
- package/debug/konva/src/shapes/Text.ts +0 -1065
- package/debug/konva/src/shapes/TextPath.ts +0 -583
- package/debug/konva/src/shapes/Transformer.ts +0 -1889
- package/debug/konva/src/shapes/Wedge.ts +0 -129
- package/debug/konva/src/skia-backend.ts +0 -35
- package/debug/konva/src/types.ts +0 -84
- package/debug/konva/tsconfig.json +0 -31
- package/debug/konva/tsconfig.test.json +0 -7
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import { Factory } from '../Factory.ts';
|
|
2
|
-
import { _registerNode } from '../Global.ts';
|
|
3
|
-
import type { ShapeConfig } from '../Shape.ts';
|
|
4
|
-
import { Shape } from '../Shape.ts';
|
|
5
|
-
import { getNumberArrayValidator, getNumberValidator } from '../Validators.ts';
|
|
6
|
-
|
|
7
|
-
import type { Context } from '../Context.ts';
|
|
8
|
-
import type { GetSet } from '../types.ts';
|
|
9
|
-
|
|
10
|
-
function getControlPoints(
|
|
11
|
-
x0: number,
|
|
12
|
-
y0: number,
|
|
13
|
-
x1: number,
|
|
14
|
-
y1: number,
|
|
15
|
-
x2: number,
|
|
16
|
-
y2: number,
|
|
17
|
-
t: number
|
|
18
|
-
) {
|
|
19
|
-
const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)),
|
|
20
|
-
d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)),
|
|
21
|
-
fa = (t * d01) / (d01 + d12),
|
|
22
|
-
fb = (t * d12) / (d01 + d12),
|
|
23
|
-
p1x = x1 - fa * (x2 - x0),
|
|
24
|
-
p1y = y1 - fa * (y2 - y0),
|
|
25
|
-
p2x = x1 + fb * (x2 - x0),
|
|
26
|
-
p2y = y1 + fb * (y2 - y0);
|
|
27
|
-
|
|
28
|
-
return [p1x, p1y, p2x, p2y];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function expandPoints(p, tension) {
|
|
32
|
-
const len = p.length,
|
|
33
|
-
allPoints: Array<number> = [];
|
|
34
|
-
|
|
35
|
-
for (let n = 2; n < len - 2; n += 2) {
|
|
36
|
-
const cp = getControlPoints(
|
|
37
|
-
p[n - 2],
|
|
38
|
-
p[n - 1],
|
|
39
|
-
p[n],
|
|
40
|
-
p[n + 1],
|
|
41
|
-
p[n + 2],
|
|
42
|
-
p[n + 3],
|
|
43
|
-
tension
|
|
44
|
-
);
|
|
45
|
-
if (isNaN(cp[0])) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
allPoints.push(cp[0]);
|
|
49
|
-
allPoints.push(cp[1]);
|
|
50
|
-
allPoints.push(p[n]);
|
|
51
|
-
allPoints.push(p[n + 1]);
|
|
52
|
-
allPoints.push(cp[2]);
|
|
53
|
-
allPoints.push(cp[3]);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return allPoints;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export interface LineConfig extends ShapeConfig {
|
|
60
|
-
points?:
|
|
61
|
-
| number[]
|
|
62
|
-
| Int8Array
|
|
63
|
-
| Uint8Array
|
|
64
|
-
| Uint8ClampedArray
|
|
65
|
-
| Int16Array
|
|
66
|
-
| Uint16Array
|
|
67
|
-
| Int32Array
|
|
68
|
-
| Uint32Array
|
|
69
|
-
| Float32Array
|
|
70
|
-
| Float64Array;
|
|
71
|
-
tension?: number;
|
|
72
|
-
closed?: boolean;
|
|
73
|
-
bezier?: boolean;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Line constructor. Lines are defined by an array of points and
|
|
78
|
-
* a tension
|
|
79
|
-
* @constructor
|
|
80
|
-
* @memberof Konva
|
|
81
|
-
* @augments Konva.Shape
|
|
82
|
-
* @param {Object} config
|
|
83
|
-
* @param {Array} config.points Flat array of points coordinates. You should define them as [x1, y1, x2, y2, x3, y3].
|
|
84
|
-
* @param {Number} [config.tension] Higher values will result in a more curvy line. A value of 0 will result in no interpolation.
|
|
85
|
-
* The default is 0
|
|
86
|
-
* @param {Boolean} [config.closed] defines whether or not the line shape is closed, creating a polygon or blob
|
|
87
|
-
* @param {Boolean} [config.bezier] if no tension is provided but bezier=true, we draw the line as a bezier using the passed points
|
|
88
|
-
* @@shapeParams
|
|
89
|
-
* @@nodeParams
|
|
90
|
-
* @example
|
|
91
|
-
* var line = new Konva.Line({
|
|
92
|
-
* x: 100,
|
|
93
|
-
* y: 50,
|
|
94
|
-
* points: [73, 70, 340, 23, 450, 60, 500, 20],
|
|
95
|
-
* stroke: 'red',
|
|
96
|
-
* tension: 1
|
|
97
|
-
* });
|
|
98
|
-
*/
|
|
99
|
-
|
|
100
|
-
export class Line<
|
|
101
|
-
Config extends LineConfig = LineConfig,
|
|
102
|
-
> extends Shape<Config> {
|
|
103
|
-
constructor(config?: Config) {
|
|
104
|
-
super(config);
|
|
105
|
-
this.on(
|
|
106
|
-
'pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva',
|
|
107
|
-
function () {
|
|
108
|
-
this._clearCache('tensionPoints');
|
|
109
|
-
}
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
_sceneFunc(context: Context) {
|
|
114
|
-
const points = this.points(),
|
|
115
|
-
length = points.length,
|
|
116
|
-
tension = this.tension(),
|
|
117
|
-
closed = this.closed(),
|
|
118
|
-
bezier = this.bezier();
|
|
119
|
-
|
|
120
|
-
if (!length) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
let n = 0;
|
|
124
|
-
|
|
125
|
-
context.beginPath();
|
|
126
|
-
context.moveTo(points[0], points[1]);
|
|
127
|
-
|
|
128
|
-
// tension
|
|
129
|
-
if (tension !== 0 && length > 4) {
|
|
130
|
-
const tp = this.getTensionPoints();
|
|
131
|
-
const len = tp.length;
|
|
132
|
-
n = closed ? 0 : 4;
|
|
133
|
-
|
|
134
|
-
if (!closed) {
|
|
135
|
-
context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
while (n < len - 2) {
|
|
139
|
-
context.bezierCurveTo(
|
|
140
|
-
tp[n++],
|
|
141
|
-
tp[n++],
|
|
142
|
-
tp[n++],
|
|
143
|
-
tp[n++],
|
|
144
|
-
tp[n++],
|
|
145
|
-
tp[n++]
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if (!closed) {
|
|
150
|
-
context.quadraticCurveTo(
|
|
151
|
-
tp[len - 2],
|
|
152
|
-
tp[len - 1],
|
|
153
|
-
points[length - 2],
|
|
154
|
-
points[length - 1]
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
} else if (bezier) {
|
|
158
|
-
// no tension but bezier
|
|
159
|
-
n = 2;
|
|
160
|
-
|
|
161
|
-
while (n < length) {
|
|
162
|
-
context.bezierCurveTo(
|
|
163
|
-
points[n++],
|
|
164
|
-
points[n++],
|
|
165
|
-
points[n++],
|
|
166
|
-
points[n++],
|
|
167
|
-
points[n++],
|
|
168
|
-
points[n++]
|
|
169
|
-
);
|
|
170
|
-
}
|
|
171
|
-
} else {
|
|
172
|
-
// no tension
|
|
173
|
-
for (n = 2; n < length; n += 2) {
|
|
174
|
-
context.lineTo(points[n], points[n + 1]);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// closed e.g. polygons and blobs
|
|
179
|
-
if (closed) {
|
|
180
|
-
context.closePath();
|
|
181
|
-
context.fillStrokeShape(this);
|
|
182
|
-
} else {
|
|
183
|
-
// open e.g. lines and splines
|
|
184
|
-
context.strokeShape(this);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
getTensionPoints() {
|
|
188
|
-
return this._getCache('tensionPoints', this._getTensionPoints);
|
|
189
|
-
}
|
|
190
|
-
_getTensionPoints() {
|
|
191
|
-
if (this.closed()) {
|
|
192
|
-
return this._getTensionPointsClosed();
|
|
193
|
-
} else {
|
|
194
|
-
return expandPoints(this.points(), this.tension());
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
_getTensionPointsClosed() {
|
|
198
|
-
const p = this.points(),
|
|
199
|
-
len = p.length,
|
|
200
|
-
tension = this.tension(),
|
|
201
|
-
firstControlPoints = getControlPoints(
|
|
202
|
-
p[len - 2],
|
|
203
|
-
p[len - 1],
|
|
204
|
-
p[0],
|
|
205
|
-
p[1],
|
|
206
|
-
p[2],
|
|
207
|
-
p[3],
|
|
208
|
-
tension
|
|
209
|
-
),
|
|
210
|
-
lastControlPoints = getControlPoints(
|
|
211
|
-
p[len - 4],
|
|
212
|
-
p[len - 3],
|
|
213
|
-
p[len - 2],
|
|
214
|
-
p[len - 1],
|
|
215
|
-
p[0],
|
|
216
|
-
p[1],
|
|
217
|
-
tension
|
|
218
|
-
),
|
|
219
|
-
middle = expandPoints(p, tension),
|
|
220
|
-
tp = [firstControlPoints[2], firstControlPoints[3]]
|
|
221
|
-
.concat(middle)
|
|
222
|
-
.concat([
|
|
223
|
-
lastControlPoints[0],
|
|
224
|
-
lastControlPoints[1],
|
|
225
|
-
p[len - 2],
|
|
226
|
-
p[len - 1],
|
|
227
|
-
lastControlPoints[2],
|
|
228
|
-
lastControlPoints[3],
|
|
229
|
-
firstControlPoints[0],
|
|
230
|
-
firstControlPoints[1],
|
|
231
|
-
p[0],
|
|
232
|
-
p[1],
|
|
233
|
-
]);
|
|
234
|
-
|
|
235
|
-
return tp;
|
|
236
|
-
}
|
|
237
|
-
getWidth() {
|
|
238
|
-
return this.getSelfRect().width;
|
|
239
|
-
}
|
|
240
|
-
getHeight() {
|
|
241
|
-
return this.getSelfRect().height;
|
|
242
|
-
}
|
|
243
|
-
// overload size detection
|
|
244
|
-
getSelfRect() {
|
|
245
|
-
let points = this.points();
|
|
246
|
-
if (points.length < 4) {
|
|
247
|
-
return {
|
|
248
|
-
x: points[0] || 0,
|
|
249
|
-
y: points[1] || 0,
|
|
250
|
-
width: 0,
|
|
251
|
-
height: 0,
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
if (this.tension() !== 0) {
|
|
255
|
-
points = [
|
|
256
|
-
points[0],
|
|
257
|
-
points[1],
|
|
258
|
-
...this._getTensionPoints(),
|
|
259
|
-
points[points.length - 2],
|
|
260
|
-
points[points.length - 1],
|
|
261
|
-
];
|
|
262
|
-
} else {
|
|
263
|
-
points = this.points();
|
|
264
|
-
}
|
|
265
|
-
let minX = points[0];
|
|
266
|
-
let maxX = points[0];
|
|
267
|
-
let minY = points[1];
|
|
268
|
-
let maxY = points[1];
|
|
269
|
-
let x, y;
|
|
270
|
-
for (let i = 0; i < points.length / 2; i++) {
|
|
271
|
-
x = points[i * 2];
|
|
272
|
-
y = points[i * 2 + 1];
|
|
273
|
-
minX = Math.min(minX, x);
|
|
274
|
-
maxX = Math.max(maxX, x);
|
|
275
|
-
minY = Math.min(minY, y);
|
|
276
|
-
maxY = Math.max(maxY, y);
|
|
277
|
-
}
|
|
278
|
-
return {
|
|
279
|
-
x: minX,
|
|
280
|
-
y: minY,
|
|
281
|
-
width: maxX - minX,
|
|
282
|
-
height: maxY - minY,
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
closed: GetSet<boolean, this>;
|
|
287
|
-
bezier: GetSet<boolean, this>;
|
|
288
|
-
tension: GetSet<number, this>;
|
|
289
|
-
points: GetSet<number[], this>;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
Line.prototype.className = 'Line';
|
|
293
|
-
Line.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];
|
|
294
|
-
_registerNode(Line);
|
|
295
|
-
|
|
296
|
-
// add getters setters
|
|
297
|
-
Factory.addGetterSetter(Line, 'closed', false);
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* get/set closed flag. The default is false
|
|
301
|
-
* @name Konva.Line#closed
|
|
302
|
-
* @method
|
|
303
|
-
* @param {Boolean} closed
|
|
304
|
-
* @returns {Boolean}
|
|
305
|
-
* @example
|
|
306
|
-
* // get closed flag
|
|
307
|
-
* var closed = line.closed();
|
|
308
|
-
*
|
|
309
|
-
* // close the shape
|
|
310
|
-
* line.closed(true);
|
|
311
|
-
*
|
|
312
|
-
* // open the shape
|
|
313
|
-
* line.closed(false);
|
|
314
|
-
*/
|
|
315
|
-
|
|
316
|
-
Factory.addGetterSetter(Line, 'bezier', false);
|
|
317
|
-
|
|
318
|
-
/**
|
|
319
|
-
* get/set bezier flag. The default is false
|
|
320
|
-
* @name Konva.Line#bezier
|
|
321
|
-
* @method
|
|
322
|
-
* @param {Boolean} bezier
|
|
323
|
-
* @returns {Boolean}
|
|
324
|
-
* @example
|
|
325
|
-
* // get whether the line is a bezier
|
|
326
|
-
* var isBezier = line.bezier();
|
|
327
|
-
*
|
|
328
|
-
* // set whether the line is a bezier
|
|
329
|
-
* line.bezier(true);
|
|
330
|
-
*/
|
|
331
|
-
|
|
332
|
-
Factory.addGetterSetter(Line, 'tension', 0, getNumberValidator());
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* get/set tension
|
|
336
|
-
* @name Konva.Line#tension
|
|
337
|
-
* @method
|
|
338
|
-
* @param {Number} tension Higher values will result in a more curvy line. A value of 0 will result in no interpolation. The default is 0
|
|
339
|
-
* @returns {Number}
|
|
340
|
-
* @example
|
|
341
|
-
* // get tension
|
|
342
|
-
* var tension = line.tension();
|
|
343
|
-
*
|
|
344
|
-
* // set tension
|
|
345
|
-
* line.tension(3);
|
|
346
|
-
*/
|
|
347
|
-
|
|
348
|
-
Factory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());
|
|
349
|
-
/**
|
|
350
|
-
* get/set points array. Points is a flat array [x1, y1, x2, y2]. It is flat for performance reasons.
|
|
351
|
-
* @name Konva.Line#points
|
|
352
|
-
* @method
|
|
353
|
-
* @param {Array} points
|
|
354
|
-
* @returns {Array}
|
|
355
|
-
* @example
|
|
356
|
-
* // get points
|
|
357
|
-
* var points = line.points();
|
|
358
|
-
*
|
|
359
|
-
* // set points
|
|
360
|
-
* line.points([10, 20, 30, 40, 50, 60]);
|
|
361
|
-
*
|
|
362
|
-
* // push a new point
|
|
363
|
-
* line.points(line.points().concat([70, 80]));
|
|
364
|
-
*/
|