fabric 6.5.1 → 6.5.3
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/CHANGELOG.md +14 -0
- package/dist/index.js +95 -135
- 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 +95 -135
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +95 -135
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +95 -135
- 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/canvas/Canvas.d.ts.map +1 -1
- package/dist/src/canvas/Canvas.min.mjs +1 -1
- package/dist/src/canvas/Canvas.min.mjs.map +1 -1
- package/dist/src/canvas/Canvas.mjs +1 -3
- package/dist/src/canvas/Canvas.mjs.map +1 -1
- package/dist/src/color/Color.d.ts.map +1 -1
- package/dist/src/color/Color.min.mjs +1 -1
- package/dist/src/color/Color.min.mjs.map +1 -1
- package/dist/src/color/Color.mjs +1 -0
- package/dist/src/color/Color.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.d.ts +3 -3
- package/dist/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
- package/dist/src/filters/BaseFilter.mjs.map +1 -1
- package/dist/src/filters/BlendColor.d.ts.map +1 -1
- package/dist/src/filters/BlendColor.min.mjs +1 -1
- package/dist/src/filters/BlendColor.min.mjs.map +1 -1
- package/dist/src/filters/BlendColor.mjs +39 -34
- package/dist/src/filters/BlendColor.mjs.map +1 -1
- package/dist/src/filters/Brightness.min.mjs +1 -1
- package/dist/src/filters/Brightness.min.mjs.map +1 -1
- package/dist/src/filters/Brightness.mjs +3 -3
- package/dist/src/filters/Brightness.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.d.ts +3 -6
- package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs +1 -1
- package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrix.mjs +7 -8
- package/dist/src/filters/ColorMatrix.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
- package/dist/src/filters/ColorMatrixFilters.mjs +0 -1
- package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
- package/dist/src/filters/Composed.d.ts +9 -4
- package/dist/src/filters/Composed.d.ts.map +1 -1
- package/dist/src/filters/Composed.min.mjs.map +1 -1
- package/dist/src/filters/Composed.mjs +0 -1
- package/dist/src/filters/Composed.mjs.map +1 -1
- package/dist/src/filters/Grayscale.d.ts.map +1 -1
- package/dist/src/filters/Grayscale.min.mjs +1 -1
- package/dist/src/filters/Grayscale.min.mjs.map +1 -1
- package/dist/src/filters/Grayscale.mjs +7 -6
- package/dist/src/filters/Grayscale.mjs.map +1 -1
- package/dist/src/filters/HueRotation.d.ts +7 -4
- package/dist/src/filters/HueRotation.d.ts.map +1 -1
- package/dist/src/filters/HueRotation.min.mjs +1 -1
- package/dist/src/filters/HueRotation.min.mjs.map +1 -1
- package/dist/src/filters/HueRotation.mjs +5 -16
- package/dist/src/filters/HueRotation.mjs.map +1 -1
- package/dist/src/filters/Saturation.d.ts.map +1 -1
- package/dist/src/filters/Saturation.min.mjs +1 -1
- package/dist/src/filters/Saturation.min.mjs.map +1 -1
- package/dist/src/filters/Saturation.mjs +7 -4
- package/dist/src/filters/Saturation.mjs.map +1 -1
- package/dist/src/filters/Vibrance.d.ts.map +1 -1
- package/dist/src/filters/Vibrance.min.mjs +1 -1
- package/dist/src/filters/Vibrance.min.mjs.map +1 -1
- package/dist/src/filters/Vibrance.mjs +8 -5
- package/dist/src/filters/Vibrance.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.d.ts.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs +1 -1
- package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
- package/dist/src/filters/WebGLFilterBackend.mjs +2 -6
- package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextClickBehavior.mjs +0 -2
- package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs +0 -3
- package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts +1 -1
- package/dist/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist/src/shapes/Object/Object.min.mjs +1 -1
- package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.mjs +17 -42
- package/dist/src/shapes/Object/Object.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.d.ts +0 -2
- package/dist/src/shapes/Text/StyledText.d.ts.map +1 -1
- package/dist/src/shapes/Text/StyledText.min.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.mjs +0 -3
- package/dist/src/shapes/Text/StyledText.mjs.map +1 -1
- package/dist-extensions/src/canvas/Canvas.d.ts.map +1 -1
- package/dist-extensions/src/color/Color.d.ts.map +1 -1
- package/dist-extensions/src/filters/BaseFilter.d.ts +3 -3
- package/dist-extensions/src/filters/BaseFilter.d.ts.map +1 -1
- package/dist-extensions/src/filters/BlendColor.d.ts.map +1 -1
- package/dist-extensions/src/filters/ColorMatrix.d.ts +3 -6
- package/dist-extensions/src/filters/ColorMatrix.d.ts.map +1 -1
- package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +1 -1
- package/dist-extensions/src/filters/Composed.d.ts +9 -4
- package/dist-extensions/src/filters/Composed.d.ts.map +1 -1
- package/dist-extensions/src/filters/Grayscale.d.ts.map +1 -1
- package/dist-extensions/src/filters/HueRotation.d.ts +7 -4
- package/dist-extensions/src/filters/HueRotation.d.ts.map +1 -1
- package/dist-extensions/src/filters/Saturation.d.ts.map +1 -1
- package/dist-extensions/src/filters/Vibrance.d.ts.map +1 -1
- package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Group.d.ts.map +1 -1
- package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +1 -1
- package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Image.d.ts +1 -1
- package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -2
- package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/canvas/Canvas.ts +1 -3
- package/src/color/Color.ts +1 -0
- package/src/color/color.test.ts +8 -0
- package/src/filters/BaseFilter.ts +5 -4
- package/src/filters/BlendColor.ts +39 -35
- package/src/filters/Brightness.ts +3 -3
- package/src/filters/ColorMatrix.spec.ts +37 -0
- package/src/filters/ColorMatrix.ts +12 -12
- package/src/filters/ColorMatrixFilters.ts +5 -2
- package/src/filters/Composed.ts +11 -7
- package/src/filters/Grayscale.ts +7 -9
- package/src/filters/HueRotation.ts +36 -15
- package/src/filters/Saturation.ts +7 -4
- package/src/filters/Vibrance.ts +8 -5
- package/src/filters/WebGLFilterBackend.ts +2 -4
- package/src/shapes/IText/ITextClickBehavior.ts +4 -3
- package/src/shapes/IText/ITextKeyBehavior.ts +13 -6
- package/src/shapes/Object/Object.spec.ts +13 -0
- package/src/shapes/Object/Object.ts +13 -54
- package/src/shapes/Text/StyledText.ts +6 -6
- package/tsconfig.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
## [next]
|
|
4
4
|
|
|
5
|
+
## [6.5.3]
|
|
6
|
+
|
|
7
|
+
- fix(ColorMatrix): Restore correct alpha for JS colorMatrix filter [#10313](https://github.com/fabricjs/fabric.js/pull/10313)
|
|
8
|
+
|
|
9
|
+
## [6.5.2]
|
|
10
|
+
|
|
11
|
+
- chore(): Reduce some verbose code [#10311](https://github.com/fabricjs/fabric.js/pull/10311)
|
|
12
|
+
- ci(): Test node 22 again [#10310](https://github.com/fabricjs/fabric.js/pull/10310)
|
|
13
|
+
- chore(TS): Try to remove all TS-ERROR directives [#10309](https://github.com/fabricjs/fabric.js/pull/10309)
|
|
14
|
+
- chore(): Make TS config more strict [#10308](https://github.com/fabricjs/fabric.js/pull/10308)
|
|
15
|
+
- fix(Color): Support uppercase keywords [#10300](https://github.com/fabricjs/fabric.js/pull/10300)
|
|
16
|
+
- fix(): The \_setLineDash method has additional side effects, altering the value of strokeDashArray [#10292](https://github.com/fabricjs/fabric.js/issues/10292)
|
|
17
|
+
- fix(): for object caching over invalidating the cache [#10294](https://github.com/fabricjs/fabric.js/pull/10294)
|
|
18
|
+
|
|
5
19
|
## [6.5.1]
|
|
6
20
|
|
|
7
21
|
- fix(TS): Add missing export for type DrawContext [#10281](https://github.com/fabricjs/fabric.js/pull/10281)
|
package/dist/index.js
CHANGED
|
@@ -411,7 +411,7 @@
|
|
|
411
411
|
}
|
|
412
412
|
const cache = new Cache();
|
|
413
413
|
|
|
414
|
-
var version = "6.5.
|
|
414
|
+
var version = "6.5.3";
|
|
415
415
|
|
|
416
416
|
// use this syntax so babel plugin see this import here
|
|
417
417
|
const VERSION = version;
|
|
@@ -2381,6 +2381,7 @@
|
|
|
2381
2381
|
* @returns {TRGBAColorSource}
|
|
2382
2382
|
*/
|
|
2383
2383
|
_tryParsingColor(color) {
|
|
2384
|
+
color = color.toLowerCase();
|
|
2384
2385
|
if (color in ColorNameMap) {
|
|
2385
2386
|
color = ColorNameMap[color];
|
|
2386
2387
|
}
|
|
@@ -6850,8 +6851,8 @@
|
|
|
6850
6851
|
// for sure this ALIASING_LIMIT is slightly creating problem
|
|
6851
6852
|
// in situation in which the cache canvas gets an upper limit
|
|
6852
6853
|
// also objectScale contains already scaleX and scaleY
|
|
6853
|
-
width: neededX + ALIASING_LIMIT,
|
|
6854
|
-
height: neededY + ALIASING_LIMIT,
|
|
6854
|
+
width: Math.ceil(neededX + ALIASING_LIMIT),
|
|
6855
|
+
height: Math.ceil(neededY + ALIASING_LIMIT),
|
|
6855
6856
|
zoomX: objectScale.x,
|
|
6856
6857
|
zoomY: objectScale.y,
|
|
6857
6858
|
x: neededX,
|
|
@@ -6868,51 +6869,30 @@
|
|
|
6868
6869
|
_updateCacheCanvas() {
|
|
6869
6870
|
const canvas = this._cacheCanvas,
|
|
6870
6871
|
context = this._cacheContext,
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6872
|
+
{
|
|
6873
|
+
width,
|
|
6874
|
+
height,
|
|
6875
|
+
zoomX,
|
|
6876
|
+
zoomY,
|
|
6877
|
+
x,
|
|
6878
|
+
y
|
|
6879
|
+
} = this._limitCacheSize(this._getCacheCanvasDimensions()),
|
|
6877
6880
|
dimensionsChanged = width !== canvas.width || height !== canvas.height,
|
|
6878
6881
|
zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY;
|
|
6879
6882
|
if (!canvas || !context) {
|
|
6880
6883
|
return false;
|
|
6881
6884
|
}
|
|
6882
|
-
|
|
6883
|
-
drawingHeight,
|
|
6884
|
-
shouldRedraw = dimensionsChanged || zoomChanged,
|
|
6885
|
-
additionalWidth = 0,
|
|
6886
|
-
additionalHeight = 0,
|
|
6887
|
-
shouldResizeCanvas = false;
|
|
6888
|
-
if (dimensionsChanged) {
|
|
6889
|
-
const canvasWidth = this._cacheCanvas.width,
|
|
6890
|
-
canvasHeight = this._cacheCanvas.height,
|
|
6891
|
-
sizeGrowing = width > canvasWidth || height > canvasHeight,
|
|
6892
|
-
sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) && canvasWidth > minCacheSize && canvasHeight > minCacheSize;
|
|
6893
|
-
shouldResizeCanvas = sizeGrowing || sizeShrinking;
|
|
6894
|
-
if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {
|
|
6895
|
-
additionalWidth = width * 0.1;
|
|
6896
|
-
additionalHeight = height * 0.1;
|
|
6897
|
-
}
|
|
6898
|
-
}
|
|
6899
|
-
if (isTextObject(this) && this.path) {
|
|
6900
|
-
shouldRedraw = true;
|
|
6901
|
-
shouldResizeCanvas = true;
|
|
6902
|
-
// IMHO in those lines we are using zoomX and zoomY not the this version.
|
|
6903
|
-
additionalWidth += this.getHeightOfLine(0) * this.zoomX;
|
|
6904
|
-
additionalHeight += this.getHeightOfLine(0) * this.zoomY;
|
|
6905
|
-
}
|
|
6885
|
+
const shouldRedraw = dimensionsChanged || zoomChanged;
|
|
6906
6886
|
if (shouldRedraw) {
|
|
6907
|
-
if (
|
|
6908
|
-
canvas.width =
|
|
6909
|
-
canvas.height =
|
|
6887
|
+
if (width !== canvas.width || height !== canvas.height) {
|
|
6888
|
+
canvas.width = width;
|
|
6889
|
+
canvas.height = height;
|
|
6910
6890
|
} else {
|
|
6911
6891
|
context.setTransform(1, 0, 0, 1, 0, 0);
|
|
6912
6892
|
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
6913
6893
|
}
|
|
6914
|
-
drawingWidth =
|
|
6915
|
-
drawingHeight =
|
|
6894
|
+
const drawingWidth = x / 2;
|
|
6895
|
+
const drawingHeight = y / 2;
|
|
6916
6896
|
this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;
|
|
6917
6897
|
this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;
|
|
6918
6898
|
context.translate(this.cacheTranslationX, this.cacheTranslationY);
|
|
@@ -7387,10 +7367,6 @@
|
|
|
7387
7367
|
if (!dashArray || dashArray.length === 0) {
|
|
7388
7368
|
return;
|
|
7389
7369
|
}
|
|
7390
|
-
// Spec requires the concatenation of two copies of the dash array when the number of elements is odd
|
|
7391
|
-
if (1 & dashArray.length) {
|
|
7392
|
-
dashArray.push(...dashArray);
|
|
7393
|
-
}
|
|
7394
7370
|
ctx.setLineDash(dashArray);
|
|
7395
7371
|
}
|
|
7396
7372
|
|
|
@@ -15274,9 +15250,7 @@
|
|
|
15274
15250
|
* @private
|
|
15275
15251
|
*/
|
|
15276
15252
|
_resetTransformEventData() {
|
|
15277
|
-
this._target = undefined;
|
|
15278
|
-
this._pointer = undefined;
|
|
15279
|
-
this._absolutePointer = undefined;
|
|
15253
|
+
this._target = this._pointer = this._absolutePointer = undefined;
|
|
15280
15254
|
}
|
|
15281
15255
|
|
|
15282
15256
|
/**
|
|
@@ -18480,8 +18454,6 @@
|
|
|
18480
18454
|
* has no other properties, then it is also deleted. Finally,
|
|
18481
18455
|
* if the line containing that character has no other characters
|
|
18482
18456
|
* then it also is deleted.
|
|
18483
|
-
*
|
|
18484
|
-
* @param {string} property The property to compare between characters and text.
|
|
18485
18457
|
*/
|
|
18486
18458
|
cleanStyle(property) {
|
|
18487
18459
|
if (!this.styles) {
|
|
@@ -18527,7 +18499,6 @@
|
|
|
18527
18499
|
graphemeCount += this._textLines[i].length;
|
|
18528
18500
|
}
|
|
18529
18501
|
if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {
|
|
18530
|
-
// @ts-expect-error conspiracy theory of TS
|
|
18531
18502
|
this[property] = stylePropertyValue;
|
|
18532
18503
|
this.removeStyle(property);
|
|
18533
18504
|
}
|
|
@@ -21520,10 +21491,8 @@
|
|
|
21520
21491
|
}
|
|
21521
21492
|
const keyMap = this.direction === 'rtl' ? this.keysMapRtl : this.keysMap;
|
|
21522
21493
|
if (e.keyCode in keyMap) {
|
|
21523
|
-
// @ts-expect-error legacy method calling pattern
|
|
21524
21494
|
this[keyMap[e.keyCode]](e);
|
|
21525
21495
|
} else if (e.keyCode in this.ctrlKeysMapDown && (e.ctrlKey || e.metaKey)) {
|
|
21526
|
-
// @ts-expect-error legacy method calling pattern
|
|
21527
21496
|
this[this.ctrlKeysMapDown[e.keyCode]](e);
|
|
21528
21497
|
} else {
|
|
21529
21498
|
return;
|
|
@@ -21552,7 +21521,6 @@
|
|
|
21552
21521
|
return;
|
|
21553
21522
|
}
|
|
21554
21523
|
if (e.keyCode in this.ctrlKeysMapUp && (e.ctrlKey || e.metaKey)) {
|
|
21555
|
-
// @ts-expect-error legacy method calling pattern
|
|
21556
21524
|
this[this.ctrlKeysMapUp[e.keyCode]](e);
|
|
21557
21525
|
} else {
|
|
21558
21526
|
return;
|
|
@@ -22043,8 +22011,6 @@
|
|
|
22043
22011
|
this.__lastLastClickTime = +new Date();
|
|
22044
22012
|
this.__lastPointer = {};
|
|
22045
22013
|
this.on('mousedown', this.onMouseDown);
|
|
22046
|
-
|
|
22047
|
-
// @ts-expect-error in reality it is an IText instance
|
|
22048
22014
|
this.draggableTextDelegate = new DraggableTextDelegate(this);
|
|
22049
22015
|
super.initBehavior();
|
|
22050
22016
|
}
|
|
@@ -23884,12 +23850,8 @@
|
|
|
23884
23850
|
cachedTexture = this.getCachedTexture(cacheKey, source);
|
|
23885
23851
|
}
|
|
23886
23852
|
const pipelineState = {
|
|
23887
|
-
originalWidth: source.width ||
|
|
23888
|
-
|
|
23889
|
-
source.originalWidth || 0,
|
|
23890
|
-
originalHeight: source.height ||
|
|
23891
|
-
// @ts-expect-error is this a bug? should this be naturalHeight? or is this the pipeline state?
|
|
23892
|
-
source.originalHeight || 0,
|
|
23853
|
+
originalWidth: source.width || source.naturalWidth || 0,
|
|
23854
|
+
originalHeight: source.height || source.naturalHeight || 0,
|
|
23893
23855
|
sourceWidth: width,
|
|
23894
23856
|
sourceHeight: height,
|
|
23895
23857
|
destinationWidth: width,
|
|
@@ -26047,65 +26009,70 @@
|
|
|
26047
26009
|
}
|
|
26048
26010
|
} = _ref;
|
|
26049
26011
|
const source = new Color(this.color).getSource();
|
|
26050
|
-
const
|
|
26051
|
-
const
|
|
26052
|
-
const
|
|
26053
|
-
const
|
|
26012
|
+
const alpha = this.alpha;
|
|
26013
|
+
const tr = source[0] * alpha;
|
|
26014
|
+
const tg = source[1] * alpha;
|
|
26015
|
+
const tb = source[2] * alpha;
|
|
26016
|
+
const alpha1 = 1 - alpha;
|
|
26054
26017
|
for (let i = 0; i < data.length; i += 4) {
|
|
26055
26018
|
const r = data[i];
|
|
26056
26019
|
const g = data[i + 1];
|
|
26057
26020
|
const b = data[i + 2];
|
|
26021
|
+
let oR, oG, oB;
|
|
26058
26022
|
switch (this.mode) {
|
|
26059
26023
|
case 'multiply':
|
|
26060
|
-
|
|
26061
|
-
|
|
26062
|
-
|
|
26024
|
+
oR = r * tr / 255;
|
|
26025
|
+
oG = g * tg / 255;
|
|
26026
|
+
oB = b * tb / 255;
|
|
26063
26027
|
break;
|
|
26064
26028
|
case 'screen':
|
|
26065
|
-
|
|
26066
|
-
|
|
26067
|
-
|
|
26029
|
+
oR = 255 - (255 - r) * (255 - tr) / 255;
|
|
26030
|
+
oG = 255 - (255 - g) * (255 - tg) / 255;
|
|
26031
|
+
oB = 255 - (255 - b) * (255 - tb) / 255;
|
|
26068
26032
|
break;
|
|
26069
26033
|
case 'add':
|
|
26070
|
-
|
|
26071
|
-
|
|
26072
|
-
|
|
26034
|
+
oR = r + tr;
|
|
26035
|
+
oG = g + tg;
|
|
26036
|
+
oB = b + tb;
|
|
26073
26037
|
break;
|
|
26074
26038
|
case 'difference':
|
|
26075
|
-
|
|
26076
|
-
|
|
26077
|
-
|
|
26039
|
+
oR = Math.abs(r - tr);
|
|
26040
|
+
oG = Math.abs(g - tg);
|
|
26041
|
+
oB = Math.abs(b - tb);
|
|
26078
26042
|
break;
|
|
26079
26043
|
case 'subtract':
|
|
26080
|
-
|
|
26081
|
-
|
|
26082
|
-
|
|
26044
|
+
oR = r - tr;
|
|
26045
|
+
oG = g - tg;
|
|
26046
|
+
oB = b - tb;
|
|
26083
26047
|
break;
|
|
26084
26048
|
case 'darken':
|
|
26085
|
-
|
|
26086
|
-
|
|
26087
|
-
|
|
26049
|
+
oR = Math.min(r, tr);
|
|
26050
|
+
oG = Math.min(g, tg);
|
|
26051
|
+
oB = Math.min(b, tb);
|
|
26088
26052
|
break;
|
|
26089
26053
|
case 'lighten':
|
|
26090
|
-
|
|
26091
|
-
|
|
26092
|
-
|
|
26054
|
+
oR = Math.max(r, tr);
|
|
26055
|
+
oG = Math.max(g, tg);
|
|
26056
|
+
oB = Math.max(b, tb);
|
|
26093
26057
|
break;
|
|
26094
26058
|
case 'overlay':
|
|
26095
|
-
|
|
26096
|
-
|
|
26097
|
-
|
|
26059
|
+
oR = tr < 128 ? 2 * r * tr / 255 : 255 - 2 * (255 - r) * (255 - tr) / 255;
|
|
26060
|
+
oG = tg < 128 ? 2 * g * tg / 255 : 255 - 2 * (255 - g) * (255 - tg) / 255;
|
|
26061
|
+
oB = tb < 128 ? 2 * b * tb / 255 : 255 - 2 * (255 - b) * (255 - tb) / 255;
|
|
26098
26062
|
break;
|
|
26099
26063
|
case 'exclusion':
|
|
26100
|
-
|
|
26101
|
-
|
|
26102
|
-
|
|
26064
|
+
oR = tr + r - 2 * tr * r / 255;
|
|
26065
|
+
oG = tg + g - 2 * tg * g / 255;
|
|
26066
|
+
oB = tb + b - 2 * tb * b / 255;
|
|
26103
26067
|
break;
|
|
26104
26068
|
case 'tint':
|
|
26105
|
-
|
|
26106
|
-
|
|
26107
|
-
|
|
26069
|
+
oR = tr + r * alpha1;
|
|
26070
|
+
oG = tg + g * alpha1;
|
|
26071
|
+
oB = tb + b * alpha1;
|
|
26108
26072
|
}
|
|
26073
|
+
data[i] = oR;
|
|
26074
|
+
data[i + 1] = oG;
|
|
26075
|
+
data[i + 2] = oB;
|
|
26109
26076
|
}
|
|
26110
26077
|
}
|
|
26111
26078
|
|
|
@@ -26514,9 +26481,9 @@
|
|
|
26514
26481
|
} = _ref;
|
|
26515
26482
|
const brightness = Math.round(this.brightness * 255);
|
|
26516
26483
|
for (let i = 0; i < data.length; i += 4) {
|
|
26517
|
-
data[i]
|
|
26518
|
-
data[i + 1]
|
|
26519
|
-
data[i + 2]
|
|
26484
|
+
data[i] += brightness;
|
|
26485
|
+
data[i + 1] += brightness;
|
|
26486
|
+
data[i + 2] += brightness;
|
|
26520
26487
|
}
|
|
26521
26488
|
}
|
|
26522
26489
|
isNeutralState() {
|
|
@@ -26588,15 +26555,14 @@
|
|
|
26588
26555
|
const r = data[i];
|
|
26589
26556
|
const g = data[i + 1];
|
|
26590
26557
|
const b = data[i + 2];
|
|
26591
|
-
|
|
26592
|
-
|
|
26593
|
-
|
|
26594
|
-
|
|
26595
|
-
} else {
|
|
26558
|
+
data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;
|
|
26559
|
+
data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;
|
|
26560
|
+
data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;
|
|
26561
|
+
if (!colorsOnly) {
|
|
26596
26562
|
const a = data[i + 3];
|
|
26597
|
-
data[i]
|
|
26598
|
-
data[i + 1]
|
|
26599
|
-
data[i + 2]
|
|
26563
|
+
data[i] += a * m[3];
|
|
26564
|
+
data[i + 1] += a * m[8];
|
|
26565
|
+
data[i + 2] += a * m[13];
|
|
26600
26566
|
data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;
|
|
26601
26567
|
}
|
|
26602
26568
|
}
|
|
@@ -26643,7 +26609,6 @@
|
|
|
26643
26609
|
function createColorMatrixFilter(key, matrix) {
|
|
26644
26610
|
var _Class;
|
|
26645
26611
|
const newClass = (_Class = class newClass extends ColorMatrix {
|
|
26646
|
-
//@ts-expect-error TS wants matrix to be exported.
|
|
26647
26612
|
toObject() {
|
|
26648
26613
|
return {
|
|
26649
26614
|
type: this.type,
|
|
@@ -26694,7 +26659,6 @@
|
|
|
26694
26659
|
* Serialize this filter into JSON.
|
|
26695
26660
|
* @returns {Object} A JSON representation of this filter.
|
|
26696
26661
|
*/
|
|
26697
|
-
//@ts-expect-error TS doesn't like this toObject
|
|
26698
26662
|
toObject() {
|
|
26699
26663
|
return {
|
|
26700
26664
|
type: this.type,
|
|
@@ -27074,20 +27038,21 @@
|
|
|
27074
27038
|
}
|
|
27075
27039
|
} = _ref;
|
|
27076
27040
|
for (let i = 0, value; i < data.length; i += 4) {
|
|
27041
|
+
const r = data[i];
|
|
27042
|
+
const g = data[i + 1];
|
|
27043
|
+
const b = data[i + 2];
|
|
27077
27044
|
switch (this.mode) {
|
|
27078
27045
|
case 'average':
|
|
27079
|
-
value = (
|
|
27046
|
+
value = (r + g + b) / 3;
|
|
27080
27047
|
break;
|
|
27081
27048
|
case 'lightness':
|
|
27082
|
-
value = (Math.min(
|
|
27049
|
+
value = (Math.min(r, g, b) + Math.max(r, g, b)) / 2;
|
|
27083
27050
|
break;
|
|
27084
27051
|
case 'luminosity':
|
|
27085
|
-
value = 0.21 *
|
|
27052
|
+
value = 0.21 * r + 0.72 * g + 0.07 * b;
|
|
27086
27053
|
break;
|
|
27087
27054
|
}
|
|
27088
|
-
data[i] = value;
|
|
27089
|
-
data[i + 1] = value;
|
|
27090
|
-
data[i + 2] = value;
|
|
27055
|
+
data[i + 2] = data[i + 1] = data[i] = value;
|
|
27091
27056
|
}
|
|
27092
27057
|
}
|
|
27093
27058
|
getCacheKey() {
|
|
@@ -27122,9 +27087,9 @@
|
|
|
27122
27087
|
_defineProperty(Grayscale, "uniformLocations", ['uMode']);
|
|
27123
27088
|
classRegistry.setClass(Grayscale);
|
|
27124
27089
|
|
|
27125
|
-
const hueRotationDefaultValues = {
|
|
27090
|
+
const hueRotationDefaultValues = _objectSpread2(_objectSpread2({}, colorMatrixDefaultValues), {}, {
|
|
27126
27091
|
rotation: 0
|
|
27127
|
-
};
|
|
27092
|
+
});
|
|
27128
27093
|
|
|
27129
27094
|
/**
|
|
27130
27095
|
* HueRotation filter class
|
|
@@ -27143,16 +27108,7 @@
|
|
|
27143
27108
|
aThird = 1 / 3,
|
|
27144
27109
|
aThirdSqtSin = Math.sqrt(aThird) * sine,
|
|
27145
27110
|
OneMinusCos = 1 - cosine;
|
|
27146
|
-
this.matrix = [
|
|
27147
|
-
this.matrix[0] = cosine + OneMinusCos / 3;
|
|
27148
|
-
this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;
|
|
27149
|
-
this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;
|
|
27150
|
-
this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;
|
|
27151
|
-
this.matrix[6] = cosine + aThird * OneMinusCos;
|
|
27152
|
-
this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;
|
|
27153
|
-
this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;
|
|
27154
|
-
this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;
|
|
27155
|
-
this.matrix[12] = cosine + aThird * OneMinusCos;
|
|
27111
|
+
this.matrix = [cosine + OneMinusCos / 3, aThird * OneMinusCos - aThirdSqtSin, aThird * OneMinusCos + aThirdSqtSin, 0, 0, aThird * OneMinusCos + aThirdSqtSin, cosine + aThird * OneMinusCos, aThird * OneMinusCos - aThirdSqtSin, 0, 0, aThird * OneMinusCos - aThirdSqtSin, aThird * OneMinusCos + aThirdSqtSin, cosine + aThird * OneMinusCos, 0, 0, 0, 0, 0, 1, 0];
|
|
27156
27112
|
}
|
|
27157
27113
|
isNeutralState() {
|
|
27158
27114
|
return this.rotation === 0;
|
|
@@ -27161,8 +27117,6 @@
|
|
|
27161
27117
|
this.calculateMatrix();
|
|
27162
27118
|
super.applyTo(options);
|
|
27163
27119
|
}
|
|
27164
|
-
|
|
27165
|
-
//@ts-expect-error TS and classes with different methods
|
|
27166
27120
|
toObject() {
|
|
27167
27121
|
return {
|
|
27168
27122
|
type: this.type,
|
|
@@ -27932,10 +27886,13 @@
|
|
|
27932
27886
|
} = _ref;
|
|
27933
27887
|
const adjust = -this.saturation;
|
|
27934
27888
|
for (let i = 0; i < data.length; i += 4) {
|
|
27935
|
-
const
|
|
27936
|
-
|
|
27937
|
-
|
|
27938
|
-
|
|
27889
|
+
const r = data[i];
|
|
27890
|
+
const g = data[i + 1];
|
|
27891
|
+
const b = data[i + 2];
|
|
27892
|
+
const max = Math.max(r, g, b);
|
|
27893
|
+
data[i] += max !== r ? (max - r) * adjust : 0;
|
|
27894
|
+
data[i + 1] += max !== g ? (max - g) * adjust : 0;
|
|
27895
|
+
data[i + 2] += max !== b ? (max - b) * adjust : 0;
|
|
27939
27896
|
}
|
|
27940
27897
|
}
|
|
27941
27898
|
|
|
@@ -27999,12 +27956,15 @@
|
|
|
27999
27956
|
} = _ref;
|
|
28000
27957
|
const adjust = -this.vibrance;
|
|
28001
27958
|
for (let i = 0; i < data.length; i += 4) {
|
|
28002
|
-
const
|
|
28003
|
-
const
|
|
27959
|
+
const r = data[i];
|
|
27960
|
+
const g = data[i + 1];
|
|
27961
|
+
const b = data[i + 2];
|
|
27962
|
+
const max = Math.max(r, g, b);
|
|
27963
|
+
const avg = (r + g + b) / 3;
|
|
28004
27964
|
const amt = Math.abs(max - avg) * 2 / 255 * adjust;
|
|
28005
|
-
data[i] += max !==
|
|
28006
|
-
data[i + 1] += max !==
|
|
28007
|
-
data[i + 2] += max !==
|
|
27965
|
+
data[i] += max !== r ? (max - r) * amt : 0;
|
|
27966
|
+
data[i + 1] += max !== g ? (max - g) * amt : 0;
|
|
27967
|
+
data[i + 2] += max !== b ? (max - b) * amt : 0;
|
|
28008
27968
|
}
|
|
28009
27969
|
}
|
|
28010
27970
|
|