From 653946c50c1d6d04c953decfd0873fd873bb04bf Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:14:31 +0200 Subject: [PATCH 001/153] svg --- src/parser/parseAttributes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser/parseAttributes.ts b/src/parser/parseAttributes.ts index ae02a0e27ea..d17d4b60650 100644 --- a/src/parser/parseAttributes.ts +++ b/src/parser/parseAttributes.ts @@ -16,7 +16,7 @@ import { setStrokeFillOpacity } from './setStrokeFillOpacity'; * @param {Array} attributes Array of attributes to parse * @return {Object} object containing parsed attributes' names/values */ -export function parseAttributes(element, attributes, svgUid) { +export function parseAttributes(element, attributes, svgUid?: string) { if (!element) { return; } From b371499a478ce41e1ac60d1ce17c3e3c1bb571c4 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:14:40 +0200 Subject: [PATCH 002/153] SHARED_ATTRIBUTES --- HEADER.js | 28 ---------------------------- src/parser/attributes.ts | 25 +++++++++++++++++++++++++ src/parser/index.ts | 3 ++- 3 files changed, 27 insertions(+), 29 deletions(-) create mode 100644 src/parser/attributes.ts diff --git a/HEADER.js b/HEADER.js index 6aef6023249..8a59a9b5e1b 100644 --- a/HEADER.js +++ b/HEADER.js @@ -69,34 +69,6 @@ fabric.isTouchSupported = fabric.isLikelyNode = typeof Buffer !== 'undefined' && typeof window === 'undefined'; -/* _FROM_SVG_START_ */ -/** - * Attributes parsed from all SVG elements - * @type array - */ -fabric.SHARED_ATTRIBUTES = [ - 'display', - 'transform', - 'fill', - 'fill-opacity', - 'fill-rule', - 'opacity', - 'stroke', - 'stroke-dasharray', - 'stroke-linecap', - 'stroke-dashoffset', - 'stroke-linejoin', - 'stroke-miterlimit', - 'stroke-opacity', - 'stroke-width', - 'id', - 'paint-order', - 'vector-effect', - 'instantiated_by_use', - 'clip-path', -]; -/* _FROM_SVG_END_ */ - /** * @todo move to config when window is exported */ diff --git a/src/parser/attributes.ts b/src/parser/attributes.ts new file mode 100644 index 00000000000..f16412dcd5a --- /dev/null +++ b/src/parser/attributes.ts @@ -0,0 +1,25 @@ +/** + * Attributes parsed from all SVG elements + * @type array + */ +export const SHARED_ATTRIBUTES = [ + 'display', + 'transform', + 'fill', + 'fill-opacity', + 'fill-rule', + 'opacity', + 'stroke', + 'stroke-dasharray', + 'stroke-linecap', + 'stroke-dashoffset', + 'stroke-linejoin', + 'stroke-miterlimit', + 'stroke-opacity', + 'stroke-width', + 'id', + 'paint-order', + 'vector-effect', + 'instantiated_by_use', + 'clip-path', +]; diff --git a/src/parser/index.ts b/src/parser/index.ts index 18dffc9314f..02646cbfe65 100644 --- a/src/parser/index.ts +++ b/src/parser/index.ts @@ -1,5 +1,5 @@ -//@ts-nocheck import { fabric } from '../../HEADER'; +import { SHARED_ATTRIBUTES } from './attributes'; import { clipPaths, cssRules, gradientDefs } from './constants'; import { ElementsParser } from './elements_parser'; import { getCSSRules } from './getCSSRules'; @@ -15,6 +15,7 @@ import { parseSVGDocument } from './parseSVGDocument'; import { parseTransformAttribute } from './parseTransformAttribute'; Object.assign(fabric, { + SHARED_ATTRIBUTES, cssRules, gradientDefs, clipPaths, From a71cfc23d6d028600e490a13f20e8f335f9cc427 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:20:37 +0200 Subject: [PATCH 003/153] migrate --- src/shapes/circle.class.ts | 424 ++++++++++++++++++------------------- test/unit/circle.js | 2 +- 2 files changed, 211 insertions(+), 215 deletions(-) diff --git a/src/shapes/circle.class.ts b/src/shapes/circle.class.ts index 690b98db097..a65300c8099 100644 --- a/src/shapes/circle.class.ts +++ b/src/shapes/circle.class.ts @@ -1,232 +1,228 @@ -//@ts-nocheck import { fabric } from '../../HEADER'; +import { SHARED_ATTRIBUTES } from '../parser/attributes'; +import { parseAttributes } from '../parser/parseAttributes'; +import { cos } from '../util/misc/cos'; +import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; +import { sin } from '../util/misc/sin'; import { FabricObject } from './fabricObject.class'; -const degreesToRadians = fabric.util.degreesToRadians; - /** * Circle class * @class Circle * @extends fabric.Object * @see {@link Circle#initialize} for constructor definition */ -const Circle = fabric.util.createClass( - FabricObject, - /** @lends Circle.prototype */ { - /** - * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged}) - * as well as for history (undo/redo) purposes - * @type Array - */ - stateProperties: FabricObject.prototype.stateProperties.concat( - 'radius', - 'startAngle', - 'endAngle' - ), - - /** - * Type of an object - * @type String - * @default - */ - type: 'circle', - - /** - * Radius of this circle - * @type Number - * @default - */ - radius: 0, - - /** - * degrees of start of the circle. - * probably will change to degrees in next major version - * @type Number 0 - 359 - * @default 0 - */ - startAngle: 0, - - /** - * End angle of the circle - * probably will change to degrees in next major version - * @type Number 1 - 360 - * @default 360 - */ - endAngle: 360, - - cacheProperties: FabricObject.prototype.cacheProperties.concat( - 'radius', - 'startAngle', - 'endAngle' - ), - - /** - * @private - * @param {String} key - * @param {*} value - * @return {Circle} thisArg - */ - _set: function (key, value) { - this.callSuper('_set', key, value); - - if (key === 'radius') { - this.setRadius(value); - } - - return this; - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx context to render on - */ - _render: function (ctx) { - ctx.beginPath(); - ctx.arc( - 0, - 0, - this.radius, - degreesToRadians(this.startAngle), - degreesToRadians(this.endAngle), - false - ); - this._renderPaintInOrder(ctx); - }, - - /** - * Returns horizontal radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusX: function () { - return this.get('radius') * this.get('scaleX'); - }, - - /** - * Returns vertical radius of an object (according to how an object is scaled) - * @return {Number} - */ - getRadiusY: function () { - return this.get('radius') * this.get('scaleY'); - }, - - /** - * Sets radius of an object (and updates width accordingly) - * @return {Circle} thisArg - */ - setRadius: function (value) { - this.radius = value; - return this.set('width', value * 2).set('height', value * 2); - }, - - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} object representation of an instance - */ - toObject: function (propertiesToInclude) { - return this.callSuper( - 'toObject', - ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude) - ); - }, - - /* _TO_SVG_START_ */ - - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function () { - const angle = (this.endAngle - this.startAngle) % 360; - - if (angle === 0) { - return [ - '\n', - ]; - } else { - const { radius } = this; - const start = degreesToRadians(this.startAngle), - end = degreesToRadians(this.endAngle), - startX = fabric.util.cos(start) * radius, - startY = fabric.util.sin(start) * radius, - endX = fabric.util.cos(end) * radius, - endY = fabric.util.sin(end) * radius, - largeFlag = angle > 180 ? '1' : '0'; - return [ - '\n', - ]; - } - }, - /* _TO_SVG_END_ */ +export class Circle extends FabricObject { + /** + * Radius of this circle + * @type Number + * @default + */ + radius: number; + + /** + * degrees of start of the circle. + * probably will change to degrees in next major version + * @type Number 0 - 359 + * @default 0 + */ + startAngle: number; + + /** + * End angle of the circle + * probably will change to degrees in next major version + * @type Number 1 - 360 + * @default 360 + */ + endAngle: number; + + /** + * @private + * @param {String} key + * @param {*} value + * @return {Circle} thisArg + */ + _set(key: string, value: any) { + super._set(key, value); + + if (key === 'radius') { + this.setRadius(value); + } + + return this; } -); -/* _FROM_SVG_START_ */ -/** - * List of attribute names to account for when parsing SVG element (used by {@link Circle.fromElement}) - * @static - * @memberOf Circle - * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement - */ -Circle.ATTRIBUTE_NAMES = ['cx', 'cy', 'r', ...fabric.SHARED_ATTRIBUTES]; - -/** - * Returns {@link Circle} instance from an SVG element - * @static - * @memberOf Circle - * @param {SVGElement} element Element to parse - * @param {Function} [callback] Options callback invoked after parsing is finished - * @param {Object} [options] Partial Circle object to default missing properties on the element. - * @throws {Error} If value of `r` attribute is missing or invalid - */ -Circle.fromElement = function (element, callback) { - const { - left = 0, - top = 0, - radius, - ...otherParsedAttributes - } = fabric.parseAttributes(element, Circle.ATTRIBUTE_NAMES); - - if (!radius || radius < 0) { - throw new Error( - 'value of `r` attribute is required and can not be negative' + /** + * @private + * @param {CanvasRenderingContext2D} ctx context to render on + */ + _render(ctx: CanvasRenderingContext2D) { + ctx.beginPath(); + ctx.arc( + 0, + 0, + this.radius, + degreesToRadians(this.startAngle), + degreesToRadians(this.endAngle), + false ); + this._renderPaintInOrder(ctx); } - // this probably requires to be fixed for default origins not being top/left. - callback( - new fabric.Circle({ - ...otherParsedAttributes, - radius, - left: left - radius, - top: top - radius, - }) - ); -}; + /** + * Returns horizontal radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusX(): number { + return this.get('radius') * this.get('scaleX'); + } -/* _FROM_SVG_END_ */ + /** + * Returns vertical radius of an object (according to how an object is scaled) + * @return {Number} + */ + getRadiusY(): number { + return this.get('radius') * this.get('scaleY'); + } -/** - * Returns {@link Circle} instance from an object representation - * @static - * @memberOf Circle - * @param {Object} object Object to create an instance from - * @returns {Promise} - */ -Circle.fromObject = (object) => FabricObject._fromObject(fabric.Circle, object); + /** + * Sets radius of an object (and updates width accordingly) + */ + setRadius(value: number) { + this.radius = value; + this.set({ width: value * 2, height: value * 2 }); + } + + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} object representation of an instance + */ + toObject(propertiesToInclude: (keyof this)[] = []): object { + return super.toObject([ + 'radius', + 'startAngle', + 'endAngle', + ...propertiesToInclude, + ]); + } + + /* _TO_SVG_START_ */ + + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG(): (string | number)[] { + const angle = (this.endAngle - this.startAngle) % 360; + + if (angle === 0) { + return [ + '\n', + ]; + } else { + const { radius } = this; + const start = degreesToRadians(this.startAngle), + end = degreesToRadians(this.endAngle), + startX = cos(start) * radius, + startY = sin(start) * radius, + endX = cos(end) * radius, + endY = sin(end) * radius, + largeFlag = angle > 180 ? '1' : '0'; + return [ + '\n', + ]; + } + } + /* _TO_SVG_END_ */ + + /* _FROM_SVG_START_ */ + /** + * List of attribute names to account for when parsing SVG element (used by {@link Circle.fromElement}) + * @static + * @memberOf Circle + * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement + */ + static ATTRIBUTE_NAMES = ['cx', 'cy', 'r', ...SHARED_ATTRIBUTES]; + + /** + * Returns {@link Circle} instance from an SVG element + * @static + * @memberOf Circle + * @param {SVGElement} element Element to parse + * @param {Function} [callback] Options callback invoked after parsing is finished + * @param {Object} [options] Partial Circle object to default missing properties on the element. + * @throws {Error} If value of `r` attribute is missing or invalid + */ + static fromElement = function ( + element: SVGElement, + callback: (circle: Circle) => any + ) { + const { + left = 0, + top = 0, + radius, + ...otherParsedAttributes + } = parseAttributes(element, Circle.ATTRIBUTE_NAMES); + + if (!radius || radius < 0) { + throw new Error( + 'value of `r` attribute is required and can not be negative' + ); + } + + // this probably requires to be fixed for default origins not being top/left. + callback( + new Circle({ + ...otherParsedAttributes, + radius, + left: left - radius, + top: top - radius, + }) + ); + }; + + /* _FROM_SVG_END_ */ + + /** + * Returns {@link Circle} instance from an object representation + * @static + * @memberOf Circle + * @param {Object} object Object to create an instance from + * @returns {Promise} + */ + static fromObject = (object: object): Promise => + FabricObject._fromObject(Circle, object); +} + +Object.assign(Circle.prototype, { + type: 'circle', + radius: 0, + startAngle: 0, + endAngle: 360, + stateProperties: FabricObject.prototype.stateProperties.concat( + 'radius', + 'startAngle', + 'endAngle' + ), + cacheProperties: FabricObject.prototype.cacheProperties.concat( + 'radius', + 'startAngle', + 'endAngle' + ), +}); fabric.Circle = Circle; -export { Circle }; diff --git a/test/unit/circle.js b/test/unit/circle.js index b12575139dd..789a81ec506 100644 --- a/test/unit/circle.js +++ b/test/unit/circle.js @@ -56,7 +56,7 @@ assert.equal(circle.width, 20); assert.equal(circle.height, 20); - assert.equal(circle, circle.setRadius(20)); + circle.setRadius(20); assert.equal(circle.getRadiusX(), 20); assert.equal(circle.getRadiusY(), 20); From e169232e46d194729cfc95ee57a45eb1d3317fe2 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:24:04 +0200 Subject: [PATCH 004/153] Update circle.class.ts --- src/shapes/circle.class.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/shapes/circle.class.ts b/src/shapes/circle.class.ts index a65300c8099..f474820c6ae 100644 --- a/src/shapes/circle.class.ts +++ b/src/shapes/circle.class.ts @@ -6,12 +6,6 @@ import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { sin } from '../util/misc/sin'; import { FabricObject } from './fabricObject.class'; -/** - * Circle class - * @class Circle - * @extends fabric.Object - * @see {@link Circle#initialize} for constructor definition - */ export class Circle extends FabricObject { /** * Radius of this circle @@ -40,7 +34,6 @@ export class Circle extends FabricObject { * @private * @param {String} key * @param {*} value - * @return {Circle} thisArg */ _set(key: string, value: any) { super._set(key, value); From b0d03793c19361006dfde7bc1ebd0eb66187391a Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:26:36 +0200 Subject: [PATCH 005/153] Update circle.class.ts --- src/shapes/circle.class.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/shapes/circle.class.ts b/src/shapes/circle.class.ts index f474820c6ae..dcef31c82ef 100644 --- a/src/shapes/circle.class.ts +++ b/src/shapes/circle.class.ts @@ -1,6 +1,7 @@ import { fabric } from '../../HEADER'; import { SHARED_ATTRIBUTES } from '../parser/attributes'; import { parseAttributes } from '../parser/parseAttributes'; +import { TClassProperties } from '../typedefs'; import { cos } from '../util/misc/cos'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { sin } from '../util/misc/sin'; @@ -201,7 +202,7 @@ export class Circle extends FabricObject { FabricObject._fromObject(Circle, object); } -Object.assign(Circle.prototype, { +export const defaultValues: Partial> = { type: 'circle', radius: 0, startAngle: 0, @@ -216,6 +217,8 @@ Object.assign(Circle.prototype, { 'startAngle', 'endAngle' ), -}); +}; + +Object.assign(Circle.prototype, defaultValues); fabric.Circle = Circle; From 4e7e4985b8765791d5753313d4e3cfa903806b85 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:29:49 +0200 Subject: [PATCH 006/153] defaults --- src/shapes/circle.class.ts | 9 +++++---- src/shapes/object.class.ts | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/shapes/circle.class.ts b/src/shapes/circle.class.ts index dcef31c82ef..254cf359ccf 100644 --- a/src/shapes/circle.class.ts +++ b/src/shapes/circle.class.ts @@ -6,6 +6,7 @@ import { cos } from '../util/misc/cos'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { sin } from '../util/misc/sin'; import { FabricObject } from './fabricObject.class'; +import { fabricObjectDefaultValues } from './object.class'; export class Circle extends FabricObject { /** @@ -202,23 +203,23 @@ export class Circle extends FabricObject { FabricObject._fromObject(Circle, object); } -export const defaultValues: Partial> = { +export const circleDefaultValues: Partial> = { type: 'circle', radius: 0, startAngle: 0, endAngle: 360, - stateProperties: FabricObject.prototype.stateProperties.concat( + stateProperties: fabricObjectDefaultValues.stateProperties.concat( 'radius', 'startAngle', 'endAngle' ), - cacheProperties: FabricObject.prototype.cacheProperties.concat( + cacheProperties: fabricObjectDefaultValues.cacheProperties.concat( 'radius', 'startAngle', 'endAngle' ), }; -Object.assign(Circle.prototype, defaultValues); +Object.assign(Circle.prototype, circleDefaultValues); fabric.Circle = Circle; diff --git a/src/shapes/object.class.ts b/src/shapes/object.class.ts index ceeee9e14a7..2be5a720649 100644 --- a/src/shapes/object.class.ts +++ b/src/shapes/object.class.ts @@ -1991,7 +1991,7 @@ export class FabricObject extends ObjectGeometry { } } -const fabricObjectDefaultValues: TClassProperties = { +export const fabricObjectDefaultValues: TClassProperties = { type: 'object', originX: 'left', originY: 'top', From 403d791c9e07bfa387c4205fd2e4af17c8d63656 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:31:13 +0200 Subject: [PATCH 007/153] static --- src/shapes/circle.class.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/shapes/circle.class.ts b/src/shapes/circle.class.ts index 254cf359ccf..dfbb9c83cc1 100644 --- a/src/shapes/circle.class.ts +++ b/src/shapes/circle.class.ts @@ -162,10 +162,7 @@ export class Circle extends FabricObject { * @param {Object} [options] Partial Circle object to default missing properties on the element. * @throws {Error} If value of `r` attribute is missing or invalid */ - static fromElement = function ( - element: SVGElement, - callback: (circle: Circle) => any - ) { + static fromElement(element: SVGElement, callback: (circle: Circle) => any) { const { left = 0, top = 0, @@ -188,7 +185,7 @@ export class Circle extends FabricObject { top: top - radius, }) ); - }; + } /* _FROM_SVG_END_ */ @@ -199,8 +196,9 @@ export class Circle extends FabricObject { * @param {Object} object Object to create an instance from * @returns {Promise} */ - static fromObject = (object: object): Promise => - FabricObject._fromObject(Circle, object); + static fromObject(object: object): Promise { + return FabricObject._fromObject(Circle, object); + } } export const circleDefaultValues: Partial> = { From 575af883da4a1c5e4ac25645fb92cbd7a6a19966 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 10:33:05 +0200 Subject: [PATCH 008/153] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92517990158..d1d38a56c6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [next] +- chore(TS): migrate Circle [#8406](https://github.com/fabricjs/fabric.js/pull/8406) - chore(TS): convert Object interactivity mixin to its own class [#8401](https://github.com/fabricjs/fabric.js/pull/8401) - chore(TS): Convert controls e6/ts [#8400](https://github.com/fabricjs/fabric.js/pull/8400) - ci(): remove buggy changelog action in favor of `git diff` bash script + direct git how to merge `CHANGELOG.md` [#8309](https://github.com/fabricjs/fabric.js/pull/8346) From 8f64f7723e514e53cf3b5194d1d8b859f4f79db3 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 20:43:23 +0200 Subject: [PATCH 009/153] init --- src/shapes/polygon.class.ts | 86 ++---- src/shapes/polyline.class.ts | 578 +++++++++++++++++------------------ 2 files changed, 317 insertions(+), 347 deletions(-) diff --git a/src/shapes/polygon.class.ts b/src/shapes/polygon.class.ts index d388ad5d68c..d4fa9160fdd 100644 --- a/src/shapes/polygon.class.ts +++ b/src/shapes/polygon.class.ts @@ -1,77 +1,51 @@ -//@ts-nocheck - -import { projectStrokeOnPoints } from '../util/misc/projectStroke'; - -(function (global) { - var fabric = global.fabric || (global.fabric = {}); - +export class Polygon extends fabric.Polyline { /** - * Polygon class - * @class fabric.Polygon - * @extends fabric.Polyline - * @see {@link fabric.Polygon#initialize} for constructor definition + * @todo make this method protected when migrating */ - fabric.Polygon = fabric.util.createClass( - fabric.Polyline, - /** @lends fabric.Polygon.prototype */ { - /** - * Type of an object - * @type String - * @default - */ - type: 'polygon', - - /** - * @private - */ - _projectStrokeOnPoints: function () { - return projectStrokeOnPoints(this.points, this); - }, - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function (ctx) { - if (!this.commonRender(ctx)) { - return; - } - ctx.closePath(); - this._renderPaintInOrder(ctx); - }, - } - ); + isOpen() { + return false; + } - /* _FROM_SVG_START_ */ /** - * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`) + * List of attribute names to account for when parsing SVG element (used by `Polygon.fromElement`) * @static - * @memberOf fabric.Polygon + * @memberOf Polygon * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement */ - fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); + static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(); /** - * Returns {@link fabric.Polygon} instance from an SVG element + * Returns {@link Polygon} instance from an SVG element * @static - * @memberOf fabric.Polygon + * @memberOf Polygon * @param {SVGElement} element Element to parse * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon'); - /* _FROM_SVG_END_ */ + static fromElement = fabric.Polyline.fromElementGenerator('Polygon'); /** - * Returns fabric.Polygon instance from an object representation + * Returns Polygon instance from an object representation * @static - * @memberOf fabric.Polygon + * @memberOf Polygon * @param {Object} object Object to create an instance from - * @returns {Promise} + * @returns {Promise} */ - fabric.Polygon.fromObject = function (object) { - return fabric.Object._fromObject(fabric.Polygon, object, { + static fromObject(object) { + return FabricObject._fromObject(Polygon, object, { extraParam: 'points', }); - }; -})(typeof exports !== 'undefined' ? exports : window); + } +} + +export const polygonDefaultValues: Partial> = { + type: 'polygon', +}; + +Object.assign(Polygon.prototype, polygonDefaultValues); +/** @todo TODO_JS_MIGRATION remove next line after refactoring build */ +fabric.Polygon = Polygon; + +/* _FROM_SVG_START_ */ + +/* _FROM_SVG_END_ */ diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index 6584e0348f0..9908d3e1a42 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -1,318 +1,292 @@ -//@ts-nocheck - +import { fabric } from '../../HEADER'; import { config } from '../config'; import { parseAttributes } from '../parser/parseAttributes'; import { parsePointsAttribute } from '../parser/parsePointsAttribute'; import { Point } from '../point.class'; +import { TClassProperties } from '../typedefs'; import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; import { projectStrokeOnPoints } from '../util/misc/projectStroke'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; +import { toFixed } from '../util/misc/toFixed'; +import { FabricObject } from './object.class'; -(function (global) { - var fabric = global.fabric || (global.fabric = {}), - extend = fabric.util.object.extend, - toFixed = fabric.util.toFixed; - +export class Polyline extends FabricObject { /** - * Polyline class - * @class fabric.Polyline - * @extends fabric.Object - * @see {@link fabric.Polyline#initialize} for constructor definition + * Points array + * @type Array + * @default */ - fabric.Polyline = fabric.util.createClass( - fabric.Object, - /** @lends fabric.Polyline.prototype */ { - /** - * Type of an object - * @type String - * @default - */ - type: 'polyline', - - /** - * Points array - * @type Array - * @default - */ - points: null, - - /** - * WARNING: Feature in progress - * Calculate the exact bounding box taking in account strokeWidth on acute angles - * this will be turned to true by default on fabric 6.0 - * maybe will be left in as an optimization since calculations may be slow - * @deprecated - * @type Boolean - * @default false - * @todo set default to true and remove flag and related logic - */ - exactBoundingBox: false, + points: Point[]; - initialized: false, - - cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'), + /** + * WARNING: Feature in progress + * Calculate the exact bounding box taking in account strokeWidth on acute angles + * this will be turned to true by default on fabric 6.0 + * maybe will be left in as an optimization since calculations may be slow + * @deprecated + * @type Boolean + * @default false + * @todo set default to true and remove flag and related logic + */ + exactBoundingBox: boolean; - /** - * A list of properties that if changed trigger a recalculation of dimensions - * @todo check if you really need to recalculate for all cases - */ - strokeBBoxAffectingProperties: [ - 'skewX', - 'skewY', - 'strokeLineCap', - 'strokeLineJoin', - 'strokeMiterLimit', - 'strokeWidth', - 'strokeUniform', - 'points', - ], + initialized: boolean; - /** - * Constructor - * @param {Array} points Array of points (where each point is an object with x and y) - * @param {Object} [options] Options object - * @return {fabric.Polyline} thisArg - * @example - * var poly = new fabric.Polyline([ - * { x: 10, y: 10 }, - * { x: 50, y: 30 }, - * { x: 40, y: 70 }, - * { x: 60, y: 50 }, - * { x: 100, y: 150 }, - * { x: 40, y: 100 } - * ], { - * stroke: 'red', - * left: 100, - * top: 100 - * }); - */ - initialize: function (points, options = {}) { - this.points = points || []; - this.callSuper('initialize', options); - this.initialized = true; - const bboxTL = this.setDimensions(); - const origin = this.translateToGivenOrigin( - new Point(options.left ?? bboxTL.x, options.top ?? bboxTL.y), - typeof options.left === 'number' ? this.originX : 'left', - typeof options.top === 'number' ? this.originY : 'top', - this.originX, - this.originY - ); - this.setPositionByOrigin(origin, this.originX, this.originY); - }, + /** + * A list of properties that if changed trigger a recalculation of dimensions + * @todo check if you really need to recalculate for all cases + */ + strokeBBoxAffectingProperties: (keyof this)[]; - /** - * @private - */ - _projectStrokeOnPoints: function () { - return projectStrokeOnPoints(this.points, this, true); - }, + /** + * Constructor + * @param {Array} points Array of points (where each point is an object with x and y) + * @param {Object} [options] Options object + * @return {Polyline} thisArg + * @example + * var poly = new Polyline([ + * { x: 10, y: 10 }, + * { x: 50, y: 30 }, + * { x: 40, y: 70 }, + * { x: 60, y: 50 }, + * { x: 100, y: 150 }, + * { x: 40, y: 100 } + * ], { + * stroke: 'red', + * left: 100, + * top: 100 + * }); + */ + constructor(points: Point[] = [], options = {}) { + super({ points, ...options }); + this.initialized = true; + const bboxTL = this.setDimensions(); + const origin = this.translateToGivenOrigin( + new Point(options.left ?? bboxTL.x, options.top ?? bboxTL.y), + typeof options.left === 'number' ? this.originX : 'left', + typeof options.top === 'number' ? this.originY : 'top', + this.originX, + this.originY + ); + this.setPositionByOrigin(origin, this.originX, this.originY); + } - /** - * Calculate the polygon bounding box - * @private - */ - _calcDimensions: function () { - const points = this.exactBoundingBox - ? this._projectStrokeOnPoints().map( - (projection) => projection.projectedPoint - ) - : this.points; - if (points.length === 0) { - return { - left: 0, - top: 0, - width: 0, - height: 0, - pathOffset: new Point(), - }; - } - const bbox = makeBoundingBoxFromPoints(points); - const bboxNoStroke = makeBoundingBoxFromPoints(this.points); - const offsetX = bbox.left + bbox.width / 2, - offsetY = bbox.top + bbox.height / 2; - const pathOffsetX = - offsetX - offsetY * Math.tan(degreesToRadians(this.skewX)); - const pathOffsetY = - offsetY - pathOffsetX * Math.tan(degreesToRadians(this.skewY)); - // TODO: remove next line - const legacyCorrection = - !this.fromSVG && !this.exactBoundingBox ? this.strokeWidth / 2 : 0; - return { - ...bbox, - left: bbox.left - legacyCorrection, - top: bbox.top - legacyCorrection, - pathOffset: new Point(pathOffsetX, pathOffsetY), - strokeOffset: new Point(bboxNoStroke.left, bboxNoStroke.top).subtract( - bbox.left, - bbox.top - ), - }; - }, + /** + * @private + */ + _projectStrokeOnPoints() { + return projectStrokeOnPoints(this.points, this, true); + } - /** - * @returns {Point} top left position of the bounding box, useful for complementary positioning - */ - setDimensions: function () { - const { left, top, width, height, pathOffset, strokeOffset } = - this._calcDimensions(); - this.set({ width, height, pathOffset, strokeOffset }); - return new Point(left, top); - }, + /** + * Calculate the polygon bounding box + * @private + */ + _calcDimensions() { + const points = this.exactBoundingBox + ? this._projectStrokeOnPoints().map( + (projection) => projection.projectedPoint + ) + : this.points; + if (points.length === 0) { + return { + left: 0, + top: 0, + width: 0, + height: 0, + pathOffset: new Point(), + }; + } + const bbox = makeBoundingBoxFromPoints(points); + const bboxNoStroke = makeBoundingBoxFromPoints(this.points); + const offsetX = bbox.left + bbox.width / 2, + offsetY = bbox.top + bbox.height / 2; + const pathOffsetX = + offsetX - offsetY * Math.tan(degreesToRadians(this.skewX)); + const pathOffsetY = + offsetY - pathOffsetX * Math.tan(degreesToRadians(this.skewY)); + // TODO: remove next line + const legacyCorrection = + !this.fromSVG && !this.exactBoundingBox ? this.strokeWidth / 2 : 0; + return { + ...bbox, + left: bbox.left - legacyCorrection, + top: bbox.top - legacyCorrection, + pathOffset: new Point(pathOffsetX, pathOffsetY), + strokeOffset: new Point(bboxNoStroke.left, bboxNoStroke.top).subtract( + bbox.left, + bbox.top + ), + }; + } - /** - * @override stroke is taken in account in size - */ - _getNonTransformedDimensions: function () { - return this.exactBoundingBox - ? new Point(this.width, this.height) - : this.callSuper('_getNonTransformedDimensions'); - }, + /** + * @returns {Point} top left position of the bounding box, useful for complementary positioning + */ + setDimensions() { + const { left, top, width, height, pathOffset, strokeOffset } = + this._calcDimensions(); + this.set({ width, height, pathOffset, strokeOffset }); + return new Point(left, top); + } - /** - * @override stroke and skewing are taken into account when projecting stroke on points, - * therefore we don't want the default calculation to account for skewing as well - * - * @private - */ - _getTransformedDimensions: function (options) { - return this.exactBoundingBox - ? this.callSuper('_getTransformedDimensions', { - ...(options || {}), - // disable stroke bbox calculations - strokeWidth: 0, - // disable skewing bbox calculations - skewX: 0, - skewY: 0, - }) - : this.callSuper('_getTransformedDimensions', options); - }, + /** + * @override stroke is taken in account in size + */ + _getNonTransformedDimensions() { + return this.exactBoundingBox + ? new Point(this.width, this.height) + : super._getNonTransformedDimensions(); + } - /** - * Recalculates dimensions when changing skew and scale - * @private - */ - _set: function (key, value) { - const changed = this.initialized && this[key] !== value; - const output = this.callSuper('_set', key, value); - if ( - changed && - (((key === 'scaleX' || key === 'scaleY') && - this.strokeUniform && - this.strokeBBoxAffectingProperties.includes('strokeUniform') && - this.strokeLineJoin !== 'round') || - this.strokeBBoxAffectingProperties.includes(key)) - ) { - this.setDimensions(); - } - return output; - }, + /** + * @override stroke and skewing are taken into account when projecting stroke on points, + * therefore we don't want the default calculation to account for skewing as well + * + * @private + */ + _getTransformedDimensions(options) { + return this.exactBoundingBox + ? super._getTransformedDimensions({ + ...(options || {}), + // disable stroke bbox calculations + strokeWidth: 0, + // disable skewing bbox calculations + skewX: 0, + skewY: 0, + }) + : super._getTransformedDimensions(options); + } - /** - * Returns object representation of an instance - * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output - * @return {Object} Object representation of an instance - */ - toObject: function (propertiesToInclude) { - return extend(this.callSuper('toObject', propertiesToInclude), { - points: this.points.concat(), - }); - }, + /** + * Recalculates dimensions when changing skew and scale + * @private + */ + _set(key, value) { + const changed = this.initialized && this[key] !== value; + const output = super._set(key, value); + if ( + changed && + (((key === 'scaleX' || key === 'scaleY') && + this.strokeUniform && + this.strokeBBoxAffectingProperties.includes('strokeUniform') && + this.strokeLineJoin !== 'round') || + this.strokeBBoxAffectingProperties.includes(key)) + ) { + this.setDimensions(); + } + return output; + } - /* _TO_SVG_START_ */ - /** - * Returns svg representation of an instance - * @return {Array} an array of strings with the specific svg representation - * of the instance - */ - _toSVG: function () { - var points = [], - diffX = this.pathOffset.x, - diffY = this.pathOffset.y, - NUM_FRACTION_DIGITS = config.NUM_FRACTION_DIGITS; + /** + * Returns object representation of an instance + * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output + * @return {Object} Object representation of an instance + */ + toObject(propertiesToInclude) { + return { + ...super.toObject(propertiesToInclude), + points: this.points.concat(), + }; + } - for (var i = 0, len = this.points.length; i < len; i++) { - points.push( - toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), - ',', - toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), - ' ' - ); - } - return [ - '<' + this.type + ' ', - 'COMMON_PARTS', - 'points="', - points.join(''), - '" />\n', - ]; - }, - /* _TO_SVG_END_ */ + /** + * Returns svg representation of an instance + * @return {Array} an array of strings with the specific svg representation + * of the instance + */ + _toSVG() { + var points = [], + diffX = this.pathOffset.x, + diffY = this.pathOffset.y, + NUM_FRACTION_DIGITS = config.NUM_FRACTION_DIGITS; - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - commonRender: function (ctx) { - var point, - len = this.points.length, - x = this.pathOffset.x, - y = this.pathOffset.y; + for (var i = 0, len = this.points.length; i < len; i++) { + points.push( + toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), + ',', + toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), + ' ' + ); + } + return [ + '<' + this.type + ' ', + 'COMMON_PARTS', + 'points="', + points.join(''), + '" />\n', + ]; + } - if (!len || isNaN(this.points[len - 1].y)) { - // do not draw if no points or odd points - // NaN comes from parseFloat of a empty string in parser - return false; - } - ctx.beginPath(); - ctx.moveTo(this.points[0].x - x, this.points[0].y - y); - for (var i = 0; i < len; i++) { - point = this.points[i]; - ctx.lineTo(point.x - x, point.y - y); - } - return true; - }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + commonRender(ctx) { + var point, + len = this.points.length, + x = this.pathOffset.x, + y = this.pathOffset.y; - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render: function (ctx) { - if (!this.commonRender(ctx)) { - return; - } - this._renderPaintInOrder(ctx); - }, + if (!len || isNaN(this.points[len - 1].y)) { + // do not draw if no points or odd points + // NaN comes from parseFloat of a empty string in parser + return false; + } + ctx.beginPath(); + ctx.moveTo(this.points[0].x - x, this.points[0].y - y); + for (var i = 0; i < len; i++) { + point = this.points[i]; + ctx.lineTo(point.x - x, point.y - y); + } + return true; + } - /** - * Returns complexity of an instance - * @return {Number} complexity of this instance - */ - complexity: function () { - return this.get('points').length; - }, + /** + * @private + * @param {CanvasRenderingContext2D} ctx Context to render on + */ + _render(ctx) { + if (!this.commonRender(ctx)) { + return; } - ); + this._renderPaintInOrder(ctx); + } - /* _FROM_SVG_START_ */ /** - * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement}) + * Returns complexity of an instance + * @return {Number} complexity of this instance + */ + complexity() { + return this.get('points').length; + } + + /** + * List of attribute names to account for when parsing SVG element (used by {@link Polyline.fromElement}) * @static - * @memberOf fabric.Polyline + * @memberOf Polyline * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement */ - fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(); + static ATTRIBUTE_NAMES = [...SHARED_ATTRIBUTES]; + + static fromElement = Polyline.fromElementGenerator('Polyline'); /** - * Returns fabric.Polyline instance from an SVG element + * Returns Polyline instance from an SVG element * @static - * @memberOf fabric.Polyline + * @memberOf Polyline * @param {SVGElement} element Element to parser * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - fabric.Polyline.fromElementGenerator = function (_class) { - return function (element, callback, options = {}) { + static fromElementGenerator< + K extends { new (points: Point[], options: any): InstanceType } + >(klass: K) { + return function ( + element: SVGElement, + callback: (poly: InstanceType) => any, + options = {} + ) { if (!element) { return callback(null); } @@ -321,33 +295,55 @@ import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; // eslint-disable-next-line @typescript-eslint/no-unused-vars { left, top, ...parsedAttributes } = parseAttributes( element, - fabric[_class].ATTRIBUTE_NAMES + klass.ATTRIBUTE_NAMES ); callback( - new fabric[_class](points, { + new klass(points, { ...parsedAttributes, ...options, fromSVG: true, }) ); }; - }; - - fabric.Polyline.fromElement = - fabric.Polyline.fromElementGenerator('Polyline'); - - /* _FROM_SVG_END_ */ + } /** - * Returns fabric.Polyline instance from an object representation + * Returns Polyline instance from an object representation * @static - * @memberOf fabric.Polyline + * @memberOf Polyline * @param {Object} object Object to create an instance from - * @returns {Promise} + * @returns {Promise} */ - fabric.Polyline.fromObject = function (object) { - return fabric.Object._fromObject(fabric.Polyline, object, { + static fromObject(object) { + return FabricObject._fromObject(Polyline, object, { extraParam: 'points', }); - }; -})(typeof exports !== 'undefined' ? exports : window); + } +} + +export const polylineDefaultValues: Partial> = { + type: 'polyline', + points: [], + exactBoundingBox: false, + initialized: false, + cacheProperties: FabricObject.prototype.cacheProperties.concat('points'), + strokeBBoxAffectingProperties: [ + 'skewX', + 'skewY', + 'strokeLineCap', + 'strokeLineJoin', + 'strokeMiterLimit', + 'strokeWidth', + 'strokeUniform', + 'points', + ], +}; + +Object.assign(Polyline.prototype, polylineDefaultValues); + +/** @todo TODO_JS_MIGRATION remove next line after refactoring build */ +fabric.Polyline = Polyline; + +/* _FROM_SVG_START_ */ + +/* _FROM_SVG_END_ */ From ec4ac19c138d0b161c97c23fe1d6fe553228e656 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 31 Oct 2022 20:46:49 +0200 Subject: [PATCH 010/153] more --- src/shapes/polygon.class.ts | 18 ++++++++++++------ src/shapes/polyline.class.ts | 3 ++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/shapes/polygon.class.ts b/src/shapes/polygon.class.ts index d4fa9160fdd..2815652eb44 100644 --- a/src/shapes/polygon.class.ts +++ b/src/shapes/polygon.class.ts @@ -1,4 +1,10 @@ -export class Polygon extends fabric.Polyline { +import { fabric } from '../../HEADER'; +import { SHARED_ATTRIBUTES } from '../parser/attributes'; +import { TClassProperties } from '../typedefs'; +import { FabricObject } from './object.class'; +import { Polyline } from './polyline.class'; + +export class Polygon extends Polyline { /** * @todo make this method protected when migrating */ @@ -6,6 +12,8 @@ export class Polygon extends fabric.Polyline { return false; } + /* _FROM_SVG_START_ */ + /** * List of attribute names to account for when parsing SVG element (used by `Polygon.fromElement`) * @static @@ -22,7 +30,9 @@ export class Polygon extends fabric.Polyline { * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - static fromElement = fabric.Polyline.fromElementGenerator('Polygon'); + static fromElement = Polyline.fromElementGenerator(Polygon); + + /* _FROM_SVG_END_ */ /** * Returns Polygon instance from an object representation @@ -45,7 +55,3 @@ export const polygonDefaultValues: Partial> = { Object.assign(Polygon.prototype, polygonDefaultValues); /** @todo TODO_JS_MIGRATION remove next line after refactoring build */ fabric.Polygon = Polygon; - -/* _FROM_SVG_START_ */ - -/* _FROM_SVG_END_ */ diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index 9908d3e1a42..e023bdaa212 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -1,5 +1,6 @@ import { fabric } from '../../HEADER'; import { config } from '../config'; +import { SHARED_ATTRIBUTES } from '../parser/attributes'; import { parseAttributes } from '../parser/parseAttributes'; import { parsePointsAttribute } from '../parser/parsePointsAttribute'; import { Point } from '../point.class'; @@ -269,7 +270,7 @@ export class Polyline extends FabricObject { */ static ATTRIBUTE_NAMES = [...SHARED_ATTRIBUTES]; - static fromElement = Polyline.fromElementGenerator('Polyline'); + static fromElement = Polyline.fromElementGenerator(Polyline); /** * Returns Polyline instance from an SVG element From 1c21ea14706975baa7836b255478e2dcb17feebe Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:15:02 +0200 Subject: [PATCH 011/153] m --- src/shapes/polygon.class.ts | 5 +---- src/shapes/polyline.class.ts | 41 ++++++++++++++++++------------------ 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/shapes/polygon.class.ts b/src/shapes/polygon.class.ts index 2815652eb44..03b84e0c27c 100644 --- a/src/shapes/polygon.class.ts +++ b/src/shapes/polygon.class.ts @@ -5,10 +5,7 @@ import { FabricObject } from './object.class'; import { Polyline } from './polyline.class'; export class Polygon extends Polyline { - /** - * @todo make this method protected when migrating - */ - isOpen() { + protected isOpen() { return false; } diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index e023bdaa212..c4d13192c80 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -58,7 +58,7 @@ export class Polyline extends FabricObject { * top: 100 * }); */ - constructor(points: Point[] = [], options = {}) { + constructor(points: Point[] = [], options: object = {}): Polyline { super({ points, ...options }); this.initialized = true; const bboxTL = this.setDimensions(); @@ -72,11 +72,12 @@ export class Polyline extends FabricObject { this.setPositionByOrigin(origin, this.originX, this.originY); } - /** - * @private - */ - _projectStrokeOnPoints() { - return projectStrokeOnPoints(this.points, this, true); + protected isOpen() { + return true; + } + + private _projectStrokeOnPoints() { + return projectStrokeOnPoints(this.points, this, this.isOpen); } /** @@ -124,7 +125,7 @@ export class Polyline extends FabricObject { /** * @returns {Point} top left position of the bounding box, useful for complementary positioning */ - setDimensions() { + setDimensions(): Point { const { left, top, width, height, pathOffset, strokeOffset } = this._calcDimensions(); this.set({ width, height, pathOffset, strokeOffset }); @@ -184,7 +185,7 @@ export class Polyline extends FabricObject { * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output * @return {Object} Object representation of an instance */ - toObject(propertiesToInclude) { + toObject(propertiesToInclude: Array): object { return { ...super.toObject(propertiesToInclude), points: this.points.concat(), @@ -196,13 +197,13 @@ export class Polyline extends FabricObject { * @return {Array} an array of strings with the specific svg representation * of the instance */ - _toSVG() { - var points = [], + _toSVG(): Array { + const points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y, NUM_FRACTION_DIGITS = config.NUM_FRACTION_DIGITS; - for (var i = 0, len = this.points.length; i < len; i++) { + for (let i = 0, len = this.points.length; i < len; i++) { points.push( toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',', @@ -223,8 +224,8 @@ export class Polyline extends FabricObject { * @private * @param {CanvasRenderingContext2D} ctx Context to render on */ - commonRender(ctx) { - var point, + commonRender(ctx: CanvasRenderingContext2D) { + let point, len = this.points.length, x = this.pathOffset.x, y = this.pathOffset.y; @@ -236,7 +237,7 @@ export class Polyline extends FabricObject { } ctx.beginPath(); ctx.moveTo(this.points[0].x - x, this.points[0].y - y); - for (var i = 0; i < len; i++) { + for (let i = 0; i < len; i++) { point = this.points[i]; ctx.lineTo(point.x - x, point.y - y); } @@ -247,7 +248,7 @@ export class Polyline extends FabricObject { * @private * @param {CanvasRenderingContext2D} ctx Context to render on */ - _render(ctx) { + _render(ctx: CanvasRenderingContext2D) { if (!this.commonRender(ctx)) { return; } @@ -258,8 +259,8 @@ export class Polyline extends FabricObject { * Returns complexity of an instance * @return {Number} complexity of this instance */ - complexity() { - return this.get('points').length; + complexity(): number { + return this.points.length; } /** @@ -280,9 +281,7 @@ export class Polyline extends FabricObject { * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - static fromElementGenerator< - K extends { new (points: Point[], options: any): InstanceType } - >(klass: K) { + static fromElementGenerator(klass: K) { return function ( element: SVGElement, callback: (poly: InstanceType) => any, @@ -315,7 +314,7 @@ export class Polyline extends FabricObject { * @param {Object} object Object to create an instance from * @returns {Promise} */ - static fromObject(object) { + static fromObject(object: object): Promise { return FabricObject._fromObject(Polyline, object, { extraParam: 'points', }); From 4ba47fa5556ba27d952f281822147567ed1550e6 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:29:13 +0200 Subject: [PATCH 012/153] poly --- src/parser/parsePointsAttribute.ts | 15 +++++++-------- src/shapes/polyline.class.ts | 20 +++++++++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/parser/parsePointsAttribute.ts b/src/parser/parsePointsAttribute.ts index 1ac59752231..636f4c6ac9c 100644 --- a/src/parser/parsePointsAttribute.ts +++ b/src/parser/parsePointsAttribute.ts @@ -1,5 +1,7 @@ //@ts-nocheck +import { Point } from '../point.class'; + /** * Parses "points" attribute, returning an array of values * @static @@ -17,15 +19,12 @@ export function parsePointsAttribute(points) { points = points.replace(/,/g, ' ').trim(); points = points.split(/\s+/); - let parsedPoints = [], - i, - len; + const parsedPoints: Point[] = []; - for (i = 0, len = points.length; i < len; i += 2) { - parsedPoints.push({ - x: parseFloat(points[i]), - y: parseFloat(points[i + 1]), - }); + for (let i = 0; i < points.length; i += 2) { + parsedPoints.push( + new Point(parseFloat(points[i]), parseFloat(points[i + 1])) + ); } // odd number of points is an error diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index c4d13192c80..41c24ff85f2 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -38,6 +38,8 @@ export class Polyline extends FabricObject { * @todo check if you really need to recalculate for all cases */ strokeBBoxAffectingProperties: (keyof this)[]; + fromSVG: boolean; + pathOffset: Point; /** * Constructor @@ -58,7 +60,7 @@ export class Polyline extends FabricObject { * top: 100 * }); */ - constructor(points: Point[] = [], options: object = {}): Polyline { + constructor(points: Point[] = [], options: any = {}) { super({ points, ...options }); this.initialized = true; const bboxTL = this.setDimensions(); @@ -116,8 +118,7 @@ export class Polyline extends FabricObject { top: bbox.top - legacyCorrection, pathOffset: new Point(pathOffsetX, pathOffsetY), strokeOffset: new Point(bboxNoStroke.left, bboxNoStroke.top).subtract( - bbox.left, - bbox.top + new Point(bbox.left, bbox.top) ), }; } @@ -197,7 +198,7 @@ export class Polyline extends FabricObject { * @return {Array} an array of strings with the specific svg representation * of the instance */ - _toSVG(): Array { + _toSVG() { const points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y, @@ -281,10 +282,15 @@ export class Polyline extends FabricObject { * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - static fromElementGenerator(klass: K) { + static fromElementGenerator< + T extends { + new (points: Point[], options: any): any; + ATTRIBUTE_NAMES: string[]; + } + >(klass: T) { return function ( element: SVGElement, - callback: (poly: InstanceType) => any, + callback: (poly: InstanceType) => any, options = {} ) { if (!element) { @@ -298,7 +304,7 @@ export class Polyline extends FabricObject { klass.ATTRIBUTE_NAMES ); callback( - new klass(points, { + new klass(points || [], { ...parsedAttributes, ...options, fromSVG: true, From c66798cfb7e65c98653f76c4645a649d293f25b4 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:30:14 +0200 Subject: [PATCH 013/153] Update polyline.class.ts --- src/shapes/polyline.class.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index 41c24ff85f2..a1fcbbecdc9 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -253,6 +253,7 @@ export class Polyline extends FabricObject { if (!this.commonRender(ctx)) { return; } + !this.isOpen() && ctx.closePath(); this._renderPaintInOrder(ctx); } From 63442ff41093e758de62a3d95c0dd29f92b5a13b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:43:16 +0200 Subject: [PATCH 014/153] more --- src/mixins/object_origin.mixin.ts | 4 ++-- src/shapes/object.class.ts | 6 +++--- src/shapes/polygon.class.ts | 11 +---------- src/shapes/polyline.class.ts | 16 ++++++++-------- 4 files changed, 14 insertions(+), 23 deletions(-) diff --git a/src/mixins/object_origin.mixin.ts b/src/mixins/object_origin.mixin.ts index 37ac9e11afe..f5b12cc465f 100644 --- a/src/mixins/object_origin.mixin.ts +++ b/src/mixins/object_origin.mixin.ts @@ -1,10 +1,10 @@ import { Point } from '../point.class'; import { transformPoint } from '../util/misc/matrix'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; -import { CommonMethods } from './shared_methods.mixin'; -import { TDegree, TOriginX, TOriginY } from '../typedefs'; import { Group } from '../shapes/group.class'; +import { TDegree, TOriginX, TOriginY } from '../typedefs'; import { sizeAfterTransform } from '../util/misc/objectTransforms'; +import { CommonMethods } from './shared_methods.mixin'; const originOffset = { left: -0.5, diff --git a/src/shapes/object.class.ts b/src/shapes/object.class.ts index 2be5a720649..52379133a1d 100644 --- a/src/shapes/object.class.ts +++ b/src/shapes/object.class.ts @@ -235,14 +235,14 @@ export class FabricObject extends ObjectGeometry { * @type String * @default butt */ - strokeLineCap: string; + strokeLineCap: CanvasLineCap; /** * Corner style of an object's stroke (one of "bevel", "round", "miter") * @type String * @default */ - strokeLineJoin: string; + strokeLineJoin: CanvasLineJoin; /** * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke @@ -1012,7 +1012,7 @@ export class FabricObject extends ObjectGeometry { * @param {*} value * @return {fabric.Object} thisArg */ - _set(key: string, value: any) { + _set(key: K, value: V) { const shouldConstrainValue = key === 'scaleX' || key === 'scaleY', isChanged = this[key] !== value; diff --git a/src/shapes/polygon.class.ts b/src/shapes/polygon.class.ts index 03b84e0c27c..f8ad577c8f0 100644 --- a/src/shapes/polygon.class.ts +++ b/src/shapes/polygon.class.ts @@ -1,5 +1,4 @@ import { fabric } from '../../HEADER'; -import { SHARED_ATTRIBUTES } from '../parser/attributes'; import { TClassProperties } from '../typedefs'; import { FabricObject } from './object.class'; import { Polyline } from './polyline.class'; @@ -11,14 +10,6 @@ export class Polygon extends Polyline { /* _FROM_SVG_START_ */ - /** - * List of attribute names to account for when parsing SVG element (used by `Polygon.fromElement`) - * @static - * @memberOf Polygon - * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement - */ - static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(); - /** * Returns {@link Polygon} instance from an SVG element * @static @@ -38,7 +29,7 @@ export class Polygon extends Polyline { * @param {Object} object Object to create an instance from * @returns {Promise} */ - static fromObject(object) { + static fromObject(object: any) { return FabricObject._fromObject(Polygon, object, { extraParam: 'points', }); diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index a1fcbbecdc9..d6e98444c9a 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -79,7 +79,7 @@ export class Polyline extends FabricObject { } private _projectStrokeOnPoints() { - return projectStrokeOnPoints(this.points, this, this.isOpen); + return projectStrokeOnPoints(this.points, this, this.isOpen()); } /** @@ -99,6 +99,7 @@ export class Polyline extends FabricObject { width: 0, height: 0, pathOffset: new Point(), + strokeOffset: new Point(), }; } const bbox = makeBoundingBoxFromPoints(points); @@ -148,7 +149,7 @@ export class Polyline extends FabricObject { * * @private */ - _getTransformedDimensions(options) { + _getTransformedDimensions(options: any) { return this.exactBoundingBox ? super._getTransformedDimensions({ ...(options || {}), @@ -165,7 +166,7 @@ export class Polyline extends FabricObject { * Recalculates dimensions when changing skew and scale * @private */ - _set(key, value) { + _set(key: K, value: V) { const changed = this.initialized && this[key] !== value; const output = super._set(key, value); if ( @@ -186,7 +187,7 @@ export class Polyline extends FabricObject { * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output * @return {Object} Object representation of an instance */ - toObject(propertiesToInclude: Array): object { + toObject(propertiesToInclude: (keyof this)[]): object { return { ...super.toObject(propertiesToInclude), points: this.points.concat(), @@ -226,8 +227,7 @@ export class Polyline extends FabricObject { * @param {CanvasRenderingContext2D} ctx Context to render on */ commonRender(ctx: CanvasRenderingContext2D) { - let point, - len = this.points.length, + const len = this.points.length, x = this.pathOffset.x, y = this.pathOffset.y; @@ -239,7 +239,7 @@ export class Polyline extends FabricObject { ctx.beginPath(); ctx.moveTo(this.points[0].x - x, this.points[0].y - y); for (let i = 0; i < len; i++) { - point = this.points[i]; + const point = this.points[i]; ctx.lineTo(point.x - x, point.y - y); } return true; @@ -291,7 +291,7 @@ export class Polyline extends FabricObject { >(klass: T) { return function ( element: SVGElement, - callback: (poly: InstanceType) => any, + callback: (poly: InstanceType | null) => any, options = {} ) { if (!element) { From fd2afa64b9b644ff68cd6c9f8c392d0ee52fdd6a Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:48:26 +0200 Subject: [PATCH 015/153] unpleasant --- src/shapes/object.class.ts | 2 +- src/shapes/polyline.class.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shapes/object.class.ts b/src/shapes/object.class.ts index 52379133a1d..1a3ad04d2c6 100644 --- a/src/shapes/object.class.ts +++ b/src/shapes/object.class.ts @@ -1012,7 +1012,7 @@ export class FabricObject extends ObjectGeometry { * @param {*} value * @return {fabric.Object} thisArg */ - _set(key: K, value: V) { + _set(key: string, value: any) { const shouldConstrainValue = key === 'scaleX' || key === 'scaleY', isChanged = this[key] !== value; diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index d6e98444c9a..e5dc538f853 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -166,8 +166,8 @@ export class Polyline extends FabricObject { * Recalculates dimensions when changing skew and scale * @private */ - _set(key: K, value: V) { - const changed = this.initialized && this[key] !== value; + _set(key: string, value: any) { + const changed = this.initialized && this[key as keyof this] !== value; const output = super._set(key, value); if ( changed && @@ -175,7 +175,7 @@ export class Polyline extends FabricObject { this.strokeUniform && this.strokeBBoxAffectingProperties.includes('strokeUniform') && this.strokeLineJoin !== 'round') || - this.strokeBBoxAffectingProperties.includes(key)) + this.strokeBBoxAffectingProperties.includes(key as keyof this)) ) { this.setDimensions(); } From 4b6cc542c542d9bbc003de74ac141db89467b64d Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:51:38 +0200 Subject: [PATCH 016/153] imports --- src/shapes/polyline.class.ts | 5 +++-- test/unit/polygon.js | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index e5dc538f853..ab689747e1c 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -9,7 +9,8 @@ import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; import { projectStrokeOnPoints } from '../util/misc/projectStroke'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { toFixed } from '../util/misc/toFixed'; -import { FabricObject } from './object.class'; +import { FabricObject } from './fabricObject.class'; +import { fabricObjectDefaultValues } from './object.class'; export class Polyline extends FabricObject { /** @@ -333,7 +334,7 @@ export const polylineDefaultValues: Partial> = { points: [], exactBoundingBox: false, initialized: false, - cacheProperties: FabricObject.prototype.cacheProperties.concat('points'), + cacheProperties: fabricObjectDefaultValues.cacheProperties.concat('points'), strokeBBoxAffectingProperties: [ 'skewX', 'skewY', diff --git a/test/unit/polygon.js b/test/unit/polygon.js index c91493341c9..bda87ead65a 100644 --- a/test/unit/polygon.js +++ b/test/unit/polygon.js @@ -58,6 +58,7 @@ var polygon = new fabric.Polygon(getPoints()); assert.ok(polygon instanceof fabric.Polygon); + assert.ok(polygon instanceof fabric.Polyline); assert.ok(polygon instanceof fabric.Object); assert.equal(polygon.type, 'polygon'); From 535fee06bb177a98b2cc6f63b290061d0eb2f8e3 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 22:54:22 +0200 Subject: [PATCH 017/153] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77fa33d7b28..bff53526c69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## [next] -- chore(TS): migrate Circle [#8406](https://github.com/fabricjs/fabric.js/pull/8406) +- chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) - chore(TS): migrate Ellipse [#8408](https://github.com/fabricjs/fabric.js/pull/8408) - chore(TS): migrate Triangle to TS [#8410](https://github.com/fabricjs/fabric.js/pull/8410) - chore(TS): migrate Circle to TS [#8406](https://github.com/fabricjs/fabric.js/pull/8406) From de8b31184f9a2ab680ba4e6be60fa6e24d8d09d9 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:03:10 +0200 Subject: [PATCH 018/153] more --- src/point.class.ts | 2 -- src/shapes/polyline.class.ts | 31 ++++++++++++------------------- test/unit/point.js | 1 - 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/point.class.ts b/src/point.class.ts index 530df68c9a0..5c201e80900 100644 --- a/src/point.class.ts +++ b/src/point.class.ts @@ -16,8 +16,6 @@ export class Point { y: number; - type = 'point'; - constructor(); constructor(x: number, y: number); constructor(point: IPoint); diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index ab689747e1c..964bcf975cd 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -39,9 +39,13 @@ export class Polyline extends FabricObject { * @todo check if you really need to recalculate for all cases */ strokeBBoxAffectingProperties: (keyof this)[]; + fromSVG: boolean; + pathOffset: Point; + strokeOffset: Point; + /** * Constructor * @param {Array} points Array of points (where each point is an object with x and y) @@ -227,7 +231,7 @@ export class Polyline extends FabricObject { * @private * @param {CanvasRenderingContext2D} ctx Context to render on */ - commonRender(ctx: CanvasRenderingContext2D) { + _render(ctx: CanvasRenderingContext2D) { const len = this.points.length, x = this.pathOffset.x, y = this.pathOffset.y; @@ -235,7 +239,7 @@ export class Polyline extends FabricObject { if (!len || isNaN(this.points[len - 1].y)) { // do not draw if no points or odd points // NaN comes from parseFloat of a empty string in parser - return false; + return; } ctx.beginPath(); ctx.moveTo(this.points[0].x - x, this.points[0].y - y); @@ -243,17 +247,6 @@ export class Polyline extends FabricObject { const point = this.points[i]; ctx.lineTo(point.x - x, point.y - y); } - return true; - } - - /** - * @private - * @param {CanvasRenderingContext2D} ctx Context to render on - */ - _render(ctx: CanvasRenderingContext2D) { - if (!this.commonRender(ctx)) { - return; - } !this.isOpen() && ctx.closePath(); this._renderPaintInOrder(ctx); } @@ -266,6 +259,8 @@ export class Polyline extends FabricObject { return this.points.length; } + /* _FROM_SVG_START_ */ + /** * List of attribute names to account for when parsing SVG element (used by {@link Polyline.fromElement}) * @static @@ -274,8 +269,6 @@ export class Polyline extends FabricObject { */ static ATTRIBUTE_NAMES = [...SHARED_ATTRIBUTES]; - static fromElement = Polyline.fromElementGenerator(Polyline); - /** * Returns Polyline instance from an SVG element * @static @@ -315,6 +308,10 @@ export class Polyline extends FabricObject { }; } + static fromElement = Polyline.fromElementGenerator(Polyline); + + /* _FROM_SVG_END_ */ + /** * Returns Polyline instance from an object representation * @static @@ -351,7 +348,3 @@ Object.assign(Polyline.prototype, polylineDefaultValues); /** @todo TODO_JS_MIGRATION remove next line after refactoring build */ fabric.Polyline = Polyline; - -/* _FROM_SVG_START_ */ - -/* _FROM_SVG_END_ */ diff --git a/test/unit/point.js b/test/unit/point.js index 0096de3d8b3..2384877d5ce 100644 --- a/test/unit/point.js +++ b/test/unit/point.js @@ -11,7 +11,6 @@ assert.ok(point instanceof fabric.Point); assert.ok(point.constructor === fabric.Point); assert.ok(typeof point.constructor === 'function'); - assert.equal(point.type, 'point'); assert.strictEqual(point.x, 0, 'constructor assign x value'); assert.strictEqual(point.y, 0, 'constructor assign y value'); From 66a14cc724184ed412676c5f6df6e25b7fa8d8b6 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:06:21 +0200 Subject: [PATCH 019/153] revert Point UT fail in deepEquals F it --- src/parser/parsePointsAttribute.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/parser/parsePointsAttribute.ts b/src/parser/parsePointsAttribute.ts index 636f4c6ac9c..1ac59752231 100644 --- a/src/parser/parsePointsAttribute.ts +++ b/src/parser/parsePointsAttribute.ts @@ -1,7 +1,5 @@ //@ts-nocheck -import { Point } from '../point.class'; - /** * Parses "points" attribute, returning an array of values * @static @@ -19,12 +17,15 @@ export function parsePointsAttribute(points) { points = points.replace(/,/g, ' ').trim(); points = points.split(/\s+/); - const parsedPoints: Point[] = []; + let parsedPoints = [], + i, + len; - for (let i = 0; i < points.length; i += 2) { - parsedPoints.push( - new Point(parseFloat(points[i]), parseFloat(points[i + 1])) - ); + for (i = 0, len = points.length; i < len; i += 2) { + parsedPoints.push({ + x: parseFloat(points[i]), + y: parseFloat(points[i + 1]), + }); } // odd number of points is an error From 65cfcd639722f5ac910baf34b585f2d8a259b94f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:07:45 +0200 Subject: [PATCH 020/153] IPoint --- src/shapes/polyline.class.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index 964bcf975cd..e8a48c7a835 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -3,7 +3,7 @@ import { config } from '../config'; import { SHARED_ATTRIBUTES } from '../parser/attributes'; import { parseAttributes } from '../parser/parseAttributes'; import { parsePointsAttribute } from '../parser/parsePointsAttribute'; -import { Point } from '../point.class'; +import { IPoint, Point } from '../point.class'; import { TClassProperties } from '../typedefs'; import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; import { projectStrokeOnPoints } from '../util/misc/projectStroke'; @@ -18,7 +18,7 @@ export class Polyline extends FabricObject { * @type Array * @default */ - points: Point[]; + points: IPoint[]; /** * WARNING: Feature in progress @@ -65,7 +65,7 @@ export class Polyline extends FabricObject { * top: 100 * }); */ - constructor(points: Point[] = [], options: any = {}) { + constructor(points: IPoint[] = [], options: any = {}) { super({ points, ...options }); this.initialized = true; const bboxTL = this.setDimensions(); @@ -279,7 +279,7 @@ export class Polyline extends FabricObject { */ static fromElementGenerator< T extends { - new (points: Point[], options: any): any; + new (points: IPoint[], options: any): any; ATTRIBUTE_NAMES: string[]; } >(klass: T) { From 5681fce3bbbcb6f30cef49fd762c1ac5f6c8414d Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:19:58 +0200 Subject: [PATCH 021/153] refactor `fromElementGenerator` => `polyFromElement` --- src/shapes/polygon.class.ts | 10 ++++-- src/shapes/polyline.class.ts | 67 +++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 33 deletions(-) diff --git a/src/shapes/polygon.class.ts b/src/shapes/polygon.class.ts index f8ad577c8f0..e6762b59b9c 100644 --- a/src/shapes/polygon.class.ts +++ b/src/shapes/polygon.class.ts @@ -1,7 +1,7 @@ import { fabric } from '../../HEADER'; import { TClassProperties } from '../typedefs'; import { FabricObject } from './object.class'; -import { Polyline } from './polyline.class'; +import { polyFromElement, Polyline } from './polyline.class'; export class Polygon extends Polyline { protected isOpen() { @@ -18,7 +18,13 @@ export class Polygon extends Polyline { * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - static fromElement = Polyline.fromElementGenerator(Polygon); + static fromElement( + element: SVGElement, + callback: (poly: Polygon | null) => any, + options?: any + ) { + return polyFromElement(Polygon, element, callback, options); + } /* _FROM_SVG_END_ */ diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index e8a48c7a835..464df9ea96b 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -12,6 +12,36 @@ import { toFixed } from '../util/misc/toFixed'; import { FabricObject } from './fabricObject.class'; import { fabricObjectDefaultValues } from './object.class'; +export function polyFromElement< + T extends { + new (points: IPoint[], options: any): any; + ATTRIBUTE_NAMES: string[]; + } +>( + klass: T, + element: SVGElement, + callback: (poly: InstanceType | null) => any, + options = {} +) { + if (!element) { + return callback(null); + } + const points = parsePointsAttribute(element.getAttribute('points')), + // we omit left and top to instruct the constructor to position the object using the bbox + // eslint-disable-next-line @typescript-eslint/no-unused-vars + { left, top, ...parsedAttributes } = parseAttributes( + element, + klass.ATTRIBUTE_NAMES + ); + callback( + new klass(points || [], { + ...parsedAttributes, + ...options, + fromSVG: true, + }) + ); +} + export class Polyline extends FabricObject { /** * Points array @@ -277,39 +307,14 @@ export class Polyline extends FabricObject { * @param {Function} callback callback function invoked after parsing * @param {Object} [options] Options object */ - static fromElementGenerator< - T extends { - new (points: IPoint[], options: any): any; - ATTRIBUTE_NAMES: string[]; - } - >(klass: T) { - return function ( - element: SVGElement, - callback: (poly: InstanceType | null) => any, - options = {} - ) { - if (!element) { - return callback(null); - } - const points = parsePointsAttribute(element.getAttribute('points')), - // we omit left and top to instruct the constructor to position the object using the bbox - // eslint-disable-next-line @typescript-eslint/no-unused-vars - { left, top, ...parsedAttributes } = parseAttributes( - element, - klass.ATTRIBUTE_NAMES - ); - callback( - new klass(points || [], { - ...parsedAttributes, - ...options, - fromSVG: true, - }) - ); - }; + static fromElement( + element: SVGElement, + callback: (poly: Polyline | null) => any, + options?: any + ) { + return polyFromElement(Polyline, element, callback, options); } - static fromElement = Polyline.fromElementGenerator(Polyline); - /* _FROM_SVG_END_ */ /** From 1d18a151e03d001583dc671052afc08b5f29e12b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:21:23 +0200 Subject: [PATCH 022/153] Update polyline.class.ts --- src/shapes/polyline.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index 464df9ea96b..eb2e9e91c95 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -62,7 +62,7 @@ export class Polyline extends FabricObject { */ exactBoundingBox: boolean; - initialized: boolean; + private initialized: boolean; /** * A list of properties that if changed trigger a recalculation of dimensions From ce8660d77267b52138efb400604923ab33bc78f1 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:28:49 +0200 Subject: [PATCH 023/153] Update polyline.class.ts --- src/shapes/polyline.class.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index eb2e9e91c95..ad58bb1fbd2 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -62,7 +62,7 @@ export class Polyline extends FabricObject { */ exactBoundingBox: boolean; - private initialized: boolean; + private initialized: true | undefined; /** * A list of properties that if changed trigger a recalculation of dimensions @@ -335,7 +335,6 @@ export const polylineDefaultValues: Partial> = { type: 'polyline', points: [], exactBoundingBox: false, - initialized: false, cacheProperties: fabricObjectDefaultValues.cacheProperties.concat('points'), strokeBBoxAffectingProperties: [ 'skewX', From f6eb764b4fc20c2384911d6b82cff62661544c89 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 1 Nov 2022 23:35:20 +0200 Subject: [PATCH 024/153] remove default points --- src/shapes/polyline.class.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shapes/polyline.class.ts b/src/shapes/polyline.class.ts index ad58bb1fbd2..4cfa1133c52 100644 --- a/src/shapes/polyline.class.ts +++ b/src/shapes/polyline.class.ts @@ -333,7 +333,6 @@ export class Polyline extends FabricObject { export const polylineDefaultValues: Partial> = { type: 'polyline', - points: [], exactBoundingBox: false, cacheProperties: fabricObjectDefaultValues.cacheProperties.concat('points'), strokeBBoxAffectingProperties: [ From b5b5126bea0e95e116a2789313c320133483fe74 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 14:06:47 +0200 Subject: [PATCH 025/153] abstract methods + tidyup --- src/brushes/base_brush.class.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 39eae1d1cff..7131d5e9c5b 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -1,7 +1,7 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; -import { Point } from '../point.class'; -import { Canvas, Shadow } from '../__types__'; +import type { Point } from '../point.class'; +import type { Canvas, Shadow } from '../__types__'; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} @@ -75,6 +75,11 @@ export abstract class BaseBrush { this.canvas = canvas; } + abstract _render(): void; + abstract onMouseDown(pointer: Point): void; + abstract onMouseMove(pointer: Point): void; + abstract onMouseUp(pointer: Point): void; + /** * Sets brush styles * @private @@ -100,6 +105,11 @@ export abstract class BaseBrush { ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); } + protected needsFullRender() { + const color = new Color(this.color); + return color.getAlpha() < 1 || !!this.shadow; + } + /** * Sets brush shadow styles * @private @@ -120,11 +130,6 @@ export abstract class BaseBrush { ctx.shadowOffsetY = shadow.offsetY * zoom; } - protected needsFullRender() { - const color = new Color(this.color); - return color.getAlpha() < 1 || !!this.shadow; - } - /** * Removes brush shadow styles * @private From c536ecb53fcf50c7d8deed62faec0cf227ab4ffb Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 14:13:07 +0200 Subject: [PATCH 026/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 7131d5e9c5b..6268f4164d6 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -1,8 +1,11 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; import type { Point } from '../point.class'; +import { TEvent } from '../typedefs'; import type { Canvas, Shadow } from '../__types__'; +type TBrushEventData = TEvent & { pointer: Point }; + /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ @@ -76,9 +79,9 @@ export abstract class BaseBrush { } abstract _render(): void; - abstract onMouseDown(pointer: Point): void; - abstract onMouseMove(pointer: Point): void; - abstract onMouseUp(pointer: Point): void; + abstract onMouseDown(pointer: Point, ev: TBrushEventData): void; + abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; + abstract onMouseUp(ev: TBrushEventData): void; /** * Sets brush styles From faf374ebf32e2450621652a9a34a3eaf214dbe1b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 14:14:29 +0200 Subject: [PATCH 027/153] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 228c17d831c..06013527c09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## [next] +- chore(TS): BaseBrush abstract methods [#8428](https://github.com/fabricjs/fabric.js/pull/8428) - chore(TS): migrate Rect [#8411](https://github.com/fabricjs/fabric.js/pull/8411) - chore(TS): migrate Ellipse [#8408](https://github.com/fabricjs/fabric.js/pull/8408) - chore(TS): migrate Triangle to TS [#8410](https://github.com/fabricjs/fabric.js/pull/8410) From 2558035a155887fc40eb3ca133c865abed817f8b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 14:23:45 +0200 Subject: [PATCH 028/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 6268f4164d6..2601fbe4ae1 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -81,7 +81,10 @@ export abstract class BaseBrush { abstract _render(): void; abstract onMouseDown(pointer: Point, ev: TBrushEventData): void; abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; - abstract onMouseUp(ev: TBrushEventData): void; + /** + * @returns true if brush should continue blocking interaction + */ + abstract onMouseUp(ev: TBrushEventData): boolean | void; /** * Sets brush styles From 7576a6a901e1f6459b7a76366028d1f504a98468 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 16:23:50 +0200 Subject: [PATCH 029/153] feat(): PolyBrush --- src/brushes/PolyBrush.ts | 89 +++++++++++++++++++++++++++++++ src/brushes/index.ts | 1 + src/mixins/canvas_events.mixin.ts | 2 + 3 files changed, 92 insertions(+) create mode 100644 src/brushes/PolyBrush.ts diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts new file mode 100644 index 00000000000..07175bd79a2 --- /dev/null +++ b/src/brushes/PolyBrush.ts @@ -0,0 +1,89 @@ +import { fabric } from '../../HEADER'; +import { Point } from '../point.class'; +import { Polygon } from '../shapes/polygon.class'; +import { Polyline } from '../shapes/polyline.class'; +import { BaseBrush } from './base_brush.class'; + +export class PolyBrush extends BaseBrush { + poly: Polyline | undefined; + builder = Polygon; + width = 5; + stroke = ''; + fill = ''; + + replacePoint(pointer: Point) { + const poly = this.poly!; + poly.points.pop(); + poly.points.push(pointer); + this._render(); + } + + private create(pointer: Point) { + this.poly = new this.builder([pointer, pointer], { + objectCaching: false, + canvas: this.canvas, + }); + this.setStyles(); + } + + setStyles() { + this.poly?.set({ + stroke: this.stroke || this.color, + fill: this.fill || this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray, + }); + } + + private finalize() { + // release interaction + this.canvas._isCurrentlyDrawing = false; + const poly = this.poly!; + // restore default value + poly.set('objectCaching', this.builder.prototype.objectCaching); + const pos = poly.setDimensions().scalarAdd(this.width / 2); + poly.setPositionByOrigin(pos, 'left', 'top'); + poly.setCoords(); + this.canvas.add(this.poly); + this.canvas.fire('path:created', { path: this.poly }); + this.canvas.clearContext(this.canvas.contextTop); + this.poly = undefined; + } + + _setBrushStyles() { + this.setStyles(); + } + + onMouseDown(pointer: Point) { + if (this.poly) { + this.poly.points.push(pointer); + } else { + this.create(pointer); + } + } + + onMouseMove(pointer: Point) { + this.replacePoint(pointer); + } + + onMouseUp({ pointer }: { pointer: Point }) { + this.replacePoint(pointer); + this.poly!.points.push(pointer); + return true; + } + + onDoubleClick(pointer: Point) { + this.replacePoint(pointer); + this.finalize(); + } + + _render(ctx = this.canvas.contextTop) { + this.canvas.clearContext(this.canvas.contextTop); + this.poly!.render(ctx); + } +} + +fabric.PolyBrush = PolyBrush; diff --git a/src/brushes/index.ts b/src/brushes/index.ts index 8d1edc86dc0..b4e73ac73d0 100644 --- a/src/brushes/index.ts +++ b/src/brushes/index.ts @@ -2,4 +2,5 @@ export * from './base_brush.class'; export * from './circle_brush.class'; export * from './pattern_brush.class'; export * from './pencil_brush.class'; +export * from './PolyBrush'; export * from './spray_brush.class'; diff --git a/src/mixins/canvas_events.mixin.ts b/src/mixins/canvas_events.mixin.ts index f0ab9d0d864..6b4a9650139 100644 --- a/src/mixins/canvas_events.mixin.ts +++ b/src/mixins/canvas_events.mixin.ts @@ -456,6 +456,8 @@ import { fireEvent } from '../util/fireEvent'; * @param {Event} e Event object fired on mousedown */ _onDoubleClick: function (e) { + this.freeDrawingBrush?.onDoubleClick && + this.freeDrawingBrush.onDoubleClick(this.getPointer(e)); this._cacheTransformEventData(e); this._handleEvent(e, 'dblclick'); this._resetTransformEventData(); From 6826935ac3eebd2ddc71d3dfd24d5bc0cf73654b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 16:47:23 +0200 Subject: [PATCH 030/153] Update PolyBrush.ts --- src/brushes/PolyBrush.ts | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts index 07175bd79a2..6585e198c06 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/PolyBrush.ts @@ -2,6 +2,7 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; +import { invertTransform } from '../util/misc/matrix'; import { BaseBrush } from './base_brush.class'; export class PolyBrush extends BaseBrush { @@ -11,15 +12,23 @@ export class PolyBrush extends BaseBrush { stroke = ''; fill = ''; + private normalizePointer(pointer: Point) { + return pointer.transform(this.canvas.viewportTransform, true); + } + + addPoint(pointer: Point) { + this.poly!.points.push(this.normalizePointer(pointer)); + } + replacePoint(pointer: Point) { - const poly = this.poly!; - poly.points.pop(); - poly.points.push(pointer); + this.poly!.points.pop(); + this.addPoint(pointer); this._render(); } private create(pointer: Point) { - this.poly = new this.builder([pointer, pointer], { + const p = this.normalizePointer(pointer); + this.poly = new this.builder([p, p], { objectCaching: false, canvas: this.canvas, }); @@ -41,7 +50,8 @@ export class PolyBrush extends BaseBrush { private finalize() { // release interaction this.canvas._isCurrentlyDrawing = false; - const poly = this.poly!; + const poly = this.poly; + if (!poly) return; // restore default value poly.set('objectCaching', this.builder.prototype.objectCaching); const pos = poly.setDimensions().scalarAdd(this.width / 2); @@ -59,7 +69,7 @@ export class PolyBrush extends BaseBrush { onMouseDown(pointer: Point) { if (this.poly) { - this.poly.points.push(pointer); + this.addPoint(pointer); } else { this.create(pointer); } @@ -71,18 +81,18 @@ export class PolyBrush extends BaseBrush { onMouseUp({ pointer }: { pointer: Point }) { this.replacePoint(pointer); - this.poly!.points.push(pointer); + this.addPoint(pointer); return true; } onDoubleClick(pointer: Point) { - this.replacePoint(pointer); + this.poly && this.replacePoint(pointer); this.finalize(); } _render(ctx = this.canvas.contextTop) { this.canvas.clearContext(this.canvas.contextTop); - this.poly!.render(ctx); + this.poly?.render(ctx); } } From ef485d5fd1954e32e46f68738840026178df6eaf Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 17:31:38 +0200 Subject: [PATCH 031/153] Update PolyBrush.ts --- src/brushes/PolyBrush.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts index 6585e198c06..771808e6347 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/PolyBrush.ts @@ -2,37 +2,32 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; -import { invertTransform } from '../util/misc/matrix'; import { BaseBrush } from './base_brush.class'; export class PolyBrush extends BaseBrush { poly: Polyline | undefined; builder = Polygon; - width = 5; stroke = ''; fill = ''; - private normalizePointer(pointer: Point) { - return pointer.transform(this.canvas.viewportTransform, true); + private addPoint(pointer: Point) { + this.poly!.points.push(pointer); } - addPoint(pointer: Point) { - this.poly!.points.push(this.normalizePointer(pointer)); - } - - replacePoint(pointer: Point) { + private replacePoint(pointer: Point) { this.poly!.points.pop(); this.addPoint(pointer); this._render(); } private create(pointer: Point) { - const p = this.normalizePointer(pointer); - this.poly = new this.builder([p, p], { + this.poly = new this.builder([], { objectCaching: false, canvas: this.canvas, }); this.setStyles(); + this.addPoint(pointer); + this.addPoint(pointer); } setStyles() { @@ -53,7 +48,7 @@ export class PolyBrush extends BaseBrush { const poly = this.poly; if (!poly) return; // restore default value - poly.set('objectCaching', this.builder.prototype.objectCaching); + poly.objectCaching = this.builder.prototype.objectCaching; const pos = poly.setDimensions().scalarAdd(this.width / 2); poly.setPositionByOrigin(pos, 'left', 'top'); poly.setCoords(); @@ -92,7 +87,12 @@ export class PolyBrush extends BaseBrush { _render(ctx = this.canvas.contextTop) { this.canvas.clearContext(this.canvas.contextTop); - this.poly?.render(ctx); + ctx.save(); + const t = this.canvas.viewportTransform; + const offset = new Point().transform(t); + ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); + this.poly!.render(ctx); + ctx.restore(); } } From 5e1f1fd3faf67455dcb180e707cf696c41498ef5 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 18:32:56 +0200 Subject: [PATCH 032/153] feat(): ShapeBrush --- src/brushes/PolyBrush.ts | 73 ++++++++--------------------------- src/brushes/ShapeBrush.ts | 81 +++++++++++++++++++++++++++++++++++++++ src/brushes/index.ts | 1 + 3 files changed, 99 insertions(+), 56 deletions(-) create mode 100644 src/brushes/ShapeBrush.ts diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts index 771808e6347..576db14cdb6 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/PolyBrush.ts @@ -2,71 +2,42 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; -import { BaseBrush } from './base_brush.class'; +import { ShapeBrush } from './ShapeBrush'; -export class PolyBrush extends BaseBrush { - poly: Polyline | undefined; +export class PolyBrush extends ShapeBrush { builder = Polygon; - stroke = ''; - fill = ''; private addPoint(pointer: Point) { - this.poly!.points.push(pointer); + this.shape!.points.push(pointer); } private replacePoint(pointer: Point) { - this.poly!.points.pop(); + this.shape!.points.pop(); this.addPoint(pointer); this._render(); } - private create(pointer: Point) { - this.poly = new this.builder([], { - objectCaching: false, - canvas: this.canvas, - }); - this.setStyles(); - this.addPoint(pointer); - this.addPoint(pointer); + create() { + return new this.builder(); } - setStyles() { - this.poly?.set({ - stroke: this.stroke || this.color, - fill: this.fill || this.color, - strokeWidth: this.width, - strokeLineCap: this.strokeLineCap, - strokeMiterLimit: this.strokeMiterLimit, - strokeLineJoin: this.strokeLineJoin, - strokeDashArray: this.strokeDashArray, - }); - } - - private finalize() { + protected finalize() { // release interaction this.canvas._isCurrentlyDrawing = false; - const poly = this.poly; - if (!poly) return; - // restore default value - poly.objectCaching = this.builder.prototype.objectCaching; - const pos = poly.setDimensions().scalarAdd(this.width / 2); - poly.setPositionByOrigin(pos, 'left', 'top'); - poly.setCoords(); - this.canvas.add(this.poly); - this.canvas.fire('path:created', { path: this.poly }); - this.canvas.clearContext(this.canvas.contextTop); - this.poly = undefined; - } - - _setBrushStyles() { - this.setStyles(); + const shape = this.shape; + if (!shape) return; + const pos = shape.setDimensions().scalarAdd(this.width / 2); + shape.setPositionByOrigin(pos, 'left', 'top'); + super.finalize(); } onMouseDown(pointer: Point) { - if (this.poly) { + if (this.shape) { this.addPoint(pointer); } else { - this.create(pointer); + this.build(); + this.addPoint(pointer); + this.addPoint(pointer); } } @@ -81,19 +52,9 @@ export class PolyBrush extends BaseBrush { } onDoubleClick(pointer: Point) { - this.poly && this.replacePoint(pointer); + this.shape && this.replacePoint(pointer); this.finalize(); } - - _render(ctx = this.canvas.contextTop) { - this.canvas.clearContext(this.canvas.contextTop); - ctx.save(); - const t = this.canvas.viewportTransform; - const offset = new Point().transform(t); - ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); - this.poly!.render(ctx); - ctx.restore(); - } } fabric.PolyBrush = PolyBrush; diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts new file mode 100644 index 00000000000..a36cdbe3f35 --- /dev/null +++ b/src/brushes/ShapeBrush.ts @@ -0,0 +1,81 @@ +import { fabric } from '../../HEADER'; +import { Point } from '../point.class'; +import { FabricObject } from '../shapes/fabricObject.class'; +import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; +import { BaseBrush } from './base_brush.class'; + +export abstract class ShapeBrush extends BaseBrush { + shape: T | undefined; + stroke = ''; + fill = ''; + + private start: Point; + + abstract create(): T; + + protected build() { + this.shape = this.create(); + this.shape.set('canvas', this.canvas); + this.setStyles(); + } + + setStyles() { + this.shape?.set({ + stroke: this.stroke || this.color, + fill: this.fill || this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray, + }); + } + + private setBounds(a: Point, b: Point) { + const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); + this.shape!.set({ width, height }); + this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + this._render(); + } + + protected finalize() { + const shape = this.shape; + if (!shape) return; + shape.setCoords(); + this.canvas.add(this.shape); + this.canvas.fire('path:created', { path: this.shape }); + this.canvas.clearContext(this.canvas.contextTop); + this.shape = undefined; + } + + _setBrushStyles() { + this.setStyles(); + } + + onMouseDown(pointer: Point) { + this.build(pointer); + this.start = pointer; + } + + onMouseMove(pointer: Point) { + this.setBounds(this.start, pointer); + } + + onMouseUp({ pointer }: { pointer: Point }) { + this.setBounds(this.start, pointer); + this.finalize(); + } + + _render(ctx = this.canvas.contextTop) { + this.canvas.clearContext(this.canvas.contextTop); + ctx.save(); + const t = this.canvas.viewportTransform; + const offset = new Point().transform(t); + ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); + this.shape!.transform(ctx); + this.shape!._render(ctx); + ctx.restore(); + } +} + +fabric.ShapeBrush = ShapeBrush; diff --git a/src/brushes/index.ts b/src/brushes/index.ts index b4e73ac73d0..9405add7da8 100644 --- a/src/brushes/index.ts +++ b/src/brushes/index.ts @@ -3,4 +3,5 @@ export * from './circle_brush.class'; export * from './pattern_brush.class'; export * from './pencil_brush.class'; export * from './PolyBrush'; +export * from './ShapeBrush'; export * from './spray_brush.class'; From a195dc56e0517b5cadb12d9610cb510b55821464 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 18:47:30 +0200 Subject: [PATCH 033/153] shape brush --- src/brushes/PolyBrush.ts | 4 +-- src/brushes/ShapeBrush.ts | 41 ++++++++++++++++++++++-- src/mixins/object_interactivity.mixin.ts | 2 +- src/shapes/rect.class.ts | 2 +- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts index 576db14cdb6..5cace5d6610 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/PolyBrush.ts @@ -2,9 +2,9 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; -import { ShapeBrush } from './ShapeBrush'; +import { ShapeBaseBrush } from './ShapeBrush'; -export class PolyBrush extends ShapeBrush { +export class PolyBrush extends ShapeBaseBrush { builder = Polygon; private addPoint(pointer: Point) { diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index a36cdbe3f35..8fa400349e8 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -1,10 +1,13 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; +import { Circle } from '../shapes/circle.class'; +import { Ellipse } from '../shapes/ellipse.class'; import { FabricObject } from '../shapes/fabricObject.class'; +import { Rect } from '../shapes/rect.class'; import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; import { BaseBrush } from './base_brush.class'; -export abstract class ShapeBrush extends BaseBrush { +export abstract class ShapeBaseBrush extends BaseBrush { shape: T | undefined; stroke = ''; fill = ''; @@ -31,11 +34,10 @@ export abstract class ShapeBrush extends BaseBrush { }); } - private setBounds(a: Point, b: Point) { + protected setBounds(a: Point, b: Point) { const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); this.shape!.set({ width, height }); this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); - this._render(); } protected finalize() { @@ -59,6 +61,7 @@ export abstract class ShapeBrush extends BaseBrush { onMouseMove(pointer: Point) { this.setBounds(this.start, pointer); + this._render(); } onMouseUp({ pointer }: { pointer: Point }) { @@ -78,4 +81,36 @@ export abstract class ShapeBrush extends BaseBrush { } } +export class ShapeBrush extends ShapeBaseBrush { + builder = Rect; + create() { + return new this.builder(); + } +} + +export class CircleBrush extends ShapeBaseBrush { + create() { + return new Circle({}); + } + protected setBounds(a: Point, b: Point): void { + const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); + this.shape!.set({ radius: Math.max(width, height) / 2 }); + this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + } +} + +export class EllipseBrush extends ShapeBaseBrush { + create() { + return new Ellipse({}); + } + protected setBounds(a: Point, b: Point): void { + const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); + this.shape!.set({ rx: width / 2, ry: height / 2 }); + this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + } +} + +fabric.ShapeBaseBrush = ShapeBaseBrush; fabric.ShapeBrush = ShapeBrush; +fabric.CircleBrush = CircleBrush; +fabric.EllipseBrush = EllipseBrush; diff --git a/src/mixins/object_interactivity.mixin.ts b/src/mixins/object_interactivity.mixin.ts index dbd90e23ff2..325f61bc796 100644 --- a/src/mixins/object_interactivity.mixin.ts +++ b/src/mixins/object_interactivity.mixin.ts @@ -79,7 +79,7 @@ export class InteractiveFabricObject extends FabricObject { * Constructor * @param {Object} [options] Options object */ - constructor(options: Record) { + constructor(options?: Record) { super(options); } diff --git a/src/shapes/rect.class.ts b/src/shapes/rect.class.ts index 9de777e0455..6a4f84c2fb7 100644 --- a/src/shapes/rect.class.ts +++ b/src/shapes/rect.class.ts @@ -26,7 +26,7 @@ export class Rect extends FabricObject { * @param {Object} [options] Options object * @return {Object} thisArg */ - constructor(options: Record) { + constructor(options?: Record) { super(options); this._initRxRy(); } From 653ddbbe7721650c1c5e25da88532cb65022ea30 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 20:23:40 +0200 Subject: [PATCH 034/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 2601fbe4ae1..e9beba7f59a 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -4,7 +4,7 @@ import type { Point } from '../point.class'; import { TEvent } from '../typedefs'; import type { Canvas, Shadow } from '../__types__'; -type TBrushEventData = TEvent & { pointer: Point }; +export type TBrushEventData = TEvent & { pointer: Point }; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} From be2e508e02febabc9c158860a82fa072b562c413 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 20:23:44 +0200 Subject: [PATCH 035/153] Update ShapeBrush.ts --- src/brushes/ShapeBrush.ts | 69 +++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index 8fa400349e8..a8689d1b2ef 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -4,13 +4,13 @@ import { Circle } from '../shapes/circle.class'; import { Ellipse } from '../shapes/ellipse.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; -import { makeBoundingBoxFromPoints } from '../util/misc/boundingBoxFromPoints'; -import { BaseBrush } from './base_brush.class'; +import { BaseBrush, TBrushEventData } from './base_brush.class'; export abstract class ShapeBaseBrush extends BaseBrush { shape: T | undefined; stroke = ''; fill = ''; + centered = false; private start: Point; @@ -34,10 +34,21 @@ export abstract class ShapeBaseBrush extends BaseBrush { }); } - protected setBounds(a: Point, b: Point) { - const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); - this.shape!.set({ width, height }); - this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + protected setBounds(a: Point, b: Point, ev: TBrushEventData) { + const v = b.subtract(a); + const shape = this.shape!; + if (this.centered) { + shape.set({ width: Math.abs(v.x) * 2, height: Math.abs(v.y) * 2 }); + shape.setPositionByOrigin(a, 0.5, 0.5); + } else { + shape.set({ width: Math.abs(v.x), height: Math.abs(v.y) }); + // keep a in place + shape.setPositionByOrigin( + a, + -Math.sign(v.x) * 0.5 + 0.5, + -Math.sign(v.y) * 0.5 + 0.5 + ); + } } protected finalize() { @@ -55,17 +66,17 @@ export abstract class ShapeBaseBrush extends BaseBrush { } onMouseDown(pointer: Point) { - this.build(pointer); + this.build(); this.start = pointer; } - onMouseMove(pointer: Point) { - this.setBounds(this.start, pointer); + onMouseMove(pointer: Point, ev: TBrushEventData) { + this.setBounds(this.start, pointer, ev); this._render(); } - onMouseUp({ pointer }: { pointer: Point }) { - this.setBounds(this.start, pointer); + onMouseUp(ev: TBrushEventData) { + this.setBounds(this.start, ev.pointer, ev); this.finalize(); } @@ -88,14 +99,25 @@ export class ShapeBrush extends ShapeBaseBrush { } } -export class CircleBrush extends ShapeBaseBrush { +export class CircleBrush1 extends ShapeBaseBrush { create() { - return new Circle({}); + return new Circle(); } protected setBounds(a: Point, b: Point): void { - const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); - this.shape!.set({ radius: Math.max(width, height) / 2 }); - this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + const v = b.subtract(a); + const shape = this.shape!; + if (this.centered) { + shape.set({ radius: v.distanceFrom(new Point()) }); + shape.setPositionByOrigin(a, 0.5, 0.5); + } else { + shape.set({ radius: Math.max(Math.abs(v.x), Math.abs(v.y)) / 2 }); + // keep a in place + shape.setPositionByOrigin( + a, + -Math.sign(v.x) * 0.5 + 0.5, + -Math.sign(v.y) * 0.5 + 0.5 + ); + } } } @@ -103,14 +125,19 @@ export class EllipseBrush extends ShapeBaseBrush { create() { return new Ellipse({}); } - protected setBounds(a: Point, b: Point): void { - const { left, top, width, height } = makeBoundingBoxFromPoints([a, b]); - this.shape!.set({ rx: width / 2, ry: height / 2 }); - this.shape!.setPositionByOrigin(new Point(left, top), 'left', 'top'); + protected setBounds(a: Point, b: Point, ev: TBrushEventData) { + super.setBounds(a, b, ev); + const shape = this.shape!; + if (ev.e.shiftKey) { + const r = Math.max(shape.width, shape.height) / 2; + shape.set({ rx: r, ry: r }); + } else { + shape.set({ rx: shape.width / 2, ry: shape.height / 2 }); + } } } fabric.ShapeBaseBrush = ShapeBaseBrush; fabric.ShapeBrush = ShapeBrush; -fabric.CircleBrush = CircleBrush; +fabric.CircleBrush1 = CircleBrush1; fabric.EllipseBrush = EllipseBrush; From 3e8d0f63200247da36d49d04688b01a0c6b92d23 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 20:34:32 +0200 Subject: [PATCH 036/153] Update ellipse.class.ts --- src/shapes/ellipse.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shapes/ellipse.class.ts b/src/shapes/ellipse.class.ts index d98370ac055..fbfeb8e2ab2 100644 --- a/src/shapes/ellipse.class.ts +++ b/src/shapes/ellipse.class.ts @@ -26,7 +26,7 @@ export class Ellipse extends FabricObject { * @param {Object} [options] Options object * @return {Ellipse} thisArg */ - constructor(options: Record) { + constructor(options?: Record) { super(options); this.set('rx', (options && options.rx) || 0); this.set('ry', (options && options.ry) || 0); From b8f308e31ae3bdc2da5b0646fb8e4e3d5be5b4ac Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 20:34:42 +0200 Subject: [PATCH 037/153] Update ShapeBrush.ts --- src/brushes/ShapeBrush.ts | 52 +++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index a8689d1b2ef..1c0f3c86d14 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -4,6 +4,7 @@ import { Circle } from '../shapes/circle.class'; import { Ellipse } from '../shapes/ellipse.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; +import { ModifierKey } from '../typedefs'; import { BaseBrush, TBrushEventData } from './base_brush.class'; export abstract class ShapeBaseBrush extends BaseBrush { @@ -34,7 +35,7 @@ export abstract class ShapeBaseBrush extends BaseBrush { }); } - protected setBounds(a: Point, b: Point, ev: TBrushEventData) { + protected setBounds(a: Point, b: Point) { const v = b.subtract(a); const shape = this.shape!; if (this.centered) { @@ -70,13 +71,14 @@ export abstract class ShapeBaseBrush extends BaseBrush { this.start = pointer; } + // eslint-disable-next-line @typescript-eslint/no-unused-vars onMouseMove(pointer: Point, ev: TBrushEventData) { - this.setBounds(this.start, pointer, ev); + this.setBounds(this.start, pointer); this._render(); } onMouseUp(ev: TBrushEventData) { - this.setBounds(this.start, ev.pointer, ev); + this.setBounds(this.start, ev.pointer); this.finalize(); } @@ -99,36 +101,27 @@ export class ShapeBrush extends ShapeBaseBrush { } } -export class CircleBrush1 extends ShapeBaseBrush { +export class CircularShapeBrush extends ShapeBaseBrush { + /** + * The event modifier key that makes the brush draw a circle. + */ + modifierKey?: ModifierKey = 'shiftKey'; + + drawCircle?: boolean; + create() { - return new Circle(); + return new Ellipse(); } - protected setBounds(a: Point, b: Point): void { - const v = b.subtract(a); - const shape = this.shape!; - if (this.centered) { - shape.set({ radius: v.distanceFrom(new Point()) }); - shape.setPositionByOrigin(a, 0.5, 0.5); - } else { - shape.set({ radius: Math.max(Math.abs(v.x), Math.abs(v.y)) / 2 }); - // keep a in place - shape.setPositionByOrigin( - a, - -Math.sign(v.x) * 0.5 + 0.5, - -Math.sign(v.y) * 0.5 + 0.5 - ); - } - } -} -export class EllipseBrush extends ShapeBaseBrush { - create() { - return new Ellipse({}); + onMouseMove(pointer: Point, ev: TBrushEventData) { + this.drawCircle = this.modifierKey && ev.e[this.modifierKey]; + super.onMouseMove(pointer, ev); } - protected setBounds(a: Point, b: Point, ev: TBrushEventData) { - super.setBounds(a, b, ev); + + protected setBounds(a: Point, b: Point) { + super.setBounds(a, b); const shape = this.shape!; - if (ev.e.shiftKey) { + if (this.drawCircle) { const r = Math.max(shape.width, shape.height) / 2; shape.set({ rx: r, ry: r }); } else { @@ -139,5 +132,4 @@ export class EllipseBrush extends ShapeBaseBrush { fabric.ShapeBaseBrush = ShapeBaseBrush; fabric.ShapeBrush = ShapeBrush; -fabric.CircleBrush1 = CircleBrush1; -fabric.EllipseBrush = EllipseBrush; +fabric.CircularShapeBrush = CircularShapeBrush; From 2c78623fd617572b513ea8d2b71dcdeba3e2f873 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 21:03:17 +0200 Subject: [PATCH 038/153] circular shape brush sad naming --- src/brushes/CircularShapeBrush.ts | 53 +++++++++++++++++++++++++++++++ src/brushes/ShapeBrush.ts | 33 ------------------- src/brushes/index.ts | 1 + 3 files changed, 54 insertions(+), 33 deletions(-) create mode 100644 src/brushes/CircularShapeBrush.ts diff --git a/src/brushes/CircularShapeBrush.ts b/src/brushes/CircularShapeBrush.ts new file mode 100644 index 00000000000..3bce2803ff5 --- /dev/null +++ b/src/brushes/CircularShapeBrush.ts @@ -0,0 +1,53 @@ +import { fabric } from '../../HEADER'; +import { Point } from '../point.class'; +import { Ellipse } from '../shapes/ellipse.class'; +import { ModifierKey } from '../typedefs'; +import { TBrushEventData } from './base_brush.class'; +import { ShapeBaseBrush } from './ShapeBrush'; + +export class CircularShapeBrush extends ShapeBaseBrush { + /** + * The event modifier key that makes the brush draw a circle. + */ + modifierKey?: ModifierKey = 'shiftKey'; + + drawCircle?: boolean; + + create() { + return new Ellipse(); + } + + onMouseMove(pointer: Point, ev: TBrushEventData) { + this.drawCircle = this.modifierKey && ev.e[this.modifierKey]; + super.onMouseMove(pointer, ev); + } + + protected setBounds(a: Point, b: Point) { + const v = b.subtract(a); + const shape = this.shape!; + const d = new Point(Math.abs(v.x), Math.abs(v.y)); + // set radii + if (this.drawCircle) { + const r = this.centered + ? d.distanceFrom(new Point()) + : Math.max(d.x, d.y) / 2; + shape.set({ rx: r, ry: r }); + } else { + const { x: rx, y: ry } = this.centered ? d : d.scalarDivide(2); + shape.set({ rx, ry }); + } + // set position + if (this.centered) { + shape.setPositionByOrigin(a, 0.5, 0.5); + } else { + // keep a in place + shape.setPositionByOrigin( + a, + -Math.sign(v.x) * 0.5 + 0.5, + -Math.sign(v.y) * 0.5 + 0.5 + ); + } + } +} + +fabric.CircularShapeBrush = CircularShapeBrush; diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index 1c0f3c86d14..5c23f03d006 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -1,10 +1,7 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; -import { Circle } from '../shapes/circle.class'; -import { Ellipse } from '../shapes/ellipse.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; -import { ModifierKey } from '../typedefs'; import { BaseBrush, TBrushEventData } from './base_brush.class'; export abstract class ShapeBaseBrush extends BaseBrush { @@ -101,35 +98,5 @@ export class ShapeBrush extends ShapeBaseBrush { } } -export class CircularShapeBrush extends ShapeBaseBrush { - /** - * The event modifier key that makes the brush draw a circle. - */ - modifierKey?: ModifierKey = 'shiftKey'; - - drawCircle?: boolean; - - create() { - return new Ellipse(); - } - - onMouseMove(pointer: Point, ev: TBrushEventData) { - this.drawCircle = this.modifierKey && ev.e[this.modifierKey]; - super.onMouseMove(pointer, ev); - } - - protected setBounds(a: Point, b: Point) { - super.setBounds(a, b); - const shape = this.shape!; - if (this.drawCircle) { - const r = Math.max(shape.width, shape.height) / 2; - shape.set({ rx: r, ry: r }); - } else { - shape.set({ rx: shape.width / 2, ry: shape.height / 2 }); - } - } -} - fabric.ShapeBaseBrush = ShapeBaseBrush; fabric.ShapeBrush = ShapeBrush; -fabric.CircularShapeBrush = CircularShapeBrush; diff --git a/src/brushes/index.ts b/src/brushes/index.ts index 9405add7da8..57c4c3f165e 100644 --- a/src/brushes/index.ts +++ b/src/brushes/index.ts @@ -1,5 +1,6 @@ export * from './base_brush.class'; export * from './circle_brush.class'; +export * from './CircularShapeBrush'; export * from './pattern_brush.class'; export * from './pencil_brush.class'; export * from './PolyBrush'; From 5073ee7978dded019e5415b11e9a5c15019e6502 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 21:54:47 +0200 Subject: [PATCH 039/153] symmetric --- src/brushes/CircularShapeBrush.ts | 16 +--------------- src/brushes/ShapeBrush.ts | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/brushes/CircularShapeBrush.ts b/src/brushes/CircularShapeBrush.ts index 3bce2803ff5..836c70ce055 100644 --- a/src/brushes/CircularShapeBrush.ts +++ b/src/brushes/CircularShapeBrush.ts @@ -1,33 +1,19 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Ellipse } from '../shapes/ellipse.class'; -import { ModifierKey } from '../typedefs'; -import { TBrushEventData } from './base_brush.class'; import { ShapeBaseBrush } from './ShapeBrush'; export class CircularShapeBrush extends ShapeBaseBrush { - /** - * The event modifier key that makes the brush draw a circle. - */ - modifierKey?: ModifierKey = 'shiftKey'; - - drawCircle?: boolean; - create() { return new Ellipse(); } - onMouseMove(pointer: Point, ev: TBrushEventData) { - this.drawCircle = this.modifierKey && ev.e[this.modifierKey]; - super.onMouseMove(pointer, ev); - } - protected setBounds(a: Point, b: Point) { const v = b.subtract(a); const shape = this.shape!; const d = new Point(Math.abs(v.x), Math.abs(v.y)); // set radii - if (this.drawCircle) { + if (this.symmetric) { const r = this.centered ? d.distanceFrom(new Point()) : Math.max(d.x, d.y) / 2; diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index 5c23f03d006..605d994a82c 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -2,6 +2,7 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; +import { ModifierKey } from '../typedefs'; import { BaseBrush, TBrushEventData } from './base_brush.class'; export abstract class ShapeBaseBrush extends BaseBrush { @@ -9,6 +10,11 @@ export abstract class ShapeBaseBrush extends BaseBrush { stroke = ''; fill = ''; centered = false; + /** + * The event modifier key that makes the brush draw a circle. + */ + modifierKey?: ModifierKey = 'shiftKey'; + symmetric?: boolean; private start: Point; @@ -35,12 +41,20 @@ export abstract class ShapeBaseBrush extends BaseBrush { protected setBounds(a: Point, b: Point) { const v = b.subtract(a); const shape = this.shape!; + const d = new Point(Math.abs(v.x), Math.abs(v.y)); + // size + if (this.symmetric) { + const side = + (d.distanceFrom(new Point()) / Math.SQRT2) * (this.centered ? 2 : 1); + shape.set({ width: side, height: side }); + } else { + shape.set({ width: d.x, height: d.y }); + } + // position if (this.centered) { - shape.set({ width: Math.abs(v.x) * 2, height: Math.abs(v.y) * 2 }); shape.setPositionByOrigin(a, 0.5, 0.5); } else { - shape.set({ width: Math.abs(v.x), height: Math.abs(v.y) }); - // keep a in place + // keep a in place shape.setPositionByOrigin( a, -Math.sign(v.x) * 0.5 + 0.5, @@ -70,6 +84,7 @@ export abstract class ShapeBaseBrush extends BaseBrush { // eslint-disable-next-line @typescript-eslint/no-unused-vars onMouseMove(pointer: Point, ev: TBrushEventData) { + this.symmetric = this.modifierKey && ev.e[this.modifierKey]; this.setBounds(this.start, pointer); this._render(); } From f3dece5d142cbd8332414a3026d2f90caa9e0632 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 22:09:33 +0200 Subject: [PATCH 040/153] refactor --- src/brushes/CircularShapeBrush.ts | 8 ++- src/brushes/PolyBrush.ts | 2 +- src/brushes/ShapeBaseBrush.ts | 57 ++++++++++++++++++++++ src/brushes/ShapeBrush.ts | 81 +++++++++---------------------- 4 files changed, 83 insertions(+), 65 deletions(-) create mode 100644 src/brushes/ShapeBaseBrush.ts diff --git a/src/brushes/CircularShapeBrush.ts b/src/brushes/CircularShapeBrush.ts index 836c70ce055..1736c2ec72e 100644 --- a/src/brushes/CircularShapeBrush.ts +++ b/src/brushes/CircularShapeBrush.ts @@ -1,12 +1,10 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Ellipse } from '../shapes/ellipse.class'; -import { ShapeBaseBrush } from './ShapeBrush'; +import { ShapeBrush } from './ShapeBrush'; -export class CircularShapeBrush extends ShapeBaseBrush { - create() { - return new Ellipse(); - } +export class CircularShapeBrush extends ShapeBrush { + builder = Ellipse; protected setBounds(a: Point, b: Point) { const v = b.subtract(a); diff --git a/src/brushes/PolyBrush.ts b/src/brushes/PolyBrush.ts index 5cace5d6610..099d0e117b9 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/PolyBrush.ts @@ -2,7 +2,7 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; -import { ShapeBaseBrush } from './ShapeBrush'; +import { ShapeBaseBrush } from './ShapeBaseBrush'; export class PolyBrush extends ShapeBaseBrush { builder = Polygon; diff --git a/src/brushes/ShapeBaseBrush.ts b/src/brushes/ShapeBaseBrush.ts new file mode 100644 index 00000000000..60c6e90d346 --- /dev/null +++ b/src/brushes/ShapeBaseBrush.ts @@ -0,0 +1,57 @@ +import { fabric } from '../../HEADER'; +import { Point } from '../point.class'; +import { FabricObject } from '../shapes/fabricObject.class'; +import { BaseBrush } from './base_brush.class'; + +export abstract class ShapeBaseBrush extends BaseBrush { + shape: T | undefined; + stroke = ''; + fill = ''; + + abstract create(): T; + + protected build() { + this.shape = this.create(); + this.shape.set('canvas', this.canvas); + this.setStyles(); + } + + setStyles() { + this.shape?.set({ + stroke: this.stroke || this.color, + fill: this.fill || this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray, + }); + } + + protected finalize() { + const shape = this.shape; + if (!shape) return; + shape.setCoords(); + this.canvas.add(this.shape); + this.canvas.fire('path:created', { path: this.shape }); + this.canvas.clearContext(this.canvas.contextTop); + this.shape = undefined; + } + + _setBrushStyles() { + this.setStyles(); + } + + _render(ctx = this.canvas.contextTop) { + this.canvas.clearContext(this.canvas.contextTop); + ctx.save(); + const t = this.canvas.viewportTransform; + const offset = new Point().transform(t); + ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); + this.shape!.transform(ctx); + this.shape!._render(ctx); + ctx.restore(); + } +} + +fabric.ShapeBaseBrush = ShapeBaseBrush; diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/ShapeBrush.ts index 605d994a82c..a2f676334b3 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/ShapeBrush.ts @@ -3,39 +3,36 @@ import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; import { ModifierKey } from '../typedefs'; -import { BaseBrush, TBrushEventData } from './base_brush.class'; +import { TBrushEventData } from './base_brush.class'; +import { ShapeBaseBrush } from './ShapeBaseBrush'; -export abstract class ShapeBaseBrush extends BaseBrush { - shape: T | undefined; - stroke = ''; - fill = ''; +export class ShapeBrush< + T extends typeof FabricObject = typeof Rect +> extends ShapeBaseBrush> { + /** + * class to build shape from + */ + builder: T = Rect as unknown as T; + + /** + * set to `true` for the shape to be centered on mouse/touch down + */ centered = false; + /** - * The event modifier key that makes the brush draw a circle. + * The event modifier key that makes the brush symmetric. */ modifierKey?: ModifierKey = 'shiftKey'; - symmetric?: boolean; - - private start: Point; - abstract create(): T; + /** + * set to `true` for the shape to be symmetric + */ + symmetric?: boolean; - protected build() { - this.shape = this.create(); - this.shape.set('canvas', this.canvas); - this.setStyles(); - } + protected start: Point; - setStyles() { - this.shape?.set({ - stroke: this.stroke || this.color, - fill: this.fill || this.color, - strokeWidth: this.width, - strokeLineCap: this.strokeLineCap, - strokeMiterLimit: this.strokeMiterLimit, - strokeLineJoin: this.strokeLineJoin, - strokeDashArray: this.strokeDashArray, - }); + create() { + return new this.builder() as InstanceType; } protected setBounds(a: Point, b: Point) { @@ -63,26 +60,11 @@ export abstract class ShapeBaseBrush extends BaseBrush { } } - protected finalize() { - const shape = this.shape; - if (!shape) return; - shape.setCoords(); - this.canvas.add(this.shape); - this.canvas.fire('path:created', { path: this.shape }); - this.canvas.clearContext(this.canvas.contextTop); - this.shape = undefined; - } - - _setBrushStyles() { - this.setStyles(); - } - onMouseDown(pointer: Point) { this.build(); this.start = pointer; } - // eslint-disable-next-line @typescript-eslint/no-unused-vars onMouseMove(pointer: Point, ev: TBrushEventData) { this.symmetric = this.modifierKey && ev.e[this.modifierKey]; this.setBounds(this.start, pointer); @@ -93,25 +75,6 @@ export abstract class ShapeBaseBrush extends BaseBrush { this.setBounds(this.start, ev.pointer); this.finalize(); } - - _render(ctx = this.canvas.contextTop) { - this.canvas.clearContext(this.canvas.contextTop); - ctx.save(); - const t = this.canvas.viewportTransform; - const offset = new Point().transform(t); - ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); - this.shape!.transform(ctx); - this.shape!._render(ctx); - ctx.restore(); - } -} - -export class ShapeBrush extends ShapeBaseBrush { - builder = Rect; - create() { - return new this.builder(); - } } -fabric.ShapeBaseBrush = ShapeBaseBrush; fabric.ShapeBrush = ShapeBrush; From 4580f4145095ca84d4214b4079e7efa8184af51e Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 22:20:02 +0200 Subject: [PATCH 041/153] Update ShapeBaseBrush.ts --- src/brushes/ShapeBaseBrush.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/brushes/ShapeBaseBrush.ts b/src/brushes/ShapeBaseBrush.ts index 60c6e90d346..43e1d1edd6f 100644 --- a/src/brushes/ShapeBaseBrush.ts +++ b/src/brushes/ShapeBaseBrush.ts @@ -32,6 +32,7 @@ export abstract class ShapeBaseBrush extends BaseBrush { const shape = this.shape; if (!shape) return; shape.setCoords(); + this.canvas.fire('before:path:created', { path: this.shape }); this.canvas.add(this.shape); this.canvas.fire('path:created', { path: this.shape }); this.canvas.clearContext(this.canvas.contextTop); From 6ae1ea3da1da887343fa9a11980ef76f98874290 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 23:30:47 +0200 Subject: [PATCH 042/153] rename --- src/brushes/{CircularShapeBrush.ts => DrawOval.ts} | 6 +++--- src/brushes/{PolyBrush.ts => DrawPoly.ts} | 6 +++--- src/brushes/{ShapeBrush.ts => DrawShape.ts} | 8 ++++---- src/brushes/{ShapeBaseBrush.ts => DrawShapeBase.ts} | 4 ++-- src/brushes/index.ts | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) rename src/brushes/{CircularShapeBrush.ts => DrawOval.ts} (84%) rename src/brushes/{PolyBrush.ts => DrawPoly.ts} (89%) rename src/brushes/{ShapeBrush.ts => DrawShape.ts} (92%) rename src/brushes/{ShapeBaseBrush.ts => DrawShapeBase.ts} (92%) diff --git a/src/brushes/CircularShapeBrush.ts b/src/brushes/DrawOval.ts similarity index 84% rename from src/brushes/CircularShapeBrush.ts rename to src/brushes/DrawOval.ts index 1736c2ec72e..df26bf8fe44 100644 --- a/src/brushes/CircularShapeBrush.ts +++ b/src/brushes/DrawOval.ts @@ -1,9 +1,9 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Ellipse } from '../shapes/ellipse.class'; -import { ShapeBrush } from './ShapeBrush'; +import { DrawShape } from './DrawShape'; -export class CircularShapeBrush extends ShapeBrush { +export class DrawOval extends DrawShape { builder = Ellipse; protected setBounds(a: Point, b: Point) { @@ -34,4 +34,4 @@ export class CircularShapeBrush extends ShapeBrush { } } -fabric.CircularShapeBrush = CircularShapeBrush; +fabric.DrawOval = DrawOval; diff --git a/src/brushes/PolyBrush.ts b/src/brushes/DrawPoly.ts similarity index 89% rename from src/brushes/PolyBrush.ts rename to src/brushes/DrawPoly.ts index 099d0e117b9..851ba65ca58 100644 --- a/src/brushes/PolyBrush.ts +++ b/src/brushes/DrawPoly.ts @@ -2,9 +2,9 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; -import { ShapeBaseBrush } from './ShapeBaseBrush'; +import { DrawShapeBase } from './DrawShapeBase'; -export class PolyBrush extends ShapeBaseBrush { +export class DrawPoly extends DrawShapeBase { builder = Polygon; private addPoint(pointer: Point) { @@ -57,4 +57,4 @@ export class PolyBrush extends ShapeBaseBrush { } } -fabric.PolyBrush = PolyBrush; +fabric.DrawPoly = DrawPoly; diff --git a/src/brushes/ShapeBrush.ts b/src/brushes/DrawShape.ts similarity index 92% rename from src/brushes/ShapeBrush.ts rename to src/brushes/DrawShape.ts index a2f676334b3..e59d4efe635 100644 --- a/src/brushes/ShapeBrush.ts +++ b/src/brushes/DrawShape.ts @@ -4,11 +4,11 @@ import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; import { ModifierKey } from '../typedefs'; import { TBrushEventData } from './base_brush.class'; -import { ShapeBaseBrush } from './ShapeBaseBrush'; +import { DrawShapeBase } from './DrawShapeBase'; -export class ShapeBrush< +export class DrawShape< T extends typeof FabricObject = typeof Rect -> extends ShapeBaseBrush> { +> extends DrawShapeBase> { /** * class to build shape from */ @@ -77,4 +77,4 @@ export class ShapeBrush< } } -fabric.ShapeBrush = ShapeBrush; +fabric.DrawShape = DrawShape; diff --git a/src/brushes/ShapeBaseBrush.ts b/src/brushes/DrawShapeBase.ts similarity index 92% rename from src/brushes/ShapeBaseBrush.ts rename to src/brushes/DrawShapeBase.ts index 43e1d1edd6f..4c54eb07202 100644 --- a/src/brushes/ShapeBaseBrush.ts +++ b/src/brushes/DrawShapeBase.ts @@ -3,7 +3,7 @@ import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; -export abstract class ShapeBaseBrush extends BaseBrush { +export abstract class DrawShapeBase extends BaseBrush { shape: T | undefined; stroke = ''; fill = ''; @@ -55,4 +55,4 @@ export abstract class ShapeBaseBrush extends BaseBrush { } } -fabric.ShapeBaseBrush = ShapeBaseBrush; +fabric.DrawShapeBase = DrawShapeBase; diff --git a/src/brushes/index.ts b/src/brushes/index.ts index 57c4c3f165e..4ebc69c6850 100644 --- a/src/brushes/index.ts +++ b/src/brushes/index.ts @@ -1,8 +1,8 @@ export * from './base_brush.class'; export * from './circle_brush.class'; -export * from './CircularShapeBrush'; +export * from './DrawOval'; +export * from './DrawPoly'; +export * from './DrawShape'; export * from './pattern_brush.class'; export * from './pencil_brush.class'; -export * from './PolyBrush'; -export * from './ShapeBrush'; export * from './spray_brush.class'; From 942cf90a77e685ab2429f5ed619a1d31eb85a1f9 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 23:32:38 +0200 Subject: [PATCH 043/153] Update DrawShapeBase.ts --- src/brushes/DrawShapeBase.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 4c54eb07202..1a2a46aa933 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,4 +1,3 @@ -import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; @@ -54,5 +53,3 @@ export abstract class DrawShapeBase extends BaseBrush { ctx.restore(); } } - -fabric.DrawShapeBase = DrawShapeBase; From 3bd0685b11bacb9df02a841a99dcbda7c47af026 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 23:35:18 +0200 Subject: [PATCH 044/153] Update DrawShapeBase.ts --- src/brushes/DrawShapeBase.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 1a2a46aa933..220d144361f 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -2,6 +2,9 @@ import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; +/** + * Declarative shape drawing + */ export abstract class DrawShapeBase extends BaseBrush { shape: T | undefined; stroke = ''; From 62541fd482ebe50896eee7fe6f7ecbcd4851af3b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 7 Nov 2022 23:35:50 +0200 Subject: [PATCH 045/153] Update DrawShapeBase.ts --- src/brushes/DrawShapeBase.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 220d144361f..31f51e54da6 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -3,7 +3,7 @@ import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; /** - * Declarative shape drawing + * Declarative shape drawing using pointer events */ export abstract class DrawShapeBase extends BaseBrush { shape: T | undefined; From 4c28bbe1bc58486ae0c5a5e5ab600e2e0ef46031 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 22 Nov 2022 15:43:54 +0200 Subject: [PATCH 046/153] fix use `setBoundingBox` --- src/brushes/DrawPoly.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index 851ba65ca58..55ee1ced846 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -26,8 +26,12 @@ export class DrawPoly extends DrawShapeBase { this.canvas._isCurrentlyDrawing = false; const shape = this.shape; if (!shape) return; - const pos = shape.setDimensions().scalarAdd(this.width / 2); - shape.setPositionByOrigin(pos, 'left', 'top'); + shape.setBoundingBox(true); + const r = this.width / 2; + shape.set({ + left: shape.left + r, + top: shape.top + r, + }); super.finalize(); } From 31cae7f0613fc6d87901c0168087c0b0c7122b53 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 22 Nov 2022 16:30:13 +0200 Subject: [PATCH 047/153] Create draw_shapes.js --- test/unit/draw_shapes.js | 153 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 test/unit/draw_shapes.js diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js new file mode 100644 index 00000000000..adcb8cef3e8 --- /dev/null +++ b/test/unit/draw_shapes.js @@ -0,0 +1,153 @@ + let canvas; + QUnit.module('Draw Shapes', function (hooks) { + hooks.before(() => { + canvas = new fabric.Canvas(); + }); + hooks.afterEach(function() { + canvas.cancelRequestedRender(); + }); + hooks.after(() => { + canvas.dispose(); + }); + + [true, false].forEach((val) => { + QUnit.module(`enableRetinaScaling = ${val}`, (hooks) => { + hooks.beforeEach(function () { + canvas.enableRetinaScaling = val; + }); + hooks.afterEach(() => canvas.off()); + + function runShapeBrushTest(brush, assert, e = {}) { + var fireBeforePathCreatedEvent = false; + var firePathCreatedEvent = false; + var added = null; + canvas.on('before:path:created', function () { + fireBeforePathCreatedEvent = true; + }); + canvas.on('path:created', function (opt) { + firePathCreatedEvent = true; + added = opt.path; + }); + var pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); + var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); + var pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); + brush.onMouseDown(pointer, { e }); + brush.onMouseMove(pointer2, { e }); + brush.onMouseMove(pointer3, { e }); + brush.onMouseMove(pointer2, { e }); + brush.onMouseMove(pointer3, { e }); + brush.onMouseUp({ e, pointer: pointer3 }); + assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); + assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); + return added; + } + + QUnit.test('Draw Shape', function (assert) { + const brush = new fabric.DrawShape(canvas); + brush.width = 5; + const shape = runShapeBrushTest(brush, assert); + assert.ok(shape instanceof fabric.Rect, 'a rect is added'); + assert.equal(shape.strokeWidth, 5, 'should set width'); + assert.equal(shape.width, 10, 'should set width'); + assert.equal(shape.height, 15, 'should set height'); + assert.deepEqual( + shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + + QUnit.test('Draw Shape + symmetric', function (assert) { + const shape = runShapeBrushTest(new fabric.DrawShape(canvas), assert, { + shiftKey: true + }); + assert.equal(Math.round(shape.width), 13, 'should set width to height value'); + assert.equal(Math.round(shape.width), 13, 'should set height'); + assert.deepEqual( + shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + + QUnit.test('Draw Shape + centered', function (assert) { + const brush = new fabric.DrawShape(canvas); + brush.centered = true; + const shape = runShapeBrushTest(brush, assert); + assert.equal(shape.width, 10, 'should set width'); + assert.equal(shape.height, 15, 'should set height'); + assert.deepEqual(shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + }); + + QUnit.test('Draw Shape + symmetric + centered', function (assert) { + const brush = new fabric.DrawShape(canvas); + brush.centered = true; + const shape = runShapeBrushTest(brush, assert, { + shiftKey: true + }); + assert.equal(Math.round(shape.width), 25, 'should set width'); + assert.equal(Math.round(shape.width), 25, 'should set height'); + assert.deepEqual(shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + }); + + QUnit.test('Draw Oval', function (assert) { + const shape = runShapeBrushTest(new fabric.DrawOval(canvas), assert); + assert.equal(shape.rx, 5, 'should set rx'); + assert.equal(shape.ry, 7.5, 'should set ry'); + assert.equal(shape.width, 10, 'should set width'); + assert.equal(shape.height, 15, 'should set height'); + assert.deepEqual( + shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + + QUnit.test('Draw Oval + symmetric', function (assert) { + const shape = runShapeBrushTest(new fabric.DrawOval(canvas), assert, { + shiftKey: true + }); + assert.equal(shape.rx, 7.5, 'should set rx'); + assert.equal(shape.ry, 7.5, 'should set ry'); + assert.equal(shape.width, 15, 'should set width'); + assert.equal(shape.height, 15, 'should set height'); + assert.deepEqual( + shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + + [fabric.Polygon, fabric.Polyline].forEach(builder => { + QUnit.test(`Draw ${builder.name}`, function (assert) { + const brush = new fabric.DrawPoly(canvas); + brush.builder = builder; + const e = {}; + let fireBeforePathCreatedEvent = false; + let firePathCreatedEvent = false; + let poly = null; + canvas.on('before:path:created', function () { + fireBeforePathCreatedEvent = true; + }); + canvas.on('path:created', function (opt) { + firePathCreatedEvent = true; + poly = opt.path; + }); + const pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); + const pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); + const pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); + brush.onMouseDown(pointer, { e }); + brush.onMouseMove(pointer3, { e }); + brush.onMouseUp({ e, pointer: pointer2 }); + brush.onMouseMove(pointer2, { e }); + brush.onDoubleClick(pointer3); + assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); + assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); + assert.ok(poly instanceof builder, `should create poly of type ${builder.name}`); + assert.deepEqual(poly.points, [pointer, pointer2, pointer3], 'should set points'); + assert.deepEqual( + poly.translateToOriginPoint(poly.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + }); + }); + }); + }); + From 39bb29f099cf61f9e89dccebbea0f61b72bf1c75 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 22 Nov 2022 16:42:15 +0200 Subject: [PATCH 048/153] extensive tests! --- test/unit/draw_shapes.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js index adcb8cef3e8..2d5d982c967 100644 --- a/test/unit/draw_shapes.js +++ b/test/unit/draw_shapes.js @@ -100,6 +100,20 @@ 'should preserve position from mousedown'); }); + QUnit.test('Draw Oval + centered', function (assert) { + const brush = new fabric.DrawOval(canvas); + brush.centered = true; + const shape = runShapeBrushTest(brush, assert); + assert.equal(shape.rx, 10, 'should set rx'); + assert.equal(shape.ry, 15, 'should set ry'); + assert.equal(shape.width, 20, 'should set width'); + assert.equal(shape.height, 30, 'should set height'); + assert.deepEqual( + shape.getCenterPoint(), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + QUnit.test('Draw Oval + symmetric', function (assert) { const shape = runShapeBrushTest(new fabric.DrawOval(canvas), assert, { shiftKey: true @@ -114,6 +128,22 @@ 'should preserve position from mousedown'); }); + QUnit.test('Draw Oval + centered + symmetric', function (assert) { + const brush = new fabric.DrawOval(canvas); + brush.centered = true; + const shape = runShapeBrushTest(brush, assert, { + shiftKey: true + }); + assert.equal(Math.round(shape.rx), 18, 'should set rx'); + assert.equal(Math.round(shape.ry), 18, 'should set ry'); + assert.equal(Math.round(shape.width), 36, 'should set width'); + assert.equal(Math.round(shape.height), 36, 'should set height'); + assert.deepEqual( + shape.getCenterPoint(), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + }); + [fabric.Polygon, fabric.Polyline].forEach(builder => { QUnit.test(`Draw ${builder.name}`, function (assert) { const brush = new fabric.DrawPoly(canvas); From 1e1db9ab5d4a9aa252014bc09238defbd38c220b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 13:56:56 +0200 Subject: [PATCH 049/153] expose super class method `transform` --- src/brushes/DrawShapeBase.ts | 10 +++++++--- src/brushes/base_brush.class.ts | 9 +++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 31f51e54da6..bc3134c6633 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -45,12 +45,16 @@ export abstract class DrawShapeBase extends BaseBrush { this.setStyles(); } - _render(ctx = this.canvas.contextTop) { - this.canvas.clearContext(this.canvas.contextTop); - ctx.save(); + transform(ctx: CanvasRenderingContext2D) { const t = this.canvas.viewportTransform; const offset = new Point().transform(t); ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); + } + + _render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + this.canvas.clearContext(ctx); + ctx.save(); + this.transform(ctx); this.shape!.transform(ctx); this.shape!._render(ctx); ctx.restore(); diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index e9beba7f59a..df63145cc93 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -100,15 +100,16 @@ export abstract class BaseBrush { ctx.setLineDash(this.strokeDashArray || []); } + transform(ctx: CanvasRenderingContext2D) { + ctx.transform(...this.canvas.viewportTransform); + } + /** * Sets the transformation on given context - * @param {CanvasRenderingContext2D} ctx context to render on - * @private */ protected _saveAndTransform(ctx: CanvasRenderingContext2D) { - const v = this.canvas.viewportTransform; ctx.save(); - ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]); + this.transform(ctx); } protected needsFullRender() { From 228b0a78db13e844c398e386610e975c5709f49f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 14:20:30 +0200 Subject: [PATCH 050/153] BEAKING: brush `_render`, `render` --- src/__types__.ts | 2 + src/brushes/DrawPoly.ts | 2 +- src/brushes/DrawShape.ts | 2 +- src/brushes/DrawShapeBase.ts | 4 +- src/brushes/base_brush.class.ts | 95 +++++++++++++++++++++++++++---- src/brushes/circle_brush.class.ts | 13 ++--- src/brushes/pencil_brush.class.ts | 51 +++++++++-------- src/brushes/spray_brush.class.ts | 9 +-- src/canvas.class.ts | 2 +- src/mixins/eraser_brush.mixin.ts | 2 +- src/shapes/object.class.ts | 2 +- 11 files changed, 129 insertions(+), 55 deletions(-) diff --git a/src/__types__.ts b/src/__types__.ts index 2ac2cd9623c..295f4c78c1c 100644 --- a/src/__types__.ts +++ b/src/__types__.ts @@ -10,6 +10,8 @@ export type Canvas = StaticCanvas & { altActionKey: ModifierKey; uniScaleKey: ModifierKey; uniformScaling: boolean; + contextTop: CanvasRenderingContext2D; + getTopContext(): CanvasRenderingContext2D; } & Record; export type StaticCanvas = Record & { getZoom(): number; diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index 55ee1ced846..da793c447f3 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -14,7 +14,7 @@ export class DrawPoly extends DrawShapeBase { private replacePoint(pointer: Point) { this.shape!.points.pop(); this.addPoint(pointer); - this._render(); + this.render(); } create() { diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index e59d4efe635..e908bce3cb8 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -68,7 +68,7 @@ export class DrawShape< onMouseMove(pointer: Point, ev: TBrushEventData) { this.symmetric = this.modifierKey && ev.e[this.modifierKey]; this.setBounds(this.start, pointer); - this._render(); + this.render(); } onMouseUp(ev: TBrushEventData) { diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index bc3134c6633..2369a028a58 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -51,10 +51,8 @@ export abstract class DrawShapeBase extends BaseBrush { ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); } - _render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { - this.canvas.clearContext(ctx); + protected _render(ctx: CanvasRenderingContext2D) { ctx.save(); - this.transform(ctx); this.shape!.transform(ctx); this.shape!._render(ctx); ctx.restore(); diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index df63145cc93..d812beab4dc 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -1,7 +1,13 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; import type { Point } from '../point.class'; +import { FabricObject } from '../shapes/fabricObject.class'; import { TEvent } from '../typedefs'; +import { + multiplyTransformMatrices, + invertTransform, +} from '../util/misc/matrix'; +import { applyTransformToObject } from '../util/misc/objectTransforms'; import type { Canvas, Shadow } from '../__types__'; export type TBrushEventData = TEvent & { pointer: Point }; @@ -69,6 +75,13 @@ export abstract class BaseBrush { limitedToCanvasSize = false; + /** + * Same as FabricObject `clipPath` property. + * The clip path is positioned relative to the top left corner of the viewport. + * The `absolutePositioned` property renders the clip path w/o viewport transform. + */ + clipPath?: FabricObject; + /** * @todo add type */ @@ -78,7 +91,7 @@ export abstract class BaseBrush { this.canvas = canvas; } - abstract _render(): void; + protected abstract _render(ctx: CanvasRenderingContext2D): void; abstract onMouseDown(pointer: Point, ev: TBrushEventData): void; abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; /** @@ -104,17 +117,13 @@ export abstract class BaseBrush { ctx.transform(...this.canvas.viewportTransform); } - /** - * Sets the transformation on given context - */ - protected _saveAndTransform(ctx: CanvasRenderingContext2D) { - ctx.save(); - this.transform(ctx); - } - protected needsFullRender() { const color = new Color(this.color); - return color.getAlpha() < 1 || !!this.shadow; + return ( + color.getAlpha() < 1 || + !!this.shadow || + (this.clipPath && this.clipPath.isCacheDirty()) + ); } /** @@ -161,6 +170,72 @@ export abstract class BaseBrush { pointer.y > this.canvas.getHeight() ); } + + /** + * needed for `absolutePositioned` `clipPath` + * @private + */ + calcTransformMatrix() { + return this.canvas.viewportTransform; + } + + /** + * @private + * @param {CanvasRenderingContext2D} ctx + * @param {FabricObject} clipPath + */ + drawClipPathOnCache(ctx: CanvasRenderingContext2D, clipPath: FabricObject) { + // TODO: no proto calls + FabricObject.prototype.drawClipPathOnCache.call(this, ctx, clipPath); + } + + /** + * @private + * @param {CanvasRenderingContext2D} ctx + * @param {FabricObject} clipPath + */ + _drawClipPath(ctx: CanvasRenderingContext2D, clipPath?: FabricObject) { + if (!clipPath) { + return; + } + ctx.save(); + // TODO: no proto calls + FabricObject.prototype._drawClipPath.call(this, ctx, clipPath); + ctx.restore(); + } + + /** + * Adds the clip path to the resulting object created by the brush + */ + protected _addClipPathToResult(result: FabricObject) { + if (!this.clipPath) { + return Promise.resolve(); + } + let t = result.calcTransformMatrix(); + if (this.clipPath.absolutePositioned) { + t = multiplyTransformMatrices(this.calcTransformMatrix(), t); + } + return this.clipPath.clone(['inverted']).then((clipPath) => { + const desiredTransform = multiplyTransformMatrices( + invertTransform(t), + clipPath.calcTransformMatrix() + ); + applyTransformToObject(clipPath, desiredTransform); + result.set('clipPath', clipPath); + }); + } + + /** + * Render the full state of the brush + */ + render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + this.canvas.clearContext(ctx); + ctx.save(); + this.transform(ctx); + this._render(ctx); + this._drawClipPath(ctx, this.clipPath); + ctx.restore(); + } } fabric.BaseBrush = BaseBrush; diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 03b8651b7eb..8ebb385079c 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -39,7 +39,8 @@ export class CircleBrush extends BaseBrush { drawDot(pointer: Point) { const point = this.addPoint(pointer), ctx = this.canvas.contextTop; - this._saveAndTransform(ctx); + ctx.save(); + this.transform(ctx); this.dot(ctx, point); ctx.restore(); } @@ -66,14 +67,11 @@ export class CircleBrush extends BaseBrush { * Render the full state of the brush * @private */ - _render() { - const ctx = this.canvas.contextTop, - points = this.points; - this._saveAndTransform(ctx); + protected _render(ctx: CanvasRenderingContext2D) { + const points = this.points; for (let i = 0; i < points.length; i++) { this.dot(ctx, points[i]); } - ctx.restore(); } /** @@ -85,9 +83,8 @@ export class CircleBrush extends BaseBrush { return; } if (this.needsFullRender()) { - this.canvas.clearContext(this.canvas.contextTop); this.addPoint(pointer); - this._render(); + this.render(); } else { this.drawDot(pointer); } diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index d73ec803d8a..9ddcaa8f5b0 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -76,7 +76,7 @@ export class PencilBrush extends BaseBrush { // capture coordinates immediately // this allows to draw dots (when movement never occurs) this._addPoint(pointer); - this._render(); + this.render(); } /** @@ -94,26 +94,9 @@ export class PencilBrush extends BaseBrush { if (this._addPoint(pointer) && this._points.length > 1) { if (this.needsFullRender()) { // redraw curve - // clear top canvas - this.canvas.clearContext(this.canvas.contextTop); - this._render(); + this.render(); } else { - const points = this._points, - length = points.length, - ctx = this.canvas.contextTop; - // draw the curve update - this._saveAndTransform(ctx); - if (this.oldEnd) { - ctx.beginPath(); - ctx.moveTo(this.oldEnd.x, this.oldEnd.y); - } - this.oldEnd = PencilBrush.drawSegment( - ctx, - points[length - 2], - points[length - 1] - ); - ctx.stroke(); - ctx.restore(); + this._renderCurve(); } } } @@ -171,15 +154,37 @@ export class PencilBrush extends BaseBrush { this._hasStraightLine = false; } + /** + * draw the curve update + */ + protected _renderCurve( + ctx: CanvasRenderingContext2D = this.canvas.contextTop + ) { + const points = this._points, + length = points.length; + ctx.save(); + this.transform(ctx); + if (this.oldEnd) { + ctx.beginPath(); + ctx.moveTo(this.oldEnd.x, this.oldEnd.y); + } + this.oldEnd = PencilBrush.drawSegment( + ctx, + points[length - 2], + points[length - 1] + ); + ctx.stroke(); + ctx.restore(); + } + /** * Draw a smooth path on the topCanvas using quadraticCurveTo * @private - * @param {CanvasRenderingContext2D} [ctx] + * @param {CanvasRenderingContext2D} ctx */ - _render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + protected _render(ctx: CanvasRenderingContext2D) { let p1 = this._points[0], p2 = this._points[1]; - this._saveAndTransform(ctx); ctx.beginPath(); //if we only have 2 points in the path and they are the same //it means that the user only clicked the canvas without moving the mouse diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index 88fdd0b0a38..1ab715add0c 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -169,7 +169,8 @@ export class SprayBrush extends BaseBrush { const ctx = this.canvas.contextTop; ctx.fillStyle = this.color; - this._saveAndTransform(ctx); + ctx.save(); + this.transform(ctx); for (let i = 0; i < sprayChunck.length; i++) { const point = sprayChunck[i]; @@ -183,12 +184,8 @@ export class SprayBrush extends BaseBrush { /** * Render all spray chunks */ - _render() { - const ctx = this.canvas.contextTop; + protected _render(ctx: CanvasRenderingContext2D) { ctx.fillStyle = this.color; - - this._saveAndTransform(ctx); - for (let i = 0; i < this.sprayChunks.length; i++) { this.renderChunck(this.sprayChunks[i]); } diff --git a/src/canvas.class.ts b/src/canvas.class.ts index a5d8a2f8312..1ff5d14038d 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -527,7 +527,7 @@ import { saveObjectTransform } from './util/misc/objectTransforms'; renderTopLayer: function (ctx) { ctx.save(); if (this.isDrawingMode && this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush._render(); + this.freeDrawingBrush && this.freeDrawingBrush.render(ctx); this.contextTopDirty = true; } // we render the top context - last object diff --git a/src/mixins/eraser_brush.mixin.ts b/src/mixins/eraser_brush.mixin.ts index dd8eba1ba83..8edf8f87576 100644 --- a/src/mixins/eraser_brush.mixin.ts +++ b/src/mixins/eraser_brush.mixin.ts @@ -329,7 +329,7 @@ import { Point } from '../point.class'; */ _renderOverlay: function (ctx) { __renderOverlay.call(this, ctx); - this.isErasing() && this.freeDrawingBrush._render(); + this.isErasing() && this.freeDrawingBrush.render(ctx); }, }); diff --git a/src/shapes/object.class.ts b/src/shapes/object.class.ts index 1a3ad04d2c6..43bca7f1c6d 100644 --- a/src/shapes/object.class.ts +++ b/src/shapes/object.class.ts @@ -1662,7 +1662,7 @@ export class FabricObject extends ObjectGeometry { * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output * @returns {Promise} */ - clone(propertiesToInclude: (keyof this)[]) { + clone(propertiesToInclude: (keyof this)[]): Promise { const objectForm = this.toObject(propertiesToInclude); // todo ok understand this. is static or it isn't? return this.constructor.fromObject(objectForm); From b54391036836e33da2cc123ad5ffe1839f2cd3df Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 15:39:07 +0200 Subject: [PATCH 051/153] `finalize`, `finalizeShape` --- src/brushes/DrawPoly.ts | 23 +++++--- src/brushes/DrawShapeBase.ts | 14 ++--- src/brushes/base_brush.class.ts | 61 +++++++++++++-------- src/brushes/circle_brush.class.ts | 88 ++++++++++++++---------------- src/brushes/pattern_brush.class.ts | 20 +++---- src/brushes/pencil_brush.class.ts | 47 +++++----------- src/brushes/spray_brush.class.ts | 86 +++++++++++++---------------- 7 files changed, 160 insertions(+), 179 deletions(-) diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index da793c447f3..b926185baa1 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -21,17 +21,22 @@ export class DrawPoly extends DrawShapeBase { return new this.builder(); } - protected finalize() { + protected finalizeShape() { + const shape = super.finalizeShape(); + if (shape) { + shape.setBoundingBox(true); + const r = this.width / 2; + shape.set({ + left: shape.left + r, + top: shape.top + r, + }); + } + return shape; + } + + protected async finalize() { // release interaction this.canvas._isCurrentlyDrawing = false; - const shape = this.shape; - if (!shape) return; - shape.setBoundingBox(true); - const r = this.width / 2; - shape.set({ - left: shape.left + r, - top: shape.top + r, - }); super.finalize(); } diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 2369a028a58..db0a51dcc39 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -5,7 +5,9 @@ import { BaseBrush } from './base_brush.class'; /** * Declarative shape drawing using pointer events */ -export abstract class DrawShapeBase extends BaseBrush { +export abstract class DrawShapeBase< + T extends FabricObject +> extends BaseBrush { shape: T | undefined; stroke = ''; fill = ''; @@ -30,15 +32,11 @@ export abstract class DrawShapeBase extends BaseBrush { }); } - protected finalize() { + protected finalizeShape() { const shape = this.shape; - if (!shape) return; - shape.setCoords(); - this.canvas.fire('before:path:created', { path: this.shape }); - this.canvas.add(this.shape); - this.canvas.fire('path:created', { path: this.shape }); - this.canvas.clearContext(this.canvas.contextTop); + // we release the ref here and not in `finalize` (async) to avoid a race condition this.shape = undefined; + return shape; } _setBrushStyles() { diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index d812beab4dc..a40926fd092 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -3,11 +3,8 @@ import { Color } from '../color'; import type { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { TEvent } from '../typedefs'; -import { - multiplyTransformMatrices, - invertTransform, -} from '../util/misc/matrix'; -import { applyTransformToObject } from '../util/misc/objectTransforms'; +import { multiplyTransformMatrices } from '../util/misc/matrix'; +import { sendObjectToPlane } from '../util/misc/planeChange'; import type { Canvas, Shadow } from '../__types__'; export type TBrushEventData = TEvent & { pointer: Point }; @@ -15,7 +12,7 @@ export type TBrushEventData = TEvent & { pointer: Point }; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ -export abstract class BaseBrush { +export abstract class BaseBrush { /** * Color of a brush * @type String @@ -98,6 +95,7 @@ export abstract class BaseBrush { * @returns true if brush should continue blocking interaction */ abstract onMouseUp(ev: TBrushEventData): boolean | void; + protected abstract finalizeShape(): T | undefined; /** * Sets brush styles @@ -150,9 +148,9 @@ export abstract class BaseBrush { * Removes brush shadow styles * @private */ - protected _resetShadow() { - const ctx = this.canvas.contextTop; - + protected _resetShadow( + ctx: CanvasRenderingContext2D = this.canvas.contextTop + ) { ctx.shadowColor = ''; ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0; } @@ -207,22 +205,20 @@ export abstract class BaseBrush { /** * Adds the clip path to the resulting object created by the brush */ - protected _addClipPathToResult(result: FabricObject) { + protected async addClipPathToResult(result: FabricObject) { if (!this.clipPath) { - return Promise.resolve(); - } - let t = result.calcTransformMatrix(); - if (this.clipPath.absolutePositioned) { - t = multiplyTransformMatrices(this.calcTransformMatrix(), t); + return; } - return this.clipPath.clone(['inverted']).then((clipPath) => { - const desiredTransform = multiplyTransformMatrices( - invertTransform(t), - clipPath.calcTransformMatrix() - ); - applyTransformToObject(clipPath, desiredTransform); - result.set('clipPath', clipPath); - }); + const t = result.calcTransformMatrix(); + const clipPath = await this.clipPath.clone(['inverted']); + sendObjectToPlane( + clipPath, + this.clipPath.absolutePositioned + ? multiplyTransformMatrices(this.calcTransformMatrix(), t) + : t + ); + result.set('clipPath', clipPath); + return clipPath; } /** @@ -236,6 +232,25 @@ export abstract class BaseBrush { this._drawClipPath(ctx, this.clipPath); ctx.restore(); } + + protected async finalize() { + this._resetShadow(); + const shape = this.finalizeShape(); + if (shape) { + await this.addClipPathToResult(shape); + shape.set('canvas', this.canvas); + shape.setCoords(); + this.canvas.fire('interaction:completed', { result: shape }); + // TODO: don't add to canvas by default + this.canvas.fire('before:path:created', { path: shape }); + const originalRenderOnAddRemove = this.canvas.renderOnAddRemove; + this.canvas.renderOnAddRemove = false; + this.canvas.add(shape); + this.canvas.fire('path:created', { path: shape }); + this.canvas.renderOnAddRemove = originalRenderOnAddRemove; + } + this.canvas.requestRenderAll(); + } } fabric.BaseBrush = BaseBrush; diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 8ebb385079c..1dd9ce93682 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -1,6 +1,7 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; import { Point } from '../point.class'; +import { FabricObject } from '../shapes/fabricObject.class'; import { getRandomInt } from '../util/internals'; import { Canvas } from '../__types__'; import { BaseBrush } from './base_brush.class'; @@ -17,7 +18,7 @@ export type CircleBrushPoint = { fill: string; }; -export class CircleBrush extends BaseBrush { +export class CircleBrush extends BaseBrush { /** * Width of a brush * @type Number @@ -32,6 +33,23 @@ export class CircleBrush extends BaseBrush { this.points = []; } + /** + * @param {Object} pointer + * @return {Point} Just added pointer point + */ + addPoint({ x, y }: Point) { + const pointerPoint: CircleBrushPoint = { + x, + y, + radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2, + fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(), + }; + + this.points.push(pointerPoint); + + return pointerPoint; + } + /** * Invoked inside on mouse down and mouse move * @param {Point} pointer @@ -53,6 +71,26 @@ export class CircleBrush extends BaseBrush { ctx.fill(); } + protected finalizeShape() { + const circles = []; + for (let i = 0; i < this.points.length; i++) { + const point = this.points[i]; + circles.push( + new Circle({ + radius: point.radius, + left: point.x, + top: point.y, + originX: 'center', + originY: 'center', + fill: point.fill, + }) + ); + } + return new Group(circles, { + shadow: this.shadow ? new Shadow(this.shadow) : undefined, + }); + } + /** * Invoked on mouse down */ @@ -94,53 +132,7 @@ export class CircleBrush extends BaseBrush { * Invoked on mouse up */ onMouseUp() { - const originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - - const circles = []; - - for (let i = 0; i < this.points.length; i++) { - const point = this.points[i], - circle = new Circle({ - radius: point.radius, - left: point.x, - top: point.y, - originX: 'center', - originY: 'center', - fill: point.fill, - }); - - this.shadow && (circle.shadow = new Shadow(this.shadow)); - - circles.push(circle); - } - const group = new Group(circles, { canvas: this.canvas }); - - this.canvas.fire('before:path:created', { path: group }); - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.requestRenderAll(); - } - - /** - * @param {Object} pointer - * @return {Point} Just added pointer point - */ - addPoint({ x, y }: Point) { - const pointerPoint: CircleBrushPoint = { - x, - y, - radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2, - fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(), - }; - - this.points.push(pointerPoint); - - return pointerPoint; + this.finalize(); } } diff --git a/src/brushes/pattern_brush.class.ts b/src/brushes/pattern_brush.class.ts index ebde2391a5b..0c3ad1a122d 100644 --- a/src/brushes/pattern_brush.class.ts +++ b/src/brushes/pattern_brush.class.ts @@ -1,5 +1,4 @@ import { fabric } from '../../HEADER'; -import { PathData } from '../typedefs'; import { createCanvasElement } from '../util/misc/dom'; import { Canvas } from '../__types__'; import { PencilBrush } from './pencil_brush.class'; @@ -68,15 +67,16 @@ export class PatternBrush extends PencilBrush { /** * Creates path */ - createPath(pathData: PathData) { - const path = super.createPath(pathData), - topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2); - - path.stroke = new Pattern({ - source: this.source || this.getPatternSrcFunction(), - offsetX: -topLeft.x, - offsetY: -topLeft.y, - }); + protected finalizeShape() { + const path = super.finalizeShape(); + if (path) { + const topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2); + path.stroke = new Pattern({ + source: this.source || this.getPatternSrcFunction(), + offsetX: -topLeft.x, + offsetY: -topLeft.y, + }); + } return path; } } diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 9ddcaa8f5b0..c1feb2d9994 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -1,5 +1,6 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; +import { Path } from '../shapes/path.class'; import { TEvent, ModifierKey, PathData } from '../typedefs'; import { getSmoothPathFromPoints, joinPath } from '../util/path'; import { Canvas } from '../__types__'; @@ -8,7 +9,7 @@ import { BaseBrush } from './base_brush.class'; /** * @todo remove transient */ -const { Path, Shadow } = fabric; +const { Shadow } = fabric; /** * @private @@ -19,7 +20,7 @@ function isEmptySVGPath(pathData: PathData): boolean { return joinPath(pathData) === 'M 0 0 Q 0 0 0 0 L 0 0'; } -export class PencilBrush extends BaseBrush { +export class PencilBrush extends BaseBrush { /** * Discard points that are less than `decimate` pixel distant from each other * @type Number @@ -110,7 +111,7 @@ export class PencilBrush extends BaseBrush { } this.drawStraightLine = false; this.oldEnd = undefined; - this._finalizeAndAddPath(); + this.finalize(); return false; } @@ -224,10 +225,17 @@ export class PencilBrush extends BaseBrush { /** * Creates a Path object to add on canvas - * @param {PathData} pathData Path data * @return {Path} Path to add on canvas */ - createPath(pathData: PathData) { + protected finalizeShape() { + const pathData = this.convertPointsToSVGPath(this._points); + if (isEmptySVGPath(pathData)) { + // do not create 0 width/height paths, as they are + // rendered inconsistently across browsers + // Firefox 4, for example, renders a dot, + // whereas Chrome 10 renders nothing + return; + } const path = new Path(pathData, { fill: null, stroke: this.color, @@ -241,7 +249,6 @@ export class PencilBrush extends BaseBrush { this.shadow.affectStroke = true; path.shadow = new Shadow(this.shadow); } - return path; } @@ -273,37 +280,13 @@ export class PencilBrush extends BaseBrush { return newPoints; } - /** - * On mouseup after drawing the path on contextTop canvas - * we use the points captured to create an new Path object - * and add it to the canvas. - */ - _finalizeAndAddPath() { + protected async finalize() { const ctx = this.canvas.contextTop; ctx.closePath(); if (this.decimate) { this._points = this.decimatePoints(this._points, this.decimate); } - const pathData = this.convertPointsToSVGPath(this._points); - if (isEmptySVGPath(pathData)) { - // do not create 0 width/height paths, as they are - // rendered inconsistently across browsers - // Firefox 4, for example, renders a dot, - // whereas Chrome 10 renders nothing - this.canvas.requestRenderAll(); - return; - } - - const path = this.createPath(pathData); - this.canvas.clearContext(this.canvas.contextTop); - this.canvas.fire('before:path:created', { path: path }); - this.canvas.add(path); - this.canvas.requestRenderAll(); - path.setCoords(); - this._resetShadow(); - - // fire event 'path' created - this.canvas.fire('path:created', { path: path }); + super.finalize(); } } diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index 1ab715add0c..5d9fd338d8d 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -1,5 +1,6 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; +import { FabricObject } from '../shapes/fabricObject.class'; import { getRandomInt } from '../util/internals'; import { Canvas, Rect } from '../__types__'; import { BaseBrush } from './base_brush.class'; @@ -36,7 +37,7 @@ function getUniqueRects(rects: Rect[]) { return uniqueRectsArray; } -export class SprayBrush extends BaseBrush { +export class SprayBrush extends BaseBrush { /** * Width of a spray * @type Number @@ -94,6 +95,33 @@ export class SprayBrush extends BaseBrush { this.sprayChunk = []; } + protected finalizeShape() { + const rects = []; + for (let i = 0; i < this.sprayChunks.length; i++) { + const sprayChunk = this.sprayChunks[i]; + for (let j = 0; j < sprayChunk.length; j++) { + const chunk = sprayChunk[j]; + const rect = new Rect({ + width: chunk.width, + height: chunk.width, + left: chunk.x + 1, + top: chunk.y + 1, + originX: 'center', + originY: 'center', + fill: this.color, + }); + rects.push(rect); + } + } + return new Group(this.optimizeOverlapping ? getUniqueRects(rects) : rects, { + objectCaching: true, + layout: 'fixed', + subTargetCheck: false, + interactive: false, + shadow: this.shadow ? new Shadow(this.shadow) : undefined, + }); + } + /** * Invoked on mouse down * @param {Point} pointer @@ -104,7 +132,7 @@ export class SprayBrush extends BaseBrush { this._setShadow(); this.addSprayChunk(pointer); - this.renderChunck(this.sprayChunk); + this.renderChunk(this.sprayChunk); } /** @@ -116,64 +144,24 @@ export class SprayBrush extends BaseBrush { return; } this.addSprayChunk(pointer); - this.renderChunck(this.sprayChunk); + this.renderChunk(this.sprayChunk); } /** * Invoked on mouse up */ onMouseUp() { - const originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - - const rects = []; - - for (let i = 0; i < this.sprayChunks.length; i++) { - const sprayChunk = this.sprayChunks[i]; - for (let j = 0; j < sprayChunk.length; j++) { - const chunck = sprayChunk[j]; - const rect = new Rect({ - width: chunck.width, - height: chunck.width, - left: chunck.x + 1, - top: chunck.y + 1, - originX: 'center', - originY: 'center', - fill: this.color, - }); - rects.push(rect); - } - } - - const group = new Group( - this.optimizeOverlapping ? getUniqueRects(rects) : rects, - { - objectCaching: true, - layout: 'fixed', - subTargetCheck: false, - interactive: false, - } - ); - this.shadow && group.set('shadow', new Shadow(this.shadow)); - this.canvas.fire('before:path:created', { path: group }); - this.canvas.add(group); - this.canvas.fire('path:created', { path: group }); - - this.canvas.clearContext(this.canvas.contextTop); - this._resetShadow(); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; - this.canvas.requestRenderAll(); + this.finalize(); } - renderChunck(sprayChunck: SprayBrushPoint[]) { + renderChunk(sprayChunk: SprayBrushPoint[]) { const ctx = this.canvas.contextTop; - ctx.fillStyle = this.color; - ctx.save(); + ctx.fillStyle = this.color; this.transform(ctx); - for (let i = 0; i < sprayChunck.length; i++) { - const point = sprayChunck[i]; + for (let i = 0; i < sprayChunk.length; i++) { + const point = sprayChunk[i]; ctx.globalAlpha = point.opacity; ctx.fillRect(point.x, point.y, point.width, point.width); } @@ -187,7 +175,7 @@ export class SprayBrush extends BaseBrush { protected _render(ctx: CanvasRenderingContext2D) { ctx.fillStyle = this.color; for (let i = 0; i < this.sprayChunks.length; i++) { - this.renderChunck(this.sprayChunks[i]); + this.renderChunk(this.sprayChunks[i]); } ctx.restore(); } From 6062754061fce6df689d0acc3c7875d44cb2cedd Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 15:42:10 +0200 Subject: [PATCH 052/153] shadow --- src/brushes/DrawShapeBase.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index bc3134c6633..e7cbc0448a6 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,7 +1,11 @@ +import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; +// TODO: remove transient +const { Shadow } = fabric; + /** * Declarative shape drawing using pointer events */ @@ -27,6 +31,7 @@ export abstract class DrawShapeBase extends BaseBrush { strokeMiterLimit: this.strokeMiterLimit, strokeLineJoin: this.strokeLineJoin, strokeDashArray: this.strokeDashArray, + shadow: this.shadow ? new Shadow(this.shadow) : undefined, }); } From f73790a2bab0f1b0e3074ad8eb63a9623761ba1b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 15:52:17 +0200 Subject: [PATCH 053/153] move shadow setter to super --- src/brushes/base_brush.class.ts | 17 ++++++++++++----- src/brushes/circle_brush.class.ts | 6 ++---- src/brushes/pencil_brush.class.ts | 15 ++++----------- src/brushes/spray_brush.class.ts | 3 +-- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index a40926fd092..4b68b2e13d2 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -9,6 +9,11 @@ import type { Canvas, Shadow } from '../__types__'; export type TBrushEventData = TEvent & { pointer: Point }; +/** + * @todo remove transient + */ +const { Shadow } = fabric; + /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ @@ -203,9 +208,9 @@ export abstract class BaseBrush { } /** - * Adds the clip path to the resulting object created by the brush + * clones the brush's clip path and prepares it for the resulting object */ - protected async addClipPathToResult(result: FabricObject) { + protected async createClipPath(result: FabricObject) { if (!this.clipPath) { return; } @@ -217,7 +222,6 @@ export abstract class BaseBrush { ? multiplyTransformMatrices(this.calcTransformMatrix(), t) : t ); - result.set('clipPath', clipPath); return clipPath; } @@ -237,8 +241,11 @@ export abstract class BaseBrush { this._resetShadow(); const shape = this.finalizeShape(); if (shape) { - await this.addClipPathToResult(shape); - shape.set('canvas', this.canvas); + shape.set({ + canvas: this.canvas, + shadow: this.shadow ? new Shadow(this.shadow) : undefined, + clipPath: await this.createClipPath(shape), + }); shape.setCoords(); this.canvas.fire('interaction:completed', { result: shape }); // TODO: don't add to canvas by default diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 1dd9ce93682..199513d3cb1 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -9,7 +9,7 @@ import { BaseBrush } from './base_brush.class'; /** * @todo remove transient */ -const { Circle, Group, Shadow } = fabric; +const { Circle, Group } = fabric; export type CircleBrushPoint = { x: number; @@ -86,9 +86,7 @@ export class CircleBrush extends BaseBrush { }) ); } - return new Group(circles, { - shadow: this.shadow ? new Shadow(this.shadow) : undefined, - }); + return new Group(circles); } /** diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index c1feb2d9994..fea3a489e2a 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -6,11 +6,6 @@ import { getSmoothPathFromPoints, joinPath } from '../util/path'; import { Canvas } from '../__types__'; import { BaseBrush } from './base_brush.class'; -/** - * @todo remove transient - */ -const { Shadow } = fabric; - /** * @private * @param {PathData} pathData SVG path commands @@ -236,7 +231,7 @@ export class PencilBrush extends BaseBrush { // whereas Chrome 10 renders nothing return; } - const path = new Path(pathData, { + return new Path(pathData, { fill: null, stroke: this.color, strokeWidth: this.width, @@ -245,11 +240,6 @@ export class PencilBrush extends BaseBrush { strokeLineJoin: this.strokeLineJoin, strokeDashArray: this.strokeDashArray, }); - if (this.shadow) { - this.shadow.affectStroke = true; - path.shadow = new Shadow(this.shadow); - } - return path; } /** @@ -286,6 +276,9 @@ export class PencilBrush extends BaseBrush { if (this.decimate) { this._points = this.decimatePoints(this._points, this.decimate); } + if (this.shadow) { + this.shadow.affectStroke = true; + } super.finalize(); } } diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index 5d9fd338d8d..0575cb71c50 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -8,7 +8,7 @@ import { BaseBrush } from './base_brush.class'; /** * @todo remove transient */ -const { Group, Rect, Shadow } = fabric; +const { Group, Rect } = fabric; export type SprayBrushPoint = { x: number; @@ -118,7 +118,6 @@ export class SprayBrush extends BaseBrush { layout: 'fixed', subTargetCheck: false, interactive: false, - shadow: this.shadow ? new Shadow(this.shadow) : undefined, }); } From cb6dfe1ce919f39ef331f0e8585d30dcde0a354b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 15:54:07 +0200 Subject: [PATCH 054/153] Update path.class.ts --- src/shapes/path.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shapes/path.class.ts b/src/shapes/path.class.ts index 1516df5217b..b3e1dc95197 100644 --- a/src/shapes/path.class.ts +++ b/src/shapes/path.class.ts @@ -38,7 +38,7 @@ export class Path extends FabricObject { */ constructor( path: PathData | string, - { path: _, left, top, ...options } = {} + { path: _, left, top, ...options }: any = {} ) { super(options); From 01b47dfa0170bdc230d7d2a3a48c623f6bbbffa8 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 16:22:25 +0200 Subject: [PATCH 055/153] adapt eraser - not tested --- src/brushes/pencil_brush.class.ts | 6 +- src/mixins/eraser_brush.mixin.ts | 157 ++++++++++-------------------- 2 files changed, 58 insertions(+), 105 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index fea3a489e2a..45a08d51124 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -270,7 +270,7 @@ export class PencilBrush extends BaseBrush { return newPoints; } - protected async finalize() { + protected finalizePath() { const ctx = this.canvas.contextTop; ctx.closePath(); if (this.decimate) { @@ -279,6 +279,10 @@ export class PencilBrush extends BaseBrush { if (this.shadow) { this.shadow.affectStroke = true; } + } + + protected async finalize() { + this.finalizePath(); super.finalize(); } } diff --git a/src/mixins/eraser_brush.mixin.ts b/src/mixins/eraser_brush.mixin.ts index 8edf8f87576..b3cc6faddb3 100644 --- a/src/mixins/eraser_brush.mixin.ts +++ b/src/mixins/eraser_brush.mixin.ts @@ -345,7 +345,7 @@ import { Point } from '../point.class'; * After erasing is done the created path is added to all intersected objects' `eraser` property. * * In order to update the EraserBrush call `preparePattern`. - * It may come in handy when canvas changes during erasing (i.e animations) and you want the eraser to reflect the changes. + * It may come in handy when canvas changes during erasing (i.e animations) and you want the eraser to reflect the changes (performance may suffer). * * @tutorial {@link http://fabricjs.com/erasing} * @class fabric.EraserBrush @@ -544,25 +544,6 @@ import { Point } from '../point.class'; _setBrushStyles: function (ctx) { this.callSuper('_setBrushStyles', ctx); ctx.strokeStyle = 'black'; - }, - - /** - * **Customiztion** - * - * if you need the eraser to update on each render (i.e animating during erasing) override this method by **adding** the following (performance may suffer): - * @example - * ``` - * if(ctx === this.canvas.contextTop) { - * this.preparePattern(); - * } - * ``` - * - * @override fabric.BaseBrush#_saveAndTransform - * @param {CanvasRenderingContext2D} ctx - */ - _saveAndTransform: function (ctx) { - this.callSuper('_saveAndTransform', ctx); - this._setBrushStyles(ctx); ctx.globalCompositeOperation = ctx === this.canvas.getContext() ? 'destination-out' @@ -596,7 +577,7 @@ import { Point } from '../point.class'; this.preparePattern(); this._isErasing = true; this.canvas.fire('erasing:start'); - this._render(); + this.render(); }, /** @@ -606,44 +587,35 @@ import { Point } from '../point.class'; * * @todo provide a better solution to https://github.com/fabricjs/fabric.js/issues/7984 */ - _render: function () { - var ctx, - lineWidth = this.width; + render: function (ctx) { + var lineWidth = this.width; var t = this.canvas.getRetinaScaling(), s = 1 / t; // clip canvas - ctx = this.canvas.getContext(); // a hack that fixes https://github.com/fabricjs/fabric.js/issues/7984 by reducing path width // the issue's cause is unknown at time of writing (@ShaMan123 06/2022) if (lineWidth - this.erasingWidthAliasing > 0) { this.width = lineWidth - this.erasingWidthAliasing; - this.callSuper('_render', ctx); + this.callSuper('render', this.canvas.getContext()); this.width = lineWidth; } // render brush and mask it with pattern - ctx = this.canvas.contextTop; this.canvas.clearContext(ctx); ctx.save(); ctx.scale(s, s); ctx.drawImage(this._patternCanvas, 0, 0); ctx.restore(); - this.callSuper('_render', ctx); + this.callSuper('render', ctx); }, - /** - * Creates fabric.Path object - * @override - * @private - * @param {(string|number)[][]} pathData Path data - * @return {fabric.Path} Path to add on canvas - * @returns - */ - createPath: function (pathData) { - var path = this.callSuper('createPath', pathData); - path.globalCompositeOperation = this.inverted - ? 'source-over' - : 'destination-out'; - path.stroke = this.inverted ? 'white' : 'black'; + finalizeShape: function () { + var path = this.callSuper('finalizeShape'); + path?.set({ + globalCompositeOperation: this.inverted + ? 'source-over' + : 'destination-out', + stroke: this.inverted ? 'white' : 'black', + }); return path; }, @@ -763,7 +735,7 @@ import { Point } from '../point.class'; }); if (context) { (obj.group ? context.subTargets : context.targets).push(obj); - //context.paths.set(obj, path); + context.paths.set(obj, path); } return path; }); @@ -788,7 +760,7 @@ import { Point } from '../point.class'; this._addPathToObjectEraser(drawable, path).then(function (path) { if (context) { context.drawables[prop] = drawable; - //context.paths.set(drawable, path); + context.paths.set(drawable, path); } return path; }) @@ -797,74 +769,51 @@ import { Point } from '../point.class'; ); }, - /** - * On mouseup after drawing the path on contextTop canvas - * we use the points captured to create an new fabric path object - * and add it to every intersected erasable object. - */ - _finalizeAndAddPath: function () { - var ctx = this.canvas.contextTop, - canvas = this.canvas; - ctx.closePath(); - if (this.decimate) { - this._points = this.decimatePoints(this._points, this.decimate); - } - - // clear - canvas.clearContext(canvas.contextTop); - this._isErasing = false; - - var pathData = - this._points && this._points.length > 1 - ? this.convertPointsToSVGPath(this._points) - : null; - if (!pathData || this._isEmptySVGPath(pathData)) { - canvas.fire('erasing:end'); - // do not create 0 width/height paths, as they are - // rendered inconsistently across browsers - // Firefox 4, for example, renders a dot, - // whereas Chrome 10 renders nothing - canvas.requestRenderAll(); - return; - } - - var path = this.createPath(pathData); - // needed for `intersectsWithObject` - path.setCoords(); - // commense event sequence - canvas.fire('before:path:created', { path: path }); - + finalizeErasing: async function (path) { // finalize erasing - var _this = this; - var context = { + const context = { targets: [], subTargets: [], - //paths: new Map(), + paths: new Map(), drawables: {}, + path, }; - var tasks = canvas._objects.map(function (obj) { - return ( + const tasks = canvas._objects.map( + (obj) => obj.erasable && obj.intersectsWithObject(path, true, true) && - _this._addPathToObjectEraser(obj, path, context) - ); - }); - tasks.push(_this.applyEraserToCanvas(path, context)); - return Promise.all(tasks).then(function () { - // fire erasing:end - canvas.fire( - 'erasing:end', - Object.assign(context, { - path: path, - }) - ); - - canvas.requestRenderAll(); - _this._resetShadow(); + this._addPathToObjectEraser(obj, path, context) + ); + tasks.push(this.applyEraserToCanvas(path, context)); + await Promise.all(tasks); + return context; + }, - // fire event 'path' created - canvas.fire('path:created', { path: path }); - }); + /** + * On mouseup after drawing the path on contextTop canvas + * we use the points captured to create an new fabric path object + * and add it to every intersected erasable object. + */ + finalize: async function () { + this._isErasing = false; + this.finalizePath(); + this._resetShadow(); + const shape = this.finalizeShape(); + if (shape) { + shape.set({ + canvas: this.canvas, + shadow: this.shadow ? new Shadow(this.shadow) : undefined, + clipPath: await this.createClipPath(shape), + }); + shape.setCoords(); + this.canvas.fire('interaction:completed', { result: shape }); + this.canvas.fire('before:path:created', { path: shape }); + canvas.fire('erasing:end', await this.finalizeErasing(shape)); + this.canvas.fire('path:created', { path: shape }); + } else { + canvas.fire('erasing:end'); + } + this.canvas.requestRenderAll(); }, } ); From 1342a14dad5f70435444c5d3e5137bbdf784df1d Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 16:25:10 +0200 Subject: [PATCH 056/153] Squashed commit of the following: commit 82c8918545ee1a420e6ac0452ffa8782bb7b7000 Merge: f6669abc2 eb25d2b6f Author: ShaMan123 Date: Fri Jun 10 22:01:36 2022 +0300 Merge branch 'master' into pr/7175 commit f6669abc2ef2d18babc44f1e1d72ad6dea99f79e Author: ShaMan123 Date: Thu May 12 10:06:51 2022 +0300 Update .eslintrc.json commit 0e4b9ef2224eefe46636ebf4df5e52a6210a3fd3 Author: ShaMan123 Date: Thu May 12 10:01:03 2022 +0300 Revert "Update .eslintrc.json" This reverts commit b52caa0c8811055ac7634363cf82c883fcc271b8. commit b52caa0c8811055ac7634363cf82c883fcc271b8 Author: ShaMan123 Date: Thu May 12 09:53:19 2022 +0300 Update .eslintrc.json commit 082b063a438b48f2142f4bbcf21a7e6c03280470 Author: ShaMan123 Date: Thu May 12 09:30:35 2022 +0300 Revert whitespace This reverts whitespace commited by 3f0f328f5e76e566bfb2a901f628355dad1bb24c. commit 3f0f328f5e76e566bfb2a901f628355dad1bb24c Author: ShaMan123 Date: Thu May 12 09:20:58 2022 +0300 fix(): `absolutePositioned` commit 3954fca2a77652154e50bbc198ebb077e5e1a095 Merge: 60b58294f 06de045ec Author: ShaMan123 Date: Sun May 1 20:06:30 2022 +0300 Merge branch 'master' into pr/7175 commit 60b58294f4b94ce22fc18c920ada8e6f326d346e Author: ShaMan123 Date: Tue Apr 26 15:10:35 2022 +0300 Update base_brush.class.js commit 126514bb5112711ceeeae2dd1f8be9ba1c5c13ea Author: ShaMan123 Date: Tue Apr 26 15:03:46 2022 +0300 async test commit 2d4aef7d3d643fde9288273e4ac9f13cf0da0a32 Author: ShaMan123 Date: Tue Apr 26 14:57:23 2022 +0300 lint commit c36649f49d9b36e3d97075e207619d9cfc1d51d0 Author: ShaMan123 Date: Tue Apr 26 14:50:36 2022 +0300 rename: BaseBrush `render` <-> `_render` now conforms with Object commit fddbae79deaf146f48be32e14cdc112dba723458 Author: ShaMan123 Date: Tue Apr 26 14:39:52 2022 +0300 async commit a8c1818f6d0e915ab64b745312ff01e5e15d9309 Author: ShaMan123 Date: Tue Apr 26 14:36:57 2022 +0300 async commit 8e20486c5183d2d117681516118a72118b536396 Author: ShaMan123 Date: Tue Apr 26 14:14:49 2022 +0300 update code to master commit d8eb92323d8652eb3c5aad7159244b5d2b54e17c Merge: f92714341 4b3f9a364 Author: ShaMan123 Date: Tue Apr 26 13:47:08 2022 +0300 Merge branch 'master' into pr/7175 commit f927143410361d876a9db73348e0b89762cc110c Author: ShaMan123 Date: Thu Feb 17 13:33:56 2022 +0200 Update base_brush.class.js commit 35c1364f2d54d1f0968aa1101cdfe144af89cb1c Merge: 2442eedca 70943e726 Author: ShaMan123 Date: Thu Feb 17 13:27:07 2022 +0200 Merge remote-tracking branch 'upstream/master' into brush-clip-path commit 2442eedcae65686fe16d35505da70fa758d94113 Author: ShaMan123 Date: Mon Jan 17 14:27:29 2022 +0200 Update pencil_brush.class.js commit c2c856e8c40e9ea649f628a7b6f4b54cc5a72b58 Merge: 85a63171c 56f062945 Author: ShaMan123 Date: Mon Jan 17 14:22:26 2022 +0200 Merge remote-tracking branch 'upstream/master' into brush-clip-path commit 85a63171c0cd0d81fb924c8f49391f921ec3bbf3 Author: ShaMan123 Date: Sun Jan 16 15:47:58 2022 +0200 Update base_brush.class.js commit eef593652dd48fbd1d8246d614755476dfffa0f6 Merge: 368dd713a a32be8ab0 Author: ShaMan123 Date: Sun Jan 16 15:43:46 2022 +0200 Merge remote-tracking branch 'upstream/master' into brush-clip-path commit 368dd713afd18f5f6fead6f6a99e14f61d173091 Author: ShaMan123 Date: Fri Jul 2 07:38:00 2021 +0300 Update eraser_brush.mixin.js commit 1ebccf471b35f75dcc4a9c353bc63947216ac4fd Author: ShaMan123 Date: Thu Jul 1 22:55:38 2021 +0300 Update base_brush.class.js commit 5747e0279ef5a4b1c9467e8bd5895965ef9aab9a Author: ShaMan123 Date: Thu Jul 1 22:46:55 2021 +0300 fix rendering overlay with clip path commit a3eb5d736a4b592281f212e6e681ae037669b20d Author: ShaMan123 Date: Thu Jul 1 22:02:56 2021 +0300 Update CHANGELOG.md commit 8fe3e378d6fb9adb8c03f30fc856b8eeca509acc Merge: 251a5dfa7 3b99a2d94 Author: ShaMan123 Date: Thu Jul 1 22:01:12 2021 +0300 Merge remote-tracking branch 'upstream/master' into brush-clip-path commit 251a5dfa7705da1177355786d43777ca989c0df1 Author: ShaMan123 Date: Thu Jul 1 21:59:14 2021 +0300 revert dist commit ceaf13d647e7a8bdcaca77745a56ff44a4042405 Author: ShaMan123 Date: Thu Jul 1 21:50:39 2021 +0300 lint commit 5680f1f27ee4a0f5c3d5d1ee9ce700a44b009ed1 Author: ShaMan123 Date: Thu Jul 1 21:48:54 2021 +0300 support clipping eraser brush \ commit add527cfabe33e2783d7da095ef87d27963c6f58 Author: ShaMan123 Date: Thu Jul 1 19:16:20 2021 +0300 Update eraser_brush.mixin.js commit 8b3053734087c207ecf8e38ec21cf549fb786d69 Author: ShaMan123 Date: Thu Jul 1 19:13:11 2021 +0300 fix(absolutePositioned) commit 798199ddff9397fc0e8cc3cb79ddcc52d588e69a Author: ShaMan123 Date: Thu Jul 1 15:54:37 2021 +0300 support `inverted` property commit 9fea1198179cd9e8ddd217b7b82beafe86a119fc Author: ShaMan123 Date: Thu Jul 1 15:52:58 2021 +0300 handle `absolutePositioned` case commit 2640b2eb621cda78addfbebc384bd4272269e6d8 Author: ShaMan123 Date: Thu Jul 1 15:25:29 2021 +0300 BREAKING: rename `render` to `renderAll` To align with this PR commit 24489c433213acf616dc9a0413e4e96b99afb2fe Author: ShaMan123 Date: Thu Jul 1 15:00:50 2021 +0300 Update CHANGELOG.md commit 97ee5285ad9d5481e0995b2f30552075dc707d32 Author: ShaMan123 Date: Thu Jul 1 14:54:05 2021 +0300 lint commit 99ff8862731b110c3b51b83eed7f5e00126ca6d3 Author: ShaMan123 Date: Thu Jul 1 14:33:57 2021 +0300 JSDOC commit fc92fad47d435442f01066219d6124a0a1d05254 Author: ShaMan123 Date: Thu Jul 1 13:54:59 2021 +0300 Update pencil_brush.class.js commit 07fc81e30082cabd77ac3b5e1496b1b7902e4574 Author: ShaMan123 Date: Thu Jul 1 13:45:29 2021 +0300 addClipPathToResult expose `_addClipPathToResult` If there's a clip path set on the brush it is applied to the brush result commit 3cb75e4f03d155f5fb566e6482dc851259bc57e3 Author: ShaMan123 Date: Thu Jul 1 13:31:50 2021 +0300 draw clipPath when adding a brush segment commit a824e91d4455b4b69e26daa60a999dad14efd420 Author: ShaMan123 Date: Thu Jul 1 08:25:41 2021 +0300 BREAKING CHANGE renamed `render` to `renderChuck` `render` method now renders all the spray to align with all the brushes commit cc5374d39dca574be5df83d48315a1239e89240c Author: ShaMan123 Date: Thu Jul 1 08:24:37 2021 +0300 Update pencil_brush.class.js commit b5516833f93af5cdae84fc592e7b2075fff66329 Author: ShaMan123 Date: Thu Jul 1 08:24:31 2021 +0300 Update circle_brush.class.js commit 373a4506284d21001ac4a39e736e7685714a28e9 Author: ShaMan123 Date: Thu Jul 1 08:23:56 2021 +0300 Update base_brush.class.js --- .eslintrc.json | 3 +++ test/unit/brushes.js | 14 ++++++++------ test/unit/canvas_events.js | 16 ++++++++-------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index a0aac398dbf..c265be541b8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,6 +2,9 @@ "env": { "browser": true }, + "parserOptions": { + "ecmaVersion": 8 + }, "globals": { "Promise": true, "define": true, diff --git a/test/unit/brushes.js b/test/unit/brushes.js index 4efd687e84d..8a4691e4dd2 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -115,7 +115,8 @@ ); assert.equal(brush._points.length, 4, '2 points have been discarded'); }); - QUnit.test('fabric pencil brush multiple points not discarded', function(assert) { + QUnit.test('fabric pencil brush multiple points not discarded', function (assert) { + assert.expect(4); var fireBeforePathCreatedEvent = false; var firePathCreatedEvent = false; var added = null; @@ -125,6 +126,12 @@ canvas.on('path:created', function(opt) { firePathCreatedEvent = true; added = opt.path; + assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); + assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); + assert.ok(added instanceof fabric.Path, 'a path is added'); + assert.ok(added.path.length, 6, 'path has 6 steps'); + + canvas.off(); }); var brush = new fabric.PencilBrush(canvas); var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); @@ -136,11 +143,6 @@ brush.onMouseMove(pointer2, { e: {} }); brush.onMouseMove(pointer3, { e: {} }); brush.onMouseUp({ e: {} }); - assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); - assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); - assert.ok(added instanceof fabric.Path, 'a path is added'); - assert.ok(added.path.length, 6, 'path has 6 steps'); - canvas.off(); }); }); }); diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index 5ae00c1a588..1c74122c679 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -307,16 +307,16 @@ QUnit.test('setDimensions and active brush', function(assert) { var prepareFor = false; var rendered = false; - var canva = new fabric.Canvas(null, { width: 500, height: 500 }); + var canvas = new fabric.Canvas(null, { width: 500, height: 500 }); var brush = new fabric.PencilBrush({ color: 'red', width: 4 }); - canva.isDrawingMode = true; - canva.freeDrawingBrush = brush; - canva._isCurrentlyDrawing = true; - brush._render = function() { rendered = true; }; + canvas.isDrawingMode = true; + canvas.freeDrawingBrush = brush; + canvas._isCurrentlyDrawing = true; + brush.render = function() { rendered = true; }; brush._setBrushStyles = function() { prepareFor = true; }; - canva.setDimensions({ width: 200, height: 200 }); - canva.renderAll(); - assert.equal(rendered, true, 'the brush called the _render method'); + canvas.setDimensions({ width: 200, height: 200 }); + canvas.renderAll(); + assert.equal(rendered, true, 'the brush called the render method'); assert.equal(prepareFor, true, 'the brush called the _setBrushStyles method'); }); From 51daca39f1848ff851888eea03b71a8062c7cb7d Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 17:34:53 +0200 Subject: [PATCH 057/153] more --- src/brushes/base_brush.class.ts | 2 +- src/brushes/circle_brush.class.ts | 1 + src/brushes/pencil_brush.class.ts | 1 + src/brushes/spray_brush.class.ts | 27 ++++++++++++++++++--------- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 4b68b2e13d2..5a59e04a67b 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -107,7 +107,7 @@ export abstract class BaseBrush { * @private * @param {CanvasRenderingContext2D} ctx */ - _setBrushStyles(ctx: CanvasRenderingContext2D) { + _setBrushStyles(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { ctx.strokeStyle = this.color; ctx.lineWidth = this.width; ctx.lineCap = this.strokeLineCap; diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 199513d3cb1..f790b505e4d 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -60,6 +60,7 @@ export class CircleBrush extends BaseBrush { ctx.save(); this.transform(ctx); this.dot(ctx, point); + this._drawClipPath(ctx, this.clipPath); ctx.restore(); } diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 45a08d51124..bd528904ae3 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -170,6 +170,7 @@ export class PencilBrush extends BaseBrush { points[length - 1] ); ctx.stroke(); + this._drawClipPath(ctx, this.clipPath); ctx.restore(); } diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index 0575cb71c50..cd81662876b 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -95,6 +95,11 @@ export class SprayBrush extends BaseBrush { this.sprayChunk = []; } + _setBrushStyles(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + super._setBrushStyles(ctx); + ctx.fillStyle = this.color; + } + protected finalizeShape() { const rects = []; for (let i = 0; i < this.sprayChunks.length; i++) { @@ -128,8 +133,8 @@ export class SprayBrush extends BaseBrush { onMouseDown(pointer: Point) { this.sprayChunks = []; this.canvas.clearContext(this.canvas.contextTop); + this._setBrushStyles(); this._setShadow(); - this.addSprayChunk(pointer); this.renderChunk(this.sprayChunk); } @@ -153,18 +158,23 @@ export class SprayBrush extends BaseBrush { this.finalize(); } - renderChunk(sprayChunk: SprayBrushPoint[]) { - const ctx = this.canvas.contextTop; - ctx.save(); - ctx.fillStyle = this.color; - this.transform(ctx); - + protected drawChunk( + ctx: CanvasRenderingContext2D, + sprayChunk: SprayBrushPoint[] + ) { for (let i = 0; i < sprayChunk.length; i++) { const point = sprayChunk[i]; ctx.globalAlpha = point.opacity; ctx.fillRect(point.x, point.y, point.width, point.width); } + } + protected renderChunk(sprayChunk: SprayBrushPoint[]) { + const ctx = this.canvas.contextTop; + ctx.save(); + this.transform(ctx); + this.drawChunk(ctx, sprayChunk); + this._drawClipPath(ctx, this.clipPath); ctx.restore(); } @@ -172,9 +182,8 @@ export class SprayBrush extends BaseBrush { * Render all spray chunks */ protected _render(ctx: CanvasRenderingContext2D) { - ctx.fillStyle = this.color; for (let i = 0; i < this.sprayChunks.length; i++) { - this.renderChunk(this.sprayChunks[i]); + this.drawChunk(ctx, this.sprayChunks[i]); } ctx.restore(); } From 3e6e4250cccc23156306dfaedad68c5aa608698a Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 23 Nov 2022 17:44:08 +0200 Subject: [PATCH 058/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 5a59e04a67b..db9d3507731 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -256,6 +256,7 @@ export abstract class BaseBrush { this.canvas.fire('path:created', { path: shape }); this.canvas.renderOnAddRemove = originalRenderOnAddRemove; } + this.canvas.contextTopDirty = true; this.canvas.requestRenderAll(); } } From 4ab566d434bc40b4db7cafecba8b1bde3d760f6f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 27 Nov 2022 07:48:12 +0200 Subject: [PATCH 059/153] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cd6dcc514a..4b01d29a0bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,6 @@ - chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) - chore(TS): BaseBrush abstract methods [#8428](https://github.com/fabricjs/fabric.js/pull/8428) -- chore(TS): BaseBrush abstract methods [#8428](https://github.com/fabricjs/fabric.js/pull/8428) - feat(): Add `createObjectDefaultControls` and `createTextboxDefaultControls` to create copies of control sets. [#8415](https://github.com/fabricjs/fabric.js/pull/8415) - fix(PatternBrush): `getPatternSrc`, rm `getPatternSrcFunction` [#8468](https://github.com/fabricjs/fabric.js/pull/8468) - chore(TS): more FabricObject typing [#8405](https://github.com/fabricjs/fabric.js/pull/8405) From 03e4150f7d7b128dbf4e96c0d5ce406de9a68dcf Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 27 Nov 2022 07:52:25 +0200 Subject: [PATCH 060/153] imports --- src/brushes/DrawShapeBase.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index e7cbc0448a6..96c8631fdf0 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,11 +1,8 @@ -import { fabric } from '../../HEADER'; import { Point } from '../point.class'; +import { Shadow } from '../shadow.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { BaseBrush } from './base_brush.class'; -// TODO: remove transient -const { Shadow } = fabric; - /** * Declarative shape drawing using pointer events */ From 6d182e01dd8aa156bbd50e83b3a335eded26c1fb Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 27 Nov 2022 07:53:40 +0200 Subject: [PATCH 061/153] fix merge artifact --- src/brushes/base_brush.class.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 1cc6cc74537..6a2d38ba930 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -118,11 +118,6 @@ export abstract class BaseBrush { return color.getAlpha() < 1 || !!this.shadow; } - protected needsFullRender() { - const color = new Color(this.color); - return color.getAlpha() < 1 || !!this.shadow; - } - /** * Sets brush shadow styles * @private From c2676406ef84fd0107f8de90bd3c6342c828c6bf Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 27 Nov 2022 13:51:50 +0200 Subject: [PATCH 062/153] Update DrawShapeBase.ts --- src/brushes/DrawShapeBase.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 96c8631fdf0..519b3acda8b 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -36,9 +36,9 @@ export abstract class DrawShapeBase extends BaseBrush { const shape = this.shape; if (!shape) return; shape.setCoords(); - this.canvas.fire('before:path:created', { path: this.shape }); + this.canvas.fire('before:path:created', { path: shape }); this.canvas.add(this.shape); - this.canvas.fire('path:created', { path: this.shape }); + this.canvas.fire('path:created', { path: shape }); this.canvas.clearContext(this.canvas.contextTop); this.shape = undefined; } From 211bfe7bc560f429547ee227e321ebc0f9bb8b2d Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 27 Nov 2022 13:55:44 +0200 Subject: [PATCH 063/153] imports/types --- src/brushes/DrawShape.ts | 4 ++-- src/brushes/base_brush.class.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index e59d4efe635..849b1a0b9b0 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -1,13 +1,13 @@ import { fabric } from '../../HEADER'; +import { ModifierKey } from '../EventTypeDefs'; import { Point } from '../point.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { Rect } from '../shapes/rect.class'; -import { ModifierKey } from '../typedefs'; import { TBrushEventData } from './base_brush.class'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawShape< - T extends typeof FabricObject = typeof Rect + T extends typeof FabricObject = typeof Rect > extends DrawShapeBase> { /** * class to build shape from diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 6a2d38ba930..1d7906a6ec0 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -5,7 +5,7 @@ import { TEvent } from '../EventTypeDefs'; import type { Shadow } from '../shadow.class'; import { Canvas } from '../__types__'; -type TBrushEventData = TEvent & { pointer: Point }; +export type TBrushEventData = TEvent & { pointer: Point }; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} From aaa9981c23115a440c096a52a43f8215263b7326 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 09:00:15 +0200 Subject: [PATCH 064/153] fix merge --- src/brushes/base_brush.class.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index c6276cedb6e..3125f58d4ba 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -125,11 +125,6 @@ export abstract class BaseBrush { ); } - protected needsFullRender() { - const color = new Color(this.color); - return color.getAlpha() < 1 || !!this.shadow; - } - /** * Sets brush shadow styles * @private From 8222e6a6e5966f738ed2d4a72e51961db95c7387 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 09:29:14 +0200 Subject: [PATCH 065/153] BREAKING: stop adding brush result to canvas BREAKING CHANGE: stop adding brush result to canvas, dep path:created, before:path:created --- src/EventTypeDefs.ts | 3 +-- src/brushes/DrawPoly.ts | 2 +- src/brushes/base_brush.class.ts | 10 ++-------- src/brushes/pencil_brush.class.ts | 2 +- src/canvas.class.ts | 2 +- src/mixins/eraser_brush.mixin.ts | 24 ++++++------------------ test/unit/brushes.js | 23 ++++++----------------- test/unit/draw_shapes.js | 26 ++++++++------------------ 8 files changed, 26 insertions(+), 66 deletions(-) diff --git a/src/EventTypeDefs.ts b/src/EventTypeDefs.ts index 9bbbb975934..fe5cd606d0d 100644 --- a/src/EventTypeDefs.ts +++ b/src/EventTypeDefs.ts @@ -205,8 +205,7 @@ export type CanvasEvents = StaticCanvasEvents & CanvasModifiedEvents & CanvasSelectionEvents & { // brushes - 'before:path:created': { path: FabricObject }; - 'path:created': { path: FabricObject }; + 'interaction:completed': { result: FabricObject }; // erasing 'erasing:start': never; diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index b926185baa1..16c2069c009 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -37,7 +37,7 @@ export class DrawPoly extends DrawShapeBase { protected async finalize() { // release interaction this.canvas._isCurrentlyDrawing = false; - super.finalize(); + return super.finalize(); } onMouseDown(pointer: Point) { diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index b716d63387a..9cf9620fe76 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -2,7 +2,7 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../point.class'; -import type { Shadow } from '../shadow.class'; +import { Shadow } from '../shadow.class'; import { FabricObject } from '../shapes/fabricObject.class'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; @@ -244,16 +244,10 @@ export abstract class BaseBrush { }); shape.setCoords(); this.canvas.fire('interaction:completed', { result: shape }); - // TODO: don't add to canvas by default - this.canvas.fire('before:path:created', { path: shape }); - const originalRenderOnAddRemove = this.canvas.renderOnAddRemove; - this.canvas.renderOnAddRemove = false; - this.canvas.add(shape); - this.canvas.fire('path:created', { path: shape }); - this.canvas.renderOnAddRemove = originalRenderOnAddRemove; } this.canvas.contextTopDirty = true; this.canvas.requestRenderAll(); + return shape; } } diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index e6167e30470..4585f2a497a 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -285,7 +285,7 @@ export class PencilBrush extends BaseBrush { protected async finalize() { this.finalizePath(); - super.finalize(); + return super.finalize(); } } diff --git a/src/canvas.class.ts b/src/canvas.class.ts index a34c460ed5d..f3f99e81d4a 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -30,7 +30,7 @@ import { saveObjectTransform } from './util/misc/objectTransforms'; * @fires selection:updated * @fires selection:created * - * @fires path:created after a drawing operation ends and the path is added + * @fires interaction:completed after a drawing operation ends and the path is added * @fires mouse:down * @fires mouse:move * @fires mouse:up diff --git a/src/mixins/eraser_brush.mixin.ts b/src/mixins/eraser_brush.mixin.ts index b3cc6faddb3..5907aa22278 100644 --- a/src/mixins/eraser_brush.mixin.ts +++ b/src/mixins/eraser_brush.mixin.ts @@ -796,24 +796,12 @@ import { Point } from '../point.class'; */ finalize: async function () { this._isErasing = false; - this.finalizePath(); - this._resetShadow(); - const shape = this.finalizeShape(); - if (shape) { - shape.set({ - canvas: this.canvas, - shadow: this.shadow ? new Shadow(this.shadow) : undefined, - clipPath: await this.createClipPath(shape), - }); - shape.setCoords(); - this.canvas.fire('interaction:completed', { result: shape }); - this.canvas.fire('before:path:created', { path: shape }); - canvas.fire('erasing:end', await this.finalizeErasing(shape)); - this.canvas.fire('path:created', { path: shape }); - } else { - canvas.fire('erasing:end'); - } - this.canvas.requestRenderAll(); + const shape = await this.callSuper('finalize'); + canvas.fire( + 'erasing:end', + shape ? await this.finalizeErasing(shape) : undefined + ); + return shape; }, } ); diff --git a/test/unit/brushes.js b/test/unit/brushes.js index 8a4691e4dd2..133ee5b05b7 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -116,23 +116,12 @@ assert.equal(brush._points.length, 4, '2 points have been discarded'); }); QUnit.test('fabric pencil brush multiple points not discarded', function (assert) { - assert.expect(4); - var fireBeforePathCreatedEvent = false; - var firePathCreatedEvent = false; - var added = null; - canvas.on('before:path:created', function() { - fireBeforePathCreatedEvent = true; - }); - canvas.on('path:created', function(opt) { - firePathCreatedEvent = true; - added = opt.path; - assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); - assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); - assert.ok(added instanceof fabric.Path, 'a path is added'); - assert.ok(added.path.length, 6, 'path has 6 steps'); - - canvas.off(); - }); + assert.expect(2); + canvas.on('interaction:completed', ({ result }) => { + assert.ok(result instanceof fabric.Path, 'a path is added'); + assert.ok(result.path.length, 6, 'path has 6 steps'); + canvas.off(); + }); var brush = new fabric.PencilBrush(canvas); var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15}); diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js index 2d5d982c967..f35c271d108 100644 --- a/test/unit/draw_shapes.js +++ b/test/unit/draw_shapes.js @@ -18,15 +18,11 @@ hooks.afterEach(() => canvas.off()); function runShapeBrushTest(brush, assert, e = {}) { - var fireBeforePathCreatedEvent = false; - var firePathCreatedEvent = false; + var fired = false; var added = null; - canvas.on('before:path:created', function () { - fireBeforePathCreatedEvent = true; - }); - canvas.on('path:created', function (opt) { - firePathCreatedEvent = true; - added = opt.path; + canvas.on('interaction:completed', ({ result }) => { + fired = true; + added = result; }); var pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); @@ -37,8 +33,7 @@ brush.onMouseMove(pointer2, { e }); brush.onMouseMove(pointer3, { e }); brush.onMouseUp({ e, pointer: pointer3 }); - assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); - assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); + assert.equal(fired, true, 'interaction:completed event should have fired'); return added; } @@ -149,15 +144,11 @@ const brush = new fabric.DrawPoly(canvas); brush.builder = builder; const e = {}; - let fireBeforePathCreatedEvent = false; let firePathCreatedEvent = false; let poly = null; - canvas.on('before:path:created', function () { - fireBeforePathCreatedEvent = true; - }); - canvas.on('path:created', function (opt) { + canvas.on('interaction:completed', ({ result }) => { firePathCreatedEvent = true; - poly = opt.path; + poly = result; }); const pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); const pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); @@ -167,8 +158,7 @@ brush.onMouseUp({ e, pointer: pointer2 }); brush.onMouseMove(pointer2, { e }); brush.onDoubleClick(pointer3); - assert.equal(fireBeforePathCreatedEvent, true, 'before:path:created event is fired'); - assert.equal(firePathCreatedEvent, true, 'path:created event is fired'); + assert.equal(firePathCreatedEvent, true, 'interaction:completed event should have fired'); assert.ok(poly instanceof builder, `should create poly of type ${builder.name}`); assert.deepEqual(poly.points, [pointer, pointer2, pointer3], 'should set points'); assert.deepEqual( From 15a49cec976192fcb8e5801d66dd5d91ca593ae0 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 09:49:25 +0200 Subject: [PATCH 066/153] more --- src/brushes/base_brush.class.ts | 2 ++ test/visual/freedraw.js | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 9cf9620fe76..13773a08d0f 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -245,6 +245,8 @@ export abstract class BaseBrush { shape.setCoords(); this.canvas.fire('interaction:completed', { result: shape }); } + // in case 'interaction:completed' changes canvas visuals (which is what will happen in 99% of the time) + // we request rendering so there won't be a visual gap (flickering) between clearing the top context and the updated main context this.canvas.contextTopDirty = true; this.canvas.requestRenderAll(); return shape; diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index a61b661bd9f..1980e24cdbb 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2272,6 +2272,9 @@ QUnit.module('Free Drawing', hooks => { test: `${test.test} (main context)`, golden: `main_ctx_${test.golden}`, code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); await test.build(canvas); canvas.renderAll(); callback(canvas.lowerCanvasEl); @@ -2282,6 +2285,9 @@ QUnit.module('Free Drawing', hooks => { test: `${test.test} (context mesh)`, golden: `mesh_${test.golden}`, code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); await test.build(canvas); canvas.renderAll(); canvas.contextContainer.drawImage(canvas.upperCanvasEl, 0, 0); @@ -2292,6 +2298,9 @@ QUnit.module('Free Drawing', hooks => { options.result && visualTester(Object.assign({}, test, { test: `${test.test} (result)`, code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); await test.build(canvas); fireMouseUp(canvas.freeDrawingBrush); canvas.renderAll(); From 5ace90d9f3ed052c53e13cea051014203fb7d3e8 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 10:29:44 +0200 Subject: [PATCH 067/153] fix clearing --- src/brushes/base_brush.class.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 13773a08d0f..423b0a39aad 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -245,9 +245,11 @@ export abstract class BaseBrush { shape.setCoords(); this.canvas.fire('interaction:completed', { result: shape }); } - // in case 'interaction:completed' changes canvas visuals (which is what will happen in 99% of the time) - // we request rendering so there won't be a visual gap (flickering) between clearing the top context and the updated main context - this.canvas.contextTopDirty = true; + // in case 'interaction:completed' changes canvas visuals (which is likely to happen in 99% of the time) + // we request rendering so that there won't be a visual gap (flickering) between clearing the top context and the updated main context + this.canvas.once('before:render', () => { + this.canvas.clearContext(this.canvas.contextTop); + }); this.canvas.requestRenderAll(); return shape; } From df0684c28b89685d7819a1983e955f7f772ab465 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 10:32:05 +0200 Subject: [PATCH 068/153] Update freedraw.js --- test/visual/freedraw.js | 96 +++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 47 deletions(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 1980e24cdbb..d49e27eb914 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2256,58 +2256,60 @@ QUnit.module('Free Drawing', hooks => { }); tests.forEach(function (test) { - var options = Object.assign({}, freeDrawingTestDefaults, test.targets); - if (options.top) { - visualTester(Object.assign({}, test, { - test: `${test.test} (top context)`, - golden: `top_ctx_${test.golden}`, + const options = Object.assign({}, freeDrawingTestDefaults, test.targets); + QUnit.module(test.test, () => { + if (options.top) { + visualTester(Object.assign({}, test, { + test: 'top context', + golden: `top_ctx_${test.golden}`, + code: async function (canvas, callback) { + await test.build(canvas); + callback(canvas.upperCanvasEl); + }, + disabled: fabric.isLikelyNode + })); + } + options.main && visualTester(Object.assign({}, test, { + test: 'main context', + golden: `main_ctx_${test.golden}`, code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); await test.build(canvas); - callback(canvas.upperCanvasEl); + canvas.renderAll(); + callback(canvas.lowerCanvasEl); }, disabled: fabric.isLikelyNode })); - } - options.main && visualTester(Object.assign({}, test, { - test: `${test.test} (main context)`, - golden: `main_ctx_${test.golden}`, - code: async function (canvas, callback) { - canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); - }); - await test.build(canvas); - canvas.renderAll(); - callback(canvas.lowerCanvasEl); - }, - disabled: fabric.isLikelyNode - })); - options.mesh && visualTester(Object.assign({}, test, { - test: `${test.test} (context mesh)`, - golden: `mesh_${test.golden}`, - code: async function (canvas, callback) { - canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); - }); - await test.build(canvas); - canvas.renderAll(); - canvas.contextContainer.drawImage(canvas.upperCanvasEl, 0, 0); - callback(canvas.lowerCanvasEl); - }, - disabled: fabric.isLikelyNode - })); - options.result && visualTester(Object.assign({}, test, { - test: `${test.test} (result)`, - code: async function (canvas, callback) { - canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); - }); - await test.build(canvas); - fireMouseUp(canvas.freeDrawingBrush); - canvas.renderAll(); - callback(canvas.lowerCanvasEl); - } - })); - //options.compare && compareGoldens(`${test.test} (mesh <> result)`, test.golden, `mesh_${test.golden}`, test.percentage); + options.mesh && visualTester(Object.assign({}, test, { + test: 'context mesh', + golden: `mesh_${test.golden}`, + code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); + await test.build(canvas); + canvas.renderAll(); + canvas.contextContainer.drawImage(canvas.upperCanvasEl, 0, 0); + callback(canvas.lowerCanvasEl); + }, + disabled: fabric.isLikelyNode + })); + options.result && visualTester(Object.assign({}, test, { + test: 'result', + code: async function (canvas, callback) { + canvas.on('interaction:completed', ({ result }) => { + canvas.add(result); + }); + await test.build(canvas); + fireMouseUp(canvas.freeDrawingBrush); + canvas.renderAll(); + callback(canvas.lowerCanvasEl); + } + })); + //options.compare && compareGoldens('mesh <> result', test.golden, `mesh_${test.golden}`, test.percentage); + }); }); }); From 9a5b74d2dbf11a44ad3d20570a7f301bf831ed8b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 11:08:08 +0200 Subject: [PATCH 069/153] better triggering --- src/EventTypeDefs.ts | 2 +- src/brushes/base_brush.class.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EventTypeDefs.ts b/src/EventTypeDefs.ts index fe5cd606d0d..8f62411e404 100644 --- a/src/EventTypeDefs.ts +++ b/src/EventTypeDefs.ts @@ -205,7 +205,7 @@ export type CanvasEvents = StaticCanvasEvents & CanvasModifiedEvents & CanvasSelectionEvents & { // brushes - 'interaction:completed': { result: FabricObject }; + 'interaction:completed': { result?: FabricObject }; // erasing 'erasing:start': never; diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 423b0a39aad..e3b62fcc180 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -243,7 +243,6 @@ export abstract class BaseBrush { clipPath: await this.createClipPath(shape), }); shape.setCoords(); - this.canvas.fire('interaction:completed', { result: shape }); } // in case 'interaction:completed' changes canvas visuals (which is likely to happen in 99% of the time) // we request rendering so that there won't be a visual gap (flickering) between clearing the top context and the updated main context @@ -251,6 +250,7 @@ export abstract class BaseBrush { this.canvas.clearContext(this.canvas.contextTop); }); this.canvas.requestRenderAll(); + this.canvas.fire('interaction:completed', { result: shape }); return shape; } } From 0f488bda8e9f79a4ee8f6f3ac3f68e1c3f8451de Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 13:11:47 +0200 Subject: [PATCH 070/153] fix(): clear context top on finalize --- src/brushes/base_brush.class.ts | 4 +--- src/canvas.class.ts | 13 ++++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index e3b62fcc180..bc8070a776f 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -246,9 +246,7 @@ export abstract class BaseBrush { } // in case 'interaction:completed' changes canvas visuals (which is likely to happen in 99% of the time) // we request rendering so that there won't be a visual gap (flickering) between clearing the top context and the updated main context - this.canvas.once('before:render', () => { - this.canvas.clearContext(this.canvas.contextTop); - }); + this.canvas.shouldClearContextTop = true; this.canvas.requestRenderAll(); this.canvas.fire('interaction:completed', { result: shape }); return shape; diff --git a/src/canvas.class.ts b/src/canvas.class.ts index f3f99e81d4a..4307a2cd869 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -509,12 +509,19 @@ import { saveObjectTransform } from './util/misc/objectTransforms'; return; } if ( - this.contextTopDirty && - !this._groupSelector && - !this.isDrawingMode + (this.contextTopDirty && + !this._groupSelector && + !this.isDrawingMode) || + this.shouldClearContextTop ) { this.clearContext(this.contextTop); this.contextTopDirty = false; + if (this.shouldClearContextTop) { + // in case we are rendering a requested render state might have changed + // so we render top layer to sync visuals + this.hasLostContext = true; + this.shouldClearContextTop = false; + } } if (this.hasLostContext) { this.renderTopLayer(this.contextTop); From 2cfa2d10f2224d0c5d3c472ad20344a07b1e28c1 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 13:13:06 +0200 Subject: [PATCH 071/153] refactor tests --- test/visual/freedraw.js | 118 +++++++----------- .../freedrawing/decimation_main_ctx.png | Bin 0 -> 7562 bytes .../golden/freedrawing/decimation_mesh.png | Bin 0 -> 14178 bytes .../golden/freedrawing/decimation_top_ctx.png | Bin 0 -> 8971 bytes .../visual/golden/freedrawing/dot_top_ctx.png | Bin 0 -> 470 bytes .../freedrawing/largeNoOffset_top_ctx.png | Bin 0 -> 10610 bytes .../golden/freedrawing/opacity_top_ctx.png | Bin 0 -> 33702 bytes .../patternSource_main_ctx.png} | Bin .../patternSource_mesh.png} | Bin .../patternSource_top_ctx.png} | Bin .../pattern_main_ctx.png} | Bin .../pattern_mesh.png} | Bin .../pattern_top_ctx.png} | Bin .../golden/freedrawing/shadow_top_ctx.png | Bin 0 -> 29586 bytes .../golden/freedrawing/simple_top_ctx.png | Bin 0 -> 1225 bytes test/visual/golden/freedrawing1.png | Bin 1061 -> 0 bytes test/visual/golden/freedrawing2.png | Bin 13730 -> 0 bytes test/visual/golden/freedrawing3.png | Bin 31182 -> 0 bytes test/visual/golden/freedrawing4.png | Bin 43143 -> 0 bytes test/visual/golden/freedrawing5.png | Bin 445 -> 0 bytes test/visual/golden/freedrawing6.png | Bin 21325 -> 0 bytes test/visual/golden/freedrawingPattern.png | Bin 16612 -> 0 bytes .../golden/freedrawingPatternSource.png | Bin 34654 -> 0 bytes test/visual/golden/main_ctx_freedrawing6.png | Bin 10857 -> 0 bytes test/visual/golden/mesh_freedrawing1.png | Bin 926 -> 0 bytes test/visual/golden/mesh_freedrawing2.png | Bin 12149 -> 0 bytes test/visual/golden/mesh_freedrawing3.png | Bin 26361 -> 0 bytes test/visual/golden/mesh_freedrawing4.png | Bin 37828 -> 0 bytes test/visual/golden/mesh_freedrawing5.png | Bin 361 -> 0 bytes test/visual/golden/mesh_freedrawing6.png | Bin 18237 -> 0 bytes test/visual/golden/top_ctx_freedrawing2.png | Bin 12149 -> 0 bytes test/visual/golden/top_ctx_freedrawing3.png | Bin 26361 -> 0 bytes test/visual/golden/top_ctx_freedrawing4.png | Bin 37828 -> 0 bytes test/visual/golden/top_ctx_freedrawing5.png | Bin 361 -> 0 bytes test/visual/golden/top_ctx_freedrawing6.png | Bin 7653 -> 0 bytes 35 files changed, 44 insertions(+), 74 deletions(-) create mode 100644 test/visual/golden/freedrawing/decimation_main_ctx.png create mode 100644 test/visual/golden/freedrawing/decimation_mesh.png create mode 100644 test/visual/golden/freedrawing/decimation_top_ctx.png create mode 100644 test/visual/golden/freedrawing/dot_top_ctx.png create mode 100644 test/visual/golden/freedrawing/largeNoOffset_top_ctx.png create mode 100644 test/visual/golden/freedrawing/opacity_top_ctx.png rename test/visual/golden/{main_ctx_freedrawingPatternSource.png => freedrawing/patternSource_main_ctx.png} (100%) rename test/visual/golden/{mesh_freedrawingPatternSource.png => freedrawing/patternSource_mesh.png} (100%) rename test/visual/golden/{top_ctx_freedrawingPatternSource.png => freedrawing/patternSource_top_ctx.png} (100%) rename test/visual/golden/{main_ctx_freedrawingPattern.png => freedrawing/pattern_main_ctx.png} (100%) rename test/visual/golden/{mesh_freedrawingPattern.png => freedrawing/pattern_mesh.png} (100%) rename test/visual/golden/{top_ctx_freedrawingPattern.png => freedrawing/pattern_top_ctx.png} (100%) create mode 100644 test/visual/golden/freedrawing/shadow_top_ctx.png create mode 100644 test/visual/golden/freedrawing/simple_top_ctx.png delete mode 100644 test/visual/golden/freedrawing1.png delete mode 100644 test/visual/golden/freedrawing2.png delete mode 100644 test/visual/golden/freedrawing3.png delete mode 100644 test/visual/golden/freedrawing4.png delete mode 100644 test/visual/golden/freedrawing5.png delete mode 100644 test/visual/golden/freedrawing6.png delete mode 100644 test/visual/golden/freedrawingPattern.png delete mode 100644 test/visual/golden/freedrawingPatternSource.png delete mode 100644 test/visual/golden/main_ctx_freedrawing6.png delete mode 100644 test/visual/golden/mesh_freedrawing1.png delete mode 100644 test/visual/golden/mesh_freedrawing2.png delete mode 100644 test/visual/golden/mesh_freedrawing3.png delete mode 100644 test/visual/golden/mesh_freedrawing4.png delete mode 100644 test/visual/golden/mesh_freedrawing5.png delete mode 100644 test/visual/golden/mesh_freedrawing6.png delete mode 100644 test/visual/golden/top_ctx_freedrawing2.png delete mode 100644 test/visual/golden/top_ctx_freedrawing3.png delete mode 100644 test/visual/golden/top_ctx_freedrawing4.png delete mode 100644 test/visual/golden/top_ctx_freedrawing5.png delete mode 100644 test/visual/golden/top_ctx_freedrawing6.png diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index d49e27eb914..c55f2ae0215 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -15,9 +15,6 @@ brush.onMouseUp(options); } } - function fireMouseUp(brush) { - brush.onMouseUp(options); - } // function eraserDrawer(points, brush, fireUp = false) { // brush.canvas.calcViewportBoundaries(); @@ -2063,16 +2060,12 @@ QUnit.module('Free Drawing', hooks => { /** * render top and main context before mouseup */ - mesh: true, - /** - * render canvas after mouseup - */ - result: true, - /** - * compare visuals between `mesh` and `result` - */ - compare: true - } + mesh: false, + + fabricClass: 'Canvas', + + disabled: fabric.isLikelyNode + }; function freedrawing(canvas) { // eslint-disable-next-line @@ -2087,11 +2080,10 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Simple free drawing', build: freedrawing, - golden: 'freedrawing1.png', + name: 'simple', percentage: 0.09, width: 100, height: 100, - fabricClass: 'Canvas' }); function noOffset(canvas) { @@ -2104,11 +2096,10 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Simple free drawing, large brush no offset', build: noOffset, - golden: 'freedrawing2.png', + name: 'largeNoOffset', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas' }); function withShadow(canvas) { @@ -2125,11 +2116,10 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Simple free drawing, with shadow', build: withShadow, - golden: 'freedrawing3.png', + name: 'shadow', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas' }); function withOpacity(canvas) { @@ -2140,20 +2130,16 @@ QUnit.module('Free Drawing', hooks => { color: 'green', }); brush.width = 6; - pointDrawer(points, brush, false); + pointDrawer(points, brush); } tests.push({ test: 'Simple free drawing, with opacity', build: withOpacity, - golden: 'freedrawing4.png', + name: 'opacity', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas', - targets: { - compare: false - } }); function freedrawingWithDecimateToPoint(canvas) { @@ -2170,14 +2156,10 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Simple free drawing to dot', build: freedrawingWithDecimateToPoint, - golden: 'freedrawing5.png', + name: 'dot', percentage: 0.09, width: 50, height: 50, - fabricClass: 'Canvas', - targets: { - compare: false - } }); function withDecimation(canvas) { @@ -2194,14 +2176,13 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Simple free drawing, with high decimation', build: withDecimation, - golden: 'freedrawing6.png', + name: 'decimation', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas', targets: { main: true, - compare: false + mesh: true } }); @@ -2219,14 +2200,13 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Pattern src from `getPatternSrc`', build: pattern, - golden: 'freedrawingPattern.png', + name: 'pattern', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas', targets: { main: true, - compare: false + mesh: true } }); @@ -2244,71 +2224,61 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'Pattern src from `source`', build: patternFromSource, - golden: 'freedrawingPatternSource.png', + name: 'patternSource', percentage: 0.09, width: 200, height: 250, - fabricClass: 'Canvas', targets: { main: true, - compare: false + mesh: true } }); - tests.forEach(function (test) { - const options = Object.assign({}, freeDrawingTestDefaults, test.targets); - QUnit.module(test.test, () => { - if (options.top) { - visualTester(Object.assign({}, test, { - test: 'top context', - golden: `top_ctx_${test.golden}`, - code: async function (canvas, callback) { - await test.build(canvas); - callback(canvas.upperCanvasEl); - }, - disabled: fabric.isLikelyNode - })); - } - options.main && visualTester(Object.assign({}, test, { - test: 'main context', - golden: `main_ctx_${test.golden}`, + tests.forEach(({ name, targets, test: testName, ...test }) => { + const { top, main, mesh, ...options } = { ...freeDrawingTestDefaults, ...test, ...targets }; + QUnit.module(testName, () => { + top && visualTester({ + ...options, + test: 'top context', + golden: `freedrawing/${name}_top_ctx.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); + canvas.cancelRequestedRender(); }); await test.build(canvas); - canvas.renderAll(); - callback(canvas.lowerCanvasEl); - }, - disabled: fabric.isLikelyNode - })); - options.mesh && visualTester(Object.assign({}, test, { - test: 'context mesh', - golden: `mesh_${test.golden}`, + callback(canvas.upperCanvasEl); + } + }); + main && visualTester({ + ...options, + test: 'main context', + golden: `freedrawing/${name}_main_ctx.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { canvas.add(result); + canvas.cancelRequestedRender(); }); await test.build(canvas); canvas.renderAll(); - canvas.contextContainer.drawImage(canvas.upperCanvasEl, 0, 0); callback(canvas.lowerCanvasEl); - }, - disabled: fabric.isLikelyNode - })); - options.result && visualTester(Object.assign({}, test, { - test: 'result', + } + }); + mesh && visualTester({ + ...options, + test: 'context mesh', + golden: `freedrawing/${name}_mesh.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { canvas.add(result); + canvas.cancelRequestedRender(); }); await test.build(canvas); - fireMouseUp(canvas.freeDrawingBrush); + const top = fabric.util.copyCanvasElement(canvas.upperCanvasEl); canvas.renderAll(); + canvas.contextContainer.drawImage(top, 0, 0); callback(canvas.lowerCanvasEl); } - })); - //options.compare && compareGoldens('mesh <> result', test.golden, `mesh_${test.golden}`, test.percentage); + }); }); }); diff --git a/test/visual/golden/freedrawing/decimation_main_ctx.png b/test/visual/golden/freedrawing/decimation_main_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..46c8f7da5c2b7e2f1a8c5561b5dc884a1e694e95 GIT binary patch literal 7562 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/decimation_mesh.png b/test/visual/golden/freedrawing/decimation_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..1190f7bbec6522b7fd43c6c138e8b891974e8bb2 GIT binary patch literal 14178 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/decimation_top_ctx.png b/test/visual/golden/freedrawing/decimation_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..56452334243cb53ba8f67f4d37d3fb49397e6d3a GIT binary patch literal 8971 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/dot_top_ctx.png b/test/visual/golden/freedrawing/dot_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..a22fa74633904cef64f7008a729baa456c0bd4a5 GIT binary patch literal 470 zcmV;{0V)28P)Px$kV!;ARA@u(mr+pzK@5h!C;%LQ0>A+%03;v*1r!IM03_gmN+=2d1=PVZncmIt zKrgvvFUOSZOCOp`^8J5qn+iK}WJfqikiX_+I+Bh|q(F|=M8a05{ojrhI0TM6`CbLy ztEFu8;3!85EP&e|YOjHXz(b?HMyGLs6gUAM*?bP2C2%F6V4=qgvidekR)b4{b1SIz z_a?}|I1Tl3BXHlk*`a)cAO-e;&x(fD0tXe(RX<{ZoB=PD*^eS`GYe$fE#+a;m;Tuk z*dk_1kZXab7EO9`SRlU{ty2NL?Lv+PqQBs8HJu2t|2{p}ug>|!NSHg>Yyn}%1EN>3 z?oxZsu5|aZHUMWTf0zlPsS4=3qRv<_AHZegyV0Y%Ksp$8MsJ~QW2OtEE{@@QmiFfc z>B+klUPq@NA6*nza{-KY#6PX`M2>c3o;K~O31Vv$8TOp`M{JE^Bhryrz3po0 zh^6}RfdBvi literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/largeNoOffset_top_ctx.png b/test/visual/golden/freedrawing/largeNoOffset_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..2db968b958d0ac37befcb19beb7f51d23e833a2e GIT binary patch literal 10610 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%0D!x(w_|F(N?=DSu^vmav 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/simple_top_ctx.png b/test/visual/golden/freedrawing/simple_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8dbd4f79df849132570b3db88c1fe311749ae6 GIT binary patch literal 1225 zcmeAS@N?(olHy`uVBq!ia0vp^DImU}^SraSW-5 zdppZ|g>0xq>;C)V9j*K>A}u!}G#0tJs7g!;kh})2(Ekv!URbhqe zqPYT!6TFm{b?`5W=;+E&&~!26;>wz+`}>@oK}^y6ImK!7i?8uy7k6`)%Vl3Pe|`V= z{cxjO6AMK)rDqK@=Ij)n^nm}t@`klZ=S?y!Ya5pQd9v}_U0v2-)zqy+T>0Soa8^9LU^4dB;w^W0DVK9!zZbzTC1t={`(G0XWag+bUo`6mjkA?>z7ykb85Ka z=dM|-7b&}XIj{BCTQ4;nVm3Wvob;gd!OWt(_dAmpEeze%$9m^tXi?DRll3wmimz|< zs$U{ca|BBGg zbt$EKLP3)+%(-IoN$tt^1J#Vx(Ve>`cW5WX`_8RhAIj?S@|Zol9>cuTwa)R0>5BYhL=yd{Mf;)X4Xd22dgvrVvZT^ZDh!2@}Kgy_c7yk9jA)bhI80X?0@?72H%r7 zjr|I@8?>Wt{bMe>uCv;7-fsR0Hj&$`-`;6`F0|oV?{&Ggp0$@JO;vFIk+MRzR$f8! zSfaxI-uA5XlIfa}mHcapgZ$6l`Konc=8{|bzP+!{@-8`cHht$Y9?p}$(<*nT`5*Ya z`Hu6$8-a|T9~eF`7FaznVr@>pYM`PpS5@0|_0ri5;Y@L}uJW`#Zf8l^RJ!Tmk~llx zT@pL=XB{gjNcM0rd+Qu@x%|n$iqLT5yLp6ASb>0i~xw}&4#RA)(TUX{(u<>Bf1Z=ZR7#ZQAS+^7oIauUdP) Q0m~)^Pgg&ebxsLQ05tIxp#T5? literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing1.png b/test/visual/golden/freedrawing1.png deleted file mode 100644 index 5dfe4d88a32cf5f55032887cfadef77359ed5eef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1061 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 XG0l{ahTgYBSML;LRHbVq%|ibN|En9a diff --git a/test/visual/golden/freedrawing3.png b/test/visual/golden/freedrawing3.png deleted file mode 100644 index 3718c8f6334f5d862ad8874ebdfe6fcd64f9010d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31182 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 QK{JekjH+~vq*?g?0XhaZ#sB~S diff --git a/test/visual/golden/freedrawing4.png b/test/visual/golden/freedrawing4.png deleted file mode 100644 index 63c9e7d79c3f9f757f9eedd4db6ac36610094899..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43143 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%0ANwax#*4X8vKiIoGrfSo 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

B}MA0i+tcW5+RqCkTBHTXAa1dA@)P%O_ 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 diff --git a/test/visual/golden/freedrawing5.png b/test/visual/golden/freedrawing5.png deleted file mode 100644 index 480f3b59f00a580fad17aa9e8704c86771da251f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP)1zxMgHBh_r%8*K z99+Ow;X=@UB%a? ny_Ql+DW#NBN-3q3QtIG02$QX;;)wiO00000NkvXXu0mjftG37N diff --git a/test/visual/golden/freedrawing6.png b/test/visual/golden/freedrawing6.png deleted file mode 100644 index e65c45fbf96403425bd3b1865cdb463f026bd7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21325 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 V=?UYyf4u+z002ovPDHLkV1jQvqvHSo diff --git a/test/visual/golden/freedrawingPattern.png b/test/visual/golden/freedrawingPattern.png deleted file mode 100644 index 7675a056117adbc3415892bffddcfc025c589e23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16612 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 D#n2YV diff --git a/test/visual/golden/mesh_freedrawing1.png b/test/visual/golden/mesh_freedrawing1.png deleted file mode 100644 index 37483dd28e52005d3f66af10ecaafe2f8dbef70c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^DIm)(dNUF^7kKb>6J>GiCM_lURx+vD^Tzj;fH1CDpSf}7|;$LG~o3`TJm#bRs z4gTC*<;%U)l_SpFt9yxt6SvY7A>)fdI_t~rbe~m!`e;!6+~S;N`MERCS=-Z}o%#N= z@Z8MjbDmeG9XNvoaxQR+ajfIkJ6j&jBcLPhabeE;Z9KDCZJz}%nHnc>u;oERg6q_; zd^QJ-FFL;qjd;G~!Tc59GeW1nnIrX9hJ_XFz75LrtAnr*0^f_1J zS^UpWe6M-%pUQjFgZrC)yXrqX;Zb#Bu3jPU!S#aHvcK-(W*Q@vJ|hjIC%%ei3%o*R@ut?B=3e#&m&EkPS;_4Ks98HESW zcKlx9d?xAOrn2bSH>PjC9cSO4sv+`Hu_;;bbM5?Bb9z4gd*NQ$ylP6~`UII9Lizn) zBHZr@@4RAkx2ofTOU*xL`PVX?(P8UtmrV5jul|FjLj9iHn~i^V>S!)JQ`OD>-q}{A zZO44o#Y^tit}8B{QoY;Z%`Az7y~ld&b}AU3+?Uf)9sZ$^vovk{n)%#E>Soj!{u7!b zT%!;%<%kc*wv`V)op(6>eZmj7b4T{QRlT~??9~1^g>N|}Rcot8NU&cO zkqOK8bZ*+LdTpoPs~?-a?3{K}_2b#Dwm?c;s3)b#m}O^myLU0%``=C*5<_np@h?`f^q412LqPr`dz z_P3Cm`z8iInWkD{oK)xS9un51^jYBG_0spUrBaD8y*_QYY*Z*t3xRe}w1u%!7x1=H2%Qdi~zv p{;^k|bPtMu>JLjJ5-`8Df8_pM^HIBmC@{k@c)I$ztaD0e0ssj@%ToXV diff --git a/test/visual/golden/mesh_freedrawing2.png b/test/visual/golden/mesh_freedrawing2.png deleted file mode 100644 index 3a0eceb71e7f574f7de7d97741cc824b10077700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12149 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

(`{*CJNM?d9%44C|{dN zO!A6T*Fq($C0KI)?uY~qf4s5Q-b0Eb9!eXRz3C8Uk7@fJZ6-sSL3=6P8io>+H!c2c z!S5YpPPUgPH>GARS$=Rdm z)9J%DLLkL6ly}wt%tk+{+(Q_$LUC1SSp8fyDL3gQ5vs0Itrz0rQt&&i!-FV^o2f|D z9Q<|S6LFTrQdJu8Z6>n1@sl(>gqw1I6y8CvLJA)_{6GtcL4U;Yl$ise`F;q3X!6K* zQI5`UF3nnu-{`m*BNKLMC!Kc{#}y%A5Jm*-nNSW zXQ5>CFtk2F0M5Y(!lK`eiA-iE>Z+1rDQk-VjMPytYic4f(b zMiFiX%7z(!J9(ogzjI}PH?v2V+U%d*WZK@Gg=DBAQUt%zwUGP)UF0c=cAVLczilD6 zc7?PfuEOP)Rh%NhmdhNw;DrnC*n?cM#$}t*@E_35R+=G2O)AEJd`t#(t3xNE$mLBt zG+=R)M7CTOE}@Xq!*2i7Y@Z!gd=-vtu%!%KS2u!6`{Y(3!ab0i*3U53S|F$P#|kic zkPvA$XP&d+AmUg@xgFyr!EVTV?I6?o1&z3qErlT**qpGPJDY{o z2)Wp&vli+L*zMTPFc6Xh(fnUB6BN`DWE19?N9P!iO-t2B^x-b>)aS)(UgUt6oqOH$ z%$BybrjX?w^Qq?5&Bo3(xrHP14405awLF9X^y9TNE|3oimC=vv4P-T;<2SRNdH>&! z)?<1M)*528S4Ty%^MZnzd#c53=D(*eTN9RZW54E@YX~zq`iV`*(OL?HTDs*Ny9rID zsyVGQP&?2ktY|Fh%H*CEb!mJB(6+ zR4XjmET*ukGh2tr++KHr-fHO($MGk!Rsn$^a;BCAw|e zh;)?2(cCZ|rk|Flpaa*|&;E}=Vvv(i@GX`69An-a+`t5>9b6>+yq>3d#BF*yyaHNF zoS0y~eEvtqMe1p&u+H&0>W$SerK zZcMTcvH-4G{MK?$|>ZEY-hjMG0hQ%|=4*52-vpQo4nJ~dzEpTw91 z<*LYXO`Uh|WTF6wPT(D8MR!I;zINxr^_d_!d-a(4KsrByS5x;|k>UB9W&9j=8Tj1j z!>DYvE!pHTEse@t=GE_)`>Uq1kI6M}TmF*qB8VD)ba4WOC>$2V_d#NB|^y?K@BEC5q;q$SRkDpNlLlP4&!|_gR`eR`vBV=74H+Q~s zkqERIVI}ZyG<9%`cAT*Cf=~GMgi5JRb}KgENh}e-TXbLQjpG)9E{t)YqkC}&7rOb7 zemW&7)vlgp`_i-U6)(Oe;*S`;iTY|4NFsfY-*Nb^*R3cV|7a?Tx%m1nWj3~y(=H?V zHT{3H03lAfa}$*yocW0n24*T-eC&%zeBjlF;t^LENZHDI)+S$Tlqf^bm|t~l@1h31 zg#QBOmSFJQDN&d+xV|E!;?HJ+oht~E#>zo=vEyf1gH!c%EVKZhxrF~P#TN%0DjP8* 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≫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® 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 diff --git a/test/visual/golden/top_ctx_freedrawing5.png b/test/visual/golden/top_ctx_freedrawing5.png deleted file mode 100644 index a0b3c628f7b4b562454f61e91e8f75dd64f4559b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-wj^(N7l!{JxM1({$qWpPa-J@Z zAsLNtuNitVJ4zh=_D99qs%I!Me z)nj7H*|fAIx2Jy}te%!%v3^G4!82#h{OeaLaooTo!xVi$y?}KKcg5_YZSxf)MCWkL zW0jiaesE)gVfnd@EWevxPhvWJSup3>xoEEqiaTa6aH-$bwDitScaC$+USFQ8l)qza zn)SeT(TU4z-k**+`kifqK;b*7z0-5kR&~8mnKO5j^qN&CY7X7h+bP0l+XkK DT6CHG diff --git a/test/visual/golden/top_ctx_freedrawing6.png b/test/visual/golden/top_ctx_freedrawing6.png deleted file mode 100644 index dfba572d701ff4c1eb6a9d63e97287f2aaf35561..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7653 zcmb7Jhf@&6S<|?atoL&fMMZZM5MdJys?jCK?(VR{eY0kI!lE`8c}B za6T_@T)cZu7#tqxY12^uYuL8pR2mxoY<+E*@ynd8+<;a-lk}dB+@w~?SCWyyS5k~l z7Zk&>O_;%6Q8LWSMVrCs8aE*B7E^>gr~sQF6osX`*p=%SVn%m(wta$kh7qqs;4fDP5Dd7;>t9~MktQSO&W-f5l! z4O9lTErm$ET6l0^J5P)qHRAz85Rk+~Wc(=ClzItw81tEWCCzMNpiR$ebvcSOxZptL z2CL$9bPY(cXG%u}VboX$%P{0v_fp~o8z##onL|24(*&oY7|&|4Rtx5xKRYRo#c6)S z*_M|tXhu+_&70D;aT@rq9pSd;LO9y6f7tU4S3)6(D>}aV;|q(Z4O?9qWJ$2uOw1*| z{cY>(hq?2Te|u0*Z|Q11=y5aGTPD>D?zA}o{N;KZxg#sgP)LA+u>=(8m7uY&PoS{& zzF!^?!#MJ~^;b}2Wv`mEq^tORA9Y7uA&6izBRswwz=RyEOhflP|?M|I`CNlaAbyD2X1)&q9!? zq|A$AP0qrA23|t$ zG^e$P>rhr^(W@H)r*h9)9#z%2-65${4-Pid(kuM=7Urp7#J3kwz=^M4`N&1 z^)>p`9(%}8pHX@}AJlV@Sjv7R|K)Gh|-33!3n%Y_7IjCu0Be=5^8ufx9NNGAz>tERpUj_{{CL+fpPVL`V7lY zM`PfWTHEs;<6T%|c+o1tQC`7MCltaGtfSmqq!U2925A#SIOzr^?A7K~EGaNYE#{Wl z866zzH6D&w=jGXyR^9(&e_M90uyWLkNHjQZ=yR(KOPOPt^8dr3tM@V>jCX<32X=oY z{i=P@H>^5gBzQWkD10IjOmh( zb{53KX|v#K_oV09*+|$bFJ%&dWdqDYVp(GnyU__>DnI-*eH&k;Ltw-{J?*75q8qM5 zluP&;oetDCZshVcH6@G)Pij{Uj8u69Rt=gZ%H0El_O`Jq>*~&}EPL2Z2U0vXx{6|8 z*K@SH`jgMVHt4ZUSW*jnen`)oR#qT!C#x_v{l&6-dz|)HKY^M`^HSZi$OEnNWz=$+cYaKrV{Cddab-I-1<0~-FL|3?fJ(u)*!3Dk&Rh5f3*v8W= z6!MF}mZ>N?F94}`VtgT(kdjsIdFQ&Aw^ysM$~3;OV``v7S&*WuPaxTU#51FK5kI2# zg_(oP5xqlpnJ<-DMc;3loT-0y*vO)gWbb3{(4MNAA6g3Z_-cBBOo!&bV=KyAb0AmL zetuliEEh(;27Li=y+-Q-Os>XX#G772#eU~3OsvhEUmlxBe?(7$5_q9cW?8FBvBZPN?VvqBYxyP}bgKqh^cmvd z0P#|^!XsCMwcUV!G*OosJBr=)Dvh!IHI^J75h8`Ee7w4U7Wu{Dd&_#meFqw8krDQG zktQy#iUw5piu=qX12J^us*~O2OMV9Ge~*8LB%53=ST0H3NZZ*v8yT_gXb{$&)UVrI zt2dvhKKqmstdzhSIeOc*EdSzc#m`75Id37v+Dkv~?s7vhg!7E)1*noCyzuFxdfhBS z=IIcHsoCRrrkM5Jx&0I|Z+F=^+fkddRn=nZix+jjlI&F-q{YuAo6oxAa?J75FNK8? zX}b{IZ9*iM_yqR{@&Xo@iJ&f$F8-PU?Qm?!)aZKKB|LQcTf;Zm$Mv_zepaw6=+F(n zfn%2(ET8^x)rGFySa3TVdir%XpAul#etDFkixiFWZ5w8VDKy-ev<3skhR}{uQKMH5 zD76XN6IpewMR6FDO9f)myDKbf$$YPO6rHbDV7S%1f#g0lmb;=UtRE4u`x%d(XocIL zlbf6z-A?A+yco01=y|;i(w#fasU57HcdbDa-kk%T2)hKj_pka-Zg%Luc*0J)wZODs zg%yN;B>j%kACUWC-{!2N2YmD*pw-q(10^u6(|EJ&We*Ik&IP09+8!8v+mz;qWIt~& z^~J7v1r)Cm(?*UcJDE_nC3*f~dbO>@(=oxIJGbl#@$8RM+_!p$m4`{ZA;RW1GA||b z#ahX!F=JK`usTASe3Q%U8S6J>J>{jL(fHCAOE#3jgQYQ)n~n=-#j$v`ziv(71HBC$ zh)Q1nDBKKyQYGn@eJIi&p7mTSZ?Vu!>7*rO|EEobKaEZ^X zEC_ig4V0&}c-=$qeCT$son7f@-NShX4)=9mfS;WCz#gSf@H|+A$2bl#V^MLJOKND_TjJkvmKD6 zthXFa1`8hc>c%%eX7|y-fuPS@S6kS~MON`{A{mQ#x!k*XpPHMx!JM`N0Wg$^W&pgl#wjGCrN8j^LP?N!l=t}P8!B$?raCf^O`TlD# za*8{ivGvx?$o-7VNX!e)85$mrX&xblqvUG7M2F^=ZsHNK(d>y}eH$*s!NhplCAbKy zgZvaTlEHE@jA~I+DJ~wU{a+3ky#;}j)?A$ zN`R{pD!_N9l;6?niBAQjf8hZoBH^j_QumIriNJ`zIr~AL z%I9)yKcgSC2@`f|DqU}$FGIjQU?O$c02A4RL&$!;ua@n;w zxum;jq+5scQC9;ln-mnC8uc2veD-qYIvA)NKD?##!! zje#v}!{+2!TQXp>AF1*^r`7Bmt}qnEKW1$tgKoDxV={WMakMiOw_>aHRDacyXKPhv z`F_5qwH@0LlJNYbso9-vwEEP)>5gNw{w-fx*ZWrQ!QQA;>xZY{5AqohA% zANcvWy9MeJ0qILWC&r!LRQ;RZ+>2WgT^bnqPm2-I!w!TNxSgl<4s?-WIWGnY$B_c5 zZB@PIWHnoI)?~lb`^!$LB^6y;?k$%aHG@s9gEW8AT1Q*`Yp0Q@yyHv3$_VzGle^ka zth#-suZ75QC$@^=6hWtR)AbdUB5xo@dT)MvCT>MNDRBm;mkC%(UKgp+S;>QPOE&w~ zRPFn8ysbQE@EiLp**yAn%vt1@!_U%Bl}cdM!T#uVuH$io`DpWFtx6aUxmrt$)Gs}J za%NV8kJZ)KAyR_W%a>gwt&2x}+)9g@Jw=(VT&q%YU;_?*DIv65k)5LR9Mdvou3EI?DhZ<%5`N{ ztBHl==eL@hXhP~*tN4P~ScG1nqB@?gB^~SD z;n7i?AO9Ncdreog&|q(5Kg^>GpTdu{8??)O3XZ$OYC6;?0kyjfKNO^F%Ev{H?wmzR zUDr$BXAYim=a{{va-`}pe;GaZuCB_cDaQo>zrd}lMe6NrD+<4gbzSV>g26YIp4BsE z!xVjuy01M591G~EzRty2Fe1zFTJ%>6xi4OWX;hiNzJD_~NDjj4Xju56?}gX9xYbHe z7DO^J!0vxRgq=o2y+FMg43c`%KJsMh)P{vVm%YOOYMLah@wf`_*Ki0CYT5c|W8n_l+` z^uY-{PzxQ{6V4gfmiS|T=Tw(*Gy}VKj;g)(2+nqaTRYU5o@3ku_pnrH>2Yzxpvj7K zBZvCeb~F!hB|#6+cz?!je&xd3igA&oai5A?xS#_4&>MzWG549LX)L~vXH%+38IEZnAez%Jo1u*057b@O0>i!81%?o}&-hfyt#YW!)$(cCBazvz z^Za(?Ja{)gkPh{=#a46t2kSVVf~%mJTopk?`|gca2j9%tlw-2nT`wAspa|bi9($%g zTr>NG5&Cz>J~#hd^5Qhk(3Vqrg1YgCaY1?^SNWMH%fAGG01)>TxunW3;TAiJWT9!} zXjGem8(&Ep+ugXCX_FcwJfvNl5Q)p;O(WX{%`zjq%ZzzRC3GjC!{Y2P$!}^pd9AwQlQ0F?l^oi*uukk8p@id9v zq{M}~`Q_WSoJX_A0f>tpo=Mun8mo?;?@4r?)B=x~M%lLN9R+8)T+Re@tc1l&)->7baSn(;wzm=G&Re8$7n;|YHze}t7Z<32)kw4 zI10o=4xh@;$Qb0>k}U~ue=o1POD2H>t)l)J970NJ>d%53zO5DrU@WFQOx4sU!!Mt`;q^ zt>oc|`i0hzUurJnW~AwB;1zoK^U`CtbvA1Dosw+tHW}4?PaV*7u6%z-uNrm!5fyQc#;4!Yf*Djs(}T7W0;m*6cZyHFZW0TIcj)Mv3M8OJ3`*Qtm(g^sa3b$a5K`kPwUQ zpx;}`j;W=o52D3uz+G`{gu7+KxpcE6OUr@_h0%RCAsl7&sKQjB2@9Sl! zQBEc@?xLLX>ET~XKs!f658f)W7w%Q?fBlatMFg?<&OyI zrbhYs$a_nd`y(Z=yR9MBNfy6@@xHrilf47HzId{IV~kJRkROL8zO3qm;afbGiDX$8 zT{xeL9&{W~j8!!J9+UFWsRA%m$XBIO`4C?g`qceFpsp5F3Fw$oz>}slG_dXyro=nd z>~dX(kcz$Hn*C57uCu{q{2g}tFk`t2o07x${CY^azz2M##g)j`GP$Z3INiL}JZc^q4`z}H#z#@GZrO{7=Wm&NFa19 zWk1wME^1Z)@VEcl z>AzIm^#=}CDQfte+-dLccibksp7e!$o5)n+xjaZ#)2??4fyd8{K_d1n!LOe0bE4nV zx3wqkT2%l>ff!dCUVj#l8cAlcVj^StO#;fM7nO80DKI?A$@P6h%gPFkQd;ut!4>L{ z4q}+)%4wLo?xQ>xviRD5SP6Wq4_++V_@~3 zZ?H;A#=QA@(%xb}q&;O5eEv-dkJ5c?1I~s|>tJ0K2wYG>U@ptl8$@))F4oG&{Q=ZW za8{z{T&shXlT-X7Z1%)wm#Ph+SqzpLrR(k%S1~GQJd0GnHk~ahJaj3gH3K8?P2~Bz zH`BjYFDU6Cz+6+xZ!3>|-QBXehp@+025oJe;b+8L&oo}v9fcQkvs1rq%2N&(-4qrg zn%aJtE%}An&<0iJ$gh|Ys%oW2^}-`~s70O462r$^Zk z+{LP$v9VrR-y36*rL@KhhM@{L5#&8fi>hKC+_mhBgieUau2n6tLK9tz{Bb_X-Zcb?0e;kQ=tOek~r*#21EBX2#QHt9rUveCsU`Zd|C zdQl~Nb}vPQlE&xcxL=|7QjaaK`F{9-eSj%mV#rY$$g40J_5M8d{XU_i8`m2ZIrnP! zI_RMO(y-ufI|nN>Rfwp$0e)!cA`e404depKc?h%Qh*dxYgb5+9R3tHHRuABfbqx?f z^O#pZx@?+|Alptrpv?scpx(sYjaSPN`s}#MIECYHK~1H6HXSRFAI;2E=9|Q#kSe)H zKXn^gOc7s6A(s@&VXGJORWpgf)o!qsuQ*vw5yrRAO~IEZ7$#WFBbfKH86RE@nYJ6G2!Y+pj9Q-)j#7R55rdOiz_JoNpU}~+tTRkJkqYx Hw8#7p?1%kh From ae7092a78af6bbbca2159eefc1341c7cbbe6713c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 13:37:23 +0200 Subject: [PATCH 072/153] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b01d29a0bb..a6a4e30b85a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ ## [next] - chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) +- feat(Brush): `clipPath` [#8476](https://github.com/fabricjs/fabric.js/pull/8476) + BREAKING: + - brush doesn't add result to canvas anymore + - `path:created`, `before:path:created` events are deprecated, use `interaction:completed` instead + - `_render` method is now protected, use `render` instead +- ci(): `.codesandbox` [#8135](https://github.com/fabricjs/fabric.js/pull/8135) - chore(TS): BaseBrush abstract methods [#8428](https://github.com/fabricjs/fabric.js/pull/8428) - feat(): Add `createObjectDefaultControls` and `createTextboxDefaultControls` to create copies of control sets. [#8415](https://github.com/fabricjs/fabric.js/pull/8415) - fix(PatternBrush): `getPatternSrc`, rm `getPatternSrcFunction` [#8468](https://github.com/fabricjs/fabric.js/pull/8468) From 9bdd622729118fdd90ba2f9dfd500b4ec8c0fa4f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 13:38:39 +0200 Subject: [PATCH 073/153] Update CHANGELOG.md --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6a4e30b85a..14c3795c2bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,11 @@ ## [next] -- chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) - feat(Brush): `clipPath` [#8476](https://github.com/fabricjs/fabric.js/pull/8476) BREAKING: - brush doesn't add result to canvas anymore - `path:created`, `before:path:created` events are deprecated, use `interaction:completed` instead - `_render` method is now protected, use `render` instead -- ci(): `.codesandbox` [#8135](https://github.com/fabricjs/fabric.js/pull/8135) - chore(TS): BaseBrush abstract methods [#8428](https://github.com/fabricjs/fabric.js/pull/8428) - feat(): Add `createObjectDefaultControls` and `createTextboxDefaultControls` to create copies of control sets. [#8415](https://github.com/fabricjs/fabric.js/pull/8415) - fix(PatternBrush): `getPatternSrc`, rm `getPatternSrcFunction` [#8468](https://github.com/fabricjs/fabric.js/pull/8468) From f4b380cf266aba4aa483abba890325dc95e8cc5c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 13:56:42 +0200 Subject: [PATCH 074/153] async event fix --- test/unit/draw_shapes.js | 105 ++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 45 deletions(-) diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js index f35c271d108..a4cf8f5ba71 100644 --- a/test/unit/draw_shapes.js +++ b/test/unit/draw_shapes.js @@ -17,31 +17,33 @@ }); hooks.afterEach(() => canvas.off()); - function runShapeBrushTest(brush, assert, e = {}) { - var fired = false; - var added = null; - canvas.on('interaction:completed', ({ result }) => { - fired = true; - added = result; + async function runShapeBrushTest(brush, assert, e = {}) { + let fired = false; + const result = await new Promise(resolve => { + canvas.on('interaction:completed', ({ result }) => { + fired = true; + resolve(result); + }); + var pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); + var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); + var pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); + brush.onMouseDown(pointer, { e }); + brush.onMouseMove(pointer2, { e }); + brush.onMouseMove(pointer3, { e }); + brush.onMouseMove(pointer2, { e }); + brush.onMouseMove(pointer3, { e }); + brush.onMouseUp({ e, pointer: pointer3 }); }); - var pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); - var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); - var pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); - brush.onMouseDown(pointer, { e }); - brush.onMouseMove(pointer2, { e }); - brush.onMouseMove(pointer3, { e }); - brush.onMouseMove(pointer2, { e }); - brush.onMouseMove(pointer3, { e }); - brush.onMouseUp({ e, pointer: pointer3 }); assert.equal(fired, true, 'interaction:completed event should have fired'); - return added; + return result; } - QUnit.test('Draw Shape', function (assert) { + QUnit.test('Draw Shape', async function (assert) { + const done = assert.async(); const brush = new fabric.DrawShape(canvas); brush.width = 5; - const shape = runShapeBrushTest(brush, assert); - assert.ok(shape instanceof fabric.Rect, 'a rect is added'); + const shape = await runShapeBrushTest(brush, assert); + assert.ok(shape instanceof fabric.Rect, 'a rect is drawn'); assert.equal(shape.strokeWidth, 5, 'should set width'); assert.equal(shape.width, 10, 'should set width'); assert.equal(shape.height, 15, 'should set height'); @@ -49,10 +51,12 @@ shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Shape + symmetric', function (assert) { - const shape = runShapeBrushTest(new fabric.DrawShape(canvas), assert, { + QUnit.test('Draw Shape + symmetric', async function (assert) { + const done = assert.async(); + const shape = await runShapeBrushTest(new fabric.DrawShape(canvas), assert, { shiftKey: true }); assert.equal(Math.round(shape.width), 13, 'should set width to height value'); @@ -61,30 +65,36 @@ shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Shape + centered', function (assert) { + QUnit.test('Draw Shape + centered', async function (assert) { + const done = assert.async(); const brush = new fabric.DrawShape(canvas); brush.centered = true; - const shape = runShapeBrushTest(brush, assert); + const shape = await runShapeBrushTest(brush, assert); assert.equal(shape.width, 10, 'should set width'); assert.equal(shape.height, 15, 'should set height'); assert.deepEqual(shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Shape + symmetric + centered', function (assert) { + QUnit.test('Draw Shape + symmetric + centered', async function (assert) { + const done = assert.async(); const brush = new fabric.DrawShape(canvas); brush.centered = true; - const shape = runShapeBrushTest(brush, assert, { + const shape = await runShapeBrushTest(brush, assert, { shiftKey: true }); assert.equal(Math.round(shape.width), 25, 'should set width'); assert.equal(Math.round(shape.width), 25, 'should set height'); assert.deepEqual(shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Oval', function (assert) { - const shape = runShapeBrushTest(new fabric.DrawOval(canvas), assert); + QUnit.test('Draw Oval', async function (assert) { + const done = assert.async(); + const shape = await runShapeBrushTest(new fabric.DrawOval(canvas), assert); assert.equal(shape.rx, 5, 'should set rx'); assert.equal(shape.ry, 7.5, 'should set ry'); assert.equal(shape.width, 10, 'should set width'); @@ -93,12 +103,14 @@ shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Oval + centered', function (assert) { + QUnit.test('Draw Oval + centered', async function (assert) { + const done = assert.async(); const brush = new fabric.DrawOval(canvas); brush.centered = true; - const shape = runShapeBrushTest(brush, assert); + const shape = await runShapeBrushTest(brush, assert); assert.equal(shape.rx, 10, 'should set rx'); assert.equal(shape.ry, 15, 'should set ry'); assert.equal(shape.width, 20, 'should set width'); @@ -107,10 +119,12 @@ shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Oval + symmetric', function (assert) { - const shape = runShapeBrushTest(new fabric.DrawOval(canvas), assert, { + QUnit.test('Draw Oval + symmetric', async function (assert) { + const done = assert.async(); + const shape = await runShapeBrushTest(new fabric.DrawOval(canvas), assert, { shiftKey: true }); assert.equal(shape.rx, 7.5, 'should set rx'); @@ -121,12 +135,14 @@ shape.translateToOriginPoint(shape.getCenterPoint(), 'left', 'top'), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); - QUnit.test('Draw Oval + centered + symmetric', function (assert) { + QUnit.test('Draw Oval + centered + symmetric', async function (assert) { + const done = assert.async(); const brush = new fabric.DrawOval(canvas); brush.centered = true; - const shape = runShapeBrushTest(brush, assert, { + const shape = await runShapeBrushTest(brush, assert, { shiftKey: true }); assert.equal(Math.round(shape.rx), 18, 'should set rx'); @@ -137,18 +153,24 @@ shape.getCenterPoint(), new fabric.Point(10, 10), 'should preserve position from mousedown'); + done(); }); [fabric.Polygon, fabric.Polyline].forEach(builder => { QUnit.test(`Draw ${builder.name}`, function (assert) { + const done = assert.async(); const brush = new fabric.DrawPoly(canvas); brush.builder = builder; const e = {}; - let firePathCreatedEvent = false; - let poly = null; - canvas.on('interaction:completed', ({ result }) => { - firePathCreatedEvent = true; - poly = result; + assert.expect(3); + canvas.on('interaction:completed', ({ result: poly }) => { + assert.ok(poly instanceof builder, `should create poly of type ${builder.name}`); + assert.deepEqual(poly.points, [pointer, pointer2, pointer3], 'should set points'); + assert.deepEqual( + poly.translateToOriginPoint(poly.getCenterPoint(), 'left', 'top'), + new fabric.Point(10, 10), + 'should preserve position from mousedown'); + done(); }); const pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); const pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); @@ -158,13 +180,6 @@ brush.onMouseUp({ e, pointer: pointer2 }); brush.onMouseMove(pointer2, { e }); brush.onDoubleClick(pointer3); - assert.equal(firePathCreatedEvent, true, 'interaction:completed event should have fired'); - assert.ok(poly instanceof builder, `should create poly of type ${builder.name}`); - assert.deepEqual(poly.points, [pointer, pointer2, pointer3], 'should set points'); - assert.deepEqual( - poly.translateToOriginPoint(poly.getCenterPoint(), 'left', 'top'), - new fabric.Point(10, 10), - 'should preserve position from mousedown'); }); }); }); From d400cf305a0fa0f983afb4593fe26703db558c79 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 14:10:55 +0200 Subject: [PATCH 075/153] handle `_isCurrentlyDrawing` by brush --- src/brushes/DrawPoly.ts | 10 +++------- src/brushes/DrawShape.ts | 3 ++- src/brushes/base_brush.class.ts | 13 +++++++++++-- src/brushes/circle_brush.class.ts | 5 +++-- src/brushes/pencil_brush.class.ts | 11 ++++++----- src/brushes/spray_brush.class.ts | 5 +++-- src/mixins/canvas_events.mixin.ts | 12 +++++++----- 7 files changed, 35 insertions(+), 24 deletions(-) diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index 16c2069c009..fabc8bd8c85 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -2,6 +2,7 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; +import { TBrushEventData } from './base_brush.class'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawPoly extends DrawShapeBase { @@ -34,13 +35,8 @@ export class DrawPoly extends DrawShapeBase { return shape; } - protected async finalize() { - // release interaction - this.canvas._isCurrentlyDrawing = false; - return super.finalize(); - } - - onMouseDown(pointer: Point) { + onMouseDown(pointer: Point, ev: TBrushEventData) { + super.onMouseDown(pointer, ev); if (this.shape) { this.addPoint(pointer); } else { diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index f1d8ce8d23d..cece19c5dd9 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -60,7 +60,8 @@ export class DrawShape< } } - onMouseDown(pointer: Point) { + onMouseDown(pointer: Point, ev: TBrushEventData) { + super.onMouseDown(pointer, ev); this.build(); this.start = pointer; } diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index bc8070a776f..2a64a1bea27 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -90,12 +90,19 @@ export abstract class BaseBrush { } protected abstract _render(ctx: CanvasRenderingContext2D): void; - abstract onMouseDown(pointer: Point, ev: TBrushEventData): void; + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + onMouseDown(pointer: Point, ev: TBrushEventData) { + this.canvas._isCurrentlyDrawing = true; + } + abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; + /** * @returns true if brush should continue blocking interaction */ - abstract onMouseUp(ev: TBrushEventData): boolean | void; + abstract onMouseUp(ev: TBrushEventData): void; + protected abstract finalizeShape(): T | undefined; /** @@ -234,6 +241,8 @@ export abstract class BaseBrush { } protected async finalize() { + // release interaction + this.canvas._isCurrentlyDrawing = false; this._resetShadow(); const shape = this.finalizeShape(); if (shape) { diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 7a1ff5e9a2f..3dd6bd18ddf 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -6,7 +6,7 @@ import { FabricObject } from '../shapes/fabricObject.class'; import { Group } from '../shapes/group.class'; import { getRandomInt } from '../util/internals'; import { Canvas } from '../__types__'; -import { BaseBrush } from './base_brush.class'; +import { BaseBrush, TBrushEventData } from './base_brush.class'; export type CircleBrushPoint = { x: number; @@ -90,7 +90,8 @@ export class CircleBrush extends BaseBrush { /** * Invoked on mouse down */ - onMouseDown(pointer: Point) { + onMouseDown(pointer: Point, ev: TBrushEventData) { + super.onMouseDown(pointer, ev); this.points = []; this.canvas.clearContext(this.canvas.contextTop); this._setShadow(); diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 4585f2a497a..08703fa63e1 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -5,7 +5,7 @@ import { Path } from '../shapes/path.class'; import { PathData } from '../typedefs'; import { getSmoothPathFromPoints, joinPath } from '../util/path'; import { Canvas } from '../__types__'; -import { BaseBrush } from './base_brush.class'; +import { BaseBrush, TBrushEventData } from './base_brush.class'; /** * @private @@ -64,11 +64,13 @@ export class PencilBrush extends BaseBrush { * Invoked on mouse down * @param {Point} pointer */ - onMouseDown(pointer: Point, { e }: TEvent) { - if (!this.canvas._isMainEvent(e)) { + onMouseDown(pointer: Point, ev: TBrushEventData) { + super.onMouseDown(pointer, ev); + if (!this.canvas._isMainEvent(ev.e)) { return; } - this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; + this.drawStraightLine = + !!this.straightLineKey && ev.e[this.straightLineKey]; this._prepareForDrawing(pointer); // capture coordinates immediately // this allows to draw dots (when movement never occurs) @@ -108,7 +110,6 @@ export class PencilBrush extends BaseBrush { this.drawStraightLine = false; this.oldEnd = undefined; this.finalize(); - return false; } /** diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index abe4fc4b102..5b7c8eebf8d 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -5,7 +5,7 @@ import { Group } from '../shapes/group.class'; import { Rect } from '../shapes/rect.class'; import { getRandomInt } from '../util/internals'; import { Canvas } from '../__types__'; -import { BaseBrush } from './base_brush.class'; +import { BaseBrush, TBrushEventData } from './base_brush.class'; export type SprayBrushPoint = { x: number; @@ -127,7 +127,8 @@ export class SprayBrush extends BaseBrush { * Invoked on mouse down * @param {Point} pointer */ - onMouseDown(pointer: Point) { + onMouseDown(pointer: Point, ev: TBrushEventData) { + super.onMouseDown(pointer, ev); this.sprayChunks = []; this.canvas.clearContext(this.canvas.contextTop); this._setBrushStyles(); diff --git a/src/mixins/canvas_events.mixin.ts b/src/mixins/canvas_events.mixin.ts index 0b12a5104e6..9857086cbe0 100644 --- a/src/mixins/canvas_events.mixin.ts +++ b/src/mixins/canvas_events.mixin.ts @@ -902,12 +902,14 @@ import { fireEvent } from '../util/fireEvent'; * @param {Event} e Event object fired on mousedown */ _onMouseDownInDrawingMode: function (e) { - this._isCurrentlyDrawing = true; + let dirty = false; if (this.getActiveObject()) { - this.discardActiveObject(e).requestRenderAll(); + this.discardActiveObject(e); + dirty = true; } - var pointer = this.getPointer(e); - this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer }); + const pointer = this.getPointer(e); + this.freeDrawingBrush.onMouseDown(pointer, { e, pointer }); + dirty && this.requestRenderAll(); this._handleEvent(e, 'down'); }, @@ -933,7 +935,7 @@ import { fireEvent } from '../util/fireEvent'; */ _onMouseUpInDrawingMode: function (e) { var pointer = this.getPointer(e); - this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ + this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer, }); From bdd4491ea6d49368877c8c1d0f709935d7988508 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Mon, 28 Nov 2022 14:54:39 +0200 Subject: [PATCH 076/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 2a64a1bea27..e80fbcaa344 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -85,6 +85,8 @@ export abstract class BaseBrush { */ canvas: Canvas; + active = false; + constructor(canvas: Canvas) { this.canvas = canvas; } @@ -93,7 +95,7 @@ export abstract class BaseBrush { // eslint-disable-next-line @typescript-eslint/no-unused-vars onMouseDown(pointer: Point, ev: TBrushEventData) { - this.canvas._isCurrentlyDrawing = true; + this.canvas._isCurrentlyDrawing = this.active = true; } abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; @@ -241,8 +243,8 @@ export abstract class BaseBrush { } protected async finalize() { - // release interaction - this.canvas._isCurrentlyDrawing = false; + // TODO: once canvas is migrated refactor `_isCurrentlyDrawing` to a method + this.canvas._isCurrentlyDrawing = this.active = false; this._resetShadow(); const shape = this.finalizeShape(); if (shape) { From 7d5c2acea48a6c0a220ac8d1214121dc7a869981 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 7 Dec 2022 10:27:19 +0200 Subject: [PATCH 077/153] tests --- test/visual/freedraw.js | 47 ++++++++++++++++++ .../clipping_PatternBrush_inv_mesh.png | Bin 0 -> 5189 bytes .../clipping_PatternBrush_inv_top_ctx.png | Bin 0 -> 5189 bytes .../clipping_PatternBrush_mesh.png | Bin 0 -> 3026 bytes .../clipping_PatternBrush_top_ctx.png | Bin 0 -> 3026 bytes ...clipping_PatternBrush_vpt_abs_inv_mesh.png | Bin 0 -> 14768 bytes ...pping_PatternBrush_vpt_abs_inv_top_ctx.png | Bin 0 -> 14768 bytes .../clipping_PatternBrush_vpt_abs_mesh.png | Bin 0 -> 5885 bytes .../clipping_PatternBrush_vpt_abs_top_ctx.png | Bin 0 -> 5885 bytes .../clipping_PatternBrush_vpt_inv_mesh.png | Bin 0 -> 15300 bytes .../clipping_PatternBrush_vpt_inv_top_ctx.png | Bin 0 -> 15300 bytes .../clipping_PatternBrush_vpt_mesh.png | Bin 0 -> 5738 bytes .../clipping_PatternBrush_vpt_top_ctx.png | Bin 0 -> 5738 bytes .../clipping_PencilBrush_inv_mesh.png | Bin 0 -> 3538 bytes .../clipping_PencilBrush_inv_top_ctx.png | Bin 0 -> 3538 bytes .../freedrawing/clipping_PencilBrush_mesh.png | Bin 0 -> 2745 bytes .../clipping_PencilBrush_top_ctx.png | Bin 0 -> 2745 bytes .../clipping_PencilBrush_vpt_abs_inv_mesh.png | Bin 0 -> 8230 bytes ...ipping_PencilBrush_vpt_abs_inv_top_ctx.png | Bin 0 -> 8230 bytes .../clipping_PencilBrush_vpt_abs_mesh.png | Bin 0 -> 4081 bytes .../clipping_PencilBrush_vpt_abs_top_ctx.png | Bin 0 -> 4081 bytes .../clipping_PencilBrush_vpt_inv_mesh.png | Bin 0 -> 9333 bytes .../clipping_PencilBrush_vpt_inv_top_ctx.png | Bin 0 -> 9333 bytes .../clipping_PencilBrush_vpt_mesh.png | Bin 0 -> 4176 bytes .../clipping_PencilBrush_vpt_top_ctx.png | Bin 0 -> 4176 bytes 25 files changed, 47 insertions(+) create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_mesh.png create mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index c55f2ae0215..9da3eea693d 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2234,6 +2234,53 @@ QUnit.module('Free Drawing', hooks => { } }); + function generatePointsToCover(width, height, step) { + const out = []; + for (let y = -height, side = 0; y < height; y = y + step) { + side++; + out.push(new fabric.Point(side % 2 ? -width : width, y)); + } + return out; + } + + const pointsToCover = generatePointsToCover(500, 500, 30); + + [fabric.PencilBrush, fabric.PatternBrush, /*fabric.CircleBrush, fabric.SprayBrush*/].forEach(builder => { + [true, false].forEach(vpt => { + [true, false].forEach(absolutePositioned => { + [true, false].forEach(inverted => { + tests.push({ + test: `clipping ${builder.name}${absolutePositioned ? ' absolutePositioned' : ''}${inverted ? ' inverted' : ''}`, + build: canvas => { + const brush = new builder(canvas); + brush.width = 30; + brush.color = 'red'; + const clipPath = new fabric.Circle({ + radius: 50, + absolutePositioned, + inverted, + canvas + }); + clipPath.viewportCenter(); + brush.clipPath = clipPath; + canvas.freeDrawingBrush = brush; + canvas.isDrawingMode = true; + vpt && canvas.setViewportTransform([1, fabric.util.degreesToRadians(45), 0, 1, 0, -100]) + pointDrawer(pointsToCover, brush); + }, + name: `clipping_${builder.name}${vpt ? '_vpt' : ''}${vpt && absolutePositioned ? '_abs' : ''}${inverted ? '_inv' : ''}`, + percentage: 0.09, + width: 200, + height: 200, + targets: { + mesh: true + } + }); + }); + }); + }); + }); + tests.forEach(({ name, targets, test: testName, ...test }) => { const { top, main, mesh, ...options } = { ...freeDrawingTestDefaults, ...test, ...targets }; QUnit.module(testName, () => { diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_inv_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..d348811feb1ced926314ee13741672135199b54d GIT binary patch literal 5189 zcmZu#X*`tQAAM%BuQM3g8Dq%|$`skl*r)7_86mqunL&s!A|_-_AzLWRj6Id5C`)4$ zku6kX50PwOabABEP9smINEiFv!Su6d&!NtLv zYw>l(tOXQmZ;k=#2BlU2K=_}fiIHQZ`?}i|x}T}|OO8iRW*m_%6__$XQOnctGw5(` zQ;RIOLr4OK7in?xYx2D_VR4BMY$?!L!86COw}U>(8X4vJwZ=l)5?%hDpq;-kJnk0p z2WvC)J)bZXTCB7DHq>u0UnjKAQ?~f$r-;FslM^vtLYL-?14Sh4L9YBvM?eygs%|zA zWEuf+wp~tELv4TKKtUWtA+i-#kK*E;8V>+H#KbwyS*97qCiK#4lL+`TZsze^iXcy z!8Jn$kuwd?-m_YouoEWWkQ4@^n6w2&eCT1gI6X^;YDsgdf(S>bolu76LBL^|+$yO~(y}03 z`hK3nTq2}2;k*Tbwz|*t-l*?Qp^$Ro*$E_0m^5R}?m9bdEtK1eu%OL(EE-EGtEN8C z-!rn1S}xs&)8DUpsgx6-@bD2!$0d)iy1b1AVz{(k7e~DR*La`r;_BWCtaHyXd6P2S zF~DFLVx06^O-^Le>qq0t2aSt4;dc4aLl!ipn=l)ZDHv>>P0~ih1tw%AtDkc07Kx(+B4Y^&%g`+?h6sDz6oGnYyO1WTF~}DlNS#1 zzR22kX$@@cyg5}lZDejs-aOBFZcfg$VFX~kM}m$Mtp|9wOx}nYdLmZeDqy_zZNlu! z0uT+8i#w-&D;&ZqqDCI0xsPxhfXS6GVnJ`@qtmfYl5Jx33$?MSM<|}o(zCtqUo`7E z{s;-7!2BtS^PluYHVLUeuv|ljNRGfXCq8`I_zrz5daUXvH6-%22n1w3a`e^RMw%E? zi`~^<>elGvAr->mp-0H~mXzCHc&S zw4VvU;KYztE}X;dw2!#1g3jM}gHuYAa?N(f2HefR%GjluM%k~3_m-YN{&7z&?(jZ1 z_G6+EsN-l?;MkU9zv_?)TefMJHk}=aeW-jDoeoRRDtOrEzp^gODz8*-b; zM8CbzsQW$ZU%LzF*>ibkz#q^y?S!uR=AWh#uDcvAxxRsY3fs!k7O*HP+`t3=ph&9w zc=dcM&Y_O&KD!9X@ZKz51s$1*aDtl*pd{|_h)gr)Y71axI@kFKu+>Q`EkUdhHz7n;*X z)8GAa&wGqIo*j@ZNSet31`#AFSFX);+r{k5?;U}V;8ZD`3g5t6JzdW8{L(FS&Vb9^(0g^~ z9NSmdZ;n;?RuIb?&T;Q{nj@e&PQ?(7OH?iGu-NPm1Zc|?Y^Y+ob_km!I%Vs9&ly-d z1FG!bMB6osE~O^b9@1M_C|2l%BqxJt7aNDYzak3w1RC$v&gSs! z|4A{+w%P+jB!=6aFWEkswXu`=JpCNwHr?bh{mSx}yw7)BmqR>I5~RVt2?8>7wB!yg ze~kg^5p3nC3!{p7V7eVSxfP*n&Rz)C=IDx(+AM4uq`qrDzKu;UtDt9v(hV=)2QRoB z59E2Gp?NnA(I41O)8bSX$I6Z|Ombh@3X=ziN7O_W=lz5=*N~n%F?wIB&`UD3$Qtm* zcWP^^zB3SF_b#So&rDF^)UG)CE1JbqVcX(6;+Q^v5#qFK+RU>e_RY&3uU_aU8m>B> z$C!PHua-PzN06+m7Ov~R@pUPQ+%X_Ryi-5?cKrbST&PPR!xOVv1Enn9)rT5w|+S&j2%<@@p z78~Kd3sUa}o|&7xfehbpf8pDLt&_^5LeZz% zdDi8Ixn3f9bR0qTiXMpOI*bSBZ9nIa{EgZj*zV(R#Qvti5$%?`(hB07tvrj+PY{(= z1q0=|=i9K&M-T~5@mMaO=C{-ced8bzGsXRpb?wA$!86?g2VtdmURQawvwf9*HvwrMr4+xDhw!tUE6I{21>7v7%|BM~?prb-T_Jn*Mt~C6lUlF- z7EWbA8`|{)a0km#@o}KdL}X_^K>d2JGVvaF+xTC*15r*ZCr%~qZ!S}8a5b1i7U2tG; zEh909ZXSE4l+o%xqQW|PVG+5BlP46(XYK09ZN!{fopWO()iZGyK|)gPnLJFf7bD2w zwm`e~hehhtlPf%#q3_Rg%e_C@^P+l*T5K828*$Vh9jvkKm-9UtwwV#d-sGiex0pM| zDmuY2PZvXDw!KUd`$95GpW}+j{$G)7OT8(6&JU#(BwihrR*+uKEMN=IycC{02I1{$ zt#O5WrlfU=b(d)P_-I;kHn@XIQiCK#F1}>t3;)JMwWsCJy|XD<1P%UwQVz@UEalhPo?mWnd_(YW8vJw4o3%ETm3Y{utpq|k#n+P?=)nt#~QbB_etG|tg9&1fq z4QCnJ-eS_j%2u`;Gok8pJ;_=XX^`0s>pLg%eg?h8qQR^8P1((X> zO5(2ZJ!`Y*S@`jJAq=#`kO#{%S)u3AHr$7Xl~N|DqK77{$-#$nmCm|8_G)l>zYw)W zUK=7LME8sC)p)SWo3D847%~2Z>)LMj z38cTumKpJO+1C{*4v$JmIovmo_>&iyS*qT1EW17}uctG*<=CX}4y*y+at|)cLub0p zwncrt9}OE?VvKz-!B+8u9FYS|+X3_5#pd3r&X$E*!Q?5E+$>>IAlx;1IEK3D%_p#Cl(!Q z$s(I#MLtm0?h|BlJ>qSx-{Rh4_a#X)xiV(4N#O7({gSbAcA^rwU0MQm1-#yBgbyxg zkq&iTy7J-RnaJi5&T_i$Igl%d#{+M~w)+wclCt%`$P@w>`7=~I+925H`W^YCzMktr+^K0vfqa+-fKBk6fAI!s0d4+~i zx|aTWHz@Ooh`^k4^ib*FaITkLbo_8t_PgR#!=y{*6ImCo?=rX>5G~=#=2AzqO;icI zf{u+E4Fv^!*;;I9bsAUBPQ}yi5_`VyzfW1E=Ak;dnqFTJlbd z?nEXlo(Dmh`8%d3eC?Gvo?C$?2x$?#*w|wlE*j@oYVUv^$V`YeYAhstsTM$hryRmf zA9V%DbL@mHZe!nk57FOh7oGnDCVTHTTlrFqCin?S0+#7<&CO4_wJfAe(g{4`jWcqJ z914B%2Gu)hTkR`~(=XqB*+Vi#Q-9QP%9#Z+Tn}+n*&l^+J+!U6&=UgkS0Luso$9sd zx{W(e+yv|+3SxNnb)qsrK&FGTF62ZZJw>A)0JpNK=g7kF2 z2OW|>QJ3=Y{`G&nO!;Kr&#O&WW1NC6SKlA#nEiuXF!S6~@B+t`K4?nnVFZbMt|!}Q z=AQ?-@-VNo@MB22gbIx>O?TC{v4ki2zFt-RO;h3lUJ>lguUnT+MLpW~V%PsXmuL>s zu5GGr-83tFJ*b}mJKCZ*CfC_^$GTd2mn*(T_>Tpsb0g{+zYOgX^8LxO2}^O9c#M3M zO8Efx^S)jqc~mT~8BE82;qh5ID{$`U%fKJGN{2b!8?)R1pg&X+4YlxCTTZ&(XSqs+F|QK`cn8ytlOIQUS)`6A-G zJof3?4Y`lry~4M`y~Tc+JhXVk7h#^3G$u7v(O%_C1uLk=!LJV*toGU^r7AJ>hZ|Df z1621v%?P&XJVdkH_wIbzj@?C4>rCCi$_kdN|n>CxDig;0iFc zes0lpng#VTach)e!-zvCBLr@vPZaiF!v%?qA{JJsFS{nL6C=8CG)!WOabABEP9smINEiFv!Su6d&!NtLv zYw>l(tOXQmZ;k=#2BlU2K=_}fiIHQZ`?}i|x}T}|OO8iRW*m_%6__$XQOnctGw5(` zQ;RIOLr4OK7in?xYx2D_VR4BMY$?!L!86COw}U>(8X4vJwZ=l)5?%hDpq;-kJnk0p z2WvC)J)bZXTCB7DHq>u0UnjKAQ?~f$r-;FslM^vtLYL-?14Sh4L9YBvM?eygs%|zA zWEuf+wp~tELv4TKKtUWtA+i-#kK*E;8V>+H#KbwyS*97qCiK#4lL+`TZsze^iXcy z!8Jn$kuwd?-m_YouoEWWkQ4@^n6w2&eCT1gI6X^;YDsgdf(S>bolu76LBL^|+$yO~(y}03 z`hK3nTq2}2;k*Tbwz|*t-l*?Qp^$Ro*$E_0m^5R}?m9bdEtK1eu%OL(EE-EGtEN8C z-!rn1S}xs&)8DUpsgx6-@bD2!$0d)iy1b1AVz{(k7e~DR*La`r;_BWCtaHyXd6P2S zF~DFLVx06^O-^Le>qq0t2aSt4;dc4aLl!ipn=l)ZDHv>>P0~ih1tw%AtDkc07Kx(+B4Y^&%g`+?h6sDz6oGnYyO1WTF~}DlNS#1 zzR22kX$@@cyg5}lZDejs-aOBFZcfg$VFX~kM}m$Mtp|9wOx}nYdLmZeDqy_zZNlu! z0uT+8i#w-&D;&ZqqDCI0xsPxhfXS6GVnJ`@qtmfYl5Jx33$?MSM<|}o(zCtqUo`7E z{s;-7!2BtS^PluYHVLUeuv|ljNRGfXCq8`I_zrz5daUXvH6-%22n1w3a`e^RMw%E? zi`~^<>elGvAr->mp-0H~mXzCHc&S zw4VvU;KYztE}X;dw2!#1g3jM}gHuYAa?N(f2HefR%GjluM%k~3_m-YN{&7z&?(jZ1 z_G6+EsN-l?;MkU9zv_?)TefMJHk}=aeW-jDoeoRRDtOrEzp^gODz8*-b; zM8CbzsQW$ZU%LzF*>ibkz#q^y?S!uR=AWh#uDcvAxxRsY3fs!k7O*HP+`t3=ph&9w zc=dcM&Y_O&KD!9X@ZKz51s$1*aDtl*pd{|_h)gr)Y71axI@kFKu+>Q`EkUdhHz7n;*X z)8GAa&wGqIo*j@ZNSet31`#AFSFX);+r{k5?;U}V;8ZD`3g5t6JzdW8{L(FS&Vb9^(0g^~ z9NSmdZ;n;?RuIb?&T;Q{nj@e&PQ?(7OH?iGu-NPm1Zc|?Y^Y+ob_km!I%Vs9&ly-d z1FG!bMB6osE~O^b9@1M_C|2l%BqxJt7aNDYzak3w1RC$v&gSs! z|4A{+w%P+jB!=6aFWEkswXu`=JpCNwHr?bh{mSx}yw7)BmqR>I5~RVt2?8>7wB!yg ze~kg^5p3nC3!{p7V7eVSxfP*n&Rz)C=IDx(+AM4uq`qrDzKu;UtDt9v(hV=)2QRoB z59E2Gp?NnA(I41O)8bSX$I6Z|Ombh@3X=ziN7O_W=lz5=*N~n%F?wIB&`UD3$Qtm* zcWP^^zB3SF_b#So&rDF^)UG)CE1JbqVcX(6;+Q^v5#qFK+RU>e_RY&3uU_aU8m>B> z$C!PHua-PzN06+m7Ov~R@pUPQ+%X_Ryi-5?cKrbST&PPR!xOVv1Enn9)rT5w|+S&j2%<@@p z78~Kd3sUa}o|&7xfehbpf8pDLt&_^5LeZz% zdDi8Ixn3f9bR0qTiXMpOI*bSBZ9nIa{EgZj*zV(R#Qvti5$%?`(hB07tvrj+PY{(= z1q0=|=i9K&M-T~5@mMaO=C{-ced8bzGsXRpb?wA$!86?g2VtdmURQawvwf9*HvwrMr4+xDhw!tUE6I{21>7v7%|BM~?prb-T_Jn*Mt~C6lUlF- z7EWbA8`|{)a0km#@o}KdL}X_^K>d2JGVvaF+xTC*15r*ZCr%~qZ!S}8a5b1i7U2tG; zEh909ZXSE4l+o%xqQW|PVG+5BlP46(XYK09ZN!{fopWO()iZGyK|)gPnLJFf7bD2w zwm`e~hehhtlPf%#q3_Rg%e_C@^P+l*T5K828*$Vh9jvkKm-9UtwwV#d-sGiex0pM| zDmuY2PZvXDw!KUd`$95GpW}+j{$G)7OT8(6&JU#(BwihrR*+uKEMN=IycC{02I1{$ zt#O5WrlfU=b(d)P_-I;kHn@XIQiCK#F1}>t3;)JMwWsCJy|XD<1P%UwQVz@UEalhPo?mWnd_(YW8vJw4o3%ETm3Y{utpq|k#n+P?=)nt#~QbB_etG|tg9&1fq z4QCnJ-eS_j%2u`;Gok8pJ;_=XX^`0s>pLg%eg?h8qQR^8P1((X> zO5(2ZJ!`Y*S@`jJAq=#`kO#{%S)u3AHr$7Xl~N|DqK77{$-#$nmCm|8_G)l>zYw)W zUK=7LME8sC)p)SWo3D847%~2Z>)LMj z38cTumKpJO+1C{*4v$JmIovmo_>&iyS*qT1EW17}uctG*<=CX}4y*y+at|)cLub0p zwncrt9}OE?VvKz-!B+8u9FYS|+X3_5#pd3r&X$E*!Q?5E+$>>IAlx;1IEK3D%_p#Cl(!Q z$s(I#MLtm0?h|BlJ>qSx-{Rh4_a#X)xiV(4N#O7({gSbAcA^rwU0MQm1-#yBgbyxg zkq&iTy7J-RnaJi5&T_i$Igl%d#{+M~w)+wclCt%`$P@w>`7=~I+925H`W^YCzMktr+^K0vfqa+-fKBk6fAI!s0d4+~i zx|aTWHz@Ooh`^k4^ib*FaITkLbo_8t_PgR#!=y{*6ImCo?=rX>5G~=#=2AzqO;icI zf{u+E4Fv^!*;;I9bsAUBPQ}yi5_`VyzfW1E=Ak;dnqFTJlbd z?nEXlo(Dmh`8%d3eC?Gvo?C$?2x$?#*w|wlE*j@oYVUv^$V`YeYAhstsTM$hryRmf zA9V%DbL@mHZe!nk57FOh7oGnDCVTHTTlrFqCin?S0+#7<&CO4_wJfAe(g{4`jWcqJ z914B%2Gu)hTkR`~(=XqB*+Vi#Q-9QP%9#Z+Tn}+n*&l^+J+!U6&=UgkS0Luso$9sd zx{W(e+yv|+3SxNnb)qsrK&FGTF62ZZJw>A)0JpNK=g7kF2 z2OW|>QJ3=Y{`G&nO!;Kr&#O&WW1NC6SKlA#nEiuXF!S6~@B+t`K4?nnVFZbMt|!}Q z=AQ?-@-VNo@MB22gbIx>O?TC{v4ki2zFt-RO;h3lUJ>lguUnT+MLpW~V%PsXmuL>s zu5GGr-83tFJ*b}mJKCZ*CfC_^$GTd2mn*(T_>Tpsb0g{+zYOgX^8LxO2}^O9c#M3M zO8Efx^S)jqc~mT~8BE82;qh5ID{$`U%fKJGN{2b!8?)R1pg&X+4YlxCTTZ&(XSqs+F|QK`cn8ytlOIQUS)`6A-G zJof3?4Y`lry~4M`y~Tc+JhXVk7h#^3G$u7v(O%_C1uLk=!LJV*toGU^r7AJ>hZ|Df z1621v%?P&XJVdkH_wIbzj@?C4>rCCi$_kdN|n>CxDig;0iFc zes0lpng#VTach)e!-zvCBLr@vPZaiF!v%?qA{JJsFS{nL6C=8CG)!Wi6|rW;7vRzLuC%toX<0da(-eBVMLL` zc%y8H9%Cd45jm_JhS!`P&-MHh@AY2q51;$KKA&Ii>vR8d-wF11))EJf9sq$r5_p`Y z!#=bB9*F2ZR$XNj?vqfEgS7>S(Wfv60*NQ%EisqxyYmWc+5S%Qti7c7$*L*BTQd&Q zmXut3#AhmTqDHh|PvaI0oT@+yl18rO5k3+e$Q`T=X00qL z&$e!aSMDs%7Bc%*wv_O>&HfQJA$s-+A)1w{V% z`jQ4z2#lxRYJVwh4uc!|B2PR7@W0wVF%X7$Oj%VSz%T^97&>4D!uWkI%Zdh(5qQ1d zK0$!^6!YxDEZAPztPww}9~jT8rt*uitQ?#i|{<2H`@mR(A%>)pn3 z8kLyDvWVR;``&&!!_(Bq-OlEJjiv{vaWa~_(-bQTpZxiyzBp{_$;jQ@dB|yHZWJGb zf1szg?3ErcqKwO$MV)KTb6Q{5spIK!rQcHKF~%x$KIgc->eo+lI=n}Z(6n)+TQ^4+ z=3Te$_?lpKA*WCDMqLhN8b9rBEk4{ckJzq#y!_eo%GqXtD)wmpSIF2w@&(*azzj84 zC-Zz!L$Ine){3Qgt}Q=RVveh2*YpDH=s`&i5bbL z$6SgghBG#s{G!oxVP07{0b|@PbZ+hmh#Z`+5L<651a?7-CI8_m4B-S4k9=AI!@M>X zPLWfgG-}NRZpv4CaKEWEGd%iPZftSx#S`qBy=4x`Xq_Ryff>qc;@SKr zK+ENh*ELIMvjHZS({>bhEyZ@M?`~dgn&|qNTo=I3?1koLlaD;ksZ_x{M>iF0rih4Z zvZG5_C@tqz1H0q+NyE}4Ep}!Ji$pltTAnwctCGa(|KZYx>^R_IN~+Y&+DT|v(>37F z1gHN}-cvVjfECoQKVByF zRzJ2KqtC4RZNB^Z#AL~R-ujSNUw_FAJ*4B6QRu-jmcl7BE|$U@nNW7#Iyu(;oJkr- zc0f-@b`0#@^pJ`WHe0otb$RLP(mOqFyB1I0{)17Ki+|G7!UHwFAMNwqq>9O*>JKi- z8ibf6oFRyggyqCrQyNvipVap$dbJPUT|`o%C`M=5mRNad zfHhfNTYs@9(l=JtD-$t5573`x7?v)0cVC3#uVM_o%q=u@)|R_=w4CV_y)V)6{WFg6l~5Q%D@|7Iaz&Xi?w z;+GTUjK!+!nX3-zyI~hz^Fst+ivz?7t&KJ$w@BcRUnmm%+)Cn)4P{Dl{HXzB{m%Z? z=Qqi;!^3S!{P5qmG8dxE&tQ^m%!fv95dw%b^pDKoNXHu8cBjpuvmvwW!-;%1#R2s` zRSPKRKitl^+I#aAp$q*LiK{tEJCRpvqWC|S8*>Qj`foamNSPIT*B%V-?S&6%FI6rU zLmdng7|oR*LN!|_38iqB)3WChdt-(+zb3S==k&g~SEgN8^t_!#?rvd@Du%k%1@U0pQMbp@giflkdoLlKV`ZbVm!W*@gbD{)M3jwb`kzFlSWqye5?WE}^(cEs*P?3=DtEOw z%0WS9?mOil+Q;n_gM8MV&c*;@0SeA8Kh!mRP|VISSt&o8>Q*oQeD}a5j`xoUv={3tnj(cD~!0{WOVXmX?ZN5>(EON(48p2 zIe`OlgE|IoCRU1)s_puZfJuk*=7sxJDg)&ovtO|Ozy9~Qu`AVbA$~&u literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..a61da072d6d26ca3c86f1fd173c95567c68409a2 GIT binary patch literal 3026 zcmeHJ`#aMOA0GCwCCo!gQ@*jyDI}+ymdV%>i6|rW;7vRzLuC%toX<0da(-eBVMLL` zc%y8H9%Cd45jm_JhS!`P&-MHh@AY2q51;$KKA&Ii>vR8d-wF11))EJf9sq$r5_p`Y z!#=bB9*F2ZR$XNj?vqfEgS7>S(Wfv60*NQ%EisqxyYmWc+5S%Qti7c7$*L*BTQd&Q zmXut3#AhmTqDHh|PvaI0oT@+yl18rO5k3+e$Q`T=X00qL z&$e!aSMDs%7Bc%*wv_O>&HfQJA$s-+A)1w{V% z`jQ4z2#lxRYJVwh4uc!|B2PR7@W0wVF%X7$Oj%VSz%T^97&>4D!uWkI%Zdh(5qQ1d zK0$!^6!YxDEZAPztPww}9~jT8rt*uitQ?#i|{<2H`@mR(A%>)pn3 z8kLyDvWVR;``&&!!_(Bq-OlEJjiv{vaWa~_(-bQTpZxiyzBp{_$;jQ@dB|yHZWJGb zf1szg?3ErcqKwO$MV)KTb6Q{5spIK!rQcHKF~%x$KIgc->eo+lI=n}Z(6n)+TQ^4+ z=3Te$_?lpKA*WCDMqLhN8b9rBEk4{ckJzq#y!_eo%GqXtD)wmpSIF2w@&(*azzj84 zC-Zz!L$Ine){3Qgt}Q=RVveh2*YpDH=s`&i5bbL z$6SgghBG#s{G!oxVP07{0b|@PbZ+hmh#Z`+5L<651a?7-CI8_m4B-S4k9=AI!@M>X zPLWfgG-}NRZpv4CaKEWEGd%iPZftSx#S`qBy=4x`Xq_Ryff>qc;@SKr zK+ENh*ELIMvjHZS({>bhEyZ@M?`~dgn&|qNTo=I3?1koLlaD;ksZ_x{M>iF0rih4Z zvZG5_C@tqz1H0q+NyE}4Ep}!Ji$pltTAnwctCGa(|KZYx>^R_IN~+Y&+DT|v(>37F z1gHN}-cvVjfECoQKVByF zRzJ2KqtC4RZNB^Z#AL~R-ujSNUw_FAJ*4B6QRu-jmcl7BE|$U@nNW7#Iyu(;oJkr- zc0f-@b`0#@^pJ`WHe0otb$RLP(mOqFyB1I0{)17Ki+|G7!UHwFAMNwqq>9O*>JKi- z8ibf6oFRyggyqCrQyNvipVap$dbJPUT|`o%C`M=5mRNad zfHhfNTYs@9(l=JtD-$t5573`x7?v)0cVC3#uVM_o%q=u@)|R_=w4CV_y)V)6{WFg6l~5Q%D@|7Iaz&Xi?w z;+GTUjK!+!nX3-zyI~hz^Fst+ivz?7t&KJ$w@BcRUnmm%+)Cn)4P{Dl{HXzB{m%Z? z=Qqi;!^3S!{P5qmG8dxE&tQ^m%!fv95dw%b^pDKoNXHu8cBjpuvmvwW!-;%1#R2s` zRSPKRKitl^+I#aAp$q*LiK{tEJCRpvqWC|S8*>Qj`foamNSPIT*B%V-?S&6%FI6rU zLmdng7|oR*LN!|_38iqB)3WChdt-(+zb3S==k&g~SEgN8^t_!#?rvd@Du%k%1@U0pQMbp@giflkdoLlKV`ZbVm!W*@gbD{)M3jwb`kzFlSWqye5?WE}^(cEs*P?3=DtEOw z%0WS9?mOil+Q;n_gM8MV&c*;@0SeA8Kh!mRP|VISSt&o8>Q*oQeD}a5j`xoUv={3tnj(cD~!0{WOVXmX?ZN5>(EON(48p2 zIe`OlgE|IoCRU1)s_puZfJuk*=7sxJDg)&ovtO|Ozy9~Qu`AVbA$~&u literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9fd2e5e675e958521ef64df98dbb6963a1a950 GIT binary patch literal 14768 zcmXYYWk6H!|2Ex?fXI+esUb1CrBOPiK?H=2F6k5*NRAE(=}=NYdNf~0ih#q>-6{A# z{+{Q>wildp?)%(v-JdH+c%i3GPV$HZ3k!=}Q$y7N_#OWDAtC_2Yt8BkfFEpc19fGr zx=GMB78Wa(rmB)rfc1Vp;exoP@#bHyqSWblUd9M~P7)RRST2nmMyeDsM}mi(n|V>; zG_jmgByEubQm;lB&8awFVUM)!HW}Rh>8>i+ZuRt?m-4-hJq$h!EC_Vo=$c)goqhST zLhmZSh&lna&Dmv!^5wjnGyB^6D~uimBc&<($jSU84^8TVMKP zX`!}sYw2gLn}X7Mg6+TW^ZxFpPTKA9Otjt0MV?t9!NEDtw*5KfG*S7WO-NWux62!r zvL~8B)u`r9FAVEl*Cp$s`u2}h525X~42;c#Qp;8=haV0lK4F^4Zjh;O8XX}ip;j^y zGmlia-=^MwnG^bZzs>rx^Qh^mQ~~dHNX%)cAu2BF%oZd5ZldH&fpfWG6*Nz@jqjex zyR3*J<;-7%re+ar)5rP|=BRF$rdp>d7|r!}_&p~=-E|WB?mOHRE$eS*XRgr6+g_5Q zezjOTWMfKv=rj*qWRd+*XYq@Tv&5+^CwU-60_sv32JYd0PPvfZS1g)0{+g!b zs8;fMa~GPjui8Og{f#xUrbHnCoSu-|ybTkN_bW zU!8P4w(U~3+PN~A+_zFD&5nf9ry4h1OIul~0m6@W&8hS6>Lrr5yNYcDy&O|kM0|^0 zN3LmlS!!O6=3n3SX@;?Gce7PG1#@a0ruwXpGXHr-6BX){vV!UQ$;&LX{c#23b(1?Ej zV7=Bp;YkgJT&N8TW6{RUMhlPq;JmZZ{FQP>nOg7|Wo-vh3N882rCI#yuQp09>P+HL z7x{(cPw{2j(tQhCr6za6>%K6FQsIT8P&a-ChY;@Rn4l#4Af-Ylt1`$5p_0WFLTx*l zbD5{Qbb0>rHn0#`u)eNzGdG+#6@9Cl5-KtKm-np(>Pgg@(c#-5U`_2^-<^WyJcD&o z?mhO}0BZeq5xu2msNRfzs9P$c?)F!cF?0_^NrwOAd3pg4v97JwJ;x#6%PL#{ zKHg=q=M?t?gomF{u0MTFqoSH_t{b@~eFIYDQmCNeqGGn*B05H<@eiGCEU)F1QL5Jd`hNPcU_Q-He>I{qpDQSzwYIjfz0{>vuw zn~NkK=ffD2FRV4JH5B5rkrDQ(V%KE$i=SU(2Y9N+KqU+RXR_K`uoK?*$>=R z^gQhhTeFq7wyNDGuk~qEm?UT6e~|-gJoXC1hlTp6ONWs@hO$K4X;Ty)g7wp|dxs5; zL73L&<)_X(N}H);`fo~q?e%ZgY`;ZQ#~!~CpMc9}^4=+RdyfAW^fG%L;}F>}BA>nb zek)}wBl#%g`zdMk#}B=gQu#w2;0`=^Csyqf`iffvjjBX*`x~v2d56hogJ1Phx@BaQ zB)p1R>{ErLjU9sMJNH^gXz`jqcz3Cxek$KwK2AXKMV(b6@~XbPdOlp>nw(K9!>jd| ze_M8gNr(Igt$eSyj`hp$iZ^}yZwphnmuph%k?Pn_a!oxRmu8Vu+DHCpSKXe~lI-mH zTVLgbGcdoDqpNFj{}&YqIka}IK4`1*lYNr{HQ!0-Y%}g~f(+L*m`VIR8guj6_6CkR z&#+dtz9FG{6nxUV=E5PPm~J9yltvo3!W zQ~K{PY(B7$C(f~0L|eyZ-RW#f;S>>idVZBd)$}{VL1l5cgNsS7AZ<4PXL2^xN1q#3 zyZaRm@Z0bPcoH#%oV*dlSYh?R)`0k!39WEMLeHWs_U>6OYQ$cY;C&KTuD?7dDF(f7 z_U)|>zo`7<)o`f7&i|dBF}KEUYIM|lD)Q4RsFtpakfU}Bwd!L$MUJVqv*dMS{?&s?5@-o4yQ zgcaUYmJc6>{?8NjfBVchbC(E65Eq7@tl=pS}F;k zA~Sfn`|+F?8#QA`PbXQK=TBI_I@s@UWO6@G-%)s#(fTk$<^*IhGj(67XK6`Im`3xB zLT}V!f%?PPmA3QG&R4!!l$@0WAuhMEeD9gf=zjd&|KJfRa4R0@3{^FvDN!ylDwtjI z-~L`a@gxi_4Ia#+?oO&QqNxcA(WS4E1;>2GJjkQDVEQCyN-=Ud%?XwwzK*w=ghk2_ zZZpnZfOQpRm!dmciJnEqZ0%Rlu8$;Re@thZQAnS-osEosq>$*SKpjkT68oa{tD3|HIg0ml!CvU;kD0GSya{~p^CL?x}JPF2l5QHy1eNY>H1?T(lI$Y z#>1|M+x@1$&c3lPdW7^WV-Cz!YCU3bg%vkCI3QL*I`F`6s%nAVF@T0~FBMb~^KC0H z1J|59VbxwOTTR+n@=(`&q?^S6>Y;zJ)ee5sA}AfS?Kr>=n|2-{z>)Bv|Lp9)Qb{gW zd|;;2@T};d!PHKnv0=0KHcv%tSPP@(NE_!wSh1F+CAs=V1V%E$X(H?WZhzSK8d|LG zKcZ#m@TVXZ*J}qW?sdD*qxWJqA_`|qBISRW-s6eaO9oSWMXzji4T1LKXa{K4rTmr; zV`8n|=SgUaHHv#NOz%W`6d2Qtw>x%&l@@-b%=C}JGqz(KR{nM-yox*$XFNB3V4o;3 zg{EUuYZ2lCm$6f&J%ifoS{*x@pWEV2hnOR%2c0dij zc!)q#gcH3o&*?zji63~+S18Mm zaxMdX@DpgJlDoL740#a7fdvmiM-17FSY_A_l(eZ|ZJk8Ll}yOtD*J7^8aDU%KTM!j zI`2jNg#r%=y3lRE>a(YwTEWTxK-0Rw(7fJ|aYD)srHOj6o0C^iki6{g@9(76$0qZ3 zb{YtvOUt6^e zC#z32cwJ4KP)$luoC!>&Uc$EB%s0}p*?txcVGkME5{=U&^Yq9^xAB52j|p0}NFjA& z8zAP7oqR*b>hB*s%S?*E*pEhXlDBY&Tx$w&_?K@@6i6!xx6xLdHg_s^TWspkaz3Z| zoro@qoEOM`n1zr0(5rqzc1zppjs=Q~aS^a8oBL}51x=y#mDtG~w9Z)#us-uvw&mg= z1N$!88UC=D@dkdM5XC}%I0)IFQ*A=2X`|a%lDkU5*L({-)MsivEPoYvAQVppit%-s z>cyil8biJ8)9hp67$VYDwH&f&)>dp1gV-c$6aL!;*((a^RA~7{-j&$fYL$eTUFuo{G$YX6K!LFy?5g6IDHJUP`m_}No z9#|;{?fRZ5R&zMUY?Mer;`4_S{-(knSSDE)d)#YgblV@<21R?K<09Aw9@3nfWGy7} z;e>tB*%G+)#EaW5@=G|zim&B5VowqZYJ6o#{ax*9MY;!eC&|Ixm5<;fm4$jh^VYfK zOeYSX$|hig;?fvsbi{)k7@>KULqE}Wd+JatKCTP~@(ib9Xd=hgdPb0GKrvA_=j=kN zyo@BIPC~PQ)}Zd4`Fk{E$6%$1e!LwQnGyHa0}7&ediJ&?USGHJH(nPE`zz+XmIncn zj+@w(EtF3CWO@nRR+$whHW;+S$^onoaxKyKa}`Swn9+}&Bv8=mmJW>$m9v16j2Wh+!)8>=Kp-DiWKyUu_^D#Jqm=7mUYZP zx7|0tn+@}XaP%}U#y&@2(Pd3K9 zFB@HsnzEcZ5iggT~tx4jJfD0vgiYSD0hw)k+Uy;ObsT*K?tk z1aAM3r>Ti|)Br_Q^}>88hx>6N#TlO9oEufy;^RIH?Rlv}Qu{hpg&Bloi0z<&Xw}Tbg>bWQPXKN*pq|Z8WH)oysW1?)>99 z8uHs?Sk#Rx`*S@|4arsFtC%l zU|>n}4afA{y>K7q*wYqr6x416_H__j?v{U?a?$`@6h=N{o8e&Ab{P#R2+@gFx!{#e&$e6^oL7=gyd}PIWoBSxuB$k+DB6!jr+*jN1)4(pzWa9 z6xX1(GHOs9amvKkF-})3bML&h~REsh-O*iF)-LT?G6p>(a$l} zmpY%ylrzFDz8g^hSo(@FCp6dI7#>*8u?4CZD_EPu^M($h6}ZB9es9P|mo`TMwG& zyFf`vvyCQg+DAhKbXcV|UBH?;YUUnqTss%y-~LxAxRp0_>N#NtRwJEvxw(3Gb@FQj z_b|6(q-JF{wGlFC1#DGB7`FxkQ!eYm$0-lUn2S#6{sLDoEQO9uAjgpw4KYNve9_+! zc%J0>6jCRu51$va@B>S!0J!!Z+6SIU2wwGRwrwKRu<;J!24Q{0=GFs>tfD-i0|y}D8luLiDEeQtz(xTQ2d+NMRBi%K(w@&!$$oF7= zy0msu&}QI*zO)YC_}`uDHseUl&C6T86kh#q^`RbE=YUzuyYl)K#%`T`Z#Qm>P&@E3 z^E%@f>z|S_s&^vVEw0q&K}co6;{(}r3y(=l3I7dNHwai0s5}m9)wiwNxw$`#3!Qg- z&7=m+i-)~Tfm;ItWtr1orHIS!@E5)M0q*M?k1+`YNvOfoz%GYp!S>h3h5=9bKM!C8f1FiyhOKU#xbXLJl7iV{)a8LsqbtClJ;LJo!~K6S19rQ;?Wmt zYKpj&_N^-vWGHiOZ*D9t(ld-0LXaG%*iPe5y%f|)A@diN(-cz6XjD$ih(5loPvhY= z4^OU@E7gs_5IyT;iSbVFzUP8vs1&uZB^Yp&cP&C>rN3l&%RpBU_LIEITG!Z}2QuLI ziglKvYdXMUiq&qn7mUHf|Dud7<9mC09)ay+E_d4SAn}uMK!-gYl6t!!_U0Lh9`I z;yB}!!E}l_T{U3pSF-g_Sx)4q`;fODKu zig8Pg-J!m++G^#tkK9hISiTUrvUX*<^p8;v4Ch_eO88=0wW4J}d!JJspo7Yc`@-^5 zb^DBSZavtB9yBkj*)+9w9^19|tOrI2F-+~|+Lkh3XQ!od?6z#0codEs$Y;p)j)k6N z9oxPNE*7)nAMCg+*_ceRH8}Sctg$J)+(8JMm-dm;i802*jLjf@9ncVnAtHeo!Z9*p zDDG=#RdNQ^%-Rn$xP60uz5F%Zg@wx&pMjZai`6^|Y*{$lEhAKIp>`r2wTh1vd>U>} zy2>1VB+t!+i=^%!98hEt?2B&XU-g~3jq;7c2r-mW3Z7#5A%)MgrQmcY0>H=#-WDP2&fD|AUyCGy3dV-iOL1$1dNllJIw0-sS#*C3*X1avuOI|TzTt<)v>;+3c(P&1)LGP4Fi5yjcd zfAfbpXLK$cgVwz>cY>N?!*6TbZE@!q9Oi|R!as{)$B9K?1Tgt8v7QS*JYZOi*m*lMVnt(=N`WOlVv)eVWA4ZT@)M`ryEok(26U zi!5y5@sv}RpCenqboXpe|9b*J+a->E2i%}|rf%{#(Dh+%M>P7&$u9@`*n6bV(=~;ExRmhDSK}55JhH@xe^jRBXYdsqMj}o+9af=Hn8-8T z!|?sZDFqy`ntt*+)vVAK4suq{akb>cWTu=fEd z)s~~BnY#Ty98_gL`M61`C7WohQcGG2Ryfs0~wTb^`wqw2-H(YrP53ihHHUTh%_Z|aO{M$mka z_gBmYV+7e;4~eu1rQ@EmC%L9>ZaN>-YJZ{e*H>a?ZhE#&aofIyKog)eL>rNzTAN1I z@+hQuC|`H2F2iz}BM`%xB6C{pN)GuvS=L~9VihpwAq)+LC`6&(0e>%(a0U{EyJygU~AYFEmX7%tOW>9Rjw zx9pd!nC>Bu!z$qWM@6Y)=_u|EJ~Aok4?xBU^WIr^-1>dvzistzx24z!ksqBgU`ay~ zZr{fcM;@0G5s&2wxc?bS1TGDskYsbU9EE^wN3R;NfH_FtcgzYEkE}l1I>pu)UP~%9Haz) zrHEiUiNx5Gm~aWDh;Y2?4z)qOQqf8>OF@Jl&Ofb5S_BU0m&k7FX9Bd<1jyNE&X>10 z>a1FYBUOg}uq*t|Kf+mOlTN#zRkwB9SyMMRoC%Tov`3snk9F*LO-bNSFFfbnlQ>@R zX8iX}ntzH%h5zACPVk#0mU-yW9zY!f%<|$3DPqW)bd0U|Aa!;resMJcc>J`{)ehZ% zt?M%PCUGXpo?2*cO;Er&bX(}_n}IicS9pGKM$Tc2V9oOd<~be8DLj)1_VYJ^F70#b zACR;dzjnaOW$*^gI$mm|uVkcQDsH+SKqeuqU!C1R*ciO+pcy=P;)v=J@+#l}>IW3* zek8NuY%yEF+~}KrRjHZrC;|wt%<;kHIXv7u@;@m_h)_9}$;H#!CK@Qn)>g;MeFdN@ z<30sMliX0NU7~$>ZWtb5VznstF9SMImlDlTDgBQ}P^)Iqee?l9PBXv%VE&v#9Y3=4 zw>kFn*IpRd_(6E_9KR({POpSBfi}B(>h4^h0UV@_S1$O4@U*uB07|FM2_&0XSd7;H zvH(6yZ;a z5{^u>x=3I;ZeSD{uid zUEnbzfZFO`agpZFUXLyQdqSDQpG&6c8VOH+c8H0YAvHJnybyD#LLYN%CI&k z0Wlcf6T71ucd*-N<2nB9#?VD8sBV9-fQvViK$jL+4}c+=chg=pv{yuJa^?U0QC8Lq z)0cim+!C6ov$ba`b`@P3jJJK~@DE(qn=JmP7=%6U!bLXAmrt-{@r-z9G$@#4^hg+fyv8%;BExR z;SRsJRk~REWf3#|;IDXFDlX&uRE=m}yF#XvhYb%S&nTw(HN& zZ_yGn_w?WN;ymU{d^pP7XY4F4=OQpdoZE&;`X7K=L2Wxb6~6mTxp#wA+UHkC)ZV1M z#kIL^IP#4+ghEwroUPvdpUnB3;lGS}bAl(BuIrb#>*}np*bCH9POZ!!^_AjeHy}D7D|M1OstogS^Fh~EBOzX9!)r$*%k*$AY z@_aq-?uthwOo^%`4eq&k8Gq15KI$?C5(ISx?o1GPirsH>^j_c4B0m5!wxCsAmbCmT z@%dbHspmQ@PvkAQ*jz6{z1>$@=|FK#iMc$(FgIX#=>F83wU{DHsI0j%;%fLIarhIU z5qVL4g=sWpm!mAUTLeHCbW-nYQTZ$}v|annb%&vzpa`pxmU69$rodkj7|tFV?gSL6 zk%$ZhMYq3(O79~y5UcSzIMIAbqdTIlaPv(HY@i1(m^VH5qJ9G-F{v}-nK@L)vco?`PwDt$k zdIF2&c`U^aueJR`E~lkbDdR^Bei(;!m}^`wJHN(4QsV~n8yH*es(tjq=!j)kb;-*v z*PtP$?*!!%DqZ<0`rU9(F|`chL0@Ky!WMc{f?h1T0)a&7d!^@H*y2c0^KzLR*g7HVMBX8D|%l zhH7vwAgdrZ?sCRL+e*#^H2uYV`~awzgvI~_ckltbN_nxGpJM!%#b3`+Ho9aB%gT>T z(*&^LxK+@PDKAPUXlU)IcQ-0|^qLfUVLz(W0?2HrwWW6L@4Zi_rG_cq6SEWPK(%-) z{WH-|zs++m&zw&(ak9n$_tEY))AG;X<0A*x9&$EN2&I;V4wy#z6l_$$s2)EwyeQ*| z`^(l_*WJWV?b};$ghSr{`2nOZtcyBq1lYWFxsoq37kB%Q-Ty5V@vY`quQ^}`O+0$M zrWB~5^CMVr<6xR#dvh*#(w5u`zaS_hZv_wTeHN9v5peyrugQ`Sj&Z|3aC+wm_WP#2 zPg`dM^y_z4toD zRP3UBPrHR4q;9m?l_&Wc2iY6RJpI8Ti0$Ygs`$^oQiAK5kuoN+RPL2cYj>c|HmT!% z^RQ{unfeN@cix;sI>}oLM=`@$FQ`*rf&J)alRgy0JY~mQ@6+>H7Y)(;%b!3+a6wxL zqA<{L>R5OmNo9Yk$E$Ghw#xi%rPwDaG?aGbs#s%!-%j^t%4XO?3yq4Fm!6%!l?GCJ_&jr zfia7L6Vq_7{%|U8(9p42F(I9FiaewC6#k5l|MG|{7G(}tP~VsuOpkvnh-n-iU(~xP z*kiM;6=v)d0bw+ym?f`%-7ZdzRn1c6AcNc z3TMkCer3@XXaBkiAu&lhs7i+0Dh7eOtwE|<>5PQXSZiLL#UedifGjljU^UP{!;V)d zK@muIM)Rkgi%HzxHPOLhAPj6YLyp zEP_nU=ro~K5tyL^x(w2cjG}p=%>gl?_Ata&#SEVj%uD+ni}6@Y6)mSf-cvq!bB?

UKs}X( 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9fd2e5e675e958521ef64df98dbb6963a1a950 GIT binary patch literal 14768 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

UKs}X( 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1eddd77bffadda7f8f2f8e7f570fcd6b39e9f GIT binary patch literal 5885 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 Umkl#e``I*512g^FI}efn2WKM>a{vGU literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1eddd77bffadda7f8f2f8e7f570fcd6b39e9f GIT binary patch literal 5885 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 Umkl#e``I*512g^FI}efn2WKM>a{vGU literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5b30fa9657c61f20e318603c5b2e1385e48dce GIT binary patch literal 15300 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..0525c82d4d8095ce7a6389573739a400ce207da8 GIT binary patch literal 5738 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_inv_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6ebb68b2a2eafb2efeadae3a2ae1f825acf224 GIT binary patch literal 3538 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 Qye18B(Hd=4W#OCrPkGOpa{vGU literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_inv_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6ebb68b2a2eafb2efeadae3a2ae1f825acf224 GIT binary patch literal 3538 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 Qye18B(Hd=4W#OCrPkGOpa{vGU literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..0b6444a3f8e5321cf1277200d2fb273c449fd61b GIT binary patch literal 2745 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 K^w7F4Fa8hCzLz=x literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..67971e3f944569e47a3682878b968ec92aa156e2 GIT binary patch literal 8230 zcmYM3XH-*77pOz;U3v>4bm<+W3YY+bq4$o06s30!f=Gu1=}j;c1%d(sp%;N52(JO9 z_ZmP@dJ}K_?p^EtIOWHgv-a#WbLN?6Cp|E^M@P*?4FCY>pb$MX!WH}Ppd=@p>uk^^ zgbPuS**#qVdW;7T0PrtE^>i%4oqiTm?fL1)40Q|oSn9!aUT}XR%{A*0{#>5q{lfHz zHR68k3(fH3*juq8Kx{eXzPc1qicuZg*`-?(O8B$agS$SxAY2X?iCPJ)`csGM{GvH$ab*h!ADp+Mw6cz|l}>8#XXXP` z56jc`rt_Sp4H1n1DKiM1~h0NfKvz+&Mr_T$L_t0-{dQrbhy@xO#IFmi^%8%7+=ozcv=) zJf7E!MO)clmD6f-u-H*`#aFBHfBON9I_0z2;9zAk-NO1{7H{LPOTNAvTX8dK#j23_ zcpnbVgf*X(NzpJ02WMEjgY5YqL?*0-FAwp7Tl5hULA`O(2R8~42vmlGWOD)_{&#>y zi8x*qS~&D^%V-?gJ}0~ud`aU`%*Bh?%fx9gY{ddcqU8Q4&0FXa^>L_*I}75SpvroL zH%+;zbWE!}t7FH6zK+L+tUNu9#^;mTFaCkPDE#sr>9i1EXvhi&7cEO*0Rbve2HvNs zYef70L!5Ya&Z=Ri#R0ckJG5bL7{hCWd5awY<=UECa{uD4Q1P8~4d=+5`GsGw)g{qD z$p*m4)yu(mfpOJT%GqszzWCNWJ_&Cv=)n_vXWq}>PWe|!SHRE{SOYU?>XTQ50namd z>D)s>qC8-OiHCkuopA_peDCtl$Q;xY!^;;GMjJZxwQ=*(71@lK8v`64NnzACJfoSm zmyTG=#mv}lp!qv);4nvhf5YBSA=tX%5}Of8YHd?S_Y|*Pur*yRZ|)hpM-obZ)9zKF zp*g_yI;$Q4dI<(J`XHcbwO`Hnh4>-y#PQnYvIfy0P0f>YY=ckP{sRUML#%37q@l~dq>Y~A6(Sh>rnwz&aNcti+`|E495Ft z-e&c)Mn%vsGetK9oHbiC;8?&5VEl!kC!ZPi!uu2@cl`kuCDd8IE$;`2|48U<1p@sM z#|BMWbN?2QUdDT;?TdWOIoA#J zHcf9QBpv-<{5^wJi(z8wDoXNM*<^=lL~F;mXWsDK_U`i*+@fX^JBhpSCpt!Q-QxuW z^4X?k{%1qIf-S(ENY{dUPjSBMAod;SJC(3N(yWl=j1(b9!AEg+Z!7`vI*dbUp{rIB ze=1Nd!$Nlwn+9Vm_<9u@O-B3p=|9qxqGXwrlyxJ_i*-h1-15JASQ1jq@)k5pwQIJ) zXdM5_2c<}V`-HMY^*$q}wI>L{&)rFOPk(J6)4T2`49=TYm>U)+LZ*_m+;VG9(h%m5 zNOnjW8KsIEmZM7#Ib*Wut&SfuSSJBWYj1YeiQcUZPAxLL_;_c63@(%Y&L=kHTWB<^ zRl$CR=v{l?+?rl7ka>&BVzcuJZ>j5M_xrAC!zjbcYE*waG2>>u)hdVCwhg;pe2#Fk z!%>YRB+gxE-kega$I;XHSn$Pps*$Z_er>QxE@9Nlh?lsb{C;=>1n7iv&LKWL*ioiC zBj8;g-hgl(?!S<{UcO5Q-oi>BfU8Lmc_Z3mx+ZQ$@ig`YNzLKa;pH)U=?Pap_6uLz zC}gyqIfMx~9A8N;FCF+>pQ8|)+0y#bkUrJMLmwYhiFlSZgsoj_r)31<`} zuT|)uD*)rBf}(h2W~!x8qi>9e(}cI`iz%&jy2eR4&MfKq@tD`ElAhW)b~rewfP*#3 zIvr%aBbQ}IStAGilY?yG33|n8f8NU`=vX>bx_;J06dy1?AYq?tqdqZHD=J9-gZ?iV z`D5ihlHyh%<+7V>Wuj@HWVK^MW{s~#<0U0wu80I>Ov^O;9%Y^0%CIitJJQyb^J+>k z9r00rv-D*1SYhlm2O2|0$x?vQx?ldQ1A8)zxCD7h%1|{06grFk$_kV&s|A4e@Fc`K zix&HbLY#67=9jdL!dht-$Iq9SN)sL2gZ_@q(qdLR8X4@Ys}tIxH6bd8p@DJT(jlgJ zb#3OZulg(c2p?DV-vSZE0Tnqx!)h>^l4h${f?*H7Dq(|7IjOZ>mL{vWO{RFu&jeK)0GNfxXil~1ARTIhG$un0?7{kGeP|kQ%Me!E5P1f zn=dcMEvdMxG|}lZ~E)7ptb_R{r)4 z*!$G^xE2r_OVbP|*GDfjiqBiwLir7h($^|QmD#5*+3mvuwiF`F%;O$6F3FORYF1UA z*6NIeWFq#xf&~6pUu#2Krmhz&zDGfG=v|#Y1pe(VREsFu0(WA zWiPlmevO>R?7n$p=4GWeB_h03k*-r)oKA?7=2{@AbNMvo*i2S}2CkzYB>!a+Wa(GQ%1D z6D7jIL$Oh*O-s{xt`!G{kq?(UjGX_i_X%|UZXz0SEN~Z@D2Ry^uR5=fL+580GEDQ@ zZh3uc^-1#Sibfo)VohaMY<$_4DMgTtzv5%OWo6ycGXvf4>W>@tk8c-m&&W$|AMTs7 z6!D4`OmdDdH>p#K9Xj7B2mT?YW#W-9C3CLID1r&RelISKL!8lWIyIC*t}5p|9C0ld zmv9P24S4!-w>9EcF)yc&Pk%Kfv(y1Q2fi(nD6FDkT27MfC1bawcMz5|>e!fc2sv}WRIFW3b!hKS3isxQMK+GT z+UxY&qLm^bU-P6zkKe`K1Nx9{j89r{#H+!Hl(Na?J&x#zGvLfp6nRUId@BL>1nHx_ zFi#`))B0yF7aoM)J)K?vGsz zzK^JjdDOpdH~+C;X+{R5dV-bLN89s^CC2T8^}oHp@q7oJbaUzTKa#JaqS~8|D-!<% z;{~|NoIiz`aNM${!`J!+%JcF*Mm-OWD6(eD8G6}Sz+sIk43D&U==zXCu>>@%F7CL9|7^$}P7=0}G)2WoE)TUA!xwf9 zIdx<^yQ2x^O zvD5swkSTaI8H0rLVkh=Q?x50awsirl%`t}xPjfi*M85hY7C12RRzFWEI9Y~7>Yy-9 z{x-R}m(u^Zj`=OfU!4E1Kfw5of&>RlfEbc8HG&ap`OHxJ&m3ISDTbDPKN8mHN`ksnQ{ zXRhwlT|XD1>qnlb{|8wT!*qR&(5JWY=7;{Z{aDyBWR#t3Ps~i49Dgb$c{!n^%_04A z@ApbMn(Q|R2Zv9E*I9LTafO3N9;?NS|CD#7`4Op?&g{r(Dw%Rg~#?@ zM}}$GF%0@Dj0|X;*~%;&Ud4`q{JmI5j+}T;^n)aYwx%yO6+fe2jUn{HxOZ?acK9MG zBGSrhL!6kw*$A?y3`uW zJ!U&VHw5>=I^K8iKi+lGce9dvcKTmU+MIHBHR0bZtU$mp?{-rMgY{Lje}Uqhs!vu} zNx=Cu%-DQ`%lq4e)q?<9|6om1IuLQey)|T!44_&dKhc_Eg3ElYk0SezM4)j`O*?Ob z02=ye!rnFy6qweqeIHxi@;fy|V9Zf0`6%W|gtQ~Bi~-=PQDvadfV>;s#L=Zir7_n! zeGcJWhG*Ys_~9YB{^ObkSFIc9T!4hIHHB*A^d9t4?$*d%7fEP}>DZ zh)ze>j=%OdLhW-bz2oFWYoL6|dc;See~dN=jOXGAd5WSBe6t3Kbq|XeiF&9ut4Z>i zpHIr{W89Vd@!cIFZ5zRP^K?08*6(c92ZY=mlL>Zu9jiCE({58~FVEI@rm#dbZF-3U zlKl61NnU9!N(^{4-4Pm$d>KGpDy9!_>Y#Rybj&cxobl|fz$>hoWRHE0oBa4Bw7P(~ zGF|7h<`0$s%;7Rbv}3Q#xuRu6DA6JujBDgS$tl$QDa87~;&=Ep!0U}lSK43cv|S|-fcxXDj+QDds*G|+SL#byP&pO)4K$P*OZy` z=!djvPZk0;eSgp$C7xX6@^UB(aJ_qQ;FtaghgJPXUPI zTY?L7?b#f^;B`%J9Y)85_A?I{=$L?n_S-j&=z@tVum<|=T?Y;;Qi!wFW8hj7&It(t zv^E{vT34z=;1D&`;|MhR_J0qCTq{PRl?qHu1F8W@ZdO$-#oR?9`Rq)XR_y-;fa#hM zb0Ysizqmd>?;?Y0e5f z1Qyu~F(`=_VfqOjJraL=0%K7BGcXYBre?r)}@tJ&=b0FA`65KxAMf}!CQVC&zQ7ewHZCpCTy8Gbfa@3P z%-Ay0n0~NUYjmmPT>CH-M@LsS5uk4#`X)qdxCzYb0Ou_BW!A5|%&q9b z%U8@9T3KY#Q;e#c}^LlgZ*Kx7+sYT65iw9e79H#4BeRtX$GHQj1(=d_;WoYTE z!05e#gXx0#^y_wvCB^JKJ7vxZOqFFt5IBIo^Yh3K(x36DuitGKA2XbBD*E1d+JM$kzHfyVGWg!JkuQ=TFs=~{;vH)f zbe&ZuYoU&SSa~gB#}3q=Xx!>-M*EjN(}QKa!R1uK<$g?yCSJEt_Qn|*{Ni1v^+?;5 ztiSkqh-JANQJ?nH!X+?%?xvOGcFY@&*t`ZqtH?IgL7fZH!RugDz(!XbwvFNBQO#q! zU2=#VrDvftGVqa7HXZC-MCscO^H8A zDEpeziN2$Wokq(=&*J72cO+l&l&L)cIvDGk{=m>J{Q~rKFQk~f_*y{7p?P;#ClyDN z7GEimSKHJQR_a{PgZ6{VlqFG{GRG=86kUP>|6mY_Q~ad1cok?V9`8}D5!evGKjU)f zwlRQ2BS!c;v}*vAae0?ZHh3QB!Rw}=U&eDWAExvpYiZ0yd2eQ=QfNBqKK@ZOh;%Re zVZ>#d8&Q%$CeRhsBo3FMynZq!hkI3*VgWuqAGQ>kTRqBb)2n~TpyMK_y7Z_X$l*gk2J0i2s!xtqv%Sw#t@?{Y7b6Rm#XEA9iB$hA zk7fmJ2>8S2vwTr4gPdM*+4+jCC&k57zfV$e3};tF#23vR__z?`xBpy^mk3(H~=4hYL+FTwBdRTNz$>ldP_5cd8?yF*?rul_eUuC|uUU_${AZeMSBj$lN;gj}ud= zuCvi#cFN&-)>H&L!Fh2q5jmcPN(aW6;4~vxxMmK*`Ac702lk*jAC@Z0-9&#I%E_FQ zOeC;|utFNm2OM8uLR(jggAUE7bpff0`GwYgPh^NE8CEZD!P{7m+EJJD*)2Idnj~KJ zE7?hu^`7y_BT5$XU!x>9fyqiw#cXpi{8}ghkAv|-|3md8{r{dWSRTis9Qgr#HU$2- z`7p*?3}%9@+t~-~wEGVJDrljKHuJhY)LH9TqTHRj1Oxaf;3Pdu4*o$1OnEii;F2Jd zHO25BSArI4%pnbuEFuuFB zdS=^&U=88=pYUfQ;AkI2n@|iX3$rm@fI9A~2fh=s^DB@fxY*}{!&6dOg0pKt>C z*vo5)Kx{x)S6df0HG;$${&?G6W~~chWCem#l0gXWD3IcZ1Ic7}bu5fR`oR(r(%9>< zMJmX8)1>^(W+ljf#j2d1!cNNUZ)&Uzcy%>CPxaniBFd}+BPBL{^kj_VwB&p{reknR znY-URHD!X;pe-~f=q@qkk=+vuz4bO@+%6$T$I$t{VLKbq$~lqDyX&BYDB5`T3vcM@ z>oTHvvLbo$NW|`iQ#R)(2mh4ZWPGy;S*kck_Ad^v0u9eZ0F>=1^SeBbQG%oSP;aiE z?Ag9#SdTnT;3IE*2`|_ayT`x@l<^#M+5F^y{a&92nhG8tO}Z7KJ{)D`9u(>3G)HvZ z6|)U+O=F{dXhqOQ*ZY#$nO`Xy%UIPP1AsPaFJ%FwuOt%%SdT42B&a-$f2(mJM`gZ~|*jP?hC~|FFhl z$qqp>Hs_hQ093i5hmxhmQ_Z{G8N9&Z%Qs2AYuPE+wb+3evg}{eV%4__GM-m?;r3%Z zT}ZLBUl3^rtuv%g1cRqX=7zig!_`i$=@@Cj`-dG)gWdPwqfe5eqN#ar(m>W~4u(^* zE$CBnrv~;DNe&5Oj{ufT(CaJ@scxUiz^}66)#;dw=UZJY0aQ)A@rLI52J*&JiGi%c8e-*-#15BLeSu;DJiWqH#En}i&jhh{Kv$enhYl#RbZs2%;~(3=+KCK9#|P@+v>+b(4tX;2C09Vfi5_zxOID zF&H-_WiC7Xy(wJwgh$Sj&uE2h zFATLNN1ALr3fg1h759_T0zc(;1N9I-Ukqr`w|;=>9*Z58^hSFzcK%Q1%oh#E$LM$T zJVG<9l5UV|W(G!NynDcFPHow1xb`7rqenGKlwnbAgD9S;tW#j=r!bVFNwe>!BQvqB zF*U1ui_mG7(5JI*rfrHI&^mLHxAgv>jPEkR!AHG9Jc=^kZ3QcW-~(03Oa(fEqA{D?y4#>Y=Zy`F$R4ur_?hqHZwmzFla-kt5 zK@v%=h(Oee?Kbbud{-Qgs~05Kr%j=`<#XG_hS@jb3}n6LFJ1<4jkZ}71093+k0$$#IEqW#Lq2bvQ5*`QXD09Q8KK8{oc0G-{)t z;JI69Z!wYLP&622F(axG!xq#xV{qw`{rieEwDp~f%WdPo3^e+WKL7W2(vVR22SD{r K^w7F4Fa8hCzLz=x literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..60e744d98bb6635af0cfe876f76ec10c0ffea889 GIT binary patch literal 4081 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..60e744d98bb6635af0cfe876f76ec10c0ffea889 GIT binary patch literal 4081 zcmeHKSs)Z#8)i(5tRsW6jTu9>Nrr4$#yS$!kg*Ke5?Qk)5=NGY#wa5`in22qYjzUG z5<g`(C{7^Wd_zIp6V9$JyA}_$)9cSk_7V zXMs3bdzC#UpLMW@V9kx#D8mvPY-|D*7A9!h2$!uqUs{+cq%S6OO+~3bHS4JO>35j{ zwQ3gA9gYq4@u9B1@C>6PO5eb3ZmZxW!lPslA#G=j@`V*hCuFa zD{KN3N)UGU=0owagJpR&Eg*zg5H`6$V@MTf@-M;vm4ilC1p!^QJ`QOC?^P4J8P^|P z;u8!Ts}5}5gUJyQ3PH1KYL=6F6J3qu$5-~!Sp|`dV>rI+4(}X^Yik+!+y1M*>ou-F z8`O7&xkBhj)sCdR*pB^C+eNF*O?qIorXw~AMms*a&s3-9LvoT4%^mSk9twjNk3d4M zRsuf&20Vh!jWiLi4*T2k*s(JNWgis*r#PO{b`7k`qlw!WG{+x6=YwW!2fGV8RXX$8 zmp#BuBVGC)8$f&{aG46+XEF zK}(`X{0Rg0^w1CWBrC)T@)rbu`{Ys|?294{G<&ybJWdIq{L7qvmA`$#kR%b_lp=4j z1Ke0@*y@P0k;Km%3Uwby&z*zl+1p6TJ6_98vg=@xSh|2Rw3)H-zMvDif7 zNJyNItU@|eic%k#z>axOzq%uZi+(;LEKt^r$LVOn0ry^9z9NjiyO-fNg7pw_GId$+ zq?D_Jdm6IO9Fv07+9)w*=HvWt-MDrEPP@D)nJPCR5Qoz_yvm}FOr77EsVOa>{%jM* zRfrJ|8Bz4l8rG^U$Uxce_gH{)TYSFTD{9QSP5Ry-=%sxlh;VrGV66kLO6;lC>FSc7 zJz8F}rPm1KDMEG`SWpdesyvM=ylTyF%4p`u?3NG`w=LVB58VrRKh!l3vder0=+lW% zy+u~~GHQen^z^Ifla=141OjJc#8Z=QPlzfsO0$=Vw-9#~Ng8Og*2s(2>P~1s1Qk-0 zCOc9UZ?dV0C3&`_tXdP#zLLrenKw$v|3rs}V7`gbPjpuFVMusfh95VH#yG1tgKddEZ2fdbP$;R%QJXUkn7x7RIz@}d2;rNd#ptHIY#oMbMk`0b(p&S&okp8`#k=YU z>rt-K-(Ni#FY;1>(RAK_eLfp6S-N(p9=e@Ie;{zE$sv7AYMz}UQ|<}LJKF+zi#xNI zF8<~l+&hE?;3i4fODpGmfwbVi((g}SNE#!<(ZSz;d)GG2gY?@K%$O5>sd<^xT`!{F znyY9xIlwRzW#biUQ3(+Xp%3XkeC;!w4O_0WBI#HY;%U`0uioM^jDFX*de#V~oh684 z+!a;=j`63Q#e!uy2iSGaOYr`L8meEL6Y0~r-wDbh>% z76c4JRXYXFd=x>zQ>7P`IjL^;V9#;k#<%)e^gjJ%(JI+XocaQ-u2<$MF{0>Z7=)Ui zG^>UgoRfFYf(>JP-nD`Kj_dhxwMs|e>e(voOo$(t;wH`MF=5Ccw>R9rN4>qvad|8B zZ%DqVh+C5OKe(M4jUT{hJ9MDy$BV(h{WOyQmgA^SOL+}#ZRUlwSLAeIGYoUu$d_2V zWy!UFY6PDs@eiypL9d=!625T@Y$4@_bBH}isO)t_i^#Mlc0?UU=PmUwgo#@Wkrz(g zT-D%}NxZ=G{8vo_&|qAW`5~z#x^p(^?mCPRnyBc~6Dc|v40NP)CJ79kZ!KLIm_xY) znpOD(5T0?8rbVj#kIiNUm9Ve`g@B?mf0q`9Kef0)GP{2*hng_2<88$p_tX}+F}blK z@<|PhULO8sJ#%UpeNHm_19IwnXO!_zhIJn1)!3W$)=cAa4&OzHFrtOHR^X<`*CX2^_7tn=wA8gnicKghzi*^ zkzeG;RB+or8CYIQ>(oFl|2VLgbSl7>0ngIBj6P2w$$3)Oo;y?gYZ=2wm#JrU1IJr; zt68nkE<5vu(7O!izRW#O^T*+zjWGc7dM zg8hwr-NF}Ez3%n#-!La4+Kr24axBUf$i7}8(VY$NMSGSRS_h<3IfCCg8xO2i6F%3F zA)Ko8;NxOJW|NTTlb_JE|I*}G?LRz7PAfSk`N^T?YK<)Ic)(<$jQF*s4cA-a=NspC z&2^{u>!4F46#BPOSZw_TpSub2Czi=h-Br=;qgnzDY;eT z?I1fY<;)6_3OX{VRxa&M%$D`s+3$~<_5Z}E2RFN@`K-)wf0M|1o!3lXuiAq>!z1~F zTyQYTq37t>9y5Pz~qdivNq{6xM^X%U|+j4fe^Lf|cv|sL=6o2K28el!<26b{Y zzkV?6ToBk*Cbbve@R<4AV}{MN+5Uu5e?g}vd}yGlK<`9Q6Mrys1*DZ`ZTcQq)?uFb zI%UlBbJKhDP4bsw1gz$5&P9i72nV414zSE3m{T(3Pz4a$wJ2)Fwc{F1<;mc&;jNq| zBbViMUsEi5@L!Ul_1E$udDLnoGG_;s{cw?v|$aYJjEuSM9sxZRXyGPomV^4C563{ z$~iEZS51fr_T0+tira|&cF$6GO~N}!&EUgb%-Ca0NX>5~zp`+}0Ewm95-@2yj|;5* z$|xvnkn@93)h9(-Db$PdW0gu99CuA$Btw+|S}NO1CUg%yP2YE{Cem6k(yfnhv6N=} z>Ti_-HI{KIGG7pQ-DnOmUFX>Z_YGS;faVoAwz>Z@WbBB@(Okqi>mrarc^s*IMMCT> z69u4QGmxxlzq!F?1kQ3-CTtFhW2S~ci>YwN9U$wAAgHBjGfUjYjJ4jQ*jSJdyJs0j zlojbbTec2n`7~IpGGqe=CA{?2-8&CpQ2~iXFlSa|sDDYmxuGHO0b7mj%hXs9iLy1Z v3t~}$4YN{0!Gh?q`n*V~e?|Q7OfU`VFXyf&FgbxN56@;{YHdO>awYr+0{bh9 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..2719929a6396764961104eaa17a77aeb8070dd49 GIT binary patch literal 9333 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..2719929a6396764961104eaa17a77aeb8070dd49 GIT binary patch literal 9333 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..118378091ae4baaa37ee46db7e03eeffd87ed210 GIT binary patch literal 4176 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..118378091ae4baaa37ee46db7e03eeffd87ed210 GIT binary patch literal 4176 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 literal 0 HcmV?d00001 From 2a4e5836b24b20fe7de4a804c1c6e0775e4a4f8e Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 7 Dec 2022 10:28:39 +0200 Subject: [PATCH 078/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 9da3eea693d..5fe34ae506c 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2250,7 +2250,7 @@ QUnit.module('Free Drawing', hooks => { [true, false].forEach(absolutePositioned => { [true, false].forEach(inverted => { tests.push({ - test: `clipping ${builder.name}${absolutePositioned ? ' absolutePositioned' : ''}${inverted ? ' inverted' : ''}`, + test: `clipping ${builder.name}${vpt ? ' vpt' : ''}${absolutePositioned ? ' absolutePositioned' : ''}${inverted ? ' inverted' : ''}`, build: canvas => { const brush = new builder(canvas); brush.width = 30; From ca5aeb350e807ba662dec9a22016d1021c565125 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 7 Dec 2022 10:29:56 +0200 Subject: [PATCH 079/153] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e0c37fbfa9..17348d01edd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,6 @@ - brush doesn't add result to canvas anymore - `path:created`, `before:path:created` events are deprecated, use `interaction:completed` instead - `_render` method is now protected, use `render` instead -- chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) - fix(scaleObject): handle when scale is 0 to not bug flip [#8490](https://github.com/fabricjs/fabric.js/pull/8490) - chore(TS): migrate StatiCanvas to TS [#8485](https://github.com/fabricjs/fabric.js/pull/8485) - chore(): refactor `Object.__uid++` => `uid()` [#8482](https://github.com/fabricjs/fabric.js/pull/8482) From c1f7dfa2a898667f8ef58f9009c1ea3c410a748c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Wed, 7 Dec 2022 10:39:45 +0200 Subject: [PATCH 080/153] Update canvas.class.ts --- src/canvas.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/canvas.class.ts b/src/canvas.class.ts index dbbf0efac87..6bd1ad0c0ec 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -30,7 +30,7 @@ import { saveObjectTransform } from './util/misc/objectTransforms'; * @fires selection:updated * @fires selection:created * - * @fires interaction:completed after a drawing operation ends and the path is added + * @fires interaction:completed after a drawing operation ends * @fires mouse:down * @fires mouse:move * @fires mouse:up From 4db36cad77d69a5435317b6764b81bb341009a5c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 10 Dec 2022 18:58:48 +0200 Subject: [PATCH 081/153] fix clip path --- src/brushes/base_brush.class.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index e80fbcaa344..a066ab3c0d1 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -223,6 +223,7 @@ export abstract class BaseBrush { const clipPath = await this.clipPath.clone(['inverted']); sendObjectToPlane( clipPath, + undefined, this.clipPath.absolutePositioned ? multiplyTransformMatrices(this.calcTransformMatrix(), t) : t From 7802c81f5942c69fa1b81ec270f62d5a6338ccb7 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 09:19:50 +0200 Subject: [PATCH 082/153] restore result test --- test/visual/freedraw.js | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 5fe34ae506c..761e68dae75 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -15,6 +15,10 @@ brush.onMouseUp(options); } } + + function fireBrushUp(canvas) { + canvas.freeDrawingBrush.onMouseUp(options); + } // function eraserDrawer(points, brush, fireUp = false) { // brush.canvas.calcViewportBoundaries(); @@ -2061,6 +2065,14 @@ QUnit.module('Free Drawing', hooks => { * render top and main context before mouseup */ mesh: false, + /** + * render main context after interaction has completed + */ + result: true, + /** + * runs during the test from the completed event + */ + onComplete: (canvas, result) => canvas.add(result), fabricClass: 'Canvas', @@ -2282,7 +2294,7 @@ QUnit.module('Free Drawing', hooks => { }); tests.forEach(({ name, targets, test: testName, ...test }) => { - const { top, main, mesh, ...options } = { ...freeDrawingTestDefaults, ...test, ...targets }; + const { top, main, mesh, result, onComplete = () => { }, ...options } = { ...freeDrawingTestDefaults, ...test, ...targets }; QUnit.module(testName, () => { top && visualTester({ ...options, @@ -2302,7 +2314,7 @@ QUnit.module('Free Drawing', hooks => { golden: `freedrawing/${name}_main_ctx.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); + onComplete(canvas, result); canvas.cancelRequestedRender(); }); await test.build(canvas); @@ -2316,7 +2328,7 @@ QUnit.module('Free Drawing', hooks => { golden: `freedrawing/${name}_mesh.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { - canvas.add(result); + onComplete(canvas, result); canvas.cancelRequestedRender(); }); await test.build(canvas); @@ -2326,6 +2338,24 @@ QUnit.module('Free Drawing', hooks => { callback(canvas.lowerCanvasEl); } }); + result && visualTester({ + ...options, + test: 'result', + golden: `freedrawing/${name}_result.png`, + code: async function (canvas, callback) { + await test.build(canvas); + await new Promise(resolve => { + fireBrushUp(canvas); + canvas.on('interaction:completed', ({ result }) => { + onComplete(canvas, result); + canvas.cancelRequestedRender(); + resolve(); + }); + }); + canvas.renderAll(); + callback(canvas.lowerCanvasEl); + } + }); }); }); From 34cd396b5a9f32bf18c915c14faf66af824a25c5 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 09:23:18 +0200 Subject: [PATCH 083/153] rename goldens (mesh => result) --- test/visual/freedraw.js | 2 +- ...png => clipping_PatternBrush_inv_result.png} | Bin ...esh.png => clipping_PatternBrush_result.png} | Bin ...lipping_PatternBrush_vpt_abs_inv_result.png} | Bin ...=> clipping_PatternBrush_vpt_abs_result.png} | Bin ...=> clipping_PatternBrush_vpt_inv_result.png} | Bin ...png => clipping_PatternBrush_vpt_result.png} | Bin ....png => clipping_PencilBrush_inv_result.png} | Bin ...mesh.png => clipping_PencilBrush_result.png} | Bin ...clipping_PencilBrush_vpt_abs_inv_result.png} | Bin ... => clipping_PencilBrush_vpt_abs_result.png} | Bin ... => clipping_PencilBrush_vpt_inv_result.png} | Bin ....png => clipping_PencilBrush_vpt_result.png} | Bin ...ecimation_mesh.png => decimation_result.png} | Bin test/visual/golden/freedrawing/dot_result.png | Bin 0 -> 434 bytes .../golden/freedrawing/largeNoOffset_result.png | Bin 0 -> 7889 bytes .../golden/freedrawing/opacity_result.png | Bin 0 -> 37585 bytes ...Source_mesh.png => patternSource_result.png} | Bin .../{pattern_mesh.png => pattern_result.png} | Bin .../visual/golden/freedrawing/shadow_result.png | Bin 0 -> 29281 bytes .../visual/golden/freedrawing/simple_result.png | Bin 0 -> 1046 bytes 21 files changed, 1 insertion(+), 1 deletion(-) rename test/visual/golden/freedrawing/{clipping_PatternBrush_inv_mesh.png => clipping_PatternBrush_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_mesh.png => clipping_PatternBrush_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_abs_inv_mesh.png => clipping_PatternBrush_vpt_abs_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_abs_mesh.png => clipping_PatternBrush_vpt_abs_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_inv_mesh.png => clipping_PatternBrush_vpt_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_mesh.png => clipping_PatternBrush_vpt_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_inv_mesh.png => clipping_PencilBrush_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_mesh.png => clipping_PencilBrush_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_inv_mesh.png => clipping_PencilBrush_vpt_abs_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_mesh.png => clipping_PencilBrush_vpt_abs_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_inv_mesh.png => clipping_PencilBrush_vpt_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_mesh.png => clipping_PencilBrush_vpt_result.png} (100%) rename test/visual/golden/freedrawing/{decimation_mesh.png => decimation_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/dot_result.png create mode 100644 test/visual/golden/freedrawing/largeNoOffset_result.png create mode 100644 test/visual/golden/freedrawing/opacity_result.png rename test/visual/golden/freedrawing/{patternSource_mesh.png => patternSource_result.png} (100%) rename test/visual/golden/freedrawing/{pattern_mesh.png => pattern_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/shadow_result.png create mode 100644 test/visual/golden/freedrawing/simple_result.png diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 761e68dae75..bae5ac39eda 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2325,7 +2325,7 @@ QUnit.module('Free Drawing', hooks => { mesh && visualTester({ ...options, test: 'context mesh', - golden: `freedrawing/${name}_mesh.png`, + golden: `freedrawing/${name}_result.png`, code: async function (canvas, callback) { canvas.on('interaction:completed', ({ result }) => { onComplete(canvas, result); diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_mesh.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_mesh.png rename to test/visual/golden/freedrawing/clipping_PatternBrush_vpt_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_mesh.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PencilBrush_vpt_mesh.png rename to test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png diff --git a/test/visual/golden/freedrawing/decimation_mesh.png b/test/visual/golden/freedrawing/decimation_result.png similarity index 100% rename from test/visual/golden/freedrawing/decimation_mesh.png rename to test/visual/golden/freedrawing/decimation_result.png diff --git a/test/visual/golden/freedrawing/dot_result.png b/test/visual/golden/freedrawing/dot_result.png new file mode 100644 index 0000000000000000000000000000000000000000..999eed113b780cf10f7958b5c7f2466a9dd8e2d5 GIT binary patch literal 434 zcmV;j0ZsmiP)Px$Y)M2xRA@u(m)%jrKn#Sxs{l#}6#yNO3ZMg$%0en2bO0SB6+j74fioK4125#( znph4VY3APax4XKNU6_fLncyIST$+-pNGdWC136kF5$jHyinys8DR7V?9XtV#z+F9i zz|MPt?MOXJX(b>XTmu_=Ab;5oSQq$~DxcY@38aGfqzBV7193A27zKziZR4bxjoDIl zK9}D~AoWhXI*Qqdy*T3BAuS-*%(El=w!q2}=MHHBu@~vqk$qp_-Vx^xX#wfHnG3Q1 zIxQexMGmFkHDT5QGMhVM3-JHHS~eFQ4BaCi1s=j?suoffqHXjq;7Vxj2UuL>X0NIk z7`rd0HvAi~ngWFN*i_`V3U$-ly|EX`_RFDu{q9OXf|J=GAd__|6iy%lNue&ONGRPx zu~bALDbytu38h;omWl`@g}S67p>zwyQW1fqP?uCBly0F|Dk6{+>XM3t(k&EAMFf&U cU1p=m5u`3OGb^}*@Bjb+07*qoM6N<$f;s4{g8%>k literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/largeNoOffset_result.png b/test/visual/golden/freedrawing/largeNoOffset_result.png new file mode 100644 index 0000000000000000000000000000000000000000..8eb143e9721fec4a361a8f5eaf107ffd62ee70f6 GIT binary patch literal 7889 zcmZu$Ran%|*Z=O)-Jve9($Xmniy$l@OLt1=kM3~k6c>9_4GL zjmhOF6aoBr0W5xJPcS+aAwI|w?dq0oElYaP={}Y~`VEd@Xo~z2Mi#QHg9n$c2~=ap z!40?vk}}QZ;)lqD@Vm9ocY$ZBNB8Jtu;WT*EH1%W4Ker=b&w=1KKb*T9S}sb>YhBA zUx@Q8f%uGhz2m?j7yvJxK{Ylxm-BWr+?0#=IlI0=-5Qh^EEf21qA95VQ6_WzPNnaU zv8TiB|2NyQFsv1=2Zq?7q}s;WwcjMGffj#s%3@ew3kPv42PiLok51-4N{oof)^my2 z1S$H(yopcLX4wkhjkqJ9{M6#{0a^Qq-dEi<;P1-I`u+QeyLncb_rxa-9iAVCivP<3 z0-iC;agg4|JDTR6qh&j3epez5uOu@jnyN z!Shc�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 X+Iy*DoLpal8J)q?)z4*}Q$iB}6CksP literal 0 HcmV?d00001 From 9dd25eaea2595aa35ce25264abb63be2d165611a Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 09:31:49 +0200 Subject: [PATCH 084/153] fix(tests): `pointDrawer` add result on mouse up --- test/visual/freedraw.js | 10 +++++++--- .../clipping_PatternBrush_inv_result.png | Bin 5189 -> 5223 bytes .../clipping_PatternBrush_result.png | Bin 3026 -> 3504 bytes ...ipping_PatternBrush_vpt_abs_inv_result.png | Bin 14768 -> 17521 bytes .../clipping_PatternBrush_vpt_abs_result.png | Bin 5885 -> 7570 bytes .../clipping_PatternBrush_vpt_inv_result.png | Bin 15300 -> 17279 bytes .../clipping_PatternBrush_vpt_result.png | Bin 5738 -> 6848 bytes .../clipping_PencilBrush_inv_result.png | Bin 3538 -> 3725 bytes .../clipping_PencilBrush_result.png | Bin 2745 -> 3238 bytes ...lipping_PencilBrush_vpt_abs_inv_result.png | Bin 8230 -> 11117 bytes .../clipping_PencilBrush_vpt_abs_result.png | Bin 4081 -> 6248 bytes .../clipping_PencilBrush_vpt_inv_result.png | Bin 9333 -> 11299 bytes .../clipping_PencilBrush_vpt_result.png | Bin 4176 -> 5442 bytes .../freedrawing/decimation_main_ctx.png | Bin 7562 -> 7526 bytes .../golden/freedrawing/decimation_result.png | Bin 14178 -> 11854 bytes .../freedrawing/patternSource_main_ctx.png | Bin 25416 -> 25541 bytes .../freedrawing/patternSource_result.png | Bin 34984 -> 34654 bytes .../golden/freedrawing/pattern_main_ctx.png | Bin 8631 -> 8573 bytes .../golden/freedrawing/pattern_result.png | Bin 18374 -> 16612 bytes 19 files changed, 7 insertions(+), 3 deletions(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index bae5ac39eda..2c6b9301215 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -3,15 +3,19 @@ canvas.freeDrawingBrush = brush; } var options = { e: { pointerId: 1 } }; - function pointDrawer(points, brush, fireUp = false) { - setBrush(brush.canvas, brush); + function pointDrawer(points, brush, onComplete = false) { + const canvas = brush.canvas; + setBrush(canvas, brush); brush.onMouseDown(points[0], options); for (var i = 1; i < points.length; i++) { points[i].x = parseFloat(points[i].x); points[i].y = parseFloat(points[i].y); brush.onMouseMove(points[i], options); } - if (fireUp) { + if (onComplete) { + canvas.once('interaction:completed', ({ result }) => { + typeof onComplete === 'function' ? onComplete(canvas, result) : canvas.add(result); + }); brush.onMouseUp(options); } } diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png index d348811feb1ced926314ee13741672135199b54d..b75e68b075b7316fd26fabf3038c788009b6a23a 100644 GIT binary patch literal 5223 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 literal 5189 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 M+q>B{9}gk_3qv9`WB>pF literal 3026 zcmeHJ`#aMOA0GCwCCo!gQ@*jyDI}+ymdV%>i6|rW;7vRzLuC%toX<0da(-eBVMLL` zc%y8H9%Cd45jm_JhS!`P&-MHh@AY2q51;$KKA&Ii>vR8d-wF11))EJf9sq$r5_p`Y z!#=bB9*F2ZR$XNj?vqfEgS7>S(Wfv60*NQ%EisqxyYmWc+5S%Qti7c7$*L*BTQd&Q zmXut3#AhmTqDHh|PvaI0oT@+yl18rO5k3+e$Q`T=X00qL z&$e!aSMDs%7Bc%*wv_O>&HfQJA$s-+A)1w{V% z`jQ4z2#lxRYJVwh4uc!|B2PR7@W0wVF%X7$Oj%VSz%T^97&>4D!uWkI%Zdh(5qQ1d zK0$!^6!YxDEZAPztPww}9~jT8rt*uitQ?#i|{<2H`@mR(A%>)pn3 z8kLyDvWVR;``&&!!_(Bq-OlEJjiv{vaWa~_(-bQTpZxiyzBp{_$;jQ@dB|yHZWJGb zf1szg?3ErcqKwO$MV)KTb6Q{5spIK!rQcHKF~%x$KIgc->eo+lI=n}Z(6n)+TQ^4+ z=3Te$_?lpKA*WCDMqLhN8b9rBEk4{ckJzq#y!_eo%GqXtD)wmpSIF2w@&(*azzj84 zC-Zz!L$Ine){3Qgt}Q=RVveh2*YpDH=s`&i5bbL z$6SgghBG#s{G!oxVP07{0b|@PbZ+hmh#Z`+5L<651a?7-CI8_m4B-S4k9=AI!@M>X zPLWfgG-}NRZpv4CaKEWEGd%iPZftSx#S`qBy=4x`Xq_Ryff>qc;@SKr zK+ENh*ELIMvjHZS({>bhEyZ@M?`~dgn&|qNTo=I3?1koLlaD;ksZ_x{M>iF0rih4Z zvZG5_C@tqz1H0q+NyE}4Ep}!Ji$pltTAnwctCGa(|KZYx>^R_IN~+Y&+DT|v(>37F z1gHN}-cvVjfECoQKVByF zRzJ2KqtC4RZNB^Z#AL~R-ujSNUw_FAJ*4B6QRu-jmcl7BE|$U@nNW7#Iyu(;oJkr- zc0f-@b`0#@^pJ`WHe0otb$RLP(mOqFyB1I0{)17Ki+|G7!UHwFAMNwqq>9O*>JKi- z8ibf6oFRyggyqCrQyNvipVap$dbJPUT|`o%C`M=5mRNad zfHhfNTYs@9(l=JtD-$t5573`x7?v)0cVC3#uVM_o%q=u@)|R_=w4CV_y)V)6{WFg6l~5Q%D@|7Iaz&Xi?w z;+GTUjK!+!nX3-zyI~hz^Fst+ivz?7t&KJ$w@BcRUnmm%+)Cn)4P{Dl{HXzB{m%Z? z=Qqi;!^3S!{P5qmG8dxE&tQ^m%!fv95dw%b^pDKoNXHu8cBjpuvmvwW!-;%1#R2s` zRSPKRKitl^+I#aAp$q*LiK{tEJCRpvqWC|S8*>Qj`foamNSPIT*B%V-?S&6%FI6rU zLmdng7|oR*LN!|_38iqB)3WChdt-(+zb3S==k&g~SEgN8^t_!#?rvd@Du%k%1@U0pQMbp@giflkdoLlKV`ZbVm!W*@gbD{)M3jwb`kzFlSWqye5?WE}^(cEs*P?3=DtEOw z%0WS9?mOil+Q;n_gM8MV&c*;@0SeA8Kh!mRP|VISSt&o8>Q*oQeD}a5j`xoUv={3tnj(cD~!0{WOVXmX?ZN5>(EON(48p2 zIe`OlgE|IoCRU1)s_puZfJuk*=7sxJDg)&ovtO|Ozy9~Qu`AVbA$~&u diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png index 7b9fd2e5e675e958521ef64df98dbb6963a1a950..3361a63f9809d33ed664bf46f260e124850e18f5 100644 GIT binary patch literal 17521 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

UKs}X( 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 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png index 4ca1eddd77bffadda7f8f2f8e7f570fcd6b39e9f..001e8d0e9cac19f001c62d8e131aa674163b4f74 100644 GIT binary patch literal 7570 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 literal 5885 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 Umkl#e``I*512g^FI}efn2WKM>a{vGU diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png index 5b5b30fa9657c61f20e318603c5b2e1385e48dce..945f3dd577f0d7252ad5bbeb2ff5fab891743f1b 100644 GIT binary patch literal 17279 zcmXtAby!pH-=;f8NRA$*fHVUHX&5C4N_R@h=#b74qm}MdKpLcDq~t(K8YGmIl2G3B z{ax4l$2R`hInUWS&-1zCb3Y(-v{gxo7>F=1Fi2r)N-u%Wk^f!lGpb$Kgz>j308fz7h>S!t?NsHYlYcY_LLPnGM0rII@Z4o;a=aQ8{>-Jb0Ec$ep{>^1Mn z-P-xh4%J9tfr_NgygBBeIaJ1=o?6o5!!(>=u^r+e$R)8CkLsM*CeUkya#Nl z+Rl)FA&ee_%2+7ApjnWc=P=;!Z)=Sa*zr3J|s1bV4xIrygs zj)TWl;W!5d5E*l{9ptYn?8uXT&KDLC!XYEBn;MM}v$HCyiw#+nSdy1gL?20A3j|4r zJQ%=Q-;_!O2uzw$l@_F3Xr$&_JqWD+98A?7;q{;TOaJ+UM!VgQR=70HjUwYgOxcGq z7wEVI<8l|otkwbBGVMkSHua{IWlq-S+ph>O8Q5F6oA&B(eV?p6x~go#Mn}HQCRTbu z<|z8P*`LZijdqLn9GrvARA!EYVUe`)-e6_)g9C*qdL2pM#+v6sT z_|TBJ_d0dbnOk}xXkhK2DpgiYh0s~H)Zu(%&VFt3`Ifn%WUK2|+m*Vmye5pU(m6BL zR39BOv66y2>E;n2#U>v>rMld!J7TT)NvPx)t#(rRcY~FQ;~Y1W%>@?#yRf^$J2Y#E{tJ4PY(_+!sKrQ&pGH0+2nQW$XVvq zLSBn}Y;io(4X)qy_2EzRJ5dQJx^895W;*Q5%ut0Wg^>1aN~Q+4>;?18D?8C71+Bm0 zl$oXZxcBOzFTZhv3J;-$RQ6_sJ-3nAqTahTP!I49=#SdBIh*?8B63F)H{)=Hci^2W z+gG)w6ynKG2@x;rVXhbYEt{F|>s&3 zxOnC>s+)c`dwbA_cgIk2_=aS@3^xroq4pgI!$Fr=2}AMhU&x*(+QeqrY^=jk@uF<; z6`|(4(vFB_`vJFj3-7<<5_J@o^Yz#rgXudBaXI+iFL(t{U&ACO{zO98dt7r~JEsaC zcP{j(-6ogrNz7aufyOodDIQ!9QrMC0COZqIspJiLF!G@12pLuo7L1O49VYnzhi zG|@dBrOq1dQLZ|xR6m~bC;Z(_82w5Z_DHa)&=A{@obNY&z>9e#yN$WEv5g(8A$IO* zZi~j7P@%MM{xs`neDQ6GU%nZo*5;op>m)x<_NoZm&R)g&o^O+yR&K12E9cXh3QJxK zoKg{Wn9BG>fDREEhL7|1pCc5`YS#9OE*5`B>RUWLSV}}~X=X&4vEb9KllF~vIVNFG z*n6krDvo4XUfr|4k|iGSj5D3>?@f5RP+a;s`GOg?uJxh{6hWNpmQTe*_50w;%;HkJ z+m$(U%;4lcdOgj=GwJQ%`DqNjFBU;_zf^}i)uRA;9T2ihL)ynT^)bW_>Lb**Vtpm0 z%}QooBe=QXYKGD%up^~GSGKc-m{UQRhsM9hNJ_q;IsD2@>+F8{8SZZXZK|4}e2Td?L z!B?gJFN`W|a8Q~;s9*H9E-E$&n&E0bBp%aM`ZGB^#!-L@c{T2T_pgxQSeE(>_Ixh= zgAfL3%GhjnEIL#3&|m4LP`z_^qA%-Apt_VB4*|9|YVe6B3HRvs6JM%^2^Jqirsj1w--Z)`y2JG_oV!n*Jk<}^Bm_0~oUDn`?Py6+Kf9}IgK9>p>cN$2KqSr!>d5$25Trwr9 zlaxq7DFRn_TkeDx#vwC#hu6}vS?TTi@?`1@vLxFvf>_*Y%DG;uxr6W~IWVB$+g}2a zR)U=8OPUJ?;xiW>uw)&l-#kI_t(S=edF!nylU}QBo++-(e6hyQ6Vnp3esZl%%xJ$Z z&in(D+{EcJraHGsQ;WqU7y_?PKUpe$Oyp7g#_!0jAII$JUh-9!Zn7YYxn5Pm(UA_x zJ8atNB$g$lc4c;Hrh#GT;=aMp_!YW;aml|I+z(&wBY3%`>B*jFoxByF95J?gdHMOY zIU8E;#+xZycITe`yb{5ktU(fwzv1CX)$LCe0e+&vZE^9eE^P8rWqQZ@O(ZEU+c^ny zm5+oKn^i@G_F#%YoSn_++&pv0Q5U@}9{NXoW-930E$QLjxI{zXk#a1FWWvM?!7xX> zDI;}e+=Cty+r)e9VW9<3!(T(LvB)eXj7SLYLRV|kd9-7>&i^UeH&M6ysL(<1(s65t`+v&z<52x$?7^vQdNH1 z36FkXsYX!V)|SOA`_I*oywq}kUNbjMtEEuE(}`p9uBITCU;-b((P{C=if*_CvD2(A zVjV&-6?WJA0c-O*RYfmxLjSFMs`WjoT!U`h;cHi|$Q5u3a(f(#?ExOg#5s`7)Gjy7 zzuB<0yO!p{r(iH_QW{<)P$%a0B_0Bq(%H92fG5x8$Ts4y2r)S{+tRWLtc+oN4a$+^ z!+%3adXo)@-;pD}E3-sO7|vW+^&@WEz!K8`V(l?O)f4fj?X4MJ<-XR3cZ-}=aKDs1 z8q{9Bzx>?Rsj%E3_+XoWSyy{F1zU5`}m)u~_O83F|2il8L}#zM%f0O9~jd<5rIW&8N40ELOE6H%0GO zf0Nz|fv`_ZE>{z>ks7#aTMzUKrp7XzJcnDP00 zUZ3R=@^1rQP>6rb@xh`~oErF8OwM(oo+Qu*Lpy@o1#Y>QG%lmdt`F!hA zZ%%ZG%kG-<$++$b@GU~?=_Q4dyGGRN;;Vr2G$&DAF3Uql=d;W zJeuMJVrL=uuu)Jqjn9s`)FcM=3r+QxcQ4&J8JN z*?x7qOitG>`wHaqL?Hxx&@4>A$eiitBF|1@n=AQSolrxQHg|@)IP82-t{A)$K?fBh zoU3db=x=6`@d`?wbX7C?&H9b7>tYS>Gxz6yu#iE}%P8)~)pRN%9Jw0AU&>GQzMSqI zPhECtY*2VGuXr4b$1a^4KPM}New1eqm-P`)oT_N%sn-~@t)E^jFk^vOa_T!-GuJ|PJ1|Mvbr)j9Y!ur(s0J1V z>Jub_dCEN!1&2ON8IhIy6}kxdhkeT>)viSpopD$PuO!y+G3q6WVQjT|7lt9V>KMXP_wE9otIo&Rn|U=_qLwrp}#!&qW+9sU?bi9Llqn&mw=RM(%UazPlFxJR-wN09*-eYncY+)1FSl4BXw%SiT!IXRf229D<< zj=a>2s-am=1FM04LMdBoEhnfq<6rMk}`5oTHj##0Tshhw0 zsLfwZ#KPcTbqs6xpxOK|&6QdeG5Xj)R&JO)J@xaaao7oAJ=+$v*j!_Wm6r6UmNLuro1@=XSvzJN*4u)`xyXfz*--2a*_`rXU}SEdNFF1Gfv~8NNWHt~Cly z9cg9$Ss72Ol9XbY0*~{dfi;f---q%k9BgFBg?FWF@Y{*ML~2v(NEDy_d^6p?GKi!_ zw!5mCHgHW7S##g-^sgcH!h| z842s)$w8sLFPF!wcL#CAQYg5bap4RbWs{u9TvuL{_NcQCR|n}96r)IqqbuAZ{CPm* z*ocWbI3_FTb2fUTh;~IUnRyFJ!|QW`B{jG8;}-1VqU7Xvq>?Vxtlaovg-1s5wI-^5iT^m}iHRs`b{lW${NQhUBl_lw=e z5bS1ieW7#Sl!Ah1lK0Y8zBd`^oPTy#X#SlIdFMnmJj&0e&>^7(-V1)tQOzNJVtw06 zDy<4uwNA~ZOh+X?-tVsb041vlRuyT`_fg)0Lep1zJF<-yUo1o$<~H>%FR~#yjB(m~ zGsMX2oszcLUL@PAZ?$E!;foT(qpx$KW4Gm=CFD>GWV&0J9PWe%q_4j z=#=WouyeKk%`@CBC}o^-nyAtbjAY}VcKtdv5zt8y+{1r$i++UIx>vviS6G|tR9xA6 zF9bXjN!Gs}5~20FYjp73yITZXnAy}(3cidCI1zmh ztrg+sQ87t~>QA?I+G<0e6a4M>mD5Vp0HfeMj1+Q@AAM-^n~eb*Zb26uj|bwbhj5fc zV(o6pwRIh^n2D4}*(y6qn#h17`ReG?7Alt#WKi&pR-Oxn(oC6Y6uc~DeJX^!o{>ge z0*B@m3jXDUtlp8-MGwL6X@-Ia&4%&fJYHHIs|kl9EpacO?%XxluY_?UzfY;_1YCpS z%R@5^sD>|j2)&-2zSpgXDpl42V|7pc*lB}P5pJx!ln3KC5w1C)=`}ny5Zfyp?c`5M z>XovLL4NHYW4G~Mb7Z|u$Dwrncpu>Ph94O4v+_Bol--xy%PX!76#Nv-$4PBcIr=#F zi}VX{EBQkAT}F)wf0S#WnR6F#@%WKy3kVB^C)Fk8=pAM;ze!>NWdx)%aut@~%95?(Iq&%?kAK{R%AUZG=f z&hsPvLae4JFEHn=3ddiqYdjIS>6;evKkE~_DzJ?Y-oP`8M)jBH(yWNs^_xn-P4D7@ zR@(^l^u$J=gKT<1FdhaT(k^;h5M4|@Fnu=hZy2^)t?P5!$;hfe^mJ@-j&@Wi__KJI z+j{y%*&?^LsnE`f)i$2I(9_KnnZ#G$Z?6aB!M@3~!4s`U^>ax{eN6uORP4-2d0BN& zs5Np}k#`n#OQl?|W1l(xQR`HVd!p!HWL*|}yryOQrTTq@61dgigP9B#{wcn^R0zu} z?PE{=WkqMag+KH%pkTsB$ViJ9be`5V>R?*yAFQ%3tMbIAuT@1U>|b)?BcR7CpX#a% z5|?G$psLg27t7_4y^o0Ss7(E5Lmx3b^{?FC*g7+6lR%FCzp4xEO7V5Fq zM*BavT^d+h4~tEUTPC!&C4+^LZ_}!OGlFMxYo-Y(2jhJ0_bX_Vm|TGb&>dFyw6pYQ zXRD*uI|h?y6mrIB{#c>K-ngxw*13k5mR~}DD9T7d^eBeEk;#CnzKho@!aq|#inLgk z>w`zmhy8}s6c7=Eb?9Y&(fFK!6vOlfE}5bng|MUOy+5b~s2(ju(`gkAVl>G&Qmga| zn)W!o>rRmNR7u{(9#!C`#D%kh+r-4^Ge@okpV4+<#@PN>0l#o#`X{nAzFUah&crwz zi20#b6Vtuogdx}5J;pfonSM0F%QZF!tY705?8@lp5f|YfF8}cD4a^&9@l}LNK0Jb0 zkZ-1zEh`Q>d2W0p#as9DW~^{vKz=;2rXh=e-I4BVKWt8GEu0+HHz^A#iQSHNql0J)VBt^)T#lv# z<-=+VRk~)2__5PVG5n*Uy=+FZI)ohkV^kg{wbx6Rz=eFmL-_CMl1~8d?*9t4XscR6 zl-jB$*npu0``$PHzFv>&&Eu&1Pl)YjiVobe>e`_RIJ~!K`mZ`F?I3eUu=a&HktIQoH0e1v|3vuopo+Y9 zWM3bvEnfXB%elU1ieajqmyDG5z_<&3EiYiM1vWVU$ac$F*QDcsjxJaLDrGmr(cQ+n zF~M~?3VsN()kd&ysF4!F%6@&btyR>dgS*U&zIwBcIoPJa5!7Hmz2_Xn0fH>!>o6In z{s%&&9U-k7nD^~Xxg3Zu+FNbMB|T~fZpQOD9LR|D>>Wb81V@ho>=+Tn8QCvHw6BLB zkBrRuNY~FNu-K(Z6r6*_6n8t`Ul9qC(0EWEO#nFX?rojlt7M)=TzX9U0f1#J<3I2& z{aYdIchlZRef2h{sEK+*Hca|*yBkHODvnFMP>fCfJbo?q8O(n7>|I~=pf?pjNd^1)Zdp6slMV)=y!O}vqL|lUG2K{VlWz?$@!w@| zd@yk(a@;a4TG0j#>%LMEV^MwTJ@lrOc5CO8{3~2k0Y_Q{9UhL!uu^>gLRV5*1@%*&pT!SK%iRHg8j9=-$LRMx&}I!d`v1mk)|AjvlO>g?_DSJA2&qA)4+z*K)Hb3a(G^GI3Blf+?;`ih%L>PM!EKx)V2=NVD}N zGLpdu)Lj+6f~btcrCw&R^MMkbAAo+j^$HK}99;)y-Y7(O>5~#n&GBrty&4|5=fp^A zrE8=8dU(!pKz!nR5jGfQUnnSM|2t z?^FT?KT>%t2D3mg-U;%MMFl-97ao)#wqMgPfQopj$5Qsei!rT=;F#y`*-_zr*XIv! z4Ty$+bQjMa;&7JylUaCrGOL0k_u@2)=XGr5+>`4a16Gm}dfOH!mkdIwksh&ImZ4m& zPcH;p!yNf?_f5gpa(hZP21=uJA>w_F>Rp)5L*FoxBFl}igLJBDD2Kboi%lcrc{3)C zxH7FEOz=WD1{+akDwHfFf)c&rHoRe4gSaGb)K8F$H7hrNZh1>NDg~&p*Hpu=I_IZ# z&t4PX?kwv6hn*>cSB~OERHZpQ%u8|%(;hzgyol}0N&!kyCM9E?*>ac30{v65X`b*k^hVmrbcySx`vC+~ zr`Sl>rpQYCs54qHAHf-Il&@IMP=tYf8=~T41kImv7wRx7WqNE~{pt$85dTE~2AgL+ zw8@w<{#1{?AQ^Y6N-s_w2^7)9vdeUQddxF!(%wuoo<96ddJH{LX19S3IdLH<}+4GRQYwdrExDP@t%z`Rpi8+UKzaC^~HOw zometw@~uxa6sg3zG z4nar`uGM5Y*MKs~4q1Euj1Zf0y5JGRROI8Ww%?5W7FJ>S;i|p*0$mz_ym{^zarq6T zAz{_9Pc`Q9`MZ+4t?nU#%qw&WQ8xkiT(dJ_L;O=g3wK+ba2$L=7tu1Ew{CMlF&`r9 z=z9~2+Gy>T5bJ2w0;>xBV~p_1ZKgWD(=H?vT{wHqmr95AA#J|8^jcL{sM)lX%7%Nh z?%$+bW#ru5ShI$r-hVZCX?p#R$JsXwik$CEsxKvrm%^uIYlqKrDFB{+Q}%{ObSCNx ztssK-i<^{%z6_T9tvB&mlBDuS#P&yvy3>es=w#qS6=HjBMXgtt;7K2s_Wd(XvPyQO zh~BTF*BrvsS7jpeKhSO+Yhjt68JRJEXgBcywjQ^ zXic4$5Z8vW<)s#QRFlj1|FZxN!(6yxUV03axuR;^yLE3Th}_K?w|4Pi!&$8R1 zsQWmBZ$#O8b?jmcTun1My_7s~lC`_f5l}MDo4+dIt~vZn>TEhiJKDg{9iQtb->l@K zo34PM`m5;SxLBRoq87BOy;7QCtG8toHdxke*-$r>=lfvv6_06@h%dk;FgE4l@*|gQ z`14;hgg?3cm1kr_W~BKKX!Emm=;Hkw@3rig=bl^mY#nzd+jLzgiLv_Y&2k!Y)`a9{ zTI14IT}}EIOrq_zJRq%~rL~i7K{IzZy7l`+dtJ;SO>oTOHg9vb(Xb&Nq0w zNp!f0{;bAHj3?gWfv=()S2WK)Ty9|J3yI37kA+m zb#gg124;3CWlAo=XcfyicdRdAV#j1Uj=h%7+Bmj-a6z4r>@&S<!KO1kF`xB{oA0MZ0;Rynmh8DUaP|POA#zqE|~H<5p0?zbe*;(U0(D^oc1g*BX$mqWcRP~Zf(&42oGYR+#E{`8!3OoYFrhrzZ z?1N!dP>CH@Opy6^VWkIClr~chN9`wVRW7uge`kP$huJdA)BS@0E$&->ZAJA)%f#GJ zv-UfQCKnD_YY|tO=;rzQFBMjlo^=fh&i31k;{E5Ez~@aU`0z4Pff+lNC`xKNkL(h^ zNZ{{n;zd+Dr=W$5C>EPAXKe;_veAIi)A(zR; zAF#KetawfGf805OL{QA^Ig`i%p7#~? z_^)Nh_x$)~pAh<08Vzs$^A$4$41Z1^sQz)CN~h120$AoyhQ}I*;1%euTaj`m%8cq8 zmY6z$-}^@@mT4$Bo@|-RtvQEMq0U1?6;Uk3%f_(~Bir^j!-6Q9A(4OXsY&p*c&xPFe=Y@cVfWhS~rFG~c@(D1>tH z$)bFsvxF%XmtC))3mZHNuy@$V29Ci+*w+_^SiSw6Lf$w0UPZ_^3J}$7zu1u-CRC%~ z_6kC=NeIJUbU}U={cF$|xwtymVf-jPnY=Fn-C7O8MpUT8cCEb`mD44s_wxbs#5umv44dK`C2#>uPs-TjcNm`S=_O2fHBh$aCU88?Q@=(tv?RmQw7A~Q0z8e z11>KPQrdHVp@;GUPj|e6?}qiAdh-9yl~@xGtqs~$9gW|)t->cv#nfi_xVFqgXixW$ zlZNwn-d6%0;R<8lQ+(es39KE z#@K(9HhyvHRqo+fT9H!>pNVMmh9aL%&dEjKl^-)dGg$V`S#O{^3;b!lA4V{W0-SKc zha*m5@sPcZYEAG0??IPwg?7}wqscWg^_>GRIl9|2Hc`ws1t@d_*L2E`Pf5#|YWBv( zhTx!KxPngE`$X%dlkeJ9k~Cy%wCg)&yR(On+$VmQPzX-*ASB1~WrPXgxi_5Y55LJ} zA%x26d{_JV9`ad#6~GHjC>Q9Yc7Iju_Njcg1daqDnxBsimr+$)$8ziJMQ$4M29pTg zEC^#_5SE0SR{WD8nUOi--fHs!7af1GEU)(6M#1IV8|o|FZ+CxEKw;)qvJ>N9GG=h3 zQ!o>+@`mo6xR83bl^Y{ZtojAbJf_=J5l z;*!+OtUH{ooKf&cqUoI{JX_Fswt4hvgW6h_0ck^RguDs(>VyG$;~?2}XGxcd1eh8#RDVnYt+n`M?)R zUbI~)N^<7Ii!;cgN2!Q(3I~zPe9X0{3tj+nS~2yVa&l#uu_8IlN!S=k>Fx}PI#{~2 zw%SBCaBD@00b8fKMu?k}%`Wm8e)m+2@X@0Y@GLjDr|QwNX@UE6)(+KH+iYd?8*8Cu z+lD77IJE1uK!KAm-%d?%^!UTUHpT#(kL0!bUxwefi+d1fw~>{+*w2hvA2uvWACM0MicE{7iX;(6 z)PwiqakY7$P~=DP`NqbM0l@I>H^(dBcOT~8Qol>7-SCwYQF6Tqk6eTi+CMt2NZO1{G3lRs zo>pC;5*2_2e98(1yuJ8_X%_NEwnyF9Qg0;R2I|IIs@9n+p~y<1vD^Dsmm9C12OA)^ z>$)U$9p51k3i^(puN5a<2+=ifKQvmJ!2*aZ(+3ZoJa2CJ zN+1Ja|5=7D7t$mTIw_3_h^6GzR$RJM z(6-=D@Q#iTtjr<#Qm5RD?faHQbMgOrH&Zz^(5-XktmvOGx7Mjlphu;0mv0k5YaF~YA2;n|lOy5s(R#~_hAL=SULUwk*x7$hbSbSF!do`}#EvV&>;YSl!26#zM_wSZI#88Y zfbC$EX0@2q^l>hh=waBa&J#$VCacibne_~seKj6>y!Rqcx}CQ_ERRY7`~;1mL!WM# zl**d--NRE!l{%= z<@#sQ>lT;{pJHA5R1^x5Ii-7|p_4u@JRpbW&_vN@)Z{MCP4Ql2Ltqnxg0~5GJu>gA zPitJPMp<(cQEfF#RUh$he~~LYK-nk-N_K3!{Q6zXpTaO=h4BI1Po4@>b|Uax`Df2I zEf~Vg#r5XD!gPSy6CaW8fV0+qX1qHaWTo6d<+} z4inYodf#(akmiDB%A=?tN(yb<09LzI5={wTXFdsK?);>DUHP>#|4t&oU=QO{$a4-fyH&!dsp1_(TfCQ{&KOKj4jjazxnJxmIBH!NA@^{;I7A8TF ziKS!uN3v7mjN!bIlfFq%K#id-@xDF*MANS-_FsXq97UD3TdAMgKA4Q}Tj(>S*@}L92i%qlJ#!%#=Idilz_45B)=5T+ zWZ$CY&aP_!a-Nx4vL0!m0{j(A_Aj#ZY4U&G{QSHG31wN=;=%Oal1vDNRVEzBK+}L2phjtHLckw=gJuKR-I0UJITr%Q1S1 zukV8Jv&uoiHF3(CIjKI~eF1EQUA2ad(b8>Ey)_LjiKFTdrHM*WmDJFJSAN2Q%>Qr* zFh2W#>&91_n_D!fijd4@`mO+;qIPS zEF5#K#zZ>4G_~2d`3^yHAhne(U5(y~!E-4nr|X+*>hZtTcPn)lvW4Ql|t1$DD;E(X5_uHdMa zheLgdD6jfdLe_Ysw{b+Y*-jqaf9n2}VxHdVnWOpRdF#3+lji$B z(kLgb{-IUxapNxr99?slGg0vYFJeJ?Ty#JLHel%yHycs|kF)^CGszGdzilF8OYk4K z=0yPDDxwP|C5WjQ)pA6d&nl?~zZ6Qt@7bt@ahI=nh8`DW!agccMTI9T!WQV&iSaRl zn8M1EQZcun$3a8X8MzT$=}{O~LyE9={!h2Ej>21QO0eZaeraoqy(L$GQ)s&ZK8tdo z<%_->?LFd(?4gocC9{cmV@e9hS=Wg7#UC>WE$pK#x8kMJZ&JT;otGJU_+K~LRBlZt z?%=Lr&|{WIDZL5g<;y(0w{$8cupk@~=3dh19YMg$J-lO$U_I({cme;xsc}{M+mmsSZ7R<2&fFJ^$j6P z?i(zg2+ZpZD93dlS$xRpSrft6@n^d%R}{H!_k_1?7|9S`#G8)vs9MdBl>xo7WpFm4U*pJB1}n$lG2^1BZpN!wD)3K#;l2dbA$Sdm}5q_5el zgMiEr<3HY_-Ix1JYvTPoN_eXc6|8KpdnuY(|E&Z=vtEr%&`cN6JmoGLI748IQw@KK zxf_Z4L$YvfUA}CQm8z50r%)WD;->qo3Q=?_U;mDF-&Q@4@KejZeL7BrTbT~wx`R9) zI!Z)z{~DlR9w)=RLn3bmj+~4PU|?1B8Sbvg7o8EUWPum2vcIVdZt#$f(wNi4{MOPs zTwKmG%iX0p8uk7!JE1J_kf*G<9k8IV&qF9K)6EJZO^?#z&+rwcv@7T2lowjI=3_mo zvHYF9?q@|smGo^3g8aJrfs|qK-(4qp4FqY^S!E|VVUt?Ss>CbjDQsAy`0bbsDrp(M zHa&+)G;0=9`e+83Ixzp2iKV}O#FFB>K-`fV4pHWXP{V&|l&)f$w2Cx+E7spQq86{q=+06nR$;IlS(@f`3>7D03k zQIU4H!aO4^YFHG@4g>W$f;xxlkqn;(jk#J2o3hu>T`1q*(5^N_T;g80CRk2P27u-2>(g-49%-1U`D2)B=tP0IT+oAAUmo;NbQ zLwgbQ*J^_c2h@o*2nr)NMI3tSfU>ibn+1-JNkoH3WuB?(HGHSI=_N$V}*WaKU3-U}mz%*N>N{eS==}B&Rt5jCk`hh4k z8cz@f5*We7_~crHcWrmfChPZcPsyo37xrI!c%FE};G|Pz;lB+4PU$%NAh8oeb&YUf z3xMsIOgzHo-v6St(iOvoDJHfoFh8xECp{f7_K&%Eq)APN4$T1{)VU||&%Ky1C^5%q zRr&^>77i}wByQDvU>+)T)>@*MPREJbr)k6#>zO+z-6TO9W(A)L1@MUsq`T;5y_-&rCn2<2AByS z9A=gUuxBi-wtDy4;jRe)OTb|xCXMuY@&`w0eZ}a60tH|F!hS*gwJc`_1;XgHa9YJo zk1$1Jxv=1FLha=L+ocj;0ueMWy>dEHXj*kWtep&kFG_l>dgIIA;{NK;3N2Kb2Ra%G zsh9%5M`aeVtBxN{wSTl;zw#gyh9suw$1Lu%QB2}O5~uve6UF(0h_CCVHiI}bA zVOzdB#cV}re>kw2`maBQ(Bxn@NG|_NAkB+7-E32|&vTaj`XeR>Dv);x(vT*^zZwNB zfx0|h%Os;|BVun9yv1+it&RcK^$`anBC&|)wSVl5M@8H$ew4)%xG9no%|~$0eV@W; zJed^f-uli4u*G?X`nd+nYcc?4Hu^?EJ6d?PsfX47gDapgKU2*Mgq@(_j6kO7XbcCB z2uy3*BOs()G`|uUR|rX?95xzaevaLkp35wYmUwB`+RmUJAg|o&{n+&Td{+siLlNxY zO>i=K!SGaT5?Di7vylX(8JRqtYAIpygTX85ioD&|yoKWxOGlGBM(#wCcAF?6VcX}1W&C54nU z3MTu;P;h$AqNdE%s6%lvY^D0{561}{sUK0>1%~~1wrep2v>-;n{_Pt4h=SWr(38^` zzPGP@%`3b1q>0{YPk7_fK8eL3UMsyZHRJ?nlA1BiA7baf$&_CB6 z7RP}>)yQpvzLyW0Mir`D97qjKf&M-vPpB9xk)beSiyYX%+5QX$WRqk_|E+t^b)KhE zQ4Xh!xWL%j^~Q?#lyEaN8`=3HoM4Y^0rSachtevvD4gSSX>J+-(W(<47sP?^W>D9$ z_ba~!fHo8|w_e@SH9wVNgRg+3A`+3e7pkK0^UtZ^r}IOIZIZ?at=QDllOi9Zm<*un zX}u%^q=T?g_&5<8${B{GBT4*B420cg9C#XsZBt-0PMg; z+e~N~>WD3em+QU)sQFxU6tQ9M)6bV|L@0RjHwqaKjo3CG;nSwiia>EN2$1Msl5i}3 zE6fA@;8SMwcV-Ve2IF~kj3LC`hi zd%-NZ9%)k-Vq0> z35J+iPy5Q16td~i*a8hR#gizHwHCyVZ`W3~%1+21cf}KdlEq4J)$F& zB=`&ol6?Ppt)k%WN;9DZ(^hfnct>MMvv5Zs*5!%p>$hXORpJqovD(k?_%H3$I2De` zy%%2!Xi^Z{E4=7MF(5=F>F|A7cvhIyJ~g#E2a06pQOEA?u$HLR1y)P@@eD-ytj`cQ_^mIO0tSlqJKntolp9k66W9|DJP_Jc;EY|4+ z>MubfRWAQ&a;`#P%Nk`*JJ76%Tz?xwnKZu9zGCMNh;96^f39RMut8tr0^Gm}Y}GEMsI=h8$0+zpd?989B3`FM zJxz)>hAwoG2M$&<4h`oM)x>8vfrjR+RdtJ_FB}{5@m5xD& z*>uv%i=1ra90Ay6&vnb$Bwc`*0}XFq4zWLRgG)US1Qh*K6nG420Ki`7W9Kr`k#(wR z>5|L4MFH#(CD#kvuydj+I@kff-f9zyr*0cNSeqD2hj1bXtSWZ%*voaT%cU7FCxL!& zML9k`7daglEn&maPiPGzH(=i7X)EPg=c?rL@fSbBeGXWe&BW9!7an3kH26Rhgx@N? znx;`bQ}K36hqKKS1qYSRh_^)vbjbc^?dG-EQ6FJ^86vB=q@QUY&<5{iOLxSQ;*L|# zN17y1J>f*&C8RjEim@Nxc|RqA|0|>&+*#+{g7O6JFaH#7Jf!Z^U1tF70DJeau#q2T zS3Eqvp-{5+V1)@W(5+9NCXn|rE4;3Et3UQ{{o{9JfSzfgRR*B=xHU?NXILR9%jw7f5{F_z{V`M7gIM1`; znL1%)-8*xCZe!M@RDc8@h;k4d(DU%`QDR+tIgLne;{wdYah8PQL`Y?i@WHwj(Ww3nc4x;|BdJ=$oKD0CELTgcUGu(E633OEOTv+!=1U!*EW}QG<}t)^L`vz; zUX9^uUpPeN0~ri>6#sZ8j&syF5OI4}6OZ94v7UV`(z)ihC@9G_9NHQt5R#lEIKgw( zV#@FbrzDQ+`(8{K__vneBO#(LAdW*x#t_E=IQ?wtWG_ubh~)=#7DG{YmN*W02}dX| zi9?3H`4j1anTg{Tr`rfK2&eK-i-jw#3I4tg;<(&%iDVs>DeEQpK@u4yY00I>5XWWP o5_krndrgR^$eqkLaTCY=JEdbXUiK>b9RL6T07*qoM6N<$f|mk|sQ>@~ literal 15300 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

Xtce9*fF8Ie)X2wX1nkMJ&X{ZDEes@YfkI_=D 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 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png index 5f6ebb68b2a2eafb2efeadae3a2ae1f825acf224..619fd395e7d6e9192c3919a7319514791f6386c5 100644 GIT binary patch literal 3725 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 Qye18B(Hd=4W#OCrPkGOpa{vGU diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_result.png index 0b6444a3f8e5321cf1277200d2fb273c449fd61b..32bcecb96480e016eaaeeeb910fdde446f78c4e2 100644 GIT binary patch literal 3238 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 literal 2745 zcmeH}`#;l<7sp4FQEs`ci!n3l%Eu@bVKPiYK!|Bb=sj>vm%8( zCpsdv5hwOH%$t;E(FTMQRhJv=&JHaZg_A-)6M{KjpD%kal{L?}DE}ZspbxbiuIvzl zsoF!Z-(+F=W)SREIT#Xl7LvGE%!Rtw@Gn~!@*chruWt##`i|YhXxu>_OgY%QR}7jK zrrDJYA?GSRG4O-RqdOiPQWS^zI$i}c6wLk={?BlZt2!4S)nXAqxOh^FH|Ux!xQ)!F zLd2j_W(W2-7IV?#`sjek`jBIwP_pAyl)X3%RJ`=Lw@hG*Z=(yqRy|FkumB+8qJ7)- zDpSp=3SHjCf%xd_$%P$iQzN+bnc<`}4^ok(FCyq(I($y)Uf;5QS0%oo)55WVczLu# z?~$jp@C0P|BK5$1!J9Ff+rV!Hf3v#!8Td9ro-ufV9r_HcHh_T?+AJ?&;qDf7tFj{0! zMO#`kzLJpy`OdJk!y!6gB*#}!$V)>yGLtu2Cz-)=&N;;y!MbTIq;oV2P}eEegrA}q zD)Fs$<#W(Z3>CnJbAEje4RBbrxh`H-!+5s~^@yj|1pf^1rTPfimJ0PB9&)EXDZJyv zb3ilWYtA>GxWrmZbxppLhmIg$;uG=e83vMiaH-g4YxSExK3djvB2@s-nNs_MeIQ-X zu;XD{Zs9oeOMehBL^?glPylSaX@b7Y^&}sl8qW6|!Jd+OH>-Ek(5M2XLJs{DT%cj&Rim+wKow=ik}#Y+A-L;ADE6uDMrEiQU(GUjop zq`QRA&)ipO5s~y8%2?{-{fFm>3jSZ{7s4f1Q)ng;(JvSKa)}Zz!5lOzvT~e$Wx`tr zT##CB%r&>fp4!fBGSWu`Xms}UJ_-}U82x2Kz3FRhDR%6D%c9KDm46W5=J8FCUqa{2 zXuOoIDHD+J)i-C`Q+Vr1sBuPrlgtyBlh{*O^-I6|I~JPe#y_uKU(+;Pr>F>ZU?v=HWcF-Kv-KK#jN-2;_{WxzD8oX@6sD=c z*j9^YIuWd+EX+|FP2SLy{TE%lIKT65+uIcNI)!k{A};>LqEJ-$`g1l*-$oc@{})r@ zq|W7R;dOGX1*i=l)+IWvU(Gb3Yw)j=jqSnb7^Q%(r#%Q+#y3%U$W6;H;yqnAZ_^ji zEUoqdfM*EB@~Yp~=$lc0-A_WUa3;~%Rt-L4*E8SMm*W=!b|4<}>2&9+{9O71*P1bS z^+uF&k%uwZ`@=>XHlwj}GN9yr`6F#UjEwZ#)7ebUr-g6l7VIsDC(gk6Y*xL;N6W(! zKFW_vHy8-7;j2ky)&q{Jw(U zGpv>l%ojhx->Q83-dLM9U4j}n9GN&cc2TqvxDq~)p*@2*Er})4!r2C*W;qQie6G8` zy)LZ0(}!TVGMl-MSt1e!d%t>BU45|Bb!#N#+m#yftMrVJyTC>lFU{+v_enDHV`E(Y zR(}@{9k=8#cOokuLo9cDxY~@`8rC3{EBiCkH?iO@M0!kts`?S|zO2FO)ZIG80dQma>D6-_l#IpwoUIAWPfEJ?Tk>4ssTRZn%fO{9jLRD+005L0q=F3A4tT> zO>c~%whZJO*5!k-^;zFt9?`g`eiHCHfv;GiB4UomSNNtBQP!b(iCD%z0Aq8fdFqc(jF>%nQ-7ZPzs^;zsgh}D9 zWUK-Zs8AlB15kuxu`+pa71qz)-doJ%Ym#>Z&nL&wUu7nCX4eRLFz~=9rvon6Dk*N0 z(x2W$Yj&DlVdlB=XBSr9+Us?p3pq;scjy?KdPV5I!h%~XyWAGwHQB3E(9K7p)8iyQ zCRYt|(Q%|{pVZyLRa9KCHH51s!VB49gmZKvV5$}hAMX#mFZd4KsNqVGZ9SG3qPh`T zi?Z|0AL8n)DH6U?Qu1b0h=F;m2tDj8KN^UjM7$sNLxdhCbq5Fjd77H-sSxto;1k;& uBJ_YfkXILnO*sW)Wd0S3h~obo&g6DHhB+)l2{0A0CR;OzI?aFS@A>Y$wh>G#2wnTgGrk;Dlvn zqxi4s3?YCdVJRD&R27LobVPnFGf*_n`+Fq zjtquyqgFIlM`LT}uQSVL`L(u;(Tq9bCw<_Pd-M9Djdicid||EPdbck)BmF6gF4?++ z^%*S?@AIqu;27E8js4Be_rO27%*H6y!jCGZ07I4#EYC;7}aU3aP!k_lpZ z^|kxnZ4HU=BX7&IzmiCjPi*QPoCXS!LyHA1{%}OYutVN&-1!F0y>R>r*-8OUi=f+a z9a-2{vze9oOXKDuGgIZ~gJcK=k2J2dPY#p&9J1$Ol3Jl}FewFR?}?I6o*;q`7f^eV z-wF%QAZ{#sld!Ts_aSZK9d zI#CUUQJVjZ_bBNSVc_3a2&u-uwPRw*%O)Di&(FCy>^v%of}Mzg21Uor1!rqK+E{E; zFaOz6;UxM#W^G^4Z)W4;4LO9pwt$mR!ZRSt3_KW=ixC?a3b9WP(6ifmVB71ZM-5@+ zmDTDn$bC8UBFt~0m2r}bhB=2~Dzj2M)O$M2xvmDydQ-G7z@Wx`L4=|a=?PbwFWOd- zi^@Z+w*8dwBa95=QtvlG8RE&oodIW--hk@Ya95JZJoWY?9VtCTZ4u6@tc`xM-xu~% zf9V-GL{;2sgewLWX_7U*Q631D*T>>Aq_Rii;`L@ z2$%%rvZxj6sFjo;lbacUVsH*Ker24i&=| zl<(21H4M@!^j)o`hQb|}5=%!KbkaS#>^}o^8#*kPWe~l9A%2=~N$YWIowKZ_HxR}U zfG2dD0tk*^7b;CeiJ&?vp>LC{w5#p$Ao_CnshxhP!`(%yUgA`WKnl4%jg_BMVtZpn zlB~+0tS^wY1u;4tUDL3`Vl=ds5oe!_l0>sfqNc|Rhv4NGEd^7)_4}Ho^m*psLBIkf zl7ypg345S@*IOMT=rxkOP*TMH>$1vjJ>%-8|5x|#oi%=s)wlZ-z9L8&Y`GJ~DS#u( ze`&HK2#Z7|{LO3tGmobz2!`Tn{MSBAXk73*zWzjv7zh9V@Qs0ghV zzlt#v<>#;Zef+D1q;05T31Qifq5(s)0uW)cAs{cknncAu7^e(FmBybRGFkDJkTz>u z>ub~;K|w40Nbv9jE&lGFDl|dm&)s+eDl;)(LOyX0(xN`Ny-MK3+*4vPv=KdS5fEjw z@2JF7e$mXI9pJT!g&$EZEV*XYpU(7|=UKbzs&>R5acZ9wF=*p<;%?&VvZ^BgK3qA^ zT)?fJPCA+KJy5&dh8b3?^Jtx?Ez0cPvk&cHi%obp9I_GTMzDQW7_Q4{cc221gQyb7w|*e3PL;$kSp98B;Og(PppkUKV;Qzn?@{R(}2`v&vSM(-ifpc#C_ zlatTs7u(!U!2x@JtC;@xAJj@nfZs#!7x1IH;s7=oJkfi|^(P!o3Q(&e9LIYo+m!+d z9)*l~oKU7b@GVf%pri~z&-wGB9NkK5lx|$!7KiNqp;{MPmgb>{_|6dh796!P1N+|j z#Vwoq0ZG>x4buX?!ZdKz$E{ECF%mA!s*)cjyX#XH7UM+0(H`-A`g|K_6ObLCy&(X zUiSzK#YpReHvg+y?Fsb#>X*dW_b>1V3rYlgufeBVHMtG8d=|7CXXVnPMpV|~fQ1cl z7Gl^yI!#9Jn1QKI{B*ld4g4rg%4TZk5Jpqts`@D7dCqzXD(jTtf(ozT>v9=pM)9 zW=Px8^8_u+N*wQ!VQQ^{GdB)+ z$5A=Uq#EUo2-Z_>0uoZ{nuomjwLVN6l6Z9JsjVc9a|uu>3Q5Mr0|iP!5oF)6gKquW|2@Wf5&}Fo;^Q(K|3bj%W+UV#6T#!Hsv?1DW@8~IWvXTgX-p#t_aI7F7 zC5nZap2#Q(6%AxR?Z+c{829g}Y zY*0)c>pvZmJt{m^r)0WH9RHk*cNFSGuJB4piRE_~#Zw;a~~MyrmnZ<%->r$u+)ye)%K{*ej8c-6}cS4ED+0UWwWF_i$|I9|4`1 z{boI1kGS^=l?La}JyIohoA{c}tubibCaxLcycVP#wnp9Uw)~6v@8w`OA87xDC*TV` zvwO}!LYi6)J1w)r7;inrkKGtGoD{hMrLqeS!%`~7pKnN&l`ZA41(~Nawqhn!SGX!v z%4Jv37*<9my4tzexre5BAZ5kfFPR~W`)>pi zW3vE}J zt?G{vBQ-IVSZ1u^!i6||?eB5mYo5y}AGOT*sQH=nCq5e{)_%73<6*(+6v+lr%AtN| z@h{!0h_M|_Y}HsBWvU;lvQAp;w`~KJxnyJULu$_bj+0S#Z11Dmp?jDob%5WiGU4o! z3YGZ3Gwz-%r;R|kpY{|C73RpPY;^H3ip48}G^X0bj%W!2-0be4j$f}~KJ{82QV^$h zF>=AK6y~t;X}x9xagCufo(*I=@dlCHd>@x$Sl?% z8R`ORDF0=*;8a)|FVXi-VQQ*Tro#_0&VIxVeL^irc!wW#tYQK6+4XQHyEQ}dfm+YO zisR!o#cxBpLSDb6t)$!xPh^ru(4a4*eHmu_Gum}X#N83^XSu1hD!q5!<4>C2=*L%~ zEgH`u;=<*;*99~J?fZf)9RneGs+9BD@s?ZX+Yv})-|&}2$w zg}V#+)UGEdXuzSri-Q~lts~XlQ1ERwZkUCS_J8EuFUA9DI_KeVb^Sqs6GIfW=E9_l~5B^1ajL+klEJiX3CUf!XZy&62d%A$5Pf%y>g zY+%WQlWqxTQ_ou9pB5BLy|eg+6<5b-za#VdvxSdVM1Xc0eaZrl%(%a4(y-^e5QJD^ zY_Yi|Kdz>T`P#jzqkivBVV>d9k%1uA{fKxBMLxsvN2@L=FWZ!M#nFNgea&!$9n{E@ z;JKLO6S&Yh4(~&kBy@z97cQeOM>ZeN@X0%9Jq|y9s7Zk#Rb$N2a@ z4oQ_9OQ84?qSBi#sU`%|I9I71QC}n;4cR@V<52L+n^sO)B0FsMW3T{A5)AR7O4tmy z9PNe8lV5W)Vh>lTk5#3l2cH$^+PZ#!26$0!XlYI`udcvTV>;j?a0fQ^KuzIm+6gw{ zkpXN=v~G$EtsZCOvIUMXNcBMl&bayGothrX=IE{77s2uLOpj|tQ#r#uQ1ib8SEtbf zgeG(x-{kfN^Ms1FUStRmU{Pd@KMCdjt(s#Zh{j; z81i*;W<(?crU%<`>Z!+Qn)wwe-Vq(&_V+VEetY)O?6>X1e9GK6OYC&CM&KgVQ^r*~ zl&xvXQ;8Y%f#iDn+20uz-%yz@=aP-FEL(Gd9L$E(T)jb+1$0QhtAXJCq|Q5V+!0xKIaZ zS`7_yXec-3u!U=y;uhnB0xe=~hjziXI#=-|Z`WYN6VZjx+RIW}JKlS@%zu1`+NS#D zt;2mKCi0ok4n!u=(w+3Er%2>LJ#9C8hF>+hE$9y^rp|qf;^yV)@$K5N?}Ew4qh_zr*d9S-=ElVb!W)wRhyYKcM! zm|V&S2zz2@)<^$kzdnEgTd5jBa6N4c&27^wl&@~3W_6e3DJP_9f8mx|;j^2U6V;2= zg`v0}og|7go}NIf`xn^ zp%R~E&C{ogw}TSz27zEtp5qw9^d`?d&TntVRPzio4&;{sgmsiTl=VfeO5gfL!ai`% zf9`ZZANEXIKM73E$f??=9;tXKif?WCDX+BUVyZF63l@(2UlJVpGEjO4g4=A-l**+u zPRWQb)N{Tbb1!$}Kx|wvfwbd=8f;;~=j>IJY%0iWn&X$x(nFL!-Bs>@;DOEceRw;K zx(uxt>Xmm)eg96vVPg_c<7V@Wub6u;A^}Pk!}j?VUGCW;x7Wwf5VjwD912PpQCH#5 z$ac{?HnhhT^=LZmH6b61Xg;AU0q^hPiDu@VoS2wR7RJ9Tx6Q?O=3i4C(^1;el$AFo zE+3#~bQQkNV7$o{H2|)uYY94e89At=_sVEx4H1GS1u4a^?1UPtxIBXi_(Qb5vvuQA zj&TC1CC75gMGwEET=t?*3Oeh$PR+r~hg}PB*OrLY)^fuh!M^#D*kB4`wDDYLo#%K| z8V;zszPcc6_^+?dF1`Xhr>&RAP&>7tV8&VD>phw|qsqz*Z2odpx8Kz$A$p2~ z8=zkmcvkXMx0k(m?S&PIS1G?p@Yuc!^Xg*Jx=L%Ev9oZbSAiB$EnHhb`|e5g*~b`M zC`A#ew7ou(U^6~$bhS4t9KE=XSa1XnOE}3Ggq6M(WaZ#ZqM#Sd42z5E^Z+^;CP?ps zb@l*~H7ZOR0aU3|5+j|jTO72%9jH>!s9g6>?N20)g;pZ%TrYyZ_II`v;#SfDmd3x9 zuy*n>n^lK#Iw`+}@H3W(xc~+2nCg{<*$4IYKg};%&~IW%?x(ryF%qviIG(af^CmqV zV&`prYIFBJF#11m6s)k}CBIrmEEl~7^8HAkd3b*`$Cj>J>(g|t=OM#q-p6x}$LWiA zIKyZ4sjD#P-E>!UnKCT7MBP(#WaRW$CKG?x5Z^bCHG4GT=pcKS%69kn;&?RkZ@-!9 zr*gHv#0Z{|Btf+@;r8g1se`zs5&m|phbL8SS6ZRb2}8Dn)R*TiTe}IV-6GT-mG2p; zW_(S-1j)^0M50e|mJ?79b1$qc1(|9JZFdy%U6sXF@o*&D1$lMp%2`v3^!r(3zNpUT zW+LA4f?o7}fqOU^aQU9$yd+Yg?`L^k{-4s}#-pT{!%xJNnbnzW_Pg)w94@chplQ&!rn~A28+8s`O|6x;G@;6o}owa^Rhk zH#*g4j&RydzJu=_12&_I=q(M1k8R0E!?SzsfWs(%Z7{9<^`PJx8{G#DpZgAsq^Gml z1%R>YVf-MNGCjqA5D7sfq0H6Vt5|NVdDD2C4#w>_R1GK%Tivdb#jgYUz5>i95@+a^kU0<+iWBuFv^14cx8WJ1|si99s^8dD*9a6^Gnl?2IvyNOKO*!R-%{pGQl7cK{ zwVN`*q9|23iuwy9nZpL20FSt#uQ}KqCz)+((?sv|jvw*xCDTWKk#kKaOTkFodv(r^ zstUh1l$K6E_LHUKt}%zr)5PM$bl_hH25D1Cw#2bR_RD*k&V%31L~C?w9DM&54y!4M zu_zFpVrk+h8d>k%s|yCW~P+h3vKpi__WVq^(O^u-;Rzc--pZY$VsnnybTsbWW^1a)8?&tV6Q3Hx-1MX|3 z+>29xM9@Yh)%!HU2%LO==@lWvqctr*we(bhwZ6|Ki}U5~Uyg<$> z*erp^rZdEFzWy--ZOyFZHJX*QsC&Ej+r7^o)o%CWNyhM7@TdOr9V2cY=&dcB1 z;ri6H|4P3@?rI`P)mLn_ToVR&WlXD8&t94ntxzar)ddxF9_qfTwLaIVPPpiGSGg1e z?PFNW-5cBUqx*WQh%LMW>m>`g?l+I06l9UC6o;8#)V9JUB=`+x+mdFvD3= zyKJ{+8Md1b?~PSy-{wN*eop(dqgpA{pm(~%Z+=~JUBTL-$ohhWEqGU9@$KYEFT~@O zfQ-zvbBW2!Lm*q3{-asC{^P~!tewk`){*#Vvb@hrU3~pN^5MdV4aKXhMOltqKfcD> zcVxZQkeWf!E&hVvTdqhahUWsK=I-y6V4wUU4n6{oZ^AdP^n9cKDDZ*;$?rdi0PD1p zKEB4j-Tl*f=1BK7f{xY&9#xAuC0S{SCb@pi+PmUe`D+f}-Y3|?ie$%vH^V&8OOsMP zYl>Rl*A2f{C?_P}sk(!p( zl&eB@K^6<}3CPYFjgrv7b_P|$nfT+vQx4*Xy;EBb-3A4oa=pk_qEA3X*QHTGtl^)I zpQq3Y_X~Ahx51~LIKDL=y(F`f8X4%&U`qhR6X-p@kK;dPTCxM!PJ0$J{}84p z=GZ;t4PA>`a>5lp*3{T*?H*gYc6|4P+w(NfzJ1oE;*wR^;q)``CCs970vbH%9y7pp zeuPtP-!*%SdXALX4^PE>f_@XL4Db`^`c#PD9GZEdq{B%wS;FX&C0L}2+iFiNU=i&q_O zInb&+bP|BFwaeV+=u(=AH}$vly&My%T)r{fceQEp0-yi+bFnj+{QxCBjEgD=|9YCZei1_oQtnIJUDH;KN79}rLf zo&Hap?0duP`vUf%ZP1(IR<#w|^>}*V2#di*S|V712)rdoL|v}-*5iDn2T5Ik15rqw z%xOvgoNw{NF)S6C2v<*`*t&f{#vr#mCUF(g{Fu9pRW7}*lhHj$gI5>yFWj02565!eBku47#vzp)kNdyJb#zAe(tsWz*w z+Tk__SywFK$?{U`44Tl2eKQtT+g2$ETq_m##rzVoWGs+go%E&4#D87#+wy|WV|4Wc zVKG9Z06^(9-V@P3`f6O-Foe;&8?9|TPuPQBTrFDEpbvD)SUA77-pK4C<(%3g8-iic z;nTw`Qs^W*#6yMx)W*j)kxFixL7(o$g3Jf`PckT2rOy4=4vp7UxlxH6BR^(*>FsFPlaM84dH(0Po#MtJfc_F`fKcdQf;Ni0T7K0ui=n(hLs-zGN zEqTfIvv6-6+R)Q)Gs|8)Y>ZPBNoh#*9;YNUNnij%3lnMH(iJfI8m0Mofr>KpSx3$C z68jU5-G*0HlrbUPT9R7MyU;BVgE8@9aOo;x2Ir70+17D&^h9O|FGwf=b@?EAc_Apg>nlGLJaTC3dP~Hn zmAU0^XG$G700H&2e%ZW8*sQB!@ojca{Yhy|q?tY5nU1o}(CghG4R?P%W^<>PPRRYt z|4byfpDuL!(u7k<>d(=l@(9qpYMtHl!HLA=QimRC7sXRCAHBL7hx$yvRp3<)V!D)N zV#IOZa+C*JC={R#n$yn*ihiaTf(gR2Fam`^g*oJsoGI^kVdwS*oQe{~$z?2$imu|l zzgowBe}U^~9q6^1=wfa-salj^oyIA)p;ylZ5eQ#2aVBZda2VT4l#a0sqcQa|B1Uv= zywksm%_({eTC3oCyLT#Wv|!6k?5KyuvgX5taS0zyN3P+fy8U#%1*Sb@YTFF9e7=?4 zAW+iHzdP^tfxdYDtsq#=lnRmz5NS34&*P}qz*YIH`!&32{1;NK2x)X_iykPin3w_p zB=`Tx0u)($j|tvneJluin^m!XMuns5&q!zEszn}cX*d<1o^VQb!}ac}{`mKsV>-i? zdot|7)1% zJ-*Ez8)`x;I^iWS$Q;QoQ07OsFaI-zJCB0FPX)a&f28eJscunl)a0#yLAM~Mm8R|d ztr5`p_#5q=urTF$tn5Gm3E*IQiUQeD=?YV&aFdEZY>Dk(L5EUC#eL|{x$E*t-3D}> z0vz6SSs;Vbx}a!njynBCsHDZg%=P(c^O1ABDm$uIOlKpbL;U!`;guTQs!A5{Z=2qo zLmAHd`2*AZ@+XjqOdB_^MF(4r&B=e6zJB`9!B4cWK=4K}6R*6qg21iM^nr2`)wBx3 zC(wI(jy_Wr>BN>2xeU(m&vDy&)PV{Hjh|4TT)DA?UKCt~)vMc!=* zvRlksNnthuDgQJ1iN(;BQfXL64IA4x4WJWz*jg2?YX|TTcV2c~Urhb}x~YKysK3RP zYP>#n!mI=l8aGNqWC##840$e9g63+S{w@TV|7WTa-kB*s*VH9D@ExwatNBLGiW_#u zrVjS3?yr$@$;%qZMu0*co3I2;e#SeUzu)X`$1e8GltOc|L)`x{RTOw~SlFZIyY`O$ z|Ea3n5!+RHl$Dy_k&}CJPMU-xdn&6cWq_GsaS@H|svtMWh21pS;jTPCDg9YU@Jopk z!9UsCY|HxlqY0H#^4JI~( zq#x?LY`Du;)mt=?P~mNa?OfBlmM(pkNMQijGTmgeGX@W;J{PYcX`4CNOPy`|F}%vY zZ!|BF5oF??_Y6@&Zxx~DfXBKKs3ZTSsU@6Bz;opQ^PrQ2aGF$aKE{>{wbK&qG4 zkCG|W%~7@W6Yt+?Dk=`c64KKu4T!OA3a(jBIgDy?q2AW@%Idk$vEKLNn^)n>u@?YT z?2lNMbjRL!R>;$sF=yCS1#2o%e!j6TQ~iC?MG9Tu`%rFhO6N<`Qizcf2z;VX<#>*2 z%xHTW*QNNxGDLAjiJj)8SAkbc@pT_V#%;{b#J`#l(gqmj&!@ z{}om#{|KvvoTjX%3gJ6nWoJKA*ceXHku_YUyLF7&avsM?6{QG9ID2;x2njZ|I$r!9c5_@ zn%C&6J)uidoN2HW1aAfXBoSzc{F_f~Q zn8J=Vc}o@dkp-Iw%D@~Bz|(oe!J}o_5m9)yCBji!@LP+-%~^re?teYZa(xXlhZ~Yww8Xx5zLsQq5W5@_#X00`s>1!vnzplY*Te%?NeVJkb>1H$v)`e}D@??fNUAuUL)nL1=U;FOgktLyafCbda>gOrV`(96!`N6*x^$GX0*e zqZ&xZ0nF_LO_5Hc+<@*M6H@)%EpqnWe}hZZZ_xDKRgLfe(IHn#`wsB-`!aMtWbokHy^(u~gj287hwoP9muwGKA(Si$b>o7`Zsbkb zlV)HxBk36$A914iMo`;AMJ^g3_8_6ZcCoS>$ z-Cbc!Llk^_O~!?Xiy_~K&*3t6W{sqCR?_1x6+Y!1&F%sbU_NgJ)ILm9PRR-1UN!Zs(eVdy$ z?7C{@O6~XuTOIHngyA_&$2d3!ILTnN<~P58IE;2rtT^A$#d}4D2sTiR=wdzAvl7?^F%@CVw zn_w2g7qk&35N!$;m+#Z+PxvD2QsJ&Wu}92CMB!AdV=(hc0O#)9#y<%Z`_NpmX+|SV$03)0Wso7-p zf9!+BCNkM8_1};g+@~zK8qL}{_A8r|otm^eiu+)tk;K0!{}qLZeO(v9&)z2v1VvaC z`c+D5ypkbnJS{UC=puKeRc4Aw>?i2mEdq2mf5(7w1VkZp#7Uq?(rH(YV*L0Tb#xc#eY--KZ;{=bM`K8>3 zg&X1F3kQ|$<^S};|3u5!6t#p?l5|LWX8W4+yh1(c9ypX8Pfo?|>4BN9+m4>`G}d)# z+606(8&h~z^;2hrAe2|cUek%*jr9bep!NTYm8n<{lNmYYI&5G_M#-0Tp54vK>mjxM zL9-F?)HL7?<0(vV$g^? beg&_$-n<^6wb6Q)p9R3w_0{TB9O3^DQ^=JM literal 8230 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 K^w7F4Fa8hCzLz=x diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png index 60e744d98bb6635af0cfe876f76ec10c0ffea889..0c2a54683859427b5b76ddf473815cb26adb0f4e 100644 GIT binary patch literal 6248 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 N(AxL4s*sOx{{!36tXBX4 literal 4081 zcmeHKSs)Z#8)i(5tRsW6jTu9>Nrr4$#yS$!kg*Ke5?Qk)5=NGY#wa5`in22qYjzUG z5<g`(C{7^Wd_zIp6V9$JyA}_$)9cSk_7V zXMs3bdzC#UpLMW@V9kx#D8mvPY-|D*7A9!h2$!uqUs{+cq%S6OO+~3bHS4JO>35j{ zwQ3gA9gYq4@u9B1@C>6PO5eb3ZmZxW!lPslA#G=j@`V*hCuFa zD{KN3N)UGU=0owagJpR&Eg*zg5H`6$V@MTf@-M;vm4ilC1p!^QJ`QOC?^P4J8P^|P z;u8!Ts}5}5gUJyQ3PH1KYL=6F6J3qu$5-~!Sp|`dV>rI+4(}X^Yik+!+y1M*>ou-F z8`O7&xkBhj)sCdR*pB^C+eNF*O?qIorXw~AMms*a&s3-9LvoT4%^mSk9twjNk3d4M zRsuf&20Vh!jWiLi4*T2k*s(JNWgis*r#PO{b`7k`qlw!WG{+x6=YwW!2fGV8RXX$8 zmp#BuBVGC)8$f&{aG46+XEF zK}(`X{0Rg0^w1CWBrC)T@)rbu`{Ys|?294{G<&ybJWdIq{L7qvmA`$#kR%b_lp=4j z1Ke0@*y@P0k;Km%3Uwby&z*zl+1p6TJ6_98vg=@xSh|2Rw3)H-zMvDif7 zNJyNItU@|eic%k#z>axOzq%uZi+(;LEKt^r$LVOn0ry^9z9NjiyO-fNg7pw_GId$+ zq?D_Jdm6IO9Fv07+9)w*=HvWt-MDrEPP@D)nJPCR5Qoz_yvm}FOr77EsVOa>{%jM* zRfrJ|8Bz4l8rG^U$Uxce_gH{)TYSFTD{9QSP5Ry-=%sxlh;VrGV66kLO6;lC>FSc7 zJz8F}rPm1KDMEG`SWpdesyvM=ylTyF%4p`u?3NG`w=LVB58VrRKh!l3vder0=+lW% zy+u~~GHQen^z^Ifla=141OjJc#8Z=QPlzfsO0$=Vw-9#~Ng8Og*2s(2>P~1s1Qk-0 zCOc9UZ?dV0C3&`_tXdP#zLLrenKw$v|3rs}V7`gbPjpuFVMusfh95VH#yG1tgKddEZ2fdbP$;R%QJXUkn7x7RIz@}d2;rNd#ptHIY#oMbMk`0b(p&S&okp8`#k=YU z>rt-K-(Ni#FY;1>(RAK_eLfp6S-N(p9=e@Ie;{zE$sv7AYMz}UQ|<}LJKF+zi#xNI zF8<~l+&hE?;3i4fODpGmfwbVi((g}SNE#!<(ZSz;d)GG2gY?@K%$O5>sd<^xT`!{F znyY9xIlwRzW#biUQ3(+Xp%3XkeC;!w4O_0WBI#HY;%U`0uioM^jDFX*de#V~oh684 z+!a;=j`63Q#e!uy2iSGaOYr`L8meEL6Y0~r-wDbh>% z76c4JRXYXFd=x>zQ>7P`IjL^;V9#;k#<%)e^gjJ%(JI+XocaQ-u2<$MF{0>Z7=)Ui zG^>UgoRfFYf(>JP-nD`Kj_dhxwMs|e>e(voOo$(t;wH`MF=5Ccw>R9rN4>qvad|8B zZ%DqVh+C5OKe(M4jUT{hJ9MDy$BV(h{WOyQmgA^SOL+}#ZRUlwSLAeIGYoUu$d_2V zWy!UFY6PDs@eiypL9d=!625T@Y$4@_bBH}isO)t_i^#Mlc0?UU=PmUwgo#@Wkrz(g zT-D%}NxZ=G{8vo_&|qAW`5~z#x^p(^?mCPRnyBc~6Dc|v40NP)CJ79kZ!KLIm_xY) znpOD(5T0?8rbVj#kIiNUm9Ve`g@B?mf0q`9Kef0)GP{2*hng_2<88$p_tX}+F}blK z@<|PhULO8sJ#%UpeNHm_19IwnXO!_zhIJn1)!3W$)=cAa4&OzHFrtOHR^X<`*CX2^_7tn=wA8gnicKghzi*^ zkzeG;RB+or8CYIQ>(oFl|2VLgbSl7>0ngIBj6P2w$$3)Oo;y?gYZ=2wm#JrU1IJr; zt68nkE<5vu(7O!izRW#O^T*+zjWGc7dM zg8hwr-NF}Ez3%n#-!La4+Kr24axBUf$i7}8(VY$NMSGSRS_h<3IfCCg8xO2i6F%3F zA)Ko8;NxOJW|NTTlb_JE|I*}G?LRz7PAfSk`N^T?YK<)Ic)(<$jQF*s4cA-a=NspC z&2^{u>!4F46#BPOSZw_TpSub2Czi=h-Br=;qgnzDY;eT z?I1fY<;)6_3OX{VRxa&M%$D`s+3$~<_5Z}E2RFN@`K-)wf0M|1o!3lXuiAq>!z1~F zTyQYTq37t>9y5Pz~qdivNq{6xM^X%U|+j4fe^Lf|cv|sL=6o2K28el!<26b{Y zzkV?6ToBk*Cbbve@R<4AV}{MN+5Uu5e?g}vd}yGlK<`9Q6Mrys1*DZ`ZTcQq)?uFb zI%UlBbJKhDP4bsw1gz$5&P9i72nV414zSE3m{T(3Pz4a$wJ2)Fwc{F1<;mc&;jNq| zBbViMUsEi5@L!Ul_1E$udDLnoGG_;s{cw?v|$aYJjEuSM9sxZRXyGPomV^4C563{ z$~iEZS51fr_T0+tira|&cF$6GO~N}!&EUgb%-Ca0NX>5~zp`+}0Ewm95-@2yj|;5* z$|xvnkn@93)h9(-Db$PdW0gu99CuA$Btw+|S}NO1CUg%yP2YE{Cem6k(yfnhv6N=} z>Ti_-HI{KIGG7pQ-DnOmUFX>Z_YGS;faVoAwz>Z@WbBB@(Okqi>mrarc^s*IMMCT> z69u4QGmxxlzq!F?1kQ3-CTtFhW2S~ci>YwN9U$wAAgHBjGfUjYjJ4jQ*jSJdyJs0j zlojbbTec2n`7~IpGGqe=CA{?2-8&CpQ2~iXFlSa|sDDYmxuGHO0b7mj%hXs9iLy1Z v3t~}$4YN{0!Gh?q`n*V~e?|Q7OfU`VFXyf&FgbxN56@;{YHdO>awYr+0{bh9 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png index 2719929a6396764961104eaa17a77aeb8070dd49..7943c6b80e7999ce345667b778c83c580c326c84 100644 GIT binary patch literal 11299 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 z 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 literal 9333 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png index 118378091ae4baaa37ee46db7e03eeffd87ed210..b55f402375b8750865012a0c32a8a8e36669d4d7 100644 GIT binary patch literal 5442 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 literal 4176 zcmeHL`#;m~|K8?Bb2jC?G&7Q8hRCsHW0FIn=2XK_=6sm5)+#o{BIhWD95PYlR7P@$ z5;^Cv1&&T6>T#xH{-S_jS>t@(mn+x(u^MODhK?^+AZohZ^ zcc47`wUWRp*l*wvJM+^Z)_eFj5J-g20*kSaxU`%f-W!I4bzHL)v&FKhV6nf4oRbl} z%4@0TM7Yn%zvD@y(nSDVt|*R{h{pmD22q%3{zx;iKbyeD_gOHuDZml#g1lff@RC#sS^b}B*kmqz80K-VA#9{44IRtI+wN<4VjS5AJ z;>fw1A|jaYpGz*tV@?55jE6e!qV@$h1J767K_F1WTgKd$dJN&k`!JRYbQXhq$NuzfXeo6J_?6?Ky# zUM7YUZHT|!OD_!lQYN!H}CDimPRWqTL%;T?7KHZQfDZ}=&+P7w`X|pgea;_{<@65cE#H(ei9sg zSh0Zp>(Vbdh%88eBu{UJnOo=U7u*p;pw1FGD>+UY0=Cq)T31LmAn9%^bD6P=X-F3k z+=w`FG@tTLDQlaj6ZM(s%`(61?kpKB(!IpV#{DCAb)kuRnOAk@UE3$ z`zY)_G$r6NDqnCrymB?IL#`6_K?d_L(}YqEw0%%XLjAqkC4(_ENu5+?AO5SB5wxXB zQ%#+EcPnlI)Z$nmr?H2}G3P#he!US~ZBWcWOu9{yY-D)W0`EIs-#m9tExL82l;=u`_-8$iIzd6AP z*#ZCk^%==ysV0&xk@Wj29mL>o1z6x179lL-lUlUJzjosuYKtonoukq~PParIb3xWB z*NPmkgX^H<=rBuKX^G#knBwQiIzt?>wZn&X4 ztYNBA*HW|(&@58@x}gG@IO!Ig54rbwY<9qU0B+HIu${T9wl)K5kxcJaNYgeI4FIYi zO>%jiS`X(uI1Y0Q0u)F3!RkI?c`l2y6WM0| z0YIec+HVNn_y8O&MHt^Xmc`xw&vG0s6+qsXY)U~}$BZ~a@o5u zz8x&DQ#BNAZ;o0lxmri`qmaQ<`{qa0V-H_*I{s7oJB`Dq*E z6`U`_@%!SsHRrvOfw=#)Ddp$!CuLW&5|480c_*Ucvn0~VNg#3avz}ncC0@Jvwx_*q zPd};|%+-8kbx*cmQdNKXyZM!QViwhsrcLy+LV9nbD3@!#pBQI!hdEMTCuVg=km-oI z(7nz-#WObWTo-h0hnM@D0sSvJ?#aZihQs32L_$wY!-Wh_lex4qoy&U#;Y`7tU5XO! z#>|;jF6%t&x#n5Lti$+wu7;aGh5{{_@hzq$7duAQw-xpRNx{pKoQq!`v1g>BkJ20N zWiMLDyt$+_Ui|PSA=E9nd(f%rZ1X`9*Z8|_?|{kWcTF#2?<;nr8~b_+gU+O~c+>J6 zDUczr`XkZTf?cxjj45x=IhEU%j^i$9kpzH~(E4UU8Sa=&ghQ=KPmGy&PU0BSsn_xCE^^>T0w5SRI-0QS!w zQfgzc9jUQL1Z)2&vDf4E>(x7T#AyWmxh8#J>oU87E5=jEB2#YnPYA^2qny``C7(k; zclaIF!5F7&6lGGwnc=&JyMLHg>fF(w4y;Izp{G=7qk3Hu+;FvweDff6n~Sn;@*KVE zG2Jgx^w^c;*;>V`rQLlK+60;ZvRPlKNm}ZBE!2AuRKs)X6#tM%0GO;`?AtC-8#drq|klyFat+vTBV6r?}tO@Qoz2Qn(o_< zW(`Tn83^&*!LyZecmJD!uL+Sw&G5zwMI<+MDe2BuDj%A2s@Q)+HrpB6ig6j(!N6taYfH zbV=p#rWvO9_EiX{_cTLTN(MQeRk{?~Myv)p;IHZi^nJJA^tt1@nO)yMwy?l1( zvUUE$%azY=?O);{63*uW^1WacGdG?P-`g+{2E+WbVOC!M#KT(NCmcjYo{6izQgV^( zDR5*F+137&;mB+#-w||nriK7{=4)irtvHfDW6X%*YB+8lM9Xw(<>XeJtHCvk%aNnAr9B|DG4@~!b0W$Hm<1k4K#4}!Z%+xS&O(t!o zq~kwc@+9d9+pcHq;Ivudf-4rtd4_f0TH0K`{p5lF&1~~Em|PRTBLPVe>eK)?9U4;G z34aleM0U}{M4rV+*(f*Qn{@f()+P04u1M!BxYd~W3&i5KI%OwxqxFz{lbW|$%71Z!W z=}L1;5+dwQ$Or#!>sm$Fi$g&N#3BLb8_-2AZ_wkx}R_j?ti(CFB zf+gM`)A|MNJHP^ZH%rc(RN0WYTlH2?Wk?KjrcLabM2so@rd@D5xqPgD#jOxKKMnl^ zx_@A+bRfrE%MvJi3PB1S`(S$Oj*0!I6LA_ezd_h=ttn`z0j(-(weTfD?Vxv7`6A!9 zvT7V^x#ug{N%IQ7a#pmxj;w5f1CIQ}dG?@>dgD&VZ-g%+#A;z$k6Q}c2g~(#6UsHt zu4&ysQ2^ga*=2mhxkz$X!CvDrBwo%{wTBMwip6O|N`ux^<$(o)H+ja@s^{u74<@5o+gi zthefJ9^AzGkk;LKic}Q7KV<4yI$3}ALjhQ|_C^wtrv0EpA+qO^XNfmY#Kke5^KuC; za|8*@TNaHLm0~=8(aWcRD|2x&<)&o@w2DieZ@KxJhE9Bm3IidC{LVz_&SoW28VKcB zf&^!zSXl$304u^Myiw)9Yc%91Ps87kuSAvGtFq3BW|h`J2cFg-4PoXj4^A518jF;P z4>~@BWs2Lw+*CMKYV;N7*)euEuDX6#mX!WC31Ri{q?}3{g{`K>SUvAsMsSH0dfNR8 z$5iaUmnQZZ&zTW#`fB;y=*y%ERbe;C70b*VT3jQMxit-vM>VL$$sx{IrjWhN=Q4Jm z!PoLdby?7*Bj^^@EFAC+UkR&wfR!vriT@a?yEQdA^-|-vM~zNB9bu)B!Tl3{-+%1M zyS=yWL5?Uf-F-eG16CkNAnMv=F;tWqe@94Q^cCr0Sqn=~N9$#KmJ6f09<QW) z4$7*s1*E>7aUNJrdslAQe^_awB3^+eK(K^SfVh(!IcuTiG*Ez3T6Lyu3Di!yJWg5t z9D8XQayPDNN;r2YS`1U}F>INXtx!7_`M?6_>MCTdOaQ)lHjFH4x6QK)B7^gyPLE%$ zHKk71$~RsvL*iS0jeIu}9^C44x}6uW(E-Xjp+S)p#WCH!77i=@OlRdqX*a2ZQ+~qR zF+f?ZcEU#`o3GFK*CvI`Jp+v2KW7htS5}`+zi$%7=qEJi3(1difAJKLY0Q_EP1`+M zgVnzn5qvBsAqP6})91TW%uT^A+Q?xp_@}_Vx)6f&34U8YsqzU4SbKHiy6fB<_Vpd@ ziWPM;`r>t&>lM^hpuSU+L@rUJCF4J7_NZNXv7YJuA;nYe{GdK@8_px&>bldijL9l? zdiG*IJW8O;)@&1rm%0ld=??hrcX(7L((=JNo6vpS@*R@?hM^9dS_CFjp)-VrTqk`9 z60aYh#*qZ?TMpK#4c*Uap#lo6nh+%2W6sCt+kTMyCV7VD0boTs-wq89><=2yybE;h l<0%;x|8L;`@CB~#fydGc7jiqw0`|WMKo&S_EbBCp_CLF^b~69~ diff --git a/test/visual/golden/freedrawing/decimation_main_ctx.png b/test/visual/golden/freedrawing/decimation_main_ctx.png index 46c8f7da5c2b7e2f1a8c5561b5dc884a1e694e95..b6ad6d16aab71e67a452f5b8d7e31a8739815dc1 100644 GIT binary patch literal 7526 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 literal 7562 zcmb7pXHe5m)b1~#Bp}3q^co-_ARr(mg7^KK6i(E$IK zP$>b|A_@=QpAAIz?ADvM6cYPIs*Wr6dlRh*dM3wun>3fMlqfQoz%Q3s6j?U7m(B%? z@`UiDfme|Z+UC37p0~;i%)CahYomip%@ky82x%j`cQzc? z3tx}J24@8jq)(G!_I-v52!i2QxU9%}+zxU}dUImGq0FDR7Ol0Za-$ zG!%eX)WWjt59;^r2Wv4ww~`xkqIn~SyxEbYCKArH%qQ=-!h*u!uVGx5hVE}u-_IU3 zi4JZvZ}va2`b($q=b~dx{tr^0r6xGYIRPvyGC97ptpep7&z(I;=CBR;HE6k1qi>0d z2+W*A^p6Qc-kppd_VR>DXATkn^TL2SW2|8K^(NoHfwgJFpS=D=vQc#8ZrQ39_1o zcxVCz1sM$`tT)AQ5<2G+123T~H(oTpxTVm~q|nx>=*OBW!btYB8gzxMjl$B z5qB3tq4M@^uzS5QWCl zu~#~`5Rq@%7h*8YCm>X=wq-+e-IhK8AGwr3WHm+6tHL||-?)ChPi)RAGjx>bA|tQ) zrx}C)mCS8EZ*(k3+V?5}zW5+tHUm-@*hYuYjdkMR)X@xaLW3KS=!4J9h>kl8dQ~N~ z2zGGgNS*(&ogg6Tgxwc{UC@C^EyJcZCB0<`Tj_I%uq(0HQ$fv7rKGByQ9XP+F{k44 zc(c&$n=Klir!IOB046YZWT(c&GoJ0_FF1xVPq6jwy$hJtlN#l)Qt9G`ax7X6G(jK1 zlwecf+dq0R*+4{hDLA?D%L_60j>KXW-{c{?4-a_JB5m0fIBU8GbL6EPD7QFxLaUeAaM_J0)Op4C^tVn&4 zQBkM&ygi5Jf&b}3iAft8Pwj%wnW?AlUMGtS2SYb#^zUMBi7FDd>UgQ=2Y~^L+MH*P zg})BMqPl+@p=74-)6J0gkGXqpaB~t-+Fi^rgsdzdHeb`kf+1+iS_4?4x4FF=y2Jjb zD_jxGv(vy*tNKouEP{@y%R4-UgK2&QFd~?_+zg$TOb3-3;)On|Ozjzo1*ZW~co;!q z+X1U``D~r-A;`w2VA_#HCikO-S1>j4q`e`Ajj8FD)lwE15r^$0YRpy6QhZYb1n?|b zb@jf$T>liHH>A$@&;nsxoYw<9oX_fzwVdL;xWqd4N( z1WHgNy%p5wY@en-S+2IpWPG*)yg^Wb84YAgH}~6Pu_Dr$tjFcuWV!8T0&(vRN3IxS zi;#@lPH?Nv6-QZ*8x#siUf3&t`%g0V;@;m1N?1TTCgSYyLz4Pa zRs_-|qCrlC8YlcixgFg+?#5j8-m0`H+xC_ic zpz*UIXEV!|DM@jx{!wy#cTz4AV}EiVCq7`4q{grzAgok`?N>{cV7fOBync}^7s_vPe!lCEgH_9@@T;FVO( zN~8Wz<46LcUN?JE;aSe%7oIS0D%C>+12t8Jrb@@yd&ipqL3QC@4{80BbdC9=<{JPg zd{CsQ`HIQcrj>ua3$w7b_tz6!UGA6XRhapP`LoV;Y>Wav*U3rRzYFBX)ib5>rq#Q! zG`av#{a+-1rSwK!+zG8-dQI%QgTv&vvYy4rXY}PN>f1mQe9ZB^f|byBsF=tg!7Dkv zJS2pmUm>;ujJgd|&nETwNhVCHMORPB=+#7BClt^BWDDSXV@yhnHDU{!GS>y4!VFA* zvU5w{8LU6w)9kVxCrB2luLA-_%WL~8X?NXQ8?Rw(T{Ch{lPa9OAuO_q0NY=2;G<5HJ1tTP4BVu8M9Gzx7-|KoFy!*52SEx9FO;L}n9=#O*sY&`YQU7~wmx4T5>1-7Nm((?T@g6j2hSAjEYGlVU}XdoCV=QJiA?R*7d3Wf<>L&t%VYO_2tPgd-~&vlk*k)m z#aVo^n;gKIKZdnvmAdyqB6p@5TfO(B(qRLiZ!Ox~=gyfz#ZA%dS`KVgL5QJI#A)9(F7)=&9 z43)d28Nxc$48_rL!f7~*iySr!CwC1Apok+@bK^f}7n zCdCKM8hISusJnm^H~s+;P7L+UgpfCcI#9zm{nnkyI@2fAUh*Xi>XuT?j{{_a>2ycpv)945UN>Lt;I+!l)PM~VaNS&t6=D(atmi3WOxPidfCTP>I#+EK&5cF&m> zIxx)79nc}Zv;X|{T?INK5$+QX#=N>Y3BTjkAkCKt*o{V_ih zh8q%eXyt)!qg%cdAYGD(PnG9Z1fxPf$v0CDE!7pE5O+%3M>OGTo}ZXeq6_5#{HxGi zI>^e2SKB0z=;mIUGI@9A;C2$5zlzP+(F*OuJLze4@)SVu9cJLH){5G%ZH@)u68!p( zhF8f#F`SLx4In3+B~o;Lab$(+^Ot4cyXa-8rCg?Bwg}G58M)D0>^Xsh%pnMa_;t1B#4pFJaUX~;Wu7ks=PkRBSINr9I~1j z{7f;>7&5@DEdjyk)xcHI59Ixtr+NCvv_jgDa!-Oo3j;;a$U#Jzxjo3?-y#{pHLuVS zPMpu0<)Lh`lyOmNHn6Z#;Pu4Xjj-MOFR$iacYYRjZEM*DYlk|Tsm~&fis_!^u`{Db zcEQq1Wc5ETr1D1k+Uy?Holn%%?y{PK6!z@4nGJr2@x#uZ3+eYfZz=C>n|QHid{v*{ zKkD5~f(%*PhJ%ScMUdZQ<67c3K0V@m$VRTw>^He5s9CzcU&qw+^s}&i&1r=W0N$|L zr6FBjtV6K*9=n{6Co4CV8CqwHlcMwKMzP2{wsxAOcY0-p4D%f+<%ih(z^KKBMtuU;W|y`w*QJUJ#;R$I z9l^c%l9hj}Sr;8u`79fnT*;;!#OM8cMz^q4TAUzS*4a!_7!WuvC!{^hU#w1AY)Vlc0`sB2EN}fysJ(GQJq3Q2`80 z8$NZ0(K6_*L*L(w`R~bXzb5ET(HO{!L2EqDR^<(LupUn7^Ajrop%J%OCr5^9s5Gi% zrWqGb)jiR}`)ALRC%*SyV(6~{x9Qz4{xc2mvsvo*{g(0nXelITFbX0jozs8T^r_U) zD}%yEX>k5^3Xf=YOl8sh;)4@*6f27Ja{RH)eHB^feEYmY&Drm7AG0Im2<9tuYes4L zC1-xqYaKNLyEg~MK)S)I{+_Bnc;bkLIHV8S#?0hDG65onZqa{I6?Z&$o6Jbqt^S(N z_(XYR?AiaixK1T4OvhPR4(|I;74_DTEpK1G|5%zG(Pq%Td{L;*XfCLRnV;qWB0OZq zx@exG^LIqp5Hp3_|MCxF+jvpwOgEqs>qYlP6QVCuI!vQ@Qb_CGu$9^HQh!!2g#{0=Cu2)_@Ut^RI( zsSX1qf^gpUI;6fJj<4o4sdm7J`ds9{o@@14H`y$_|fM#KK)O$<&HF(e=7z z)337pz9}1Dr_h+P56m&NY{eR-e@=>8pE?)bq>4Nqd4YzB=nK3hsmc(yzm(EdO;@{} zRwFyPy-aKMxLs)2=gSQ@pW+|Fbn<=bv+OW9e%nuyr(nX~XL1=$AMorJmt3*n+oKO= zpKl7wzp#!E!b^|vvEi)Up ze@KFAf6$o!vNVFK&q50pPku+13Y`jnNWqmW6TW_U%oBD~NVa??O`+~1IfQce11xxR z*vD?NS{9wW$TB#uJ12n7e_S!prX0P!rxA*~A2W0Qwi2)h;+3@Bi$9w26CJHn1JZk{ z8by!A1$Hv)w#jkf%a|ik0li!j~z(xp+=udHGrKwqAO@1%Ld=7pkolVoL*lMza86+HMRNS%r9*atl zo#!r7YK#l*ys_zDM-S(&yFVthX=e-qa*H1y=BX4{XT7zywG(@h#Q|9CKm5lR2Hd2Z zeKLF?es+As{OysdT7qB>4>&zd_EJe~v{>gRR#e%7;fav8fVIIOhgmOjrPD2> z%Q9l#w^vKCDw>o@$pPHE2QwNPCDa?u0ecD_sT_?0f7+5hv>ZkLZ+*>siorDqW^5nc zM{M%SiB9s8KJ#+-&}7eSJZj`dudb@omR_tT=^Q$#`jHzR%xyTB4)KY1%BJBFGzk2y z+?LEoW|c;7R4MMRu3vi|>-`9exWVL_S^yy%Tpq;F_pr#6&e95M(Qnd7!#A62_h_F! z8u%7h1%+pKlAwn?oN)Ab@&R;9V#Q>Li;6)a2Mm5iX-0!UsZbk;Uj&>(SMJrj+P5qU z!V-1&X|3w|(nz58C9lp}GbEyb`$;bPFOgtG@uMGV(#ebaHzDvCS>8zX-GrZJ?EGCb zF{QF7nmgc^&ToV2Y~ne9#QcSBqp~m-o|hUEScPfM?!*7GvO}bxd@qEa9_ZIOBb+BkpJv)9C7qXUA1 z5&Ck5+fh~_q^9$f{B1zU0$ZK=aE`+ZIW;<^u1ttA<;yd9RyL(i-xx zbi;CeWTO(jNeSY%|^7vzrr!j6B^(p)qQL z^5C}X##$v~ghnr?+Qcj<+QTC)ul%}+claS&3I->eNM`PgkfO+#kS#2&<1;w=lSdBx zbt8%UqNYwY0Llk2dK4DYT)90~(9cx4ayjyS1{`G5;lCVIt)idH*ZEwE)f#zIc+wrR zi8!wUiBDhuI5jk()EHKJJB*Cd%ZHkC8ed=fTI(senc#;Px6CmAvb5j;xnR{fd>42%*hB zwUeKfzI$&aAdpBUt^@BP%>!cwQ5st@xo{1wvc?QBo8r(gNOu7IZx>C&+pAuMMA1gY z4i5DiCMvn!T&*_HkVTg_a-Af(7Oz>0MaF=YnoDl$1fk}5sLSu5S7Gt5tX3Iqvvz0(kdKWqexr`;qid>q?lkF;9udFxf&Pm269%f8*@k%-W_%*W0$gT#ioE$C*6*mM3_d_b!9T&Jdob-5@FP? z(dTm|_C7RcU#a?1GHix8JJwFo!XwEp#oyQqsQ`6GFVp5c!tSjv#bO0Ae5$B$$jok5d!L3Ag}M6xk5-z(r>X-Eed#? zvyhgI+CJ0v;d327`I*7Zk0M1+h9Y7oSR9RaLxxyF*_*TA0UF}T$e9P8==u)iB=&-d>XV%5P z0ixTnDzZKw`=!+%Zai$!^OufjX*|bM(LWB%h#Sn$;1@dSJY`q4G4Sl8tn-63mSq!# zKgiVIiOugg*wUAafR8%e09|2$Xo_+?gMT#T8tr@IOO7OAi)3{#$av`~=kTAgqhV_h z{wbdt{rK2m(*g4WIupGc0t!-BG|RA((RAYtUF;{ZBBN_evY|p5@5)!lkKp`M(AqEyDZBV)opo z?F6#qOX+{Hpm4uky8n#sfysJta0d!En@$%J$$dbU~4M<+u24t=3p9a}JzTU|ehn@B~$r+>p^bnx&@f_gk@j z*I65x0jQTn6~D&cEY+eHmR(dx5>}+=)S%mebJJl_*LmG$;=WeMCB5rqGz5c_CQC3Ssxso3`dHAS9;m6>uT)W5YzWdsw@f9~q*Y3s)E`!66iPatRFU-l z)w1C;4+sW!%Gg>1){?(lT(x?>KBoq~?$5)c6#iaR2rL6l#|IZ{yw^-5lJac7p%_cD zHrc_uRY3KTmQtm{^N{}mq~x^R diff --git a/test/visual/golden/freedrawing/decimation_result.png b/test/visual/golden/freedrawing/decimation_result.png index 1190f7bbec6522b7fd43c6c138e8b891974e8bb2..90e7ba962c7da4515510b6e371e1b76edb56580a 100644 GIT binary patch literal 11854 zcmW-nbyyT%7sqE=x;qzKx{=f+U0{(ESh`zUIwXXpge8{->5>$ryIYV3i1Qhk< z_de&Dx&NGV?#w*Ty>rj^e9+pO$|Qu0ga81LsHz}z?#HqF>lZ%m{e9~IA9g>0ymgcn zfZ8d@J^(-gRfN3WON-;Yg!ZE*ir39F9D48yXepKo4*cH22vPSYqzBv^c?DD(q}{(0 z@FL;#<wlo^MzD&84;k4jz;0Xl~4pypPcmojsQLge(Nv zF|T|z)>62S z;bvc;N&=Oubn9mc8~x21c^XN*7MV0qzAVJg)NO~h%2mLo9M)6dZng3ELynIXvJQ{Zsb|ra{AoCFCN*jZ5)nL)e9VoPpn7aru;%t&>aP_Mz$*A_ePS3ta|64bbr1q)80%y)4!3r>b!LOTkxa# zR~Qi+mfN;1*nRH&r@cl z`qdkyeS(`30tgZHG_~<6qOSFF3{9Pd9mypXEN6x6ah9zEf0Zh|!NRjDIq~ z#P(c|)#6+u2-tEXh?$Fe#YAx!x*-^XMVWRr4}qI<-&Xt(^N|Xmu8DZCd(vSrIsWp& z&XHv+OIptBr6+bTy68giV@y2HSk_!SREtutfiab#l-=ORchn)Ir#^&PbILGU8&|GC z)<8Y~?4VN>CWEO-@Id;;RAcdY+RNeEsoe(;%bzz|Se@pay>ji*szfh?q3pLhEY#s( z%1a6`CF$)Q?Eqbw#R0OGs$KbE=vI;d#>h6-%)-y-?+b|Eom1l%eea~m(-Ou%wsaJ6 zajQYIPTC6+D!}OJ#z##NTdW0C9P~R|=+p`7_HesHIk59?bVDD?0hS7(?jd;a+Fi-* z(?h9hy&zzt!|Z{>isgp;imY&FRXqXJpho>hu4?wlPi*`i^2zR(bIK9sU`;kEK!une z4>C5dF`^r1K@07T3XN>FFjbcBP>`;9!sn;DC%cbn&dKU|o40rCbfZw8&hH~#Tf9U2>PI1 zD3GCb3iI%p_$+@ccBG;e;o{EXLI-$Z4_M1o`FV~I*aP#dGYUAv2L|j*o=RSS@4@}NXjEqx?!OK7O094$whVSOqXYZxRcl*yKb=gYNwiA0t_P#jB;7nMVh=B0*@86BQl( zJqTFFc@f4PN7K>hbiPKn(P*VnXXYmXKly_@AEh4y!vk(*pBkO%ODt6@f{Ib$B}9dH z^IlY62)0kz{CGF_b&Y~GmW1GFX@S&sTF6C>F>M*|`brR~aB(JrJ4OPNN1q2W*>Ifz z#>jabnSH$kYl}9Ew^FM8Z-RQ;eVIymc5!F)jq5Z)F<69Dkup+q&ptl`aM{2S1j>fl z>pY!+lGa-pF(R}FK7w4txR)wK(^INjg`)N8P6ubM%4ydxWAd`~jv4%U0da*(FWRfE zV-C_-e~_KXLP;l!xAllKj)@P8WAx34R_=%zM~&vc^%XLT`YwjpO)z}phXUHc%LpS% z-mSf5TUy?2hb%P0$xw>Co!{d1nO?u~>H4(7A@%t)r(2)>z)qN@D%q&N2m$$*k5}>p z9(NuS{zi!>m5Se#g25OMehITzPUH3sqxIz=M6ZS!;A+UOwCY7YCBI7hyH}BXh{8xR zwf!q1_|#1D4>?Z8TDG1@`GtQQ+GrE;Kt*HD`HOk&Zdl~0k%tHQ?8XgKr|9&!R(H|a z9YPH7*@)Z|#|rMj6HXk@ny5ADGcj9S1_z2{dfo+2h=m`8g^jxyfXJKiQ;O;0P~&M) zeOp9^s(ZWucAqd&@79t@17VFssI#-^Mlf0Vyjr8;`C?~XV=^)F{Y74)j!|d$WO#F? zF^R`BEfHbZvTd_l0@~N=?>j@U@jEmOYFphq%~Q>v~J) zb1Bnu(1gANoANcBPuRvP{X_dqjT8zd%>@sjXbF!28_ot2QYFTq0_M)kKl>iOiI;#6 z4cOj+N`@2nemLCx<|imp7q(yx8Oz9rEPt`C%3?+%@7} ze<-rVrHb`_P(*fMUxmIvLVo`Jnv?x0jI@K5J;gA zn$ek!Vpl49&Ng8uDbaQPT{zIhF)(w5Yg5yrhC{6l@00>w1bu-hRrOUj!q(xKXZ~jP|u13HHS{<8DpHMEF6g zWq?gg(%#j8*uzl(r*A;Zh0q);3!$OIz4pB>EC@Y@5w1VsQrL@GUjEGcN;6!MmIBY0 zMV-yLHSolffx<6O-BMv{>OhScqwsC#0%rgmwX!a-_G(BjWw#Zf7w>H0`XLik^ z`sM?`pW;+Tg*<)IiGAJHMVi8nD`_R~-XGeB(2TXo&G`)KHvN9a*4m@ul*@4LT;Y;a zL71Y4A_K-MJPK_?dLmEG^&oZ%<4PHnNaFP~hOnp9R@_f=CN`~-sjZ9s40l5WK%KO8 zl&kx8uJf~i=bd7XZ!Txk*T5si1E?vwID&?XZPF>VCW02HD-kOa)?7b*AH!x$I%Y(B?DWZSxGa?pnF_du|lP=3avNjcC z#fqy5Y{VE3?30u)dw?Ae8#mGP21{yxs4{qn0{Pg%n5F#@Bi^|rer1cm-~L-3GY*O+ z3vufSQ$T9pk*zLVclW~|Vzo<_5b|%=5qRPDSs(PFyU*csK+5Mt*YK37cB_Hp%Dl5* z<|rHRKg79jEZ?L_j5wYujQ%kiZox?lDptj7!&YI0bKP8ZC)qP!guJksL*US&6rMc{ zX3H7rrn~xl)rm!^V?0}lpOT*5>Mvk$DVfk#w{RO3m*u#7AU_9)l91DK#=T0r5tJ^@ zmC~(>8RWpFQggn)xHw;-zqhf%0(o z=iWwfFY>>0nEmk~3JI&jnLcE3mPBt=bF)!5XnZm)a5}gfk^fnG;!=Qmv6dTT*c1Tt zhnt(LEv`-mc0T7`8(co@uE0Ta=(F0`2xxO%%wHwrVwTH(!AApLDRWqSz_#tFH%yGf zLEot4b_ISI$$y(9j*^)fu)N@FIgL5mv=2Ms+jPWObpaekcexj;<@@X;P<4YvFf-E? zCn8J8#`uovt%?P*Kt*AhQHo9dtaKhfM%N$5#o3t&&f+-x@D&YHy?~}-b403w#(eII z4*CTR^*G$;j=gh<-UTr32+Uu9SzR+h>L$wV-{?qyme8ic1xxxo&Z_`z5zyYfFVwA&2rce{bJjVExHXl2ulT!zs$+~fziHRyy~V{erv(-Ms1aiO&_VDIrZ9PMvCZwA zeEgT#&!ifx;u@4&v(V#Zu2b&kX|?tt$oxXQj_Mt9DYSD|>BVUM+q}WVq^T2%`)0EQ-Ry^s^P1Btus90F&%L<%a#!i88I`XOlQwlxvl9R8 zioc=I9AIPc2Lf}oUxhe&nO0XGt^=v|`C1Rd_i+Mo>6`$DQv<~)uiM5?ORl8Um8VGY zG8gJ6`==tQOn)!UhE19x{o6kJGx{f(4k&u^=aXs z(CGBBMwN~5&axNNsr@Nv?fKZROFW^JTTHqV(xQz2OE%JNULy^$-P36&rTOfL*FeCu zUOUjSL~*@>&sbNjx2q`zSGc2Gsu&xdJqFqp)v^W6o7olr3!Lrp?RL_<%zYR*oy&YG zfO@a!-$QC${x*#(;VAC;%q+o@Uq6n(OV`ks=EhC)NUpXIF8cdnG`}6a%CEqS(1<1@ z53iB9SmOq#1IX>~&qSVTmV<*J8zK?)qa-9YLA?+zhUd|YU&8bl0h*rcsz$(&;?;AT z@=A;Pq|1C4iBViO=J4oG=~8`~aZ$y;P*Wb%=O19aajOrby~jix?l*IM!MBJ(*@jr* zhXJaRk2JBb+&~}Vl)ih?RHned8Oc)(J6{M3BBHb});o(osgK-O6-Wu?z0H_{VQTyH zO&9Y87>~5Qf!F+G*(d{0q^R@B!MOO*M>kIu8x3mC((GNLS_L<3B1LbSz5xZ0z@EB` zdhCwoRPw0x5PUf*r@>QX9Wn#8KIf`u`&Cb7`41DPx;|_i;JktPyONEe5#ZUOUky*wC1niYDmq>kC7G!(a# zR`_Xtcm>QR_szzcqkwnKq2nbW0PhIvhT+ZBql4@mDiYE}8uhn>vau-7lK`Ey0$fa* z*q$GjqlBm4`Qt5OL_Zy^u%t!bz-ErOPHkRc%5Kpi$jBUFO6c;iO)D8Eh|HS2nG!>$}HZ5im>eOY>Tnc|RepIg)7{aJSE zyLq)v{%8`Hn|Jlc)Z>Qd2*v@~4*3mNSPXBzpyh)T`leGqaro<>9|*{fop1&+G=Al_ zzZ`ESmGTqP!xfV#EDRst`P!>{TB^i<%<=j+WA(aIYc`Imo0lVlJHdND^hCf~XXHzz)$a`6n!5W+?G+JStoq`gD1*nSpe64A zPy}_}xECW|ows8Q$|F-XJ|e(l-Zk^{t2+GKVg}W^f0%i(?&YHvAC`Y3*A|)dzb4d= zEg|6}&b}SJC7`YIPqzB*j@2!PKc_YSB{?UEB}C{o*Rbqb`*=exNp0Q%=y~}n#?)Hn zKe(7t7=dk;^)TFc$$y#E9P;ow9_%WwD^&DnP1NW)|ObaDl`>%{&X5vnFL6|o4%Y90`1Z8 z9Nd(03t~Gr-Vk_KGWCjD9^vLzA-Yjxu z*Dfd6<)qw@dGp|-{L^|#n*)8dWw)}cRsqgl55esrXd?5j3XiH-9tofXZp7q^`ig^wg48VMmfY zp&yh*@l#(gHSusXJ;8?Ah!X zbKQ^I31Zc$TXTDQ%p6#yE>|w?G4tXf=>u&UjBB10= z1xW#af|ih?R5kI|g(3TMJ&DvsS8N$gMz-%v-?>Ym1T0p+X}wqLG^5~TEF|w72B3F2 zTLqQ*TSsqV^mP72e6Kgj_BPqOpPV$WtTf+?gQ|#i2qLYN>0T`i|l@-n_pb=rD7@xt=Y*XfpUWoZq@G|{z7KC zLP17nJz69v5KpcKTrDjBJFJ*U}2|K_`ybKgU0*G=5&=m-8qF7xTplc7mdRq7JZz;ZKs$K$|-y4vZOff&4LA0 zz&KX2X3FS0G4~PRGIQhSKFz&OKtFw?6zD6CO3Ux|>o(`L`q&Y9ZaX9_DKu>J zu}Rl39^h0k^5fJQ8GaBOVb^s!5AizXpYcz(9$Bga|DPG7E|I+O~kz+`y$!By>8$4CP*OD=QgVq7b9kHJreXaAJtKtdGA8N zjb4ZE-XN*H&)=k0R-O<+*SfFFhlHLm!i641wNQ4uk?r0{$081%dc@ZlP+vv_K}}>8 zk`ER{9f5XoxB$#&p0(V6lT3uQCMK)o;}}Z8IW{|szisph3vb?ilaCEJ?_-s2n{TO& zDK}HOces1zzp8MGe7mJCjniE=19*W@Mjm_2!KaT%ey%2c4X8#N(E;JtF}mx0r&fL* zYHy37nUvK})!OxJw~la z`(i&=J7saWHcn;_bYCh;qQ=zSt-BZTA|m*1n$YwhvHoV3s&>p{EqySD!Olzf;`pR% z&9tA^4*bOxLgve+Nv*0XVu^iox$OJAk6-M^#`>5#wd~&NgE+9lH{CU;uioL_2C-7y zFR)#u+n-UNB=0wYbo0aycSaZRV1#o1ND;A<5Pg zkz8GiL3{$Y;SPlXv(&S6kNt7;Tr47=u_Rf?}`r;{dpkv=pD&SK$Wle z+qo}wE8`bGf2!nuGKzr^29!n^7&^m8A`+oBRoD$Gjsd4_#_{b2WI()6{m-VH%c>)? zAaOSR(HE{Q)(42En}d<>A7*FH!&C?%!1uVbFEb=+7O(TtqE0W_kAO=>cqX^}uW2FA z(M!lyHCq&62KnP_Bhx#$p9ht#{sKh>pm3qPdzz&Z63AG#JoSYaPz_UTwc{E^b!Y+u z;HXy=T$w#VF*c~k8F$9r3Zx)i`*qZ(4kf+~2-j$MUF^0mk4L7_u(_!!6rCkC#r1@<;|WcuUyhVCXtH>zfl^%h zf-xFA^r5TkD4so@nb`Z-tb~a={rY`hpQPie)7JHx8*7&@ho|>RS^FsBx;!*}YNnC( zXh1ezvfW51h*Z#7W``IRA6VcLwO}{&O1-_zbd6uuWw|rW$#uBEKQMk!sY(=S@0DaO zpv;(+@^ZU$N>1-WcZp3DFAs!~U)?b-wQNPI7z)M)O+R1FU1zJV?R@=Sa(7ROuh8#8 zI+ls91_|HkyOF6{{Nm+kdXOas%pG44f0Wg0Oka%q%wK3<^@2Kc`;%tmHVe8Tui8nZ zX9=2~(APAsSpLp;Dv)=c84Get; z13z-+cG<06P&*!Xm-!@7c>05O-Xv@td28atd?INE;JEDY;%~G2HW{DHsBjooR1?f; zE1TJ3{}%P#o=LK(!~OZ-h?Av{282K)kJX((L}El%R50@&K5Fs7HxdqyEEGnSMx80R zi=d~)K?qXmCiU-YoBl}JAufx`FETXHV#sQGZvz02alnGE_zBo#P^A-=TZ`D`B-0gH zZCZ&ad&js^zGXiWS{?+)h~bey$wCcrAJ2K`WzJoV$9#4p|H1Q{_m+z0o-#r}mRA`|H<~x?vg%@9AY4dWv z2|NGmkwQUzU7uwxK0D3^{G9vbZwS@_4m2>f5?1W}P=?=v`nMW)BFW**>nxa>)To^A zT{`YD1F+wAVd~I7G5eZ1151mXL^|Z*SG|yiTU;oqF)?^K?OTc zzAF4~-en;rXVHs$!UoQn@$q{R3>x0H> zMnGkv!*~v6*RxSxwD8X#EB}1m$AL}Ij~KTwnI=JS)Mv?O`KH4mLbt~#+9~_Cac9f| zHl_{P|4})&)HZ#i`pox6>oKP+|;1o5C75&}~rHnc=EPFQJAoA2wFATGGoX`XA@ za7~J*u_X4)=u3l#=ZhY>x_`YXRK(#Nmcus>Nay8czP=137%l1p6Z5WeOELZ-U``BY zC?KPRdop|N=eo)M6-Oa{%5Ay9Sjiv_U#ff3;Hzx2qV0GoX3-|Ev#<3~8fY^%zkZ~+ zHYFr#kfI3fUDDF`eDn*DJ+J7eyRd7ovFqwlQ`>NYiX;!r_icFGh7;pTI08cs;fY^| zc(08*3}ZxM^1MiYp>YXAqvwlDU^||U;mRS651dZ2uW$akqKGYgReL3@_dEFybP?wG zltbuH2bA6V8?+gwz|Goh#w7_o-Ms_R7RHHNbjRh%YzoXH!N?;snZI7H{N1Lt7%kk= zbRPds8y;z@2J4x?1lyXv$_tVZ4t2)pbURhTh6U+TE7d{5!exK#F47%lHKH zsdbK8O`DRy`&P~ew&i9iq8&yhz%9maxl`8s<}i6n!3K8#(pe?Wgz74?T^i_2d(dyvjrjCtlTE^4%^ff%z>KNBW;Dyr-HK`} zQxdGBb_woM_oQGCM82-{hG`ldZKWOfBs&9aoF1;eKNu&wbm>isQoDpfar)}s6yMEv zDg3I_o2`?^SthXnVRtz6yvc7fqg)`%vO>JS;{H+dj0(aQfD#OZ`l7 zD)`;U=>11zmCuA%OFvxSe^4}=v;NCDZ$tD|N+Wa~pTk1(3%UeQCa|ME`7S;uDLeN# zlhiBsID+SN2i5zPc774yK(Zg|0La+i+N#5}?*=Cc92fRtq+DDHgLU{A@uiM=39Fu|1=^1u2w*V~->2xpXwcht?_IU4I|qbk~Kb@qg5- zuX2=zgon3;@W^FbWx8OBd5_4-pSn(a4mX0rl{>0QF+9aTKM5K*6$B-J?YXWhhdxz9 zv#MGuE%!Z!Q&NsA3vfgSnNdJXSdIv&e%4X9*UUzQNa3A-Ez9QH%`~N^Eq$byfBNEA zl`P&$1mqQWdhB6+rAm)uv*j#}K7LikOF zhK@{&)I;wB=F7KG8W&fxpVcu__nN#__nSVO?y$JN*Z)}la!e8M<3FiiH|yAXPR*-a z7DbEN63x~7Ei0^P6)ayTnmD~;GAUT-v{V$0HS`nrlNP=R=cX9)BbhoG5wY=IgVlN3 zb#`_KCG2UvlMczq`M%j}CKeKm9qk*Q_a2m$Bt&6Ui+4gK8I^Y@__Q_BF!i%GOB=EG zn)0*!0S{~&e|%{qPn^Eaef;0OQ5glBC6BVO{a$2Zxp0|=jR`SuwM%=sGAVO7@)GHq{ z6PL`+XO|hha~m8tGQtg6sQHPJc@f@dzI_)%`N>AiFLl-T?_H9;`;@(DktbAw1+z$i zU~24bxt->mtdI4mtJMm|gOdBxcTrYReQ(TUfP6GXp`9nK`9s>;aC#Je2K^qdhNJIQ zw%5M*kY|fpH%Di-2PMn)Lyk56`5%-J4vGEbk6>!Q2D<0JB(+TB2K5oxIiL@AUuM{8 zt&Xo}mK9CkC-GI3+fRXiQ2x}Q6G3XG~wIFL}=L~6XYOseiV{!y0Gdjx6< z!Y>#Wm0Q_~aKur`ZK%w|8-4DBk)UGkS2!|Qi_#$>qV}PZ=}AoVLKAMe>@{BI(z~K{ zuPyI6%T<^dGDQ{+r((RrDlxf5fJ}rzq-tJ6W$Glp%!Nqk@O!K>dpPo|Lhj z;$#!TW~ARk`5r7h59jxu`F#dZupwUIa0ZuF$0UXq^TMqgK$;5K_X0{*u9C3tWViob zVnZ8OUw@g9`TEq{rW0@vfW^Qs<|@p3@u(r@^a;szRNdD-fqJr>QlQ?WuVf?g;)8e_ zotnEIFg#^h>g$(|%p4B8O@HK?M9Gws-v|9AH3SJHen%pNCA;HZrGEXf8WGqZC_!FeIJf zMD+2)^57&l`7O|CbPsD^pH=^;2T22q$gZ4^fGIe}I5s(_Fzcc}x){u3DPTsM4m>>+ zfQ*Hwcm$^f-{FX{-gbf`c4<75*KPq^ilQyhjMzFYsW7bcSGao_{ue-0alEo+^rxO+ z?3X>8(??i^I;oX)gT-`0n4nj1&^4Hz3LXMeU!;D;2p2U>@`7pNs(w}C>ukDPV7<+5 z6$+#`(?D>-f%rhVi#WrN$hF@^GF$D47r=O#o{T2iD$CcRNzTGc5=N@-oizI+$p%-< zW-jJgP{%!dhry~AdvmYc8y)WnJ;dT9THe`H?-LO=-XIoy-Be;}bNGi5-l8My8L}n5 zX^8rER>=U{N}#feNp0jz91eH^d?A2VPVlWmf_Jx$LxSu{MIIB7K)tD**PclH2TKS3 z`Zh8B9~qsfaQwUc?L7vqs}&k_D|yd6Pa-Q`{ag4Ca6Z^~fA~cCo|={CZbls GD*S)6+V!yj literal 14178 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 diff --git a/test/visual/golden/freedrawing/patternSource_main_ctx.png b/test/visual/golden/freedrawing/patternSource_main_ctx.png index e7f05e57658e622b033e5b258c74110c20ccf126..3193ed41f2dad460ecc571e14ff3cfd65556b2ff 100644 GIT binary patch literal 25541 zcmb4~^;g?X7wr?ExVsY|#T{CLJA~q1+$FS7C% z&y04fcFJQDTCfl*$H|`!6n{VAcyr|JVX(Sk-q|&n7jeDN(R`rqsdI!LX=jk*b0RY7 z^)z`e!Wxh7kI&{J9VCn0kI^8K-wk{b&F%t7L_LAzcT-~10(Jr=kbg%$phrHiA%#qV zQl^hL%9KJ;FaTci2017f#Z#H#az)QaNb;=V5)nto_B zdOo>D>^=KtUaOxU0i{_AmU;w9bT%e(!~(vS{4=ju3Id#uu;$6T(kda}VBT$S!ms0? zUadh40432C-!CG5argKnrbQ}YT;{sq;N~Xy6FGwkW>;EsalgBZFi}6%*((5ORujJQ zXOuJ@jrQPSt;1*f?#}xQSQ(tcdGEDdR+@YF@o$>O^bf7T%IfM|D*TA9j@nvAvO616 zg%~$Cx9Q&AVBH;WQU!w|w!6)lnHl(i>%$u9w&dpv#=`F6jVV%$ke+=83m_Qz&+GnM zQLO&&7Hk~QK(Nf*+neo#E-^~n&g>Ex*W3pur#MaC!2P_Z8U{5!wb_Pw$Bxd1hKrc` z+zpxMZFZOYt7D2}@a_EZ@v(DeiG8E`^71kRencN<1Oda7R`c@XG0dT*sp;xXGMHCw zHsZ4#gf_k*>TLe%Yy$-58QIwEc7pD{OXLED2(lmyMJ_3PY4%~kRga&*j(?n`|wnQXY7IJJ~tyb84Eqb&A>uRZq7mTDN-4V%?88Pj|PNKquyruY6E# z5qA~(R?dkr4#9T2RqE*Rgico29K@79-k?C zBZ@Es+ZU0pt7&7DcUH~I+-S;O>uJpOedg_)bL#B|>uEsnhn!UL>~9R(G@#k<>fGhz zx>8K-LJ{P$&lEvMRr=mHr(I1?&ui032F|fQPe4*f$9@$w!>@8>`Y;F96s}TmT<5Te;Q}p=Sy%&c@_T5hb5=_2QKyW(6xUBKxSHkjh)YG}< zhA^STyE&;26(ckF*QS~4gS08X-J+E}jEj3eAVNOXQ)AiA{1)`?-8(60^3LtglwPcq zoxbY%U=-X-r3?8O|NSY(M?e1f?Pq^mTU$H)x2s-b<&P~c-yI@8rR|c{N9z}+P|nNk z|3=)nBTukDh)K_4DB&Q-MjJ>NBoFUiDb#r6c5#TCd+oO7*;_^RJK!~^QCP_y@{6ee6+DHiAXbOfJ2!u%P&)r0?CHa%Vpy&!joYREUWmD5Usk9urhQ z(K2639@<}+E=#S{^rJH?E6Z4A_F_>zPf`LAx^-}HP!oU*+U9YE`|mSLGU04x;r%wb z=~P^w>~3*Pu`njG~#o7~hS4Da1TttzaWgZb3d)X}J4%6!^5pboPSy6PkH zy_)%$4jGHnDACv%%a8#fVEtYOP(l5UFl9;-f;nT2e?Yk=d!^LxtfvAiv2z^E+KH(xQHAaEHL-^G& zPR4>Q3Ra<*=gARdKZ9>+T9dxf%0!-dBnA2d7Mr8aN}dq9%`roYN&Rf*XRuSzGm^sk zC+Mx`QtI*|3bbo|y-awaScvFP)rnmGOOx`gm7X1_WOomO4`r7Uzw8Mgham<0M?HC` zjgym8#{iv^u^AbKyWYQl-|($AamES|MC!8dCYx(!j^3E`BU4N=_3^pNx%u9}&o(;S z5Gb=92>hmZDJd}Gusd2IUQ*D|0N8r>-E%W`FNiQE@YZVd8|==*tn=FhCN#wAP_UQqHA7KP;dsU ztV{LKsQd=MPQ0g!moeU^7zNNq8(1U(=8xe(qs$V_Rvy0m_U&7qbvBPnb`$`!TOOhR zDyv)oEX3lHY;Q&O@+#f@lm~0dNStg2XWfm~yzKLNZy1jGchO1M(tKv@J?KfBCCrA1 z83)7!NnXbSQua!MM8_h^QYns6xX4p#@V*p+GuQSuK51I7#iB+|;#l_Dms^;bnLV}o zcRi;T8oea2XaQt^XT{@1Y|KVbKyQOZl+b=5=(g|JQJnXENCOW##ov;3F0HNk-_Dik zv=OgXzDN|kd<8&hBa6_93HpH2~gjej2Sht{gB*V+x&`ZXMssbU}7N>>U4OTfA`kRtor5e!wZI{ zs!OKHVuQvASCkIjAQ?h-;#nf~u@nKGZ-AcAv7RP#JjUx&Ku2EAJ4boan5sT6uLu}9 z2yQqi9ck>8pWv`b)PVJm&zl<{#p-)V!i(1j3(AA61!a?q=xb9*RM9_Z*@WQ3n1_6`1*KeOiU1Ie04EXJmV6u zelR1Xd>wf}=v>CI!MPEjLP0#i1uuPErrnSp3rYU0!Iy)?(xa5EM>$XQ5Ajpe6Ne$g zOan2MKo((trlt7C;tvbD0efF26X>ogIXw|(l0?#TTB&L}Ja`J4Wvg`amuY{Q#l|L{ zEzu-s-hlnW(Xqy3$|bd^w)gMf)10bDdK=kQo~tiy1hk-){FL4%*1-bZVUf7IuN5^} znc*)c{?S+1&_oHn{YAYULinj?uCN$-%=h8<8KS(|z!Vej z#u*sNKaY;F3JeY~pcuBYo7U?>aD*UsX-`P7#<|`^t)!uI_bn`I0Y<7Qve#z54p z@WTzB`JikC(_e4M8<;nvFXkaGzbyp-LvLB5>a;}i*D(v3yz^^;n1^zS=sKeaZA*vs zyq>bf7A*cE!_R4`X0}|&!5z^+pXz@8yo&=XcM7U2#Jv6DypeBRWA!EqtJrp>TH*50 zE&IX{r5H<1K2m3Uy#DYKKRu-hpKX`G<)RsWHM<__XDQpE(op_W8GGY=&9%21h9Vs) z{&TlTtuK_j>~oL!bfu_EcVpK}_*+<}OhgLkQetmU zjV%~6l@0Oya3lH__4W0yb{evxir#KxR;t}2i$CF1KsW$^28$?vS#e;8k(&MGs~n%f zrXE!@HZ!D19hHzt{2;_{d5z&U1hJf??Ye?Y$A6{khW1J%1Xih!hN%t=DsD4zj6mK>J+g>~v13XDfS{pkv>mXGp|OxXse<6DzF0iIAP{rO#@c#2VRvsY zuMfy7@S?~;M!8!gg_uKEN+F5LJ`vWFj6n!z;G-a#p)$vf)yHk5T?(1vFaoK~8q|xl zhyFo>{7wtHDi)RT`}{H9WY8HbB#{&i4=fv?Cb_abR^|$qomlQ6nBvBfGZ%F~(5(_v zV0q!c<|c@W$$P(Fl+Z~!be89MSRM)OmzA&9ZqVN$8N&tz;^~a27@r4XT0`FuJ8AvJTRpWpUIGVgtphS7kLm=gk@f!1y4sAG^-$d1CN^TrEl zT;ITfe6R0L`q+rAKlS#WRSi2poI>S>xI>kf9I#CPUkDaGZ~&2XCcQAc=fvO{8@Ht| zL)a|YiFS8)*TRE$)K4yKx=J5*x|5=Tgbr!E=4(JK$#jEr;>PnI9MjUJdThQ2yU_Ff zil3Wbo2kXbUZ-G+L>*45z=H?7YTwtY${kH_OoZQI0c~PqYtMyB9mrb1}T4E0}p)iX^TlfZy@OzG6i{3te6+o9oXS89z&iJ z84-mBq+n<-nM!V-bv*&(05->*&|CQiC{i$R_YM% z%I^f?6liywxzkk5PKQuBTQLf)W83_gI`hAnSwu zXq)t8+Qh-a>w>bx-Rf5^U$JV48H01ZWJ2m(!=)MbHg~_=Q&cO+D_yll6nKv*HH6)B zWt4r+v#S!EU|Bw)3FIp~;%k(O-o9yFMTr*M|9xX5J%*X_b}hU(EwFDAY(4Pr<=r-G zPq%{=*JEA>qkQFXgLSWFeYjZ4s>ZYm$BSsl0@GF zz*b;VNEZ^BAsL~cJF=4BX|^Ef!&HMBt7a&l<4&kTR@~KIF}<4+bq8X1u;FB&fxMnD zaW&%65K%jYVmG0+ml+1ADN6i|pC12}=1J-)#Jrl{)xjfVowY#yGFRGPE8 za_&noxe;?lml?rt>vu9ayZQ_Bn$M3nvETKfURgD|(5sj2_ity#qZdx+57C4+?yoR# zV|7_aB49fgy2drLqc~VTe>y|SyhxMt1J~WyMSoV#{u6JbiRxDx>>stBN|3zUH%1n{ zS!y?oR_MZ5znN&lqv(X(GwOMUS1uTF#ZPii3HgY2 zul#s1X;H`wH~!us5t7|Wg7^%8s9{ zPd`@#>&GkqU{r-|ptP=N%FwjiIo*YEP_RHge*oqBIEU0&@FZQjLpE3C)0K{f#4DYE zog|D%)hZ-^o^5Sym4o*GY=buhS`n^ZmcFpb;yUx==e@-jR-0m}M<0fyBo^oRzgsyn zo6A1m&!4O>^7Teu9KSMa25VYBs_^4C-{WoX?k|N9dkK$Y$^y6^?P6qThXgN`=)D3R zh#Hm4R-K>A)X9m?B(MwyDuZC3sPIbA#kR#&jx1G_-DD?hiJM0$%Nx$FE%3EJlz82f z5%A?-$25)Xx>_T{rDA4D9)_y78R8q5MW|G^J1kRv(zU-bus?_xV-Oc!3muRQE>=-`UeRyzzw12+4_=h8P|7Vh?$*2n9ttd2Q0yQdh2Sm&`57zL>fp(WWbXAUL>ld@%XVTC+D>F>s9W>j@pVd;j0&XxQW2Be53lZEAIz( z$OtmG-FarOIGzc%6fAmm{@zKFgwH123#tonWnCIiWSY{=2w8&6iiI$DxCWnfTp(w) zDJDDEbb9y;$w&fRwg=<>1NKF$`8VJv`p5Mc@;(&B4gyilk8)r_k_EpkO;kMekhIBc zk=dK4O9|A-^i!l7&_$;(&8wvK$qK0+lxPx=!6_;uA<3ObyCgDy{Ec+CHZj<3Hv2D; z?Ag?*(J0{K!5n*s&(UPdxp!Oy=NKi9UX#tfrDj?zwbUQ0bge)wV{B5tvtNVz>(9UwbqdF-L`X$uiQXRzl6kNUGiBtnQg0 zwMkYdm`va5K1P0m&~{2t;`%>6+#&+Z`Xd!+n!X>{a&qBBU45LYOEh{5lXRL_($dlZ zBwh)G^@tM)Zz#cIv`(<{svZd10_`DsEE01i{Y1-{HOm`T^#W}!H3Qlk8_7ui%0!39 zY!l-T?(X|t#oeP>4)Yu*7K*k* z>a#mk7RiT$FJNp3+uP5us)M&7D ze5H~JwpZ55HEkSLN4wAjO=PQN627IEkuCS4OxtnfUVx5#xZFx@BPDIF7!|D}=FDH;`XB4}%{#6V9C|G*ygpYC*(^kb zzw{2rD))B@R#3qYWU~gBURvJUn269oR$Peh-pOi9N7ci2qS526tw( z2wUm!X?B&eF#vo#T&OZIs#;Kil8%uOMf=UUk2YY@y^-y;fl`C(BGpN;6dAqIq{YWF zt$kD~eAQS~h>BL)y%4EYRaNFj=H^mChG@SnUDkE~5^K(68`q=Zd!Xn8Bb|NJW-kJa zk-$umC=nT~%@#-a3S;&}+oh-a{s=hjFu)$Lrxy$frj^v|vfWGP+u)sTsKlizn3zJQ zc6afEjEMkUw7A{i%Z+ZqPRED*)(ljz+b5;WzLyw8?CP=vYDw71ZgUJJ_)5FdzP?mJ z(#HTo+={bEb`_qQFL~#aKUYtFx3QD@AC0l;~lelYz zzdp1H7y%x~A$LKSH9T!SYUb~(W#knHGKP&jE&hh`Ar$Q zvR01L|aAnSMb3b>JFme#AX|cqwh*ru9qBHT@#__BD={EdMN-%J^ ztOKclDkxYZ%wi7~Jsk*mOK_OUxav^lLsM@9d8J#vxNx%IZA@Q#5Bi}>?c}4&%tGSV z;|uq%)4qPaI&yfbJF_#;i1j4`1n%~>&p*iRHCL{;!|N}-H`w$VJ6yL1asJaV7k!4! z|G7oeN1+Lj14zRE{TjT~1j^5-oZYyl6jla)f1?GCk$mtOV__1!i-(e338JxtMlKY5 zOa;lL{(esPs{BuvpjVjwa5VT7D!_u(^^B}!6&cMx^4he`bH zUm|yB)uhUH%!z|)V8tsJ!B{r)wIzz_jRIg~Ash0{iX~S-w+JnJVE8eA2Khs>-lpSx zx1hCC2J`B5FT6~N^DH(8WVAbSF-7CL;e~$n4cAg;&D$!G8&=-5E?b9yem6WbPCZ+q z@&?OnNVXN)L<>s)9p116MbKn1G=7(rq0G@VJz+e@a5}_~+-s3RcOK*=X}MO9+$cd} zFFvgPyu4d&^URyg{_b+sjn_L$QmN-~>_ktEHv_+RZ&mm=F3rb7Ts$^6lENYHFvS%3 z5|^Qm4_eJft?kJ_x>OPHMr+E3x=4`C>7sS1g@A?6IwnniiJlTWa0)RI>+oiO--0`f zAkc%GE>q?v%9R#wv+(bFG?kM=SXg+{$143*{(%>@i?|RqSnTptOb;_x%@M5J7weq5 zx0*CGnYcsdR@;V$&OWQIw`NcpHwdank1FeWg$_g8tynihNr>7ka2Oj9-A%mvl2NjL zbHK;nAv7HlId=6Nu;)^3 zpo08?M?TT0QL(O+LdnKsn^Y&t6#1hqmXvWaK5~)ijN=`N(|e4|CLmTXs;?osjUzee zQ)GhL8}ILifU=2TL08YQN*ZBj-^1+$si%^)xNa26(CsYBv=bfPUxxF38rzm@jg5^3 z(S#LCjqVt#KIJ|y*)2JGQ*T)AvJ&Copg>n^POIO9AZk=CnoFg2^J6x*>An8v+m*h_ z6Wz4w)PDA94t{RCxV!9K)(aV5?u(o~p(doxZp&aef2HyI^=tC!SY0u`0M+-x{C!hy zWWc17f2g*?vtyoMi<0B+yfiN)xgT!lFdl}jR}6H=2Hsjqa-;cR3*l#bV1rBjJX80m z7>#*U^VMirU?9qv=&TbG0ut_+s3elm+HPqd7+sc z6n2_R`>Foh5#6kR0s)g!&X`1P0MJN_J1z&zV$@rIoX+K)>tL?OQrZ-qoTZGv;9*bi zHucCVDTkR9I)=jXfs2dl;TKYnKd5`nCu+_7Be*I5J5ha%C-AF4=fNk@xO2B{>Yb&= zckhKL46to zXFmj0dk|B^`Fdx}E>D-SPc@RKLkA9?1i^fYXaorK3uhxcNsIq<>m;2M08ll(Cp2$W zxCpNyFk$d46&sS4mZrj7YI{iKzs|NLd9x8xC8V|t>WH+AL8p3C$>fHD4k|v(IBQRK zBp3Z6J&V%+uB?}^k=)EEzCAomXT$u)7g(Dv{p`|IW+u5Aa}7OiVjk$OuNxvnaxq%4nK6vPL9YTG_@)vS1aXbiOvU-7T2d_ogy{EeP0O+ zrx~*uDwfv4Y37lNDDOOu0z?x|LIxaqiFzndsp2B6)2mEzX?*R+hy7B(+dj!Df$Dpc zKulsbK;92ln-Q|S?My5{(WP1XUh9^=)UccF&FkH15L}P|lpi*yZpYIDAmGtFAi$j3 za-ew(XF2*ejmRuj)$Aacf`AY=Z^WpP4vE((V)HaFkQyfgu;0m-CEA`fSGk#_v7s}oovS-;S* z22eF$qq2|4|04hXPdU8A_;^b3Ci;llWo5PlL4GW65atTGMrqBCpP*ECwrQ zUn12X974hD^G)hJFS8Q_n*%UbA3jmU>EKphhaJW*oTjMw#$wU|v|lUT85p_Zl`TfAw68=@2B-pmLp)djjOIXu_iqiS z^Y<$>CVjzt?x4LGI%aM6jJqM=d<|TsJx~0BKoOD+vCuy-%)aCBq7Th-=xA)5zmdU{ z+#CGQ&Y~znXiiF`d0@~4DUbm4Yy#wA074_Q;1{hiNZG!$PVlSkRe-QKqZS;L5>v$0 zc=G4a#j@<4X$my>vS2{Ag7?UEItZ=cN#kDJiM$g>G1wK;bD<2ayX@*(pOmY}&iSh- za}n7T^#MbijF`g?^$@d%Z@h~Z!&Es}X1HPInI8P;PkoX6PNhFJDstK${ZVw?QX7b>6iW~xQ`1>$FG^gqme%t=Ra zuLd@1`=AZKTjVt27=%SR@sgR?O_@G!iQp*cqL)sqkru};S9{0T#j-?COFo?TExMPG zwc?T+0xW|pH5(bNYtEQ@M(%zxyqJa7Sq1~ZV3uiW%1AF+9M59J7+pu2>RrRGj$U`D zG^1l!S(Gvw;RcWZE^FZN$`Su2-L{jo!OiHfzReSEChB#*Gv-UMKbwwjXlzUq_PH-= zSY21EfJNcbZa;lDgA%IDPc(!O(tB5QFD;3LQ1B7^nYWSck*=0TacT8d{LE9B3Pylk zMs~`~_k1*ufEkx3=fgfIAN?Zn(FApoi}PKUthlQDVxj|i-Bv>>wKQU$;3@MSg2_-*mTA+&>ZfS^ z1%2uR{!c`sTbGs6-C#hgiA~qM8MUF1g7sb;2E+7=XoPOts&l(zb0kk3|H^+ukxmS& zo}Ifrj!OawHh;ds$0~=*gVTe>o-@%SNfhqMk$GYxBtF2b^n>ri*-%lTiU?f6a!CAA z0}Z=`;HAXmca5v}F6WF!!RwH&DQq>CjiX%+yO~%3F*a_ToZDB6DFSOnO3?c`#a+q> z9UPFtCp{Vu>t3DH`IVKG3JvkIe%0h)FCiyf5WM4hO`VQ>CIvH^WzP#ZnpUf(ATO*m zMSq9;s;aDd7!o(z9FN}8o znwQ5r&3II6`T215kUiQB6{Dh&BwxZAWfUguUulKCE2HY z_o~f0GPlwTw6Ugpg)-UfNW$DgJ%MpzKMMNak7AUG+J{BW3O(M7%9f60=;raE6ddq1 z#EtxW;hFx;W`8>KLdnG<`&q|bGNoZQDjAmfWDd)$MkaLu{L0DGBK@JKmR7x24y2D) znm=}B>fTPqqGFPxB`HcEZIE^z<4cgALgKHH#@jZH{dZSuu- zUUTR^c4Prsy%4*3FO|<10nI}PF__U_VXZ`p`xeyWRG|EqmRxHXer&FutnS2$d0QEu zkd=95F8tCPUIL>|AvsqwnfnHNFss?MWAg?59M<9$y&|K|FW7>teLkuk@|d{IwBl)G zK&}Ia?!|xtwx)h}u%N7LK3{5DMk4oavBcdfH_72(91R>vU8HbAe28(@88wP5Vwl-8 z>cxK0k1p)dT1gwznm5k+l=YQ&)Zt0;(c&Y`PEZQ^93_=4Yoc>S1VX~V#Dd*H@-1QL z31VVj)=e}|h-fYE3oTMnZ1T{@c3J;Z!`B9nA%sBG2x%y?Xm+);So3`AYR|}t-a9!R z=OF9c%81XvN^s_2szGriI_OIj)z-#G;FbuH=g!$LN(S3)J=J#QjQn1===27^hl%c| z_InHYjvutALuj})CTv~-CuL`3gDcRKLCT3&nDLYxGmT0Pbs+vkD5UgB35*CJGJ864Xlt>))($=)8~J^yS5*aTiyoe?x`2tL|gQl0jIzG)WA?j~D1| z?I&1HzCQa=I(Tv=8Vk3>`pYH%0}xAD2DMI&bF1kZ+POGDk-f5|))IP?Y_oVyr_kU? z3%a52Z!;xpyX}64MRdgN1_s`+q0CeQv@vL%nfJH_5JU1sae;F9Jt<~3a3ZuR9KvG^ z1{>{sOM0Idg43gQl7FvtTiL!>=E1r?(1OwpPQHgrC#&@@E{QHwYyq z0!8B2Nq-T9Cw}|CA=4tb)y@Q+V_b5a{bC*3IYe+WEFS#>E;v4Ng?38x8rXB`b?e%Y zYhw%=30<1O?X%$}9``-$1beHL(!coz;H50$;`LGjIF@mi2gU%-xZPse`t`KePxR`f% zvLuBLJ?*081t?Q&oEf`6{&C={rd=3~#67u$Myd1=)BZL_i($z{Mr zpY#z5Uk$eU9EmS2n-9$#Y1c-Hq79`G+f}nlhAQc7OnnAK?rs@wau6Hf4x0X>KlflL z9?gv^9B`Kj3&eV)uEJ3&(l%6qwnmG{^L@hxj4mD7Hu)lv+JBDg|J{Hj8H`p$Uu9yb zR(!WU_$jVx>9JROxJws`EvJCJ%HG%BbjB(VUju9iEcJm{G?k})-z^c^SsbjsJL5{$ z*Qk{u;J$G~EW!1$5_mCI#f_#O41(X?Ig#fb=uo#rA`1&kd+j5WOOB1VxfJ@^%kV%z zu}XI3r?9!@RZ9XP&uayrh60aDj_#!M?DHVL9w9OaOKTn<2`zIVRF2SY@YbHUqceqJ z=Teu%EXI_Ew;<~EKQGiqa}z|+pf6#^^}&2a(JwJm6t59spP!bvOeSWdIT+yrfoy=n z=-I-)z7njxU4^n4Y zr6qiDjwLiZPa`skz0NqCWI3ti`A;uGQD+n2Kr_OK*FFarsR0^Hr*tL7cK?}Pu6-KHuiv!I;} zsF%9+_(lqPo~%pU%*^sq5C`k>PCjaNh*MC>G?z0RWF{_k_; zJzdhfzu?`V$p+qb~Vk`*>iH@LegV~j$Wpv&!8C~b7qWkCG(2n}iyv?d*J zp)39+!#>?7BjtJUKceCQ01GynX(aEoV&k-b$ON5X>AkZ^SAWRsiN^X(D8HlZ6W`p_ zw1wJ8COuhZ{WTJZ_+e&zhMtsi2I9@*S znB+Q>1M*_+GVoccEfN_^OMd3mWq!DEtso0RT#L4`rM zM3U^@9pQFy{^{KCsr>_N!|)|#hfqoUWgz-LkG6z(^q_pCCs-nW`=9fV^%o5Q!md50 zF{_A}c=9CfT#=t?6S)#?tQ&+;$k@k5pqFZLLa`A60$g~u7%1e)Fa+*O;t9j__-ke3 zvP=FI5e;BdC_N1$jSpFR6i&^{K-~1OC2(?@nSV{K7c7=?ST;>m_~HR6e0q!*W5ed* z*Uh7{O9cpmqI>ucT1@KAKF#H@$wJpib(Bc+FwLf~l3$f(`h%tQbOWgP?Jp$?ltkvi zPrXM{%G~Cf!YTsB56k~0jk(9c6-<$`I@s*=!OWBEg}s@g{L$JuEdI|vdL+MIk9W8} z+?***_6OHyohr%xTSRjJL|P#LJ>z)FiZvReZcDR5epSoI{@Tg!QJiCQMn zlffZ19=;`=9g$>9I!759?-TUXg%ez7g(PO-*8xV0FpAojPLX_Cahauqtn&gkN$e7= zhjQGBs-H{AdvGbYFFcm?Jd#05Jpocu;y zG<`+?iX(8Ou%MWn(KqR0)mN7tPgi|FmOn}|hUkA>%->(j)p@S}mjZIEr$O)lgA&I2 zgYXSascHq2)9%XTUDB*%jGi4ES_il8-PjX%PtpPb^n8oMI+ChipJU!PP&3Rhi zBOjiNoC+9!LvaRcRf(l)(?B$ljk%AddE4q*Doy<8pm{@c=kR(raHv>TP)9KQ2ay{m zM_4{q@#BPDrKZkQjs1KS8o3^UjUR&pq4|-(h>|fzkfgN~>ZQh!SGQ7rr$e&iQX-Y# zI%LATX_&XBvU2R=d|1F@{~l>)MnbGELpw)r5lq0@lSmw0BFF|z3JoN7DlEZG5sD2& zZn7PyvWlVeP7*$XoZBPgc+3q2s8@1_TX^`Ku9vQ$|DYc>G}uIB{jbABvh12(9WYD|_B(VEA+A&Is8;W7hI5c=K!CfmOO9h1$M*s)z!u)?7d z1Hf)E;F{XSl@DhooYhvZ;`x)Ek~ZbW9r{mGsotU}hF<`2ylg*_{iog}BIOhbnQM>& zW2Y`_;odHxKbk*QD??*X_JC^dbMlXFf*nE1HInZKf-5_E^-ebj+0k%A);SVo5?;3x>LwAq56F-Q@K2xyeyL2C{)jB581DViU*BPZ zjG%zRflP3$aTv_Ss`gtE+tMtKNiV;7`{%Puw&>j18+lX?hd((6_VJPii}cyzMUsC| zq~pk_v!`lM!E-EnL&+Il7+RGaXgbPoGE4US7U^-KoQ#{lul}5EQE$SQmdK$-7n!lIQ|@0Z7Nn5 z8~&e}_^h3krG_H=d=WN|&Dv9x*`5R!<{bkrJ@Hz#=YPqta(S zqQ{PHzJ`D8{Z>1NT@Bl(sik00!zn4?jgfcz;u^( zy>+stSurH!zUF2)Sq_>9T6o|uc2N)2GKouRu%vH^aYuvSBW-I{+8>S#H2L<9#5biB z1H*{(BsjruB)}87F`^|J`^)6L9I!79N+(?&2X8d)7uvnQzk<>MBvhT`T+ntm zCJbA4K&L~HB9-1iZlL=EF}?+;rng|FJrCP_ZJAVU8?uIIn;IJbt5YD8X;j&9Qi@3n zHDAvQmM?|s*pctS9qGMG4px~Qe>oW(B+zA{gatCY#iTG@O888cjt2}sBZcSOgWO@m znm<5kJGIT|#{^W2nH(EBBPO^b8o!vm0ehR-E{(%ylr)a7w#ddQk7rBgTd%iYT5g^m zqi5S|{`fD_W3ViMD?~%=X=$A+NZ#j1Ci+plH{$qd5+O&$*EJfhO04OR!9q&YAL-z# zLw5fGpl#aKU(R&ZaRmWDsrHU~uQ_Ipkob#iSHhkmZ+}*L zeAZ9=C3n>@S>xMuH~AmsyIRo?IpXWqUS78ad{v;iYSbNM!Sj5L1ZxyO3|Fr_0H*;& zRDqvYHP#R|Usb@r{3!fR!b!2$r;)O$IJAHikItR<`U5fB`57AFwX3`}u=v35U!X{F zhyC-sz1`R2nC;|)%G+unczOM-$fM0~#>ruwE&_GWKTOGE_&l7XSS{}SS^`x$HRa?L z!$Adj{<7~x^6~io?2yajxBe5xe{D6>gn6Z7v9h0Gm74`Ffd1VXG5?2~PIc^)41$lh z=eA_zPd5Jk{?qfXU+JuHoAvMi*G>bz`XC)>ilLkV8@Q3js1CKu4K)_I`W}Vo0z}@6 zSh6b{-h4gfHHy5FUjcY$mUOus%$4~yGnT7%kC}u(-BvpN?pcpLe3FpF`Bcim=C7|U69^*uOydU9GW5y+{$YoodiBPt9e*d4CdEXG4F;p>=rW3trUCa@ z(Yn<2t#9^DBroT5?oS*;>b&BG98wiinnup4q*{@_C$dqL5a;*5QH=R^EjIOvO*N=6!;7UvwdE zE*A+`(rxu?0RASioCy=uM^cX@I@pCXSr8aD7PNAbXITynbfMS~vc9_B@YKcn7&;J> z`+&+uDq=^yo6*t!)tQ=lTsP#09w}@XID(rVN{TjE@;b|Xh-zLi8ET{}1l^a`NA5M| z-<5q`dXpeUSvOEK>lU9qLq(m(JN#h%s|bo=$(iyaLh-c-w1V1U}%x&MeDvidz;uaAhfqf0Kry_;r{k6$ABtZsmmn~ z>R<<}s+(NLp5z`7Zu(x4)NMutz@ler(H&pGZ^XLEc zbk<=}g5!CeNdZYoDN#Zi1V*|UK)O2xk(Q8yZ;CsFI zJ|E9Be=}$1J^Spv_HV7p2=O(O@cp~nE~a0(J%2nav>gOmnDzvgfv4U>Pfz7wW5l;% zW+{qTJW7KvDSz(Dw@4Vz$uqDZx95O&D@LK#O#&2gnoEYfzc6z&7(Ze^Rb%ET`?Xwc zlMRfHNLqgIfl_R%7=Y-iH|4+EQ(0v`9{2raQR)F4E_H2fs6V!VlhnK?qA2K;5YFg- zv8<4#A9Cdxfh#RrKZ1tg=+Qq?bQ^xq?QEGy6YK(4nV3OC&+h?1*yb*`|EIY$#+(&T z^JgUZ=fUNek(;VSU49fpRp4&X&+)(7sy@F)Sxh?YoQyTmt^S(b%NPtvU)=%=f7I1k zeMm@%HP=hHwqkl<2>E2~#no3^#~10O96#ivm<2{)lYu?En~GKLBk$sJLX0#HnAEXfEjH6e<*Bt5(Dw6&KctN3Y9mbA ze1v+UA?)p!QgmwMz1--^zrJnzkNWbP-+fwe40tnf91b2bvEP3+=Q9z{_`ARbG3ai3 zaZXfCw`(LSfmO^@!sXAm{=Z-SQCABrDiqz@vtL9LB(CgD{41QXXDKyvBvEC@;_voj z&{vPw1`|3SJXGeEBM6GnO0oB>eFCX*=$~MZG&M6Zsl>WZ|M}xn$D7iTR`1`578>~~ z^L%XDs%H@Lc9GpHuokUPL=Ki0D;3k{xz27op`yh%^P(3aY0pyGBPFMPQ;k%UbgpoT9yOGqTl&~6M#nY1cH$%z z0I{0R2B*c(waoq(9UKK@X5>wGU+#K&>CX}sTi<8Qo1(i88YCg)NU?*qi|j55uo z$GlrLc?{A6`;`Y-l73ftb2ox`0fP9@Gy{vecFR6C@#~6s9YxXmJ(s-fz&=Px} z7dS5|FWEqa5>qd7<4P4SqFt4IP25vTygeaEF;2R~tUlS9s43~aR3sqmIDgS;&g+$J z)aXp6V>*`WmirU3*8uLaZ8A-X8jK+^KZ)0GXtDYM3aVq>I&k>8bAVWEE)Mf8PF6+F zH?>TqM~oeF0IBr!<)yk=PZO|ZXcEg?IvDgUI}MtAs@s3C*nw9PuCrtT-xAP+J=$32 zxjO77RucZ5FItW%!*Nd#qEdWzHw|p(0VVq<#KzZ(Xuu69h8}*a@&^sdWoOE?;6K6O zO%V2YIbXG&DKasn+HB9GMO@8D7$@&CquZAeSLH*b$EzTl0cm~_kWqr6pZpP2qs3SC zHqR`dbT#yj?)hMe&i7r1Y=w(CJ4oAxVVD0m*+YE#eL`O z^73-SCQr0W6tinjhv0)E+HofiWArgB*rz5hqRUyVx$!-9f0O36vIc&5en_AF^tpVY zgl66-3HrZO6_4GSkT0wZ-U?Bz`qIet31VZbsrIQ?3zW^rM`qyGIs-Ll!+CdLg6z+m zNX6|E>1(GF`>TvexKRe(MxCD!KJt-%75HyNP}R9JYIk{>I`JazCq2>gQha->aKFX+ z@TXRO+%{*|b7@ao7M|}-)w&l7leb*J#+2O>wDJ4=;qf{R4O@C@Gbw z-=T&`VJmjxbVSpjcVz@fsgvdx?CZ7W|6X0?R=acxw;cgajCkwSR~9-8Jrc#CWn+hP zf|^5W-SzizYoa((n&sQ618;J(W?Tk}GI_=P``dia@jbT}z-LAaB2>h^k>yr)U$Q<1 zh|v-8fMNCB8>z+jrq+v~T>L|v?9;h*LSq()lnq{^dU3{`m=$$vBga4ZmXdPQ3lDJ4 z^1Dmj5~;y}H191Q;f*V>9GCl~E4q=D!t9CvjhAD%9>mbV;6fuQWK@7lDAeA5f1UE6 zf8FcI0#g-KSCCO)=WAao1N#sbV8PjLH5ntBa{9qryU%363Lg@WcB2AG*oc$%Rokx&&@(FKSf<>Gb*i47E?G^D zH*NDdGX~23WR`Oso-eNar$b4n!UyXVw%w0q?$cQiCnhLcnY|-Bz^f-T`mC{p6?>pT z*}d!xe4>oF2Up_2{tomG4P9@iY*+@S2}0(85X-Dn1Vjn=vv+mJpv!-2@;NJ)_2)Vl zJr!lW4~@4Jqf@apBDK_`@HU~vNAHeNHX1X8^9)k?O?ZPq8q>x(dgDLK=M^b!CBOo6 z{vQKOS`yCV#WEoVLhLy}Ot!>5`8(4-Tp&n<1ZIYFt~ckwB0nr^A|eHn3R!Wb@?Fel zIi3xn(p#~nEVaGDF@_$Sp@tvE>MiQ^@;W+%`D=Eg^k;>acFtJxjJ+ida2LOrhbE_L zTqFdyF36t|n=@%(EdWt+12|>HUWFL7kWHfN4v~l#P(AWlIRn z^*K7O(KmI*NTt5E+Sd|Q4{;|?qSw_UzGlpDOLX0b)O85QtQg2-e|6cNsqu5|cVB^w z7xI|3R~i*jtluv|dlg?OBNCoI)Ld~zWBtp%WKsoa)7-`OJ`6fB+j>N1I!p4It%t-? zY^P!HBzdEkNi)h0+KUHxVz$qPr7Y6R4?g<%r(82%czNT=A%-b7T~;iza0e3mmd(Xc z#g>+t#Jx9DIZ9{(0elO%Dj_*;0w+P*SGdvAX zTK)$B`pqb9V;>WR1i!_T+lTDQ3^d|?e90tk_`|XBu1!$= z?)%@rfBUu9P^~EtG#WX-0+;#Ia(rlAI7>|(E(G_1_3MqZ@GQi3Lc_LrMY<7D0u=UP z7{>CM|B7U|XE!f-dL|X4s}C#sI??XI^lu_4rGcZR@7l4mh#E1l)p<jQ7>J`KT7t@7Q17g7i&i)jj8_X+JLLr?i!PWXc2VCHa~u#U8Ydw zdZ%c9yhm5s+j`3VIv^&8pWLr{^r12#iqzAQpl;BoWKz^51P`JDqM*`@$AVXU5Anhe zLuN5#Iu^aAM}Evl#HJJYeX4378R~n#d?0IJy~q9J_F~1?qi}2plHd00<&+#(;7iMc zM)6lr^_+(pMAFWOLH7)|z$Qht@!(-O8SqAerIJzR?k1c8p3s3Y89OI;FdNP9R;QRP z)oGg^G{j3Bfe+i4Z~4H5e(#|A)hp|0zvAf~l!3}Ot%`h=v*vY85eZ^gRgB@II?Oe` z)S6p{4xIkqXgGLou#Uh38inz}e~!^a=plGRm0-{oH*`<=8SJHCAgQ$Qz_8hdP&U#l zq5Y~a?h5o-wj86&>%$q<^I+3f@tx$8mL0!rj8AoH!)_`aWYEi;6Y*y~6hn0{qWp;P zpjdi*IF9sQ9tP{kb5XTGe>WTb^kSaobyuBo&Q_uY6XY`4b_?=|Bo;At?U}8`C@+$S zGZ$6BZsfaNR`R^uZm@Vx*QQFvbV$^Y`w24J68lG$KUpUf?N`KRG1hv7M!1q}1OmwH zWlzGubM?j?5N-QBE=Wt$q%7q?E^ZrJVElZVVJeTkM7&O4a#vS$5}1}PTxlm-@+7zkXL9)9%mtAINyt@K321Pd--^) z-1?gP8*VPFRnY$@IoBG=poDYon_uS#oiWcVro_R}P{k-DsDs%2K*qzvHu$jz>CKFe zft2X`WS8fH-(v#KPL2;zMMXt{&Q=9Kg~pQ!bwnR$;6rogCEK_sRp+>?^XaV4n>hkn z^ay!vw}Q#7%u2D_Pg!*X0QNVVo0*}a_bOpG%>te&BQj;BarE(!-c_ zl%+5O*DJ8#Ow{SocJzE|NvUCh;tqa$Q) z%O>cXtHq6sp23Ir>AkV{Zp$$Gn*{RBISYerv$DLP_vgr6v0Qg%YOG=)@&{>{Ec1~H z8i*%wJB(Y30%RF+f$+Pq=AK%2NJ8<}pgMgrazWto$y8HPS_Xt=)b?BS4~Z^W#h)vl`N%`Y>LISxiQaS*;9@TRfbPkz{?8|E663W521`}MD(Zdhb(+w7-etFtP@>`0n z90o+9>5)q}w_Q^+)y5x?Tr}4=GqY!yAfvxY$hUB%@gh!}y53hdMe+?-3Mcfgp z!mJRyqLUAE(N>mkU_fwROyVtl_W>w-ZPcol&bO(CcFI`Rf^0)v#Ph$Sd;*114~jHO zYIlST1;+oSY6-=zO!P4Gt&Z5^kwv$AgpzlHN2~jvtA9H22zV6JEX4fWInz}%yJn{! zR-cvg4|(lS7q&DiLpv<RXRMMgOn?8V`6FUI;L6QgOLQ;bED(GCs@>0 zELngkH?-e%Il)i7!*5e{hA1~OO-RcK z=$=O&@{*^$Qk7BuNn+*HIQK7mEQcG+bc-x1Lgy-xRLP@gxU7_p{>qW%S&UGn;IPqw z$|#0ZPFA<9=9tBuvnmB`H-5D%ODr!9IrBVKS@Zbjh-BESo*TZJg>QA`L2087bfaJb z1K)u~CUv|!{akrRZWe{yZ&;Ovz2JzXFTQdYR?9WVi;`sF;&Ms6mF~*JesUPHc};Cp zk%>ouPqDfBjYxw^xzEm+#AL4cbjuN^4Y$QBwD--=5L+W()|F35e~U{)Up+q+t%a#2 zT>>(GZ*dakb-#F+6voV6#F47cOG9mNLrM|MYYF9l5w~*D2jZ4Ky2-F%etauJD~X$+ zbD%JRUm5wzes^YXf96k|#b>)+`Rhp4Bind(H|*^*A7lIUhJ}ExLU~+m$wUQ8B{;Wn zB>g6T6nSed{ZglRgW2X(n`BcSAHt;ht+iVV$wZvW2s(SPjHqQ;2#YM~x=!gCiItc% z|G?vN%BU5C=@e8qP+C+y{R>ng)ws%yv7keb{%b*buUKX6mHmtW5&9FaXo<6S2$Xp7 zc!~eHPu@OGrF?>p-Vsba!yJ#$hc3#Vh|YBy z1XbYoYtE}GNcimT*|l|z=N?;HPL5O#4m8Bu!Yj46JCoZ_G=Y4Mwqw&tRR|X&Y$Yqn zyC~QR*yHs5S);kS1oZ3ZE@=c|zSpQsPQkcMggyECQ}!sp3iXh&Y3NR@x~KXjG=NF4 z?*?XA*8vSdnr0WC$)tqvyV6ZwdsL9WFX#NDYl&^T>n29oOCns|K_Z|v#H@pXjRD&x z-l{liezFf|IyfV6M^7K-R2l=T9Y{whO&134nBhut+Mqwxe|;(QX?;V1@O+Z?nLN2L zhNeXy(q6~yG&mZ#eWzy2#$}2U)O&Wz4fKEfxKTuX5+TAYd_k_BRJ>(WGCBT!{($@* zA+o8Lbfuq~T)H1e>(?NWB+vT|!-UuVxEUJ?fqX+OO1ZDS6IjHB*S}!PMA^0KGWiZ5 z4?gzQxg)~a#cJfE^)FVoyuPnp+Xhd}f$;w$BwIUW39E(E*9yDZnmVR3{%+7i5Aa&X`9u-R4iivi;pj~K*bA?*FU{rPBq`QdS0Bw_RivUC0Yr+ zTS1}Xl6|I04rNu#?N6y8&VvkpeGr%=Sa}U`66`5eFmxNjp?j5Cqm>AY`P7(2l1^o1 zXLEV|9UX7zy_NRH#zrG}E$w==5C?~?{lJ$8{a+f22!fdye7WhAFMb<9MWFJODQDJs zMgfE&sN`A~u`DIoV-077KWDMjyx+;mLHc&a%AqW&*XeH#DC(L91Ri|S|N zso3L)uDKXkD5Dlcx?jKPAzXGVXZHTD`9zI*w641d!T2#6TgPRjjT#apF-CacliZpA zGg!->>|}W^QqyD0q$a~c97qCk1Q=9=)u{PLf@>04(k_spE~kUC(|6?L6nX1dP0<-& z7fjsWY>u7;bhR)HOnBx`f&+h^^p|Sb^;zhkZ|v&|GOg{DNvQUKvh1&QdHYWa@n5bo z+h+A{lC|WbGg21Ope`T4DG+Yn)L&V_p5@I;N>gBiIMh;{wMY z7O~S*2;7&>mxU3y5dwzc)?>;;=*bXss27;*D!erc@xjs@Z?e+wM33S#B;3hD_gb)2U9J{$;lo> z-#sFfe~H4;&g6rupR5jq!YHbyUVUtw+Z*mQADg;}EGO)$X@Lz0z6N;-OHV*(R6(DU zjm^;@zzW`ZR4)@r1ch#nZ>aCQ$3CUd+3z?MKJe5Fjjn94V{f3N44P4AN1N z!Ktoy<6~cKOiat=4UyRo9++pBak!tQsc{7>WO?JDV$`}tV%;m>Er&j~bq>fbCBMZk z;;AemKwrQ2B8hT>I9X0{BW7)FZNf#cb2ssnj|_2P|HqP>oIKKCW+KnZsE*1oGI5yUr){pE2c-t*bOKC{7@&HCp@!?kR?H_hrjRCk5XJ$hTZF zN#2@W&}9LQme*g0V+9!C0e))jy<@uTm3HO8q+;zhcb2HSJ!TDuj6>Y0((uthZZn<= zkt!FgoJ_!}=8W1y1oDuek3xO^n(aLs@*=K~2JZIrZXOx)l`3`S)Qv?6g`q-;s8BfQ^FAayy+jqKprEQqub{sJuPfq^U z{vCtZVnf5-{+ak28X6S!iM?>A_1-FL`6;nJn#g!y0XIC<3i_Q|;q=$Sc`9%=60h*= zbHD2H!yw)e9FlNpZFI8099!H4%j5CIVXoJ{c352RmcFr^mR?6M^7K+j%f8QR7qmrt zA+;PLjZ0e}FWT!)g05UKm98RKwSUuFpCc;mbqV64OsNU6zp}*0>Txxcg@^0PbD+WN z-{kYp$ozrd)91*QIiEb(uNvv0g)rDP`@(ZJ!i4^wPW``DvYiT)BQOj#vxEFw)i>kHsZPACg5~_l z91hy`F}*Srna$8V`AOGe9vUp2cu3f~JaCr)Mo z2`i;;((+D&YhEB;D~5Q6@NY>7Qj}Hc|7p+8lgCT*Zut zRE;AzTxoYK-^6A4dQ2d3Cx(EMdpE=K8^6)61LEShdyz5VMt1&P1S_!B?A7l#eo%Lt zKhINSDv@c(GUD>nU@60e1@rSg9TQ_Xk}-xz21xl+uN1w0*En1*;j?z>vfMO}^I%)y zw*@bigzj%DypQ%&4%OL7jKJ-o54e=K2`q80!dHbh;R5Wg$8=aK8ioF*48a>OeViGR zug)Ckotx};P+qq^C-4i!Yc!bqPh;1TbkRp4j1t$owZ3l~^s-#S-Y}{nf)k6SGGae*_{AV5?8-Z~{V^l{;jo5E(C0 zJrrp8PVsC$itbFnG5TX18^w>#oZXjxxm{~=NyC1aVkp>PUqYG1XlUE<$2mG6i1OeD zMs&n$H?gcy^|z7MlhKm)0RZNw((;G)9i6B@{l$x3{IvpevOdQN0>Lo;_ZtBOFH^uW zcKonE3@LG%s0n{DbJ)yZs|EWR7v%NbbIHKS=;}{5A<^(%JX$zBV=v&M&-yk##N>9Gh)sykSkK%F!H=e zXJ$VhUD@1Y>dOc$uH!ZOgr|uEZ-SVMs9~Gf^HIoso=0V$wJYtGD|kilr0TGJ-A_G# zop^Ui~~rSD-hpCKaie0yTDP#{Nk+hOz)H3?ymayg$PSfY1-8?rcZrQmr?qsNMiD6t0l*@ zkE+%A9&r-VFg1^%^#cIO2?Gs`$f5L@Dm#ddH|{3+CkI64yQ{|i0fmGt%UO*6Dzu z6$|rJ=#wKzAdP_EhEn(!QJZuRaDD=`JxV>ZE)O;ua3EzhVya?_+NV!xX=$TC=P?Kd zB6XY~nW4wemd=FV(@UXe+^TeS|JHMC8qPq!C5shVrz0QO6=0Hxc`P5b)#gtbk$DIt zWS7P{KlZ;aKMa1>s1rl@Sy}b&&W`#R?_v=^K+Wff61AIspfbVBD>(~)S0DB~{$i4$ zQ+0sAchL_ACIb-+pS5Ge`GqP_iu(&{S_@cs-7S|ad=PV? e&~|O{Z|S-5*hrVUIgUs64O(oRf-_D4=4T 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 Zs_N{XXOA5M{4@qcML``|A@}0-{{Z^+-0J`U diff --git a/test/visual/golden/freedrawing/patternSource_result.png b/test/visual/golden/freedrawing/patternSource_result.png index b12501556f0ca310e55c8504813b80a0de2143b8..14395f6ec96cfb5da308782298563b5a359bb73f 100644 GIT binary patch literal 34654 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 diff --git a/test/visual/golden/freedrawing/pattern_main_ctx.png b/test/visual/golden/freedrawing/pattern_main_ctx.png index 07378b77a9d9514da44f3a9b875e83f49a8fe302..d57579a434aaf207a672be6e174c28a90bfbcf30 100644 GIT binary patch literal 8573 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 Y0k2?Ya%Y9_EdT%j07*qoM6N<$f_8*!p#T5? From 73c085a794eaa32aa8e0912341a341425023d653 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 10:18:35 +0200 Subject: [PATCH 085/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 2c6b9301215..c818d8a292e 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2344,7 +2344,7 @@ QUnit.module('Free Drawing', hooks => { }); result && visualTester({ ...options, - test: 'result', + test: 'result (should equal mesh)', golden: `freedrawing/${name}_result.png`, code: async function (canvas, callback) { await test.build(canvas); From 4d493ff37809f4110a5ebc9c069f8e6df9216e0f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 13:52:41 +0200 Subject: [PATCH 086/153] types --- src/util/path.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/path.ts b/src/util/path.ts index d083c8d5509..317d27c5128 100644 --- a/src/util/path.ts +++ b/src/util/path.ts @@ -801,7 +801,7 @@ export const getSmoothPathFromPoints = (points, correction = 0) => { p2 = new Point(points[1]), multSignX = 1, multSignY = 0; - const path = [], + const path: PathData = [], len = points.length, manyPoints = len > 2; From 3e74126b6ecf97e63c474fbea74989cb043a4888 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 13:53:59 +0200 Subject: [PATCH 087/153] refactor `finalize` extract `onEnd` lifecycle method --- src/brushes/base_brush.class.ts | 15 +++--- src/brushes/pencil_brush.class.ts | 79 ++++++++++++++----------------- 2 files changed, 45 insertions(+), 49 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index a066ab3c0d1..6af8f1b42d4 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -243,6 +243,14 @@ export abstract class BaseBrush { ctx.restore(); } + protected onEnd(result?: T) { + // in case 'interaction:completed' changes canvas visuals (which is likely to happen in 99% of the time) + // we request rendering so that there won't be a visual gap (flickering) between clearing the top context and the updated main context + this.canvas.shouldClearContextTop = true; + this.canvas.requestRenderAll(); + this.canvas.fire('interaction:completed', { result }); + } + protected async finalize() { // TODO: once canvas is migrated refactor `_isCurrentlyDrawing` to a method this.canvas._isCurrentlyDrawing = this.active = false; @@ -256,12 +264,7 @@ export abstract class BaseBrush { }); shape.setCoords(); } - // in case 'interaction:completed' changes canvas visuals (which is likely to happen in 99% of the time) - // we request rendering so that there won't be a visual gap (flickering) between clearing the top context and the updated main context - this.canvas.shouldClearContextTop = true; - this.canvas.requestRenderAll(); - this.canvas.fire('interaction:completed', { result: shape }); - return shape; + this.onEnd(shape); } } diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 08703fa63e1..bc89331db45 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -100,9 +100,6 @@ export class PencilBrush extends BaseBrush { } } - /** - * Invoked on mouse up - */ onMouseUp({ e }: TEvent) { if (!this.canvas._isMainEvent(e)) { return true; @@ -113,10 +110,9 @@ export class PencilBrush extends BaseBrush { } /** - * @private * @param {Point} pointer Actual mouse position related to the canvas. */ - _prepareForDrawing(pointer: Point) { + protected _prepareForDrawing(pointer: Point) { this._reset(); this._addPoint(pointer); this.canvas.contextTop.moveTo(pointer.x, pointer.y); @@ -126,7 +122,7 @@ export class PencilBrush extends BaseBrush { * @private * @param {Point} point Point to be added to points array */ - _addPoint(point: Point) { + protected _addPoint(point: Point) { if ( this._points.length > 1 && point.eq(this._points[this._points.length - 1]) @@ -211,6 +207,34 @@ export class PencilBrush extends BaseBrush { ctx.restore(); } + /** + * Decimate points array with the decimate value + */ + decimatePoints(points: Point[], distance: number) { + if (points.length <= 2) { + return points; + } + let lastPoint = points[0], + cDistance; + const zoom = this.canvas.getZoom(), + adjustedDistance = Math.pow(distance / zoom, 2), + l = points.length - 1, + newPoints = [lastPoint]; + for (let i = 1; i < l - 1; i++) { + cDistance = + Math.pow(lastPoint.x - points[i].x, 2) + + Math.pow(lastPoint.y - points[i].y, 2); + if (cDistance >= adjustedDistance) { + lastPoint = points[i]; + newPoints.push(lastPoint); + } + } + // Add the last point from the original line to the end of the array. + // This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point. + newPoints.push(points[l]); + return newPoints; + } + /** * Converts points to SVG path * @param {Array} points Array of points @@ -226,7 +250,11 @@ export class PencilBrush extends BaseBrush { * @return {Path} Path to add on canvas */ protected finalizeShape() { - const pathData = this.convertPointsToSVGPath(this._points); + const pathData = this.convertPointsToSVGPath( + this.decimate + ? this.decimatePoints(this._points, this.decimate) + : this._points + ); if (isEmptySVGPath(pathData)) { // do not create 0 width/height paths, as they are // rendered inconsistently across browsers @@ -245,47 +273,12 @@ export class PencilBrush extends BaseBrush { }); } - /** - * Decimate points array with the decimate value - */ - decimatePoints(points: Point[], distance: number) { - if (points.length <= 2) { - return points; - } - let lastPoint = points[0], - cDistance; - const zoom = this.canvas.getZoom(), - adjustedDistance = Math.pow(distance / zoom, 2), - l = points.length - 1, - newPoints = [lastPoint]; - for (let i = 1; i < l - 1; i++) { - cDistance = - Math.pow(lastPoint.x - points[i].x, 2) + - Math.pow(lastPoint.y - points[i].y, 2); - if (cDistance >= adjustedDistance) { - lastPoint = points[i]; - newPoints.push(lastPoint); - } - } - // Add the last point from the original line to the end of the array. - // This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point. - newPoints.push(points[l]); - return newPoints; - } - - protected finalizePath() { + protected async finalize() { const ctx = this.canvas.contextTop; ctx.closePath(); - if (this.decimate) { - this._points = this.decimatePoints(this._points, this.decimate); - } if (this.shadow) { this.shadow.affectStroke = true; } - } - - protected async finalize() { - this.finalizePath(); return super.finalize(); } } From cc925d55b61e8c40c11d98aed62906dea044fcf3 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 13:55:43 +0200 Subject: [PATCH 088/153] BREAKING: `convertPointsToSVGPath` => `getPathFromPoints` --- src/brushes/pencil_brush.class.ts | 17 ++++++++--------- test/unit/brushes.js | 10 +++++----- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index bc89331db45..43a483749b3 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -8,11 +8,10 @@ import { Canvas } from '../__types__'; import { BaseBrush, TBrushEventData } from './base_brush.class'; /** - * @private - * @param {PathData} pathData SVG path commands + * @param {PathData} pathData * @returns {boolean} */ -function isEmptySVGPath(pathData: PathData): boolean { +function isEmptyPath(pathData: PathData): boolean { return joinPath(pathData) === 'M 0 0 Q 0 0 0 0 L 0 0'; } @@ -236,11 +235,11 @@ export class PencilBrush extends BaseBrush { } /** - * Converts points to SVG path - * @param {Array} points Array of points - * @return {PathData} SVG path commands + * Converts points to path + * @param {Point[]} points Array of points + * @return {PathData} path commands */ - convertPointsToSVGPath(points: Point[]): PathData { + getPathFromPoints(points: Point[]): PathData { const correction = this.width / 1000; return getSmoothPathFromPoints(points, correction); } @@ -250,12 +249,12 @@ export class PencilBrush extends BaseBrush { * @return {Path} Path to add on canvas */ protected finalizeShape() { - const pathData = this.convertPointsToSVGPath( + const pathData = this.getPathFromPoints( this.decimate ? this.decimatePoints(this._points, this.decimate) : this._points ); - if (isEmptySVGPath(pathData)) { + if (isEmptyPath(pathData)) { // do not create 0 width/height paths, as they are // rendered inconsistently across browsers // Firefox 4, for example, renders a dot, diff --git a/test/unit/brushes.js b/test/unit/brushes.js index 133ee5b05b7..4ea7837f112 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -41,7 +41,7 @@ var brush = new fabric.PencilBrush(canvas); var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); brush.onMouseDown(pointer, { e: {} }); - var pathData = brush.convertPointsToSVGPath(brush._points); + var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual(pathData, parsePath('M 9.999 10 L 10.001 10'), 'path data create a small line that looks like a point'); }); QUnit.test('fabric pencil brush multiple points', function(assert) { @@ -52,7 +52,7 @@ brush.onMouseMove(pointer, { e: {} }); brush.onMouseMove(pointer, { e: {} }); brush.onMouseMove(pointer, { e: {} }); - var pathData = brush.convertPointsToSVGPath(brush._points); + var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual(pathData, parsePath('M 9.999 10 L 10.001 10'), 'path data create a small line that looks like a point'); assert.equal(brush._points.length, 2, 'concident points are discarded'); }); @@ -66,7 +66,7 @@ brush.onMouseMove(pointer3, { e: {} }); brush.onMouseMove(pointer2, { e: {} }); brush.onMouseMove(pointer3, { e: {} }); - var pathData = brush.convertPointsToSVGPath(brush._points); + var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, parsePath('M 9.999 9.999 Q 10 10 12.5 12.5 Q 15 15 17.5 17.5 Q 20 20 17.5 17.5 Q 15 15 17.5 17.5 L 20.001 20.001'), @@ -86,7 +86,7 @@ brush.onMouseMove(pointer3, { e: {} }); brush.onMouseMove(pointer4, { e: {} }); brush.onMouseMove(pointer5, { e: {} }); - var pathData = brush.convertPointsToSVGPath(brush._points); + var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, parsePath('M 9.999 9.999 Q 10 10 12.5 55 Q 15 100 17.5 130 Q 20 160 170 130 Q 320 100 210 100 L 99.999 100'), @@ -107,7 +107,7 @@ brush.onMouseMove(pointer3, { e: {} }); brush.onMouseMove(pointer4, { e: {} }); brush.onMouseMove(pointer5, { e: {} }); - var pathData = brush.convertPointsToSVGPath(brush._points); + var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, parsePath('M 9.999 9.999 Q 10 10 12.5 55 Q 15 100 57.5 100 L 100.001 100'), From bff99b22c6f5f31eebf011306e90ae1d7fd936af Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 13:58:30 +0200 Subject: [PATCH 089/153] cleanup pencil `finalize` --- src/brushes/pencil_brush.class.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 43a483749b3..7fa55658480 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -105,6 +105,7 @@ export class PencilBrush extends BaseBrush { } this.drawStraightLine = false; this.oldEnd = undefined; + this.canvas.contextTop.closePath(); this.finalize(); } @@ -273,8 +274,6 @@ export class PencilBrush extends BaseBrush { } protected async finalize() { - const ctx = this.canvas.contextTop; - ctx.closePath(); if (this.shadow) { this.shadow.affectStroke = true; } From 3ba1ab610e02e64179824c4e15ae18f1f31d4b97 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 14:03:56 +0200 Subject: [PATCH 090/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index c818d8a292e..be269a409c0 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2344,7 +2344,7 @@ QUnit.module('Free Drawing', hooks => { }); result && visualTester({ ...options, - test: 'result (should equal mesh)', + test: `result ${mesh ? '(should equal mesh)' : ''}`, golden: `freedrawing/${name}_result.png`, code: async function (canvas, callback) { await test.build(canvas); From 37fb30b7e635ea955f66890ded922af72e3f3a84 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 14:16:18 +0200 Subject: [PATCH 091/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index be269a409c0..9c1c699061a 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2349,12 +2349,12 @@ QUnit.module('Free Drawing', hooks => { code: async function (canvas, callback) { await test.build(canvas); await new Promise(resolve => { - fireBrushUp(canvas); canvas.on('interaction:completed', ({ result }) => { onComplete(canvas, result); canvas.cancelRequestedRender(); resolve(); }); + fireBrushUp(canvas); }); canvas.renderAll(); callback(canvas.lowerCanvasEl); From 040f727c2de20d42aa49434321436fc13262f6a6 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 11 Dec 2022 16:04:15 +0200 Subject: [PATCH 092/153] chrome goldens --- .../clipping_PatternBrush_inv_result.png | Bin 5223 -> 5189 bytes .../clipping_PatternBrush_inv_top_ctx.png | Bin 5189 -> 4783 bytes .../clipping_PatternBrush_result.png | Bin 3504 -> 3026 bytes .../clipping_PatternBrush_top_ctx.png | Bin 3026 -> 3137 bytes ...ipping_PatternBrush_vpt_abs_inv_result.png | Bin 17521 -> 14768 bytes .../clipping_PatternBrush_vpt_abs_result.png | Bin 7570 -> 6137 bytes .../clipping_PatternBrush_vpt_inv_result.png | Bin 17279 -> 15181 bytes .../clipping_PatternBrush_vpt_inv_top_ctx.png | Bin 15300 -> 15181 bytes .../clipping_PatternBrush_vpt_result.png | Bin 6848 -> 5794 bytes .../clipping_PatternBrush_vpt_top_ctx.png | Bin 5738 -> 5794 bytes .../clipping_PencilBrush_inv_result.png | Bin 3725 -> 3538 bytes .../clipping_PencilBrush_result.png | Bin 3238 -> 2745 bytes .../clipping_PencilBrush_top_ctx.png | Bin 2745 -> 2966 bytes ...lipping_PencilBrush_vpt_abs_inv_result.png | Bin 11117 -> 8230 bytes .../clipping_PencilBrush_vpt_abs_result.png | Bin 6248 -> 4081 bytes .../clipping_PencilBrush_vpt_inv_result.png | Bin 11299 -> 9580 bytes .../clipping_PencilBrush_vpt_result.png | Bin 5442 -> 4297 bytes .../clipping_PencilBrush_vpt_top_ctx.png | Bin 4176 -> 4297 bytes .../golden/freedrawing/decimation_result.png | Bin 11854 -> 14055 bytes test/visual/golden/freedrawing/dot_result.png | Bin 434 -> 604 bytes .../visual/golden/freedrawing/dot_top_ctx.png | Bin 470 -> 528 bytes .../freedrawing/largeNoOffset_result.png | Bin 7889 -> 13556 bytes .../freedrawing/largeNoOffset_top_ctx.png | Bin 10610 -> 11961 bytes .../golden/freedrawing/opacity_result.png | Bin 37585 -> 44532 bytes .../golden/freedrawing/opacity_top_ctx.png | Bin 33702 -> 37708 bytes .../freedrawing/patternSource_result.png | Bin 34654 -> 35012 bytes .../golden/freedrawing/pattern_result.png | Bin 16612 -> 18095 bytes .../golden/freedrawing/pattern_top_ctx.png | Bin 10728 -> 10869 bytes .../golden/freedrawing/shadow_result.png | Bin 29281 -> 35367 bytes .../golden/freedrawing/shadow_top_ctx.png | Bin 29586 -> 30576 bytes .../golden/freedrawing/simple_result.png | Bin 1046 -> 1497 bytes .../golden/freedrawing/simple_top_ctx.png | Bin 1225 -> 1453 bytes 32 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png index b75e68b075b7316fd26fabf3038c788009b6a23a..d348811feb1ced926314ee13741672135199b54d 100644 GIT binary patch literal 5189 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 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_inv_top_ctx.png index d348811feb1ced926314ee13741672135199b54d..831daa9d3e4120649dc030e2aaaef3515b5fe43d 100644 GIT binary patch literal 4783 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 literal 5189 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 literal 3504 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 M+q>B{9}gk_3qv9`WB>pF diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png index a61da072d6d26ca3c86f1fd173c95567c68409a2..04255b239aaf300aa34d84532869e190dc57ae31 100644 GIT binary patch literal 3137 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 literal 3026 zcmeHJ`#aMOA0GCwCCo!gQ@*jyDI}+ymdV%>i6|rW;7vRzLuC%toX<0da(-eBVMLL` zc%y8H9%Cd45jm_JhS!`P&-MHh@AY2q51;$KKA&Ii>vR8d-wF11))EJf9sq$r5_p`Y z!#=bB9*F2ZR$XNj?vqfEgS7>S(Wfv60*NQ%EisqxyYmWc+5S%Qti7c7$*L*BTQd&Q zmXut3#AhmTqDHh|PvaI0oT@+yl18rO5k3+e$Q`T=X00qL z&$e!aSMDs%7Bc%*wv_O>&HfQJA$s-+A)1w{V% z`jQ4z2#lxRYJVwh4uc!|B2PR7@W0wVF%X7$Oj%VSz%T^97&>4D!uWkI%Zdh(5qQ1d zK0$!^6!YxDEZAPztPww}9~jT8rt*uitQ?#i|{<2H`@mR(A%>)pn3 z8kLyDvWVR;``&&!!_(Bq-OlEJjiv{vaWa~_(-bQTpZxiyzBp{_$;jQ@dB|yHZWJGb zf1szg?3ErcqKwO$MV)KTb6Q{5spIK!rQcHKF~%x$KIgc->eo+lI=n}Z(6n)+TQ^4+ z=3Te$_?lpKA*WCDMqLhN8b9rBEk4{ckJzq#y!_eo%GqXtD)wmpSIF2w@&(*azzj84 zC-Zz!L$Ine){3Qgt}Q=RVveh2*YpDH=s`&i5bbL z$6SgghBG#s{G!oxVP07{0b|@PbZ+hmh#Z`+5L<651a?7-CI8_m4B-S4k9=AI!@M>X zPLWfgG-}NRZpv4CaKEWEGd%iPZftSx#S`qBy=4x`Xq_Ryff>qc;@SKr zK+ENh*ELIMvjHZS({>bhEyZ@M?`~dgn&|qNTo=I3?1koLlaD;ksZ_x{M>iF0rih4Z zvZG5_C@tqz1H0q+NyE}4Ep}!Ji$pltTAnwctCGa(|KZYx>^R_IN~+Y&+DT|v(>37F z1gHN}-cvVjfECoQKVByF zRzJ2KqtC4RZNB^Z#AL~R-ujSNUw_FAJ*4B6QRu-jmcl7BE|$U@nNW7#Iyu(;oJkr- zc0f-@b`0#@^pJ`WHe0otb$RLP(mOqFyB1I0{)17Ki+|G7!UHwFAMNwqq>9O*>JKi- z8ibf6oFRyggyqCrQyNvipVap$dbJPUT|`o%C`M=5mRNad zfHhfNTYs@9(l=JtD-$t5573`x7?v)0cVC3#uVM_o%q=u@)|R_=w4CV_y)V)6{WFg6l~5Q%D@|7Iaz&Xi?w z;+GTUjK!+!nX3-zyI~hz^Fst+ivz?7t&KJ$w@BcRUnmm%+)Cn)4P{Dl{HXzB{m%Z? z=Qqi;!^3S!{P5qmG8dxE&tQ^m%!fv95dw%b^pDKoNXHu8cBjpuvmvwW!-;%1#R2s` zRSPKRKitl^+I#aAp$q*LiK{tEJCRpvqWC|S8*>Qj`foamNSPIT*B%V-?S&6%FI6rU zLmdng7|oR*LN!|_38iqB)3WChdt-(+zb3S==k&g~SEgN8^t_!#?rvd@Du%k%1@U0pQMbp@giflkdoLlKV`ZbVm!W*@gbD{)M3jwb`kzFlSWqye5?WE}^(cEs*P?3=DtEOw z%0WS9?mOil+Q;n_gM8MV&c*;@0SeA8Kh!mRP|VISSt&o8>Q*oQeD}a5j`xoUv={3tnj(cD~!0{WOVXmX?ZN5>(EON(48p2 zIe`OlgE|IoCRU1)s_puZfJuk*=7sxJDg)&ovtO|Ozy9~Qu`AVbA$~&u diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png index 3361a63f9809d33ed664bf46f260e124850e18f5..7b9fd2e5e675e958521ef64df98dbb6963a1a950 100644 GIT binary patch literal 14768 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

UKs}X( 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 literal 17521 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�q|&&ytaXGWPt@+A=aOVEPRZKnCFr|}rZDqx%C zm*(}1=7(tH$xpn=yiux$OJ_kWm<*?eafnl69K$UkzLS|(K^(Yq9?a&i0%ve!~OWb+w{pe2K^N%=N9BG35LkjWEui(jWhL*RA_{@YjXS zsZQI7J$y82q&9JHc`mt;8`m}Hnfhu?eW{G!p2lGTJ@<-wBSuY)ur_MGoSM5kT!-Aa zs3#wNvZWGlk>NO}0+HsJPDd5}xQNlPHrl6z>JQzI7Y7&F60dK{2x{ET**e#5XI}Tc zW1dNaKRD<`C9#UVdh+apzl7jsX=GlCpxN=&XL~xS6v@_qf9j*34Hoo9bj^1EasNSU z*#rup^{~yCDU^3V11$riSOFOZ3xZEZ+~HJZKYF3$P%s(qE{7@Sa&-Fv^!_95-PSf0 zKg5*M-XWE%tbvF(;c8;ZhdnwtDwu)b77giilz4rQ+o3x=QL&;)id~m!EqO2p2J+Sf(XCZ`1KcWn-CD~5tPtE;PPjk09x0P zm%*kI|E9Q9oo@?Gx0>@wmUbHi_-<`_bH@Zfw1P((hL4(uSuvr*3L zd|Wewr|+CLh#MZlw`;y-F9qCb(kL7A`RcnD92J*Nm~N^5B6)3D4*LPIt`<36C| z4gBrPcyB6p<}$6Wdl@~WGSOv<&FW;>3H3;)DH*LwJ_;=j^y1R~_Vt00BbhH+p|EzO zw-lVV`|RJ@s7ke)yxqL#d4RZ!KU$nXf-x9A;*3|{`&_B@a89H4-Xynv1@73=TB@Xw z#zDd`X6E+ZcFou~8e^!wB`v?z%EcL2^&X^XFG54Qt!-9f$2X~uBQR2O-K}d8(RwDp z^Ga+W6Hyx6^JtvOD+}md*};0g!Um%|K?o{o4xw;dNCPHZoqE8%@Hg%Rw8Ws-b|m@N1~xqKsccPIEtjH&7RgNX2t;tMd|g)y zO%%GlmvOnO5sf@t_hMky57C$z$ROf|)P~5VsgyW5`&NfXjMDK4q8Q?R%Qs$J?ZwQo zTG}gOHqrpXB){Xh(K0nao6#9fHA0`F1r3qXViOwq`!!ed>s~nQH9UEX7G!t*@dA)< zV_}k8m_+z~*5kWnRK=rB^1h};j{E$=+1#8V{PjwJ=UcR#z-({e>hQU zi%D|QI%k2B$cR4F>F+k3Kw6_!1j|J!9A;x)WY!tvru$DzvIUJ*^hWr!);?e$Ke}qg zfjeA5svWb*|4{&D+zAb}l87Yh_)md|wkGL2Wh?2f+W7~%)VaHP(q#PWTZ4OVMg(S< zUKT*cLPdUPI#0?6U!}2Q{opbz+(=2Jj;@EP5xMO0f_7LMaMj|PxT!&{dyUOy?Cpa9 zHg1k}-IHD9fxl;!M|IE46~oqNmKDVb(T444Bt3A%mji1tFq`fko9rA9X`IUh_yYT|zYhoE9ai1FgsIgNEnb_Oj8==!rY$F@O7C;-* zB4Z`U?^CcUTgP%)6Ob}x<6SNIk33h`U)mRPV$pQnf9ZJ2Duemw-)+o zlB`S*b3MH#2L!urmd5=umRRq4_REdl}oM0yKVK$=*nQlu+gLRUf% z>5w2ziWC89etFM#d;WuSF7|$|*39ggJ!|Iqt#~7(E(;?MBLDzkLBO?)$>+d-4?QjU zU2R!YNIoe1jde8uHDjO+0D#W`p`~v6^x^g^CPJXL74DzSCnrdZOUcXYwA9=J6jd?Q=;EZVb8tF_j&^HzG?0 z53Q_z7ELEx!^R)kXCug9;oG}r@nmaR1|P397?8oTt-&Ak$kxi8O2cxU$>9HYLUH0X z2uRD*VVqqufgZ=Rra_Qy5%zQ&N6Ckcgrc&}vUd1sh~S0KtQ5RCJs@A_G-R{=y!C(6 znoSUcFA8laL$)P1Sg}Fr0d|5Hx_G9KD9<@VddL!OS-yL) zwogv;V8+zQJ5AfJb{-&1WJhe{9`*=(NQLdt#24w`kuh^-#Ct(5O3E~aE>g>UeiWs` zPoao^w>C&vZ_{T-E_5SA;Yo^m8mqjDiH^uumxb6J$OZs$hG@$un->bpxlrD}RPDmU ziwrI{z+s7HXuZ?)r|&&6EB>^MNDj<_I@K@~fD{blhogOK%k+Xzl<43k=bo;eueP@e zI2IiN6hZ|Y=xt2Yqm7}{YuLh~kc4kaS_;3ku_;^6{5)D-dtc;~ZuWOR@_F1^pMK8> zrnUP$U!Dv8g4*C!NJZJ1{)`R&GYhZ)$g6Y6{P*%*nM&Rh3!z5fHdpvB0|edC9SRP> z56V?J>^;av7&iP({JZRCN`?~#W3c?}I7Qb4li$=cg#Qv43`1?4@5ijaYO}>3b1`37Kt7A3OY-IqsFT8$kyN&r9gvzd6=sbu z)Qs!}+I_ix`LzF19iJm^8D}?cx87%N)cV_7WeCvIaQB!K5dqn#yf6`kPv!EbuKjXA zSdjh0hF zOz=Lp`XyEy#ULt=0pQfkfQquPEv+tY%y=^HmnQad!M3mYZPiB+2`@&*#~YPqDn?hI zK8uP>P{1Ud2qSV3r5E5|xh}H9lEIB- zYk$nDz!!N!%ufMRMK?X;^EoCX9uz4yb|Xa=w_3;E1yW8Z~wNyp|zxhqssaO~G2-Gml$ z=EMv4We{P%DcJ<}xcs8@+RBbhvt}rwn(1$g?BMCFO8J>G=7gEo`HUx`KYl24goIh) zi{!_L<$oA>3F>IfF!bNnk*Adp>U$T9d=Flp?+MM4y)C|833>HR>x{oO=K9KAj}^4h z2YQ_jb$pS+c%r$p{>$eG#{MlDLU{({>M*#xcE0gL!}A_Pw-t4wkeY5paXD06Z~yf` zFi(nYr zXiOk#o~}6L37@G5m97P+R(UG7ba86Np)q1{&Z?^{PnGIbM?CFewsl;M1Lx1X*DBAH zF*}TyNr|ew*F`c9`~MYif1MZK5Z!OBMdUqoH=lH;p;w2^)fG@Lez!?_&n_h-;tSR$ zC1Y>QCR#Q#(Ng{E5vJWpu!);)>x1;~SM@K9BBJP0c997QvF}eW8p?c%sMwH=7J8@c zY&h*Y>F>pk)qrmL@TM}T)kvuwc>OR!bVHty7|FrHm?`av3ql8+PRX;m-OwJzuh*IQ zQm-fmJ;kzTV8NpZRMe{kM-PhH67M>tPaosehuy8K0rrt5BhMp|d9)!g9r4AMya<-=L<@2o5+{wXNdF&HYYhjVt;)S9x6#N zm!+6Bmev$mXtH5XoAsR)ZS#t^ydu0Cb3OOQ((pI3)nKG`YI^F{mfBz zkvw~w!Y&Ig&A@{kqX<9dCz~?A4V)W+(K&qruxUSDrsHDakYa3J@X-l!?t24IVfBHp zpZvJt-3`THjOBbE3G#W4*>67=z))CG<)Rkt$=`ewEk0K@(M3@0qQ9lj^Rwy7*z`|L z)4G)Avf;Yt`li(p3gFK&laA)Hn80;8H%xAYMnUwaTLM3~$5NAj%OYHF%RG=Oe<`Z- zJE_aTn}lX{a|nSO%h^x|malMhXSdm~i_vA|C0}{`NeBPcx@X1ck?j!RHy6*wBKBd2 z;my1|YH_GqLAIM+9+N4}fp(?(MHvlDv>U$qO!pf#+w`LeSr_>Ot_scET@RR0Dj9qQ zv*Ad5zJEXN%Jb{=+ALpKkjQDH-Zuu{GV7NIT`rM)U^>K|DOkmeEn4BfGRcQEge=## zJMF@MjUg*)`EWI4j?+4em0x%z-PDt{*grEx~mOmp|Zks-EWap>dOO zwFN-tIfAEL*O~6ygVz!pSdb)-n}X9-_9vfYjx((jwXwgiLf8v_&rGVa3H*cxP8<9d z=ev=5-O^89yI5Kx+S7A4LYI_&T0G#~`KRJUO*pBi-+0T=ND;yCLeFfsCMQk=s z<9#T{#Uwe(sJ3wP{laW_s%fo!mxD#~*O%r9pI^L-t7e*`JvELd-5Z#>0R!aFg&x~h zo{GHBa@F+O+c0FDvU1?mZ_?WkjIZ5JMjLOQms*eDi*RonMU?HCiYfGx08o?e;Qu5D zt z^EMHN6^$=Q{o*gZDZ-=NoQ@pQ{+C&J-|p_L%SgY-pOB!jk+|EAeU;jGhFEETr2(2` zP#`EZ^I-$h0?AIeRl54sP{pcwR0DDTO@#8fUAnAk(gE8U=8m79TgKrggblZ?_;td0 zEQ*Z?^8^zrGyleRGNtmloe!$x`u;Q@rM{tmvP~yb49!3#BsNont>VMakFaqh-;IY0 zT32SD$Ys?(hq0cCzo~ohctun9aG#JY`18x`^2>6{=kMj5o|v+(Dte}07{8w19?sDM z>4q^DDlo5(&xbPgp_C5pe=Gn%wOA)Vf+)PiO0FNXKLjxr_{~oEnHX&exw&a_Awas! zRM*y$bTkxZ{CL4B`eD$*dr=i>BWB}onSq2#_UdPf=z^`8`(g&;U9{G;DA4pk#J4`4 zeTl}a#Fk97Uzn^ps0S{K8%bm!@qt>`v2%l1@qs$em}4C%Jsi3CNnt0?3~^ zS`h59fV%m;6wR_>mlpq5vVT~dR{ZM46JRy3bUfLAnEaS85jOOW=|d6fL3#S6X>ic( zU$aUwyCxxD9qNtDPnOC64rPpKf=l*M6u{JBD9=W(9XGo4>o7RQBO+n(QV`K;1q={} zq>zli%~b;9=F5OM76}vN$eF@kUx8CTvzmr{-}uGgo1Wh150Q_PmpFyoeKtbvvf-d9 z6~wKX5aSe^pu|4Zx9Fa&+&Oaa{R_IIqaObKIp_8szn3xr`}FJ2m_c3_^2(qHUwv%X zNkU1eJQn4QE_OYfJLKvfsbfVAh1$&#TV1&^)cZTIc|rK?2jT%nCf2yv)un4MmH218s^FJVteW>ks#PVo+ z6uUoTVUNfUhzaGuef_qkWaa1dY@d`GqMlTOQ(iy6_FB;mZAXTIyK4mBI48kU@J@^q zV>~Tmr$HvQ`fsU$!UyU7-_@Hu==T(FUH%g<-83U-;#IGk2lbqgmSh3UJA2b%;dAJ$ z^F7Tz)H8OslPTu8{=hR4+jAudrgqq_+;XJ%O`dJZQE+1Fd9GdX-2kpf)qSY;w^);0 zFAV^v=+r$FNO3@dsu}f{pT^IjinSFn}!S9OyW&8EPBsxE16|Hc*0{VZU?r_OF0+EGjzfOPMSF!98* z|FF@eG@+s=l}IxlJ2j_gXdCnGr6zL<;KWCucIJI~@uXsINUE69%p)qSFb&Y=B=d&@ zj5TYj$7I-9zPSn9-9vBTHTyjV#yTW`)N&9eFKq^qa?YuhIiN=|b<%wu!;&FMlv%eW{is_}@aH$I zclsB!-NgIlEecUn{LPC&>Kd)P0`a7i8!M>2(kCz2e%58D8nS|$9dc+zI7Q5UQtJf_J@qH~n;p2kkO1AXjmy zSO%?yK`y51pNxw{T|+i7E%pL3Dv%=RmM(g?{z1F4tjK|_gw6%ryt>&;?1opX0VaSm zk+G9145_M3m2h7c0I-b+AAqm6x0WBHE{460r!>fP`^7?cZHWJma#OFr2`yX{HCJaS z_gpbOr}8ZSyOPsIx`PjFPq4;zS~iQO3OJn$FvQmdo$ncEenU8^@7qnk%#U zt#X6iErU1f%v)O+i7h)by^7rup*==#R;skE;UKgz`)6eUAz9>3Jl68y@nuLsGWA~?SHDST8X z?%eA4IreMdRAjIn4a)Xd$llZSZOE%8GM~7|x4+Dfy!}A5de2(w^y46<5FCh0zk^q$ zk)BJ8BW=l-s+NnN^Sj6rg8o}XSdzGOboalmHj%lj``wpa$hC;ki(-XmkI7VDWoIlM zlo2pr8b@k7;3|8~EaZE^+DLBgJw6O6E_m$4Sb3Wnv4x7qjV>^NWh!JGYIqH7aEBS1 zxs07}2NGK%C*mjtPFmnHZmlhCsVMB0ClQ800MliljS_4)R5kVar;NMW!VEx@7?`@H zP^e@YjP)qRaJq(*o!>Bq$@#>!vpNbU`AYyV0mLnXis`or1a>ioI*-F|nG}?~I5%ve z_Y|La6f9+ea;eVIo7l|A_Q@8?{l_gL!9pE`HWFM;*LNomq?Q&$a_~=6hAJo%xd1nu z4pq0uI_QZo_zk#W3FC+R2`t^+?4IL?2HCHWAl)OW@m;4$C>)&=@Js*&s{iy|HezuX z3di63`0z?hE^T;Jnd{5$h43YTI8qB@6G8=!)Z#r#ZxEVq6-;l0rpSHZd^wOQ>K{8q z{z;{HUNcnuG%T7Teio6pzz%#QanE*?fVP+0sO!6K*SMZ~H+Um>E zMT=LIMK@ESKzjlwi6TP00x6ny7rcnnoPb`_NiktBJU~VvkuQBt)ejfME*^*)tZ|lGfHLtJ?Gp}$_T>r}t z->MebGgQ?*BeAsu0&iw^mlg(F$yBw)`s9W5!?VQXm_O=>Gt~WfGa6woCz=f-F{XR6 zj@-*C(ZOLR53&bW3b8k8p5!h*ZbsS7OZCWdNjDAH10VgU?#MwnI8H}OOOj@rzPvUA z^l?&0-t{hacn78FP(IRT!`XRXi?m?guHoM|LbZo6NQv4?YbQ4)W0x>eSIrB2)s`(n?5_?NZrd@!STr+w?-LU5^c9UTtO8V z`P@l|$o@l6Tv`p^L^jmzI++|hQm_x+c8AWB8Ibo>5?R5uiU(Kw8cH3$^Pr(8^~)XH zqGEs|+Rt1dr`$_q68w?8tGcqhIrg5r7ZYGcW~a5KzfqU#wsTY14%_Gl3%V9r0JoUO z;o&<(LGX(+uK61_PMvdn6AM`yAhdxX%4_;@1HoU`sWs_8^!vQ`_MJZ6YQ_kxe;a38 z%!d=_Myls~yQ~?d^E-M~kvdN21#^6I=`dEQ@x;8`AsJdM&f3c7k;H#@CElEpbw)N{ zwi~J@VzAtT3JSau;@jWBX@P1=2U^pFRt`1I%Gn)`IsNn-bgL))JLOGH zgY${dWvwr<EQ|j;B-d&1V9x_Xm{|hN2~6be0ATGozQU|3w92#4aWE zNCJ$seimh%(q!YuqM+Cm-t6J9vFq)o8Ef%Y&*8cOP{gkM{`MAcy>Vw<_S!l1G|^zz zL71&G_8NFuVD+tyd+Xl_jEi6>Y>jmvXk~dTsfW7@q4jd-SH9)uof(Y)8WX;gy@G@< z5()P8^L${Yf*IBi9GH^TP#?q(hWGcx4_&X&+|)IN5){vXbSV=XKMgi7Z@A3mmX2{HJ71c%E4{kQKE-&X?%-2(p7bmswn% z1R2~k@JZ8v;J@i^*#02lK9QUCw| diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png index 945f3dd577f0d7252ad5bbeb2ff5fab891743f1b..acacc6092f063ab05a6d660fa86de3b148cb1d36 100644 GIT binary patch literal 15181 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 hmMgkn7j%7xs}gHWpgE#M0lXiJ1J!t2h#um literal 17279 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 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png index 5b5b30fa9657c61f20e318603c5b2e1385e48dce..acacc6092f063ab05a6d660fa86de3b148cb1d36 100644 GIT binary patch literal 15181 zcmW+-cOY9|8@AQn6tP9Ay`x5L64Bb5+FCoPQB`|a5G!U;lv1_#7J^z;d(|F4dz4nI zzT58)@<;AH=jNRAKF{+$?|b9*o@h~!vXJ87;7~xd)eV5pp?`n(h=Bi}%&H534_sdZ zEmfTAanL>v4kr#&UBxKS<|v2-NC>{V4|zpF8#vu|L=R`D#=Byw;{u8oc?Y zQ=zC!Ce$ixiK)}gpNNvs3_msKWAJ_=N{OMwYxkJ7G&Jq<8-v3w74(DlEBlnc&osLG zbsgHib7;2(Xxvp2@At1>>9=*4e9(T>-u(3QN@V1v7R4=nDU;5l@vqnYDs64=R}OXU zZ{Bz=d9UB`?B}T5z$;GruzA1q9t-Se!I>gM7+5?|Mik zaVi`2rgWX9nS9EP<>m*&c6Ay5Zh+OU2bVynPO;w;XsGc1oE4kD%&Xv(H}8wS7m0`q z{C&@Bt(+bGls0j+KH{=)HdyGJDBrd+)M86RrOmg(L0`qa_^-iK5{xPBvVhZC{ypdC zEWdB@fA2*0pYgJ>m59n6*H7}oLb*vasxs8tjZ*$rH#u~Nq*pt``b5lWO+H^|vApcY zHY|0SPDyu!RISLWF4k&+VY``^zNjvi5)PNu6$XzFPG{>Dj~zVTaPF(2=1YH`R40yo z33wo&~-w_9aTDn99xbpps2| zVf^=9<89TgfuP5U+F&|nt4}Bg^)2%9vFjj9>4DBG%_9*x`}1?kyWEn4`QToK+m9uZ zkr?|HPVuBH4V-Ve)=5{P;C(hZI%(Jgg8d2Cg4$A#^i`q#W{VrxO<;=1i9rh5B*tyA zDSkN3QWuSWobKlY?S8obSm!3S#A`lidtK$`88cz;;Pu1JW?n^JZPD_eJ+!-@f6>MC zZ_Yu{*sIDl<`v; z@YID=2o<-GcizQc{i$J<8>=!7-`9xo7?qpd3S7*ku7YHV@9GFI9~evEkr7L{KkSgN z1}9#_W|Kryuz?ZBfv6HHqW$*lc>5o622)^NDB27jBdKXZS8dMI0a7x9OE#p(lset(?{mC1nOfoY~H=Wa-TLJX9+^rPhSNucxyoyQ= zSUU&%cZ$N=9ADrPOH!4bl~*O0h7psH*D(37+YuNtUub%@tzcngNZHp4m9}@yzVM|B zRGM5i(c~XLKsO7x$D8@dZ`%3u z9TSD_{`f;5>{KOYy1DH9>W1AcfvaCma4O2qaS*O=zN_o6kq(vRwfqdVe`L7aQgm^b z=~v3Ro(VjFjqpBW^7@??@1P2jE-`A$#VqPIBGTKsk^l+i88JP<-O%H|hHURK_2)-^=P#C^^XAT3 zXvT{rDVv|~+?mYL4)js^+|4tTC()=HYZIOHCm1%f74Z=IWU}FzJrsJhtKKTOsJ-s~&|vBPe!{sr@kKb> zo8Z!w%nORE$CX#UKD&8n{igWX0jUj(0FwPSk=meMpFL61K*0s5ShPz9zqQfSF6*Yo z+wCFFb@(C|zxLR#u&@~cmA=NEOf-E;J^AqnW2=A4>gLh?G>PJL;fULi-ki0f5b~$e zvXUH5Eiw}xjsw-#;Ytt%f;ejKD<8WH}OOfuzQX)|v0j{g>ks%Th4doPn=2@;nLNFyW^ z)7HM4sRz4r>fhYkK{*t*@|{o$ke<+9JV#7oQzyAi$%k_d!Q$CwRLyMU;2^hSJn?M2 z*Y2Q}SPpra#~e>Z_J&B~-Dtf`>V?ikG(CRAU;mX(d`F&JlUS2m_@^EUCnIro`Q+Fw z?w`WK*C^1!3|@WqWj!~4w^{9+rIi;()$r52T5&h^>&ooQ z$N@qk!EIrbr{2O{u1ecv4Haob>ol!=pe8>tCZ^Is5EOOrT0%Rk56$SDI^pJeB-B_F0E(={TK#cjQ1P=Tn zRsq>VK>qp<ahzJet+njT^DyC%SNBQba$*u~^)uy~G`(D#?^WLj2z%-68r^6*=(DOw@HF<> zU^VfKzs$60UN>X5VB2e&-u3eIp?XvMG2jhm?_eLu$t1qZ7sWKYP@Ex}KMosm)E7SA zIrsB<`0-MzaUc^~7+LN4t@pIw?%y0QPSs1iNg*~a>;#Vr4Mxr&)V0}VvM`RWtDh$C zI|T#_>B!1>aYDqCQDF&YINQaX^X?svqV$fC>fM;F9Y1J#TT6K5Z6S@IbT3pv##5Y$ z(-Jar4(o@l*S(eg8**WCcD4Z{dN{_6=X>uSk^I>Uxj(5tXZVm9^KK{EM zseafG7T1_(vQ?=bub`PARhj_ryxASa9Ls}y4#iu;x<qzSkUC-N64&lJ+d{2|Yz^nwlC_VIlE&gs8`t zmo8%W^_s;&;@%F5JfDaPK#Xqf zxB0Mdo))~!XeOVpvlOrJh9ho8iAWykn)st3;vR~^75P>m*6JBmFN3kI1op4U=lpe zo&5yz?J8fj!gU%hjtRc*cgNY=%j8#_9w$0hnoR+5+AHePre#Ox=J|Sy9Hg5~IJlt} za)>0R1U_)`f@rMV&cqZSH*81OC#;JQ?rAZu(kt-hR4|XNokPkF~V#owL~oK^-Bg5-Ou{ z{gR=VTw>;<@)iRfE*YF<yh3tB9psJ|76DU_{KIH@Sckfo4!IY}@ zH^=;nOL^Uv?!;+sZ?AU97%?v=BCRi;3a1=s+9VgE_Nm&M$Ufp7?FREuYV@Sr9-XqO zlB>uoe^URY0^Vf&`=_lcT%2%yU0LI=^R~{d%1@Gmfzx$4hqYRJ>E4q+%?_0vxU8R@ zI^czha^Ceh9f=u|Sx(QXDHaiwKB4p(6U~)lb|3-5QTx82ZOWR!6Opa(=1Y!|aX2qj zxaQkig+BqRM0K>KmMrWaPsRt_qUhrGt}4|Y8B%nox%-$MuO2?ClO zGG#RJahsH>kE0qYlM`CU7Idp? zG&fonqZ9gnhPXXGRf%Bclan9jwX`2QI8xJnv;nbl$2n#Ud^_rrv_z3dy-M_VhZo6{ zoJ&klWdd#y2w*iaknUk-VLiv$8|J}I1+_0>2+sH+VcrNJUjx!BGtGrbIAV?!)_v4R$Vwk(S6%iyn z$bJo211QVA@&5XXCk=K6nf#io1+{X&4H)f1Y*d{M?9oPxmKk|bsCbihge0drQ;!d$ znFSaDVh%);SPqYdrFMtASK~^sw@tCcZMv>>WS zvp)q5mON5ndqridLwOj)s(H5!cwmwq0n&e+UXpOX*hEFF`Bc*PJ=Ap5n<$f0aMQpT zxN6~h;*s~qY3f%`(Y*W&93i@2i{#=r6~4U_9+H~*ssbXG2rP;jo0qnX-?Wv$erwQE zbKHp53v-%_+f=CUHeEtTMp?w_Vi32xG8as6`iwG|ge<~p|IME_w>db)gj6~hMBv@= zG0DRdw++a|;mM3l8E=3q7xK&Dv7=pGZs5GiFH{hX=m2*lKQ1@`7W%<^I;dSdz2fnOW2<6Ekp4quF4fd$l>${?( zVBgJ!GzLKk=6Vu=f@hRiG9Z?{pF7es%1s|yWjcM4YPimXjNfV;^~dPnY+GChzhEi$ zb1_T@rD7k(Z{Dc=MhwwEtIG@Uc~V}lT0<`-iV68XfoSlE--LPn#`*Ka-%bb9Qj>d% zTbE1j=2?{kIX@&tvSQc0R*%V=qR7U-5hkvKWN!)9$D8N#U%!fy-!vSLWIBl$DJ% z*a0IymyakTE!uFDW2aH6+`lVJiC6wADdMXacGkwAA*6b=K5?^}Af|8QdfdIo?0GpU zWPGOk?ekAD2+ub3R0#<4eGFgy<@X$eiR7}w{gDN1^;rf(%M|7=LLtNZLv4K6~J2c_klm&mD)@tb0; zoNxslG{`u@1jSQKk;0>B(Hry#3LUknx~O zwlPoBMX)ugJ*>`kqs4Ozbi)}`PRpb7elp?U)cECD$n3m=2@cI?hcohd7Lux7w^6|3 z;B;`)HB%!p+@K&78U_Iy6igl}YQkd{1EDOI8>az+=L|=gP%NuleL@Cuz^e!KAbDc9b(AMMf zTYr>|r0?&>PraI)&)aQwm=XE@iRtY)6Vp};w|cZ6%`zNCHd>}a+P=#@vvw2;>EJ=W zFPW?PXc!Mcu0+B=+i$-^Tea3C&)pO0_%cIHkHKh=<@gFlGmFjsobn`N4)hqP_$sfp zFT)s493;;NJb6%eq`pLg?gM1MhYl2f*+;}2OgStarZ_$H9IoT^QJ_ps?!bK9Upzw{ z=Nva4n?9-m+705lb8H{#lbof-hRE}Zth$<`Ajb%mSLxSf#Nn7ld8Pt?aV{I*0m=4b z0HaES<^SuRfPzd}D7!hbbz~~H2kd|IjF9%XTRL+h+yAA;UF%In!9<6z*NXf<@gW5% z`sV*z&>c)j9shUN_^`^Wz8V_Rh|pXH$B%XH-5g(!93VJkZM0&9usBgO-5~-XC)_+mDM0KuZ9PSFEe`V?YJL)81Q=5bcq%#=i){s<;(3* z8Nb<)Oi9}}&euP`{4j3Qr~k$|h4H`a%lOST|I)BA<2))2^QhnQOYE-BF9~9!`8u#)sGuE zVvNK+V&BqW^$+t6+)HUYF|xLxXZ&+AG6MSC)PA=)(1XTXGwrK$6B99ff7{1tKMmK< zXE2Dy{zlSveo~iBV_NJ>wcmb2M!p5y$oJ)ZB0aRfuYDu^o}Lh>?>~p0TsLtv;LqZz zEIO9X4Z3-?gC*}f63WqmE4Yz@)D5l{!>0cN6s+>d&W?DUgU{q83{Qj!^6NVA>@&!f1Ys+stbYkX@46 zfSg+3&|z!jlvNeFF4gF432dg5BDvmc4p~Bqr+d*8-7hB(STlEC90sVZ*Tv~V=@3>2 z=$Ko3?t~@&jTWY*k>t8O7cpD+mQ6SI)eb)Q?X2p3*}l2}8K`M93scxSMEi}(6xnVc z&CFZGq@q zez1sMgB4T2@ZhBteHAWZzguN36G=@Tl-Yf@HRw5U^Gry!In>@>Dv0#5 z7#YyWxB>A&npZIM9{29X)>%S+3k?om;_`47^hM{hOX%&R6A}&dlpdrLJ{RFTLH`L^ z!YHU2Hu87N6C;)-=iSU#mBDv@JFtS+VYb$I6z}xEqb>PC+zEqf42+IH_&3r|Vxgr;J!kwx zBCZ~XmxxHJQC*NJY%knwJW|?XNAc)O7h&^BfNGhQrQpA3c)q=-hmzN|asjk*3&9CP z36-Jn>M9t&zyjdb{) zzt#RMOj4j(uDs5P*0q25V$3t5wIB^&3lw|M8pRr{o)Wk2UTQ~Fe7W0+;iG0uf9mXF z!~Y&c7sl|Vm**dhk+F&s!Xz>?5o>@5tF~WGD7}EaIHuYDjQLfx8~}$GUGLEy#fN-Y%A2Yv2xT*erI4)}6_6Qe zMI^RF==h1g?aqK4M-x(M%E~TTV}3hHHzihdXduzmeggof_UGQUxmM0;ahsgsJd&pz_T1x2t*2ptZq|R5SwhE_)|8Y8;j3tb!n4aKypATA z`FNi$z`$i@!{7+aMyHxxq3jUEZ@6R9IqtcDJ7&sv-B^iG+*?hZKKkE=YwS z`5}CB=Hh1!fDWY!1b(>5%LJHlsnJ?vY0|3)!J^HH@ss_!VvxXDzKxdF9k;i@t+%c5 zn}tf-r+@tu*3qcT;R8S;75kY(x6pcNUL)ztZ6TdrokiC0U%a=6-*PIYfShgFb_9dx zkIeL`@kj;kzDHlg8%yg)ywGy$VfGh1W5JEE_p((Uu+QVPqLNmC&2pIIFX)F2r>K5Ou87QD-Er<0n7C^ zvHv&m;p8p<0}8NFg*l*d=MU_hil*_WGk5<}q#l+pZ3_|h?L2ajwB4Swh2ie~hf3|Z z2BKhY>{XKg;eBzHIm-#|N?s&Bbv%lCZYaUyv)l%xX*c?L6+&qRLwR!g_-t9ZL9Vjn zO|GQDZ-JS{kpIRI=$fYhryyCU?|7TKi<-K@n#AY< zVN_R*?(oYub&^u``FXxvWET-6GwlOQ5q|w|;|J_DzvhdZvjSij<{t?W(LpO{fIgJm z-%|Qc!gNl4;vXEJ?aaw1nMjJ47wJ3WA1)J)7iyuY!q2v+_@ycu;tAOSqo@}^WwES7lt2-zL=aX;3;uzXR`-0Rok7UZ0Mrf|9p*2Fd+-l%6QS~#)CX~ zyfmzAj6s;DUHX+43xW~i7U?2&w;`{Is&?#v=!REGZMEa;tXpX_KHL%C9U^28 zN24ms;PvY`bDE$ziY;QhsKn=h5FzI*3#JnlFz(c9x{)(04a31ne$I_T>bsPG8Vd-%?%7v64y>IXVHa`7*qifxl zQU4=y@l?a)?H8AT>ky%nZu3n0)4ucAlmpDy03 z5c1kP#TJnunyX)x?|x0cvH~3J#9nbgfX@u8+F_5-nF4Xx;M8?;{bN11gEnUT8LV zXSvwQ#&6nx6dDZn%m7HBG9(PR5Q1OCtISdc7lHSZWd*vpacpolefRk1%2`c$u1fJP%_7jyNdRI<`ae7eBl|=DWabE1p>9eOa( zh8RT2{Y}!CX(1OMYlNj`=gtwbdFB5PqfZ;8)QGwr1Ps2&FZ7^p9s7sDDLhEuAF+;s z&Kr=H96i*v3%uHkc>lTsf2k?gD8(9#tY70wyf!M(_U!pip8bjsfTB(bBlZM7fcn4B zKLltmw~$wUjr0@}y`8>rp+HX8%zT<3hhS+Wha1-cKA8!VXTURtnF$eEo1K!sFfmd-)xfWE3t>oE=z&(-& z|F6viCINt6w)z_|C0ay(edUKX@gmYatG4)vR3=HF^3+Nlrc*CeZt6QP*N*#@B@FdG`g@lozk0b?|S5wIOM=iaaEZ}xg|9bIr1jN%F0>I*CK~KZeFz4rx zFf`?Hie`=P*49#tgC%+oyyO4fPufqqe82iK`+6ah51Cl;oGx!d%SD?zZjM@8Gu2=F z9mF$R^|+E7`9*gv*HjyXy`85iV3TNUq^KgvxTAkv;MODlIw>WNyJ;#Hm*+*;@$M4_ zI!UsBr~Elu7C3q_o!jnvq1SJB3!2nve90})TIrAZd9kkPAABua- z@H*h8v(k-{j7!z1c{+*Vn|Ls?7$iK<9nOS!MhVKwzM!vt2EniT2S{)ke^l_(4r}gq zjB!)-+9+@K2NEXv8E34c4(LHV-lKooewuxmVgvH}K&2RGpE90yA(MaPmlpe)lS*6U z?mDF_tE6RxluQGq3=(o|g0lI#cV+zm0s4hwxbx)tNSY2Hz@ne|DL^XIq6!^F~7CV6o;S_iKi4|Sr|+cU6o;v^xBWmp~k9gpZk^`ES-pGCcdTh zlb(MkzOlW56Nl0Z4(6YHXW)t^Zwe8W{$p}GTw^PwN5hzx1V%dK^8DJ0j-0|NWoie^ zbr>p)Zv*mv%F!v(pQDVCa_#42Y&!{pn)0;aKt~$?&5J(S9{~=~DB+!oN|w#G_|5Wc zM4tY1`wQb)4G>dlXk|(03vOhh0JvGQR>>8nN*_|rJLyuFi=(suWhU}+-8e)l*T=e^ z;8G2{xaNxD(quJwn9>s5t8*TW1$^a5bbiz?hqTjR@hdy4{A>Uw}mOPqgRu@DZ>F^2Ab^}sOYJWd# z5$vC}<^mPwzODa8ES}ZBi#3p6>zq_l0};1{MQ`Q%CWQiVCsLF?rR`Lx3y8ApJ3v08 z*LbxkJpFS*2+&??X=GFs?IgS|A7ay$o4lO1;6n?^`BC*pLUk`N2+q)=>(?#eT{3`O zbwy|d9JeU&Nau4CZ4(&%a~1m$dAn4(lQ)#?i~z)5pUp2aNlCn81x(Sd0=2!*3!V}3 z$mtnLA4lR0cD@}uz~#va(9;FUs!0203Xo`o_`o7!QvzYeHlbtvRqdZ5A;^K~l_+Z` z0YGg)#zh~qp{}1B*!x6RCqk;FI{uyjDu{7D;!1)k6!*)(lk*N5@ULj47wTi2*Q%Be z?jwAfe<< zw17I7NfZGRr`?G~L(|Z|^P@?>b!#|tAvX!>_9A-6g=GR^`7_gL2hT#E0J%yFV8|Rg zaN57k{k6;^>#g!#_~1Bo$KXSRAYpvXw>zV$Y{SM49jd0KZmkL+9*KEEj{+&Ibw`oE zXGh#I2qU&mtrR75$p~=8vz>oNQfE96rjUE=UE*9lLojFvrb;~?_L(!+cgU8J@6;2U z$!=@-#)}gfT$^n*o%;fXo}wC(EGmgLbp|7OT;Z!%jt2Unj;z`sS!u*mS1>Yh>I{aV zK&v^l9#B!zRUN z&C&#jGN>(2xnmwVaCG$B+SnSn!2Mq|7;Gjx-rb8=DCE~~tLQbF&yI=s5QlpCX~rh; zdV*iL%%NPWHlBFp(~WaQe}>veyLlmTeTpJphuvmCn4|VLQ%_=zxB_AuXtCK@2YFxA zlN^d45q^1jFp95-vvaO;Q?|Qqu{7_Sr#1ECv~C+UI9Tm*9H0=yZuIk1LWc(XLsSM& zYK0an4i#Vc)Boq~vi$Ayp`YIz7XRzD{gea|;S)8dlz!`DC2dMjX3XV2t_(lL#@?pj z`rX+}JGJXV=SlSHSP(SWAkq7VK?EIEY~d?|fOnlkn#-eHZ?OPq^v5L3WhnlTP?Zb-AcvX@|pLxk}( zoUP@8s4E|nOL5n7IS~PKsaDN}c3E zl2tBoHuQq4z>BfFoz^q4aFP*PtaKsD`s>B$yzO(lZ4vu)pkn(&NA|TCZ+fGp{YM<~ zhEfgW@Y($=5qi2U4pM_;z<+dlfmUF;Y+{xWq+Rc9ZN4aEvk2^3oQZP7G`#A~8UJX8 z0#x|`MjP+)z2?8P^D-Bv7Z?%2KU|V4S;i{_uNK)xD@~kHO7LBfr0hmG^dXX>bCQut zu{jt&c1(wzT|oqwE?{%^-gm?v%ALFw*IFO8`#kWi=f}sU>%Z!Qj!z#)yV3In=3@{& z?j5NMe;oi+*N9&so+mND@DFTlYC&zqV!f_5R;gx`W@8r@3d>kMhH<%Pzwv51CqaV* zWi)7z+S0oMd`L4%I4E$*9D%?@Mv<#}IDXTAuev7PLdM7RUu z%HQ^n%U%?^*BuU?0!ozl+XY-9#P!h32Cg!e`wwK7onCA}g3a?N%70F$g8bBQbzd8d zZ^eOf3Jj+w_N1IV>3e&xA_nVC=o5O6h-0^7AOT-w1dP7{F@2}<{-IWkMyNUSZ`DT< z@=%%lX1Dv_xbA`t*>jfh?=SxyV<_VddPo)|rXP`?rkWEHAmZtm$Ca)T{8Br7Vm+8w z_2g9+9R`tRJDI~I3;Rt+H*_3=@`;=J8Vpnq=7PW0gxA#7fE(zPNw>{+qhUu@!045A?M-Xi?rV+5KF~> zb|C+~(nFEW`#7_>_rm@ob)npV{45o3)sApO6-Ri_peYlbUh{ z-phgb+w5{UkY9E5R|EQae+_Octo1n|;2xN{z_e~tJdOm{pirrUNx|V+WBO{>?xA<6 zPGEn2;{KRQ&J~1WRh({yj^@wr*;hqCJ^EQ)eo2mV#k2P*8AX*#SF${nBy^FV+1x4b zX9DjI82A)}x#VD14!2g+zL&4J}(@MDaC$5mR~ z?;4E;i(>y&stWxn)#&<>AqcX8h32v9FaQ>bbU?S?#9B%Gl2JPMlrU-QNekj7Wbg z(Hlf4)MbKGYar7*wq^hYUC-xbNXlr_N2Mv9?%T!VyIZ(M$;e_K@#S0KX72yZp0<*H^2%bpR6&H-^u3NuIz&YF%AK-7K#q7<2?1&+ zd^0=YtmL^$;t#nmlpcPe8w-2W#H8T5Dufr%QQ5VYgtz`WE2a7X1p_MQ($DA&YQBQS zajkppX9~YQ2CAHE(FdLh5z|%Vpk;`C{Q<>rFf}4Qc5KmS)(fYTJ(qHy{zu^0a)MvUSp$0gLDO&Xj9& z8}ajp{6@=rwFt~-_0jftlwMjb-5OW7b?e7wV6=DpH`2K3Wb7ONb*XG)K-xfi%sj!| zvA&#ny9($!Dh2PeJZ~A!GWCFh% zRQBSe{#ysU7QFNh*cb)`0m{Ta_6F4M&%Fkh7lGpXL=*s7jL_~FS>suI(L=tKk59fB*Z1zmpm%obcBkS`;P$g@t)qe~&s zQ$+CLGe;1feqE1s`q$Vfw&O6kLBmT~mkP8H_$ni32Ok2~z<~hCPaeHbA;owKB2@R7 zqn;D~7iK90q+^tnR91;b;$JXZ&;wg_f(U&SH+PF{>@od<%{%kBO`(GfG!0y`QO5&QmL;U9GR^Mle3y8>sFv6-6B_&Dzgc`fP z(zoTaOOss@jk=_|1sdaWbA*Lx%CpvvbJDp-Lv%pRzJG;&C9a{`e|}k`09va|Uv2bf}23P~R!H1_iD zS`PT`_;->X&VRxxpn#atbrJQd4@C5IOWdm^N_oy1z|!}(TF39TwM6=vHuq4TC8&YJ zBm)$mV-R{LIEd%}3LBbOG5sVrfaUpLtr|Oc{^ zdV+=V@qcqPW}EKHm-!4h3E0?Oh>2i5qx_SyhYAMp;Tt{b856xDzLRjS+TnJLEhP?_ zCHE@OX7DBHw-#60J2t~}TJL~zxTz{=H(OoJpeEOEK-&}wuw@Api!ace{wPc(uTPE* z0fIlE4po#6NU2>R*jCM^lt6&UFdXZ6KVDNu%KU3vpxpH3YBdYchVxNMr$rNh@A*06awo-Sil3Bm_}_s2tl;;1bXY`8Vb`@- zGLr@_^M3Z^VaK5huo+}A^UUBglseE5h5SPegLVtmx9B@K743};X|1S(Oe;AXk_Alq zKt4^DfM^blQ+_e8!Duxnx6#sFQ)k|0yaiA=qNnwNsU!}koCnn z`+5}^;nmOD?+$pMBw{BQtATck$8UMmRPT;c#BGHB8$xv5H@RB?dNx*H!zY6bf_;S! zV?Wmb1_^p(JcvZ7?W_r~yI2zgK3WJ7UDR6Hj7Rx2Qe$6cMSlHDVnbNO)+jSsuJrrb zh6~yMK3ZaK$3NiWn>t8#UiZ<{ulJqC08}lWhV_3_1!?_)bmY#w9DVN>ogzW7Qb&MT zZdV&r_}A<723l&&&-wxWf?C_}x8kgI;RjeQajJr1yMQ@V z5CIynjqhkqH80`w#~SUmp&a z{Wn0iOCic`D6TU&Mbmdy^a*IMYmhptVtg@d=7_Z~!t2-gXpx&U-0KoG_xid5#;j$bSpG z$>Qpr;(*uCNAU>&G?Dt;HBDll+jyE+IV(WTR=Pg0#3_FBBmL-Y9Wlk61_(P#PI%Xu z4$*tZ%1ipXjhD}+_`01%RE9e)>Niz+jHM9GJqe=p0iJrG|HyN`(HtL8+NU=jPc2bE zziiYBW?*3Ek@gK>a#5lsQ=j6=PeR!<1dk=I^u$%l#buWTU!7Q_WT?QcgvHM|g5pxB zSP)h}tSn*^g`ps9P?RqT?ti6Dbn%-#oVaqpt2drUA$@30W;dY0msYxa;cU>%i1Hy& zHT>~oN&hN0dJ4<~NSCI0==^#vZ<$3>`p+dmKKxnUN~C@v>iql%JRTrV<`r_$%nO_? zM9Ac-3LmoaRyn-Ns&J6Pjc+0af|L}JhZ@K4{I#VhQ++f@ldBDib%~Eits!Z10#a6! zrnfM4(CXRF+QPo;?@mO?lMeZ@X+GRKXB&lK4bS+B1XHrN1;Gt1cE2%*V}wP&Lx&SR z5r@=sd)Ma6?ev^i>HXn@m}+fT(V@#E9^~ff--E_s$pgTyGZiC$7$)6a14dTPB&#{~ zRd5>%|NAj8@zy{NU3)QxlwPrlno|#;)qqf`5?=*C)`1hwvY%69xn0yRfTJ{VG;xns zdxwwtpJ#Q{F`ey>Lbn7g=-x}j=hUfY*kBL%B!EX(`YsjYN=g@$ z2&8hRZPx+)_reEI7zBM6*OxT-3}5^UVil;eDZnwj`Yqph0Q-48I~+j8*0~Og{7(k|977r{gJjX=Ajdn{fRhoE5VT$l68Arikau zU9o|2MZD&)vyC1)?8|5B>7K5E5U;|t>VL=^Qu3XIc?bq?1z{>7kN^omgjLcYCTi0` hmMgkn7j%7xs}gHWpgE#M0lXiJ1J!t2h#um literal 15300 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

Xtce9*fF8Ie)X2wX1nkMJ&X{ZDEes@YfkI_=D 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 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_inv_result.png index 619fd395e7d6e9192c3919a7319514791f6386c5..5f6ebb68b2a2eafb2efeadae3a2ae1f825acf224 100644 GIT binary patch literal 3538 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 Qye18B(Hd=4W#OCrPkGOpa{vGU literal 3725 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 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png index 0b6444a3f8e5321cf1277200d2fb273c449fd61b..c1bf14fb205ca7ded0cde5e3d796985a77abfb22 100644 GIT binary patch literal 2966 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 K^w7F4Fa8hCzLz=x literal 11117 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 beg&_$-n<^6wb6Q)p9R3w_0{TB9O3^DQ^=JM diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_abs_result.png index 0c2a54683859427b5b76ddf473815cb26adb0f4e..60e744d98bb6635af0cfe876f76ec10c0ffea889 100644 GIT binary patch literal 4081 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 literal 6248 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 N(AxL4s*sOx{{!36tXBX4 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png index 7943c6b80e7999ce345667b778c83c580c326c84..ab3f81654e5523456ae164339a5c1c38ccd9e8b7 100644 GIT binary patch literal 9580 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 literal 11299 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 z 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 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png index b55f402375b8750865012a0c32a8a8e36669d4d7..18fd5d6ce603e0b7368f4ee83e086dc6e75bd4fa 100644 GIT binary patch literal 4297 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 NnHZTHR_i;*{1@KH`k?>- literal 5442 zcmeI0=Tj3vx5goat^^Q}NJ$7mstAYzfuMm^epjt#g&T z|7+1uUBxfYN}mVX#DO4rM5E0gwT^LSlnU|*tyo`-6pVVHn> z9$ilYS~|Qpk%wv3!zvO6w`7j)mP=m8_FxnGCD|oz;|!(qu8q6RO`KL=NkjYF}8@k3k?Q@e5mj~E3xZ{&55 zVhha+%PSQ`o{sw6_CrlCB#0>o7gu955D~;=B|lrD%SXeG5?Z%=`P=Vm^S`ikV)u!h zCx3|qom?KR`zSd_GDn~ZU7ZM)yc~?BB!XH7gTCER&AxQe2Lr~L+S{yY+Uq#6^u*4V z>R=9XWAaN-2DJ%{c}0WxvgK1Ssr^!a>aB^_M2Q8kh$k{a9gt2@OT7)8<*d_(2X{jk zO?-07s{0!vwH`kV1pE`dxS(h$3$EhKu(QlG(a@xiSceZ|t4(`TF zd;<(neFbp>GDyVL6^0~)aWX<$pMejQ4ggUe#oh});&kvdaJr-~=fT2vD2X>10vg>O z8NT6%4UI#4n9U$ZEU>PnpyDonrB6=s^e4A>UK8On*;X zn6{f!v@xjR^XW)54JA*(NuRMzOi}dv`E?ixP-1S6xKYprpavLsHY*>m-T$VYetHam zxb9s1?%Il)WfX{mBD4XoDHtefxUs)KjMpwuT!5s%zlm+0iiT>zP=rZork?==Pm8`b zY(s*!buXg%kNr*gZezZ28TUskp}7t)V2rbJidVlKnEkd z0mpfhgk1KkQ+o~AxlIi*%2k`xn#9q##d_&@%z5$DIh-HAB3^IVFvZ45_K^kSXew=I z1G~2@^=9};7WE}f!>#cW?2vJT=X%s5K3uD9^Gmdr-1WuNt!3nK75+VYjb-qV?rO^j zzWFrIxpWAS!LyZo#1TWof=XZqpHNu5Wi>O?yakv}>9+n|EQ*#*yB_mM5IEfVk7Ibt z&w|GHa`taasi^eB|IzEYcGkUo<;B86{hjYpyMQ-e9%TjcXwjjz$px=`V*2HG!>K@rNRbA?)Lxm$a zb+|WTC&(Hg*HSweRdLM!v$NTkpw1Ji3N6e8Z3wVPYrb>`O;Q{I7`C|^O6Ch<&ybvc ze8onrTB$lT_}F?~ML5@~DRFmXD2YgjxQuj&HY#>8dGty1Wr%{Orw7)p)rqsoK9>=V zXf)?;q@KDP&6~lItHQVVd968* zpoaBM3F&q+?Uwbb@E+3eFn=VWko)0?*E8vxk>K@PMO;_5lrS}^&%kuSnt1xsy=?d} zS2T-GBC(3)OaSZRu7cSZctL}=IfE{ES4q-b93DJ1Wo+W+i{gZ`dS+?V@u7u;G7sfj zWSt(41cW6jGuFRXrOdI#tgqPGb~ao-{Q(JQcw)HQ?v&T z&!Z5vP7nSpo%Fskp;(O)T?TVzYBEG(yd{fE8Zc^hHyiC;CS$KAxHrfqR4EyqZ*RXs zL|VeNoexzgKrYly6Hf#KmdT7A?jLJw1EbCub7e=PCSbRj8fxo^v(kw7Cj8-tLKjw5 zO7i8)m1>ejsUvtM4g?+@BH;c$8U40KlMdD(>vd2dt)S~Vrh&igdF!R8x%jizt+i*= zkq+>d0lyg(>$;9OCc#v?&9fUjH%ub$fipGX%sjYRVOhp$1JyI8Im)SXRVCmQ*$EOm zb+nYT+vC~Z#I-T2>|2++%@$<)8r|I)?eQ;&P>puuBMn#fIbI81v|+3sq~jD=svE|URO`?yq=byorF2 z;3`GB8SWQ}wX`W;u)A#GUhV*NI`HbHsfcJjk@^95eIVn1aL%10QD#Y8J=mH1YF_yC zPJLH;EL01QT9i;{3XSI6>^m?pxK+Odf2SHI%JM3#!QLD~`qjMJYuOU~nACsOK{wF( z8l=p9{pKw)8A0cvCtP#O%I|3Ee?WxpPS@P+BgzOaFAP4|yxfk$(c(u%-b_1>?6VV_bpX4D4VP}(#+AC8mBinM|Lp7MXLzf5QovGZ-jbIyTZyi z@1Nk4_ULPDOaaD?9JI}P2$b^^MxFF7Z`Y5zCH@gs;R6|uaD6ut_1xmchbzk3xf9U@ zAK^@>n{SHkb}ZHA`V%EhVwrRT_WOzB9u<*^V#4<06HM>HDZ@dPgK!$uHMRQg&UCPC zpSjv|Yq<+O_S!?msE2bw4A;3n1eml|= zIE|tMnP{|Xz zwve@OV~$lNKq1?&N&dN*vxI`a!}e=ZJG~{o6x0t*b9ReOYS=>TGVi8p-?2@$4g@&g zTMrW+aMO8{sM=oB65dy|97Yma?R9?7z$sB=>7rK{0(B+pP1T~c2}kT@PT1?11^6C(!J|F)sG z#%=sJcu*hr?rdQWQoJwiTh+Krkuc`0l}U-MC2`QAPs*ph65WM`(&#JNhu!Rh@6>1b z?j68x0-7f7K_1Ufpkah~qdYx+L`okNTr%n}%`;+#24mgDy$8RJxAKe%Er)(S$_&mI zsThInDmoyBi{h>@YwMd}Vt+$3F3+Iq zwg^&j68-^`V&BZ(l865twX~EbA?(2u(Y^@=p0j478Itq>!I>eBXI|(~;UxPN;ZC{Do-|*0*SrH*$AM zOcGS1)ku%T*Q~pFoaNaXUzoj^ob>p-w6@q!Bax+!RIN9iuPV0jmG&}!nv2|Ib0Ie3 ztmmfQtk}ES08=#>->meG^Qtr#<)OUlLi44N%c0ZDmM`o`cyC?!Qz5;R#cgy9^rb>@c!&mnEZoPGSV-kHdBVxDw5*CJc*CYu3tDMCfEKdVGSG+$7-6I?kB8uBb@7PnB^Y1Rv z?KIfik33RNV9Rca&~-j`*|jT;@1}oN6)DPU%iVQ~eOJJ1VJb2&oP}yAnYBtjQ~%yr z={-g>f*1Cydv3QTA7BdEo#+nYEtn1`l9Zu zt5Qj~iW~^Wtw^Rtv}J3x6Kt!$P1WT9KPxA6KCjrO5Fb!rio{WxzPcf92C;pw@5wG7 zcHmGb7+Zqj_wD7!Yt$=!V6uvHKKQk#_1&FWU7$7R!%2V5-(i2oh@r1&odU!y?&@aN z0=-`4IU0%8oui#=#B$dC)68)rd)J=$jhLE*6KtWtRMxQUjX5wT;p}@2spqc@Z#STM z>DL^Rond{nfuyPBZ?B2Bcd-H{&a@ zkb|Jg2u<3!p!#JQQbQ7RseY+KZmjTh3>5jgjJnW&HoxnM$i{dBFmZKzlry8LMD5zH zDX(h0KvyHV>F2GPCEMh`4jmhi72*eLef*#c2kI0pHT!PO869BUkSRKx^T!JxN}=YM z!DJO=c35uh;g}d+x<^Q{X<*Tvy=Y|!(AHUsfl?gifubDYX#U-Z>r|(k37_5_mjcRJ z3ZH2>JmBq4P!tfUC-7@47wc#mmUD~WSzjx&=DuNhJoUzukEjj)OO zI^PD!&(`#LZfw7K^a_ssti-}Lk}f0J*5@kxWvkgY9!PW8CNkU55lSfecm~hdz zK3Z(kUCQ-?N;jrG46748Gu69?FWPj*SYx4ra|`=b@>T>NRe1Dblfe%-BnP}q;&U9L z{K^Dx<5_!tbB>RZd8P!{Gq*gRyZJB%3I-uTGh~e_Hya)nG_iGSF_(8lvpOj=w~=S8fxJ zOYB*WyLvj(kqZ0*eS8ora4d+66p5AsPcJ75aLtDX-BUx<-=Z9`Nyv)Oi&%Ke)4aFJ zto=IHekA;7_eQ75EkoR`@j?89-^vLL)btha_lIf^Zc4c)RTa8~$H_9n@SaKELR`uG@>#xHU(jG)f3J~;rLK6j#zvFtI z`zBDTXqI+Zrb(Yye|wc-SSr$S$ey2d;`&26CF*dJ2pOCeHiVovKKK=Qd(AwP+5Jl( z>xq-#K%}O>-96PC3c?q@klCn22`Ao1_o8grX=kD&XO!^&L?1j2VTKKq1yzyHxd;@- z1qcl`*t}b`y*?9Ka`M?c=k%SJ0a+$!J{@7@dHK8+_f!!!`gj;H2Fm)X=Kg&ya^C+J e{*UvxptZ|OI0|Rjczg9JN`_H-j4oBM2>B0B{rkKC diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png index 118378091ae4baaa37ee46db7e03eeffd87ed210..18fd5d6ce603e0b7368f4ee83e086dc6e75bd4fa 100644 GIT binary patch literal 4297 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 NnHZTHR_i;*{1@KH`k?>- literal 4176 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 diff --git a/test/visual/golden/freedrawing/decimation_result.png b/test/visual/golden/freedrawing/decimation_result.png index 90e7ba962c7da4515510b6e371e1b76edb56580a..4d314e8648c950dfabc21fa5e45a25a3845eeb30 100644 GIT binary patch literal 14055 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 literal 11854 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 GD*S)6+V!yj diff --git a/test/visual/golden/freedrawing/dot_result.png b/test/visual/golden/freedrawing/dot_result.png index 999eed113b780cf10f7958b5c7f2466a9dd8e2d5..bc228b85af23de59536150539e23dd2b3684dd83 100644 GIT binary patch delta 567 zcmV-70?7Tc1Kb3VFnABV0o1Xie`{_CKIA?jD;kwRs{eIv3I``=g zCS-*P(V+_Y*GN_(mB^SJsE^i|jP1Sc|4F1_IaXl>7PR)g$A5D?4ZQ1Z>4=F*L>lH} z9kyXJR%0oC;td|-7H;B6;M<6OWv6!vX+>_^vZ%x>TZ4&Y*->D^sMVwaF}*oQe8d&bas zEFZ*$F!(?A)g>ej`Vb|gAP#+z)g@$QD`Xeu zC3f^BK2kUzc#)Vha#+d>aR-iIeZs87A-{uDVengQrGE%ngh*r$)(#=_8IN!YHv%7v zsUYnuN<$PAuPTvFBolAH3k{Ce4|s-YT*HIFr;;LKtxh5{8)}F%vk_~sq!seIz5PxH zUX~W{yIz)%ztv<)-6|x-rIIm~NJ+O-YE>dBE|rX_L`u4yQmYb4aj9fXB~sGulvXrbUUS1C6eM&$(V^D@(Y*jRWl0EzS;l)002ovPDHLk FV1hsV3$y?L delta 396 zcmV;70dxM`1hNB=FnrR`BxTzZ{ zaF8M$JOPiuT|Ili&U=CFNIgnvB_JJK0~>lEf7uRL7xW`D1$7#O=Rr#Ac>u$lsd_1IM8w+eOB+r6gYW diff --git a/test/visual/golden/freedrawing/dot_top_ctx.png b/test/visual/golden/freedrawing/dot_top_ctx.png index a22fa74633904cef64f7008a729baa456c0bd4a5..f5a31720e7bb0d564da6e70fcbf2c34516a9819b 100644 GIT binary patch delta 489 zcmcb{Jb`6`Vf`sj7srqc=eO53p7u+WIrj1VUv`bidya11M;m;2P8~UtwpmhS>37}w zhDG;+lvW?@aAjj|78IVW#MT|C>DA}=yw-fq?{fS7?p1fv_pN{bzC8B2<@sW9?N3ug zKQ5I1d41NK-Y;&`ra07ZohFiF{Ox~kN&LZ;qYj6285@~A`rX*RJ@P%=l7A!e$E^jqlg>y=+P}H&o8l)TXPR|*lcnVAd&w^bA`vaw?ot3m~5Knxi5}{p_ zb)_xU)P8?|p^eABU<+xWO?!@=__6+CjbBd delta 431 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�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%0D!x(w_|F(N?=DSu^vmav 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�*;4$dq5-$zoWe@ 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 z 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

Fv$Bpzh`!#~)f_o@_7?4c>Z6Ss<%gFh{i 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 literal 33702 zcmV)iK%&2iP)PyA07*naRCr$OeF>OU)tUBNT~*zH0)lLUvLlOtihw}eKtORpaf#a`#3V{I8I$~z z#UwMCEaRWViAhYx-*MD9#uzoOh>8oKxItKzMM2qATv!`qZMv)Lf8KNMckg#k-CI@N z^oDl%@O0ZezxPX^`O&-r%_|VQ0*U6eX_Gy~*wa-*9+X6;s>86dS=x8}d9n-wT_|7Gju?P~ri z#a>{|U%B}&npYrx1)}%e&k+3lXNUtugMy_QAkEvjAy**0-vkgV6)^PG9Or=~7c311 zl4gK3ozBZF!mB;}}fT&(B#|)gmI294 zr=!cILvea4fzmyd`1sn#@Z!Apu^(l~7?89=2HTJ^u2$HJ6#Co;b-N2KdfbcGKJaRb zEVd!rSU%-JtyaVSac%F7T%~NBT&qF%SF%Wawgk*kpHH$$I!F#%{_5rBEZe)xV`3M;YAT@RS zYIGNCdlRC~Cr=1wB;o?ER>)#Evc69#i{HS0WsO#-;h!As2Jt#-9@hm|@1|IJuXGlP z8Km9H&5;0E4m5qQ#Ptf?V;3a3)`PB9TO_g114sfXB#^r0T=Y2SSe#y69lUp{1l7qB zR4@DxuU_#e-Z22-zn#dSt#Y;E-@nf8T5SLl28S*51SV8}uLCb$GJ`MiE%jICyPHA6 z70OL`)TW^3#&&X&^XHOc4O|{NIyP9|r{2FMve=6(c&N#}D&F$j&%w-gS~_lsZo(D#d3BpzxK zC>MXP!tPa96K7a(R3J^ufi%*$o`rs6dt-D}7A4tgB$)g=k+zv?kO`o<>g z#eP(pJQe}Ml<$$A6=~8Igr@^<;5H<|w4IpGmIfHfsmG(uw@$@~)}`oDRfWn;`|$n` zUcj4+-$MmTk->gs&;l9bTjpQ*di62uW^W(#tHgst*9=@Yh;JL`3Wb4UtJZuiNwG!* z$~d4bNGY;7fUJM72$q(}7&k}i646#a>|Swy$l=)vX&gWrrAVU+>4z@Eh`#MHuv%G8 zS`St|{xlyi+_M~;aR8MlMJ4v4^3VZDRPe>q!Dc2>%uFo$I?ig_0$r-Ay^{&R`f|K| z&R?()X_Jk}m<+`}WO5e15vc_Sz13^?0)=C`C^v}j<+?&rSkqJuYZ+{DE}TU&_X?Fr zPU(*}-#!JyQzah^r!(PQ(KD)a=%8)Y0 zXiEbkBvwqwj74*`cQ&zbuq|GqX79lkXZZsW&>D&NRTJl z3FTid{ua(}kwS+|HA=YPVnTNxK>2BR;#s7SF@YD)B7WsRo$uyNjtU4H1}M2}qWcsI zEpyHL7=i;wCp-ikt*px`^#bDtNxYEu+#s$OT_Apyb<|W1UUN{nw($VBUIMABPe#XY zo`eYrpoMmIN=lH;RH5RwMR?)fMc8UKY6U7I17_EXX!o1$mF$f&@QP`V(tkP^$BpWa zVHq8NWRX3P#jaES2h)x9;D6OPfHGA2nXKG2?;!vXeL_?s{r0!<<;rR#362aT5>r;=C`H!fj{kvE-LE;snB`wD#FDzi|tqd+2ovHY&M3UsdZ&IC-R zz7Wsf`v$g{4a-xV7N4$GloiqL6@&A@yC?+#;#rWtT#OL|I-oz_SC)*y`J10$`8Ct= zrU(54CjQuGe2(z@1#aD;2ax4A;EHS(Eh;le@>J4`@YW{0^VKJ?6iLs;B0%`@wI$IM z1MBY=3zXUh^zl_@=~IZKW%C`aONbnLHh&fmlmKRO;@Ucrtrw`2=+JIx`IFHYd~_Qe zb66Tj%1Qs}0hE{TM)?n3!s2&7#(sYdc}CN9B|t2I7^~1VvoWFvkZ+Aa*Qv*2LRAJy z9%PveO60W}EOW!A6Ugj1fR88MhvxwtF#niUYT=#g`a};tkxlz+_o@V?29h2?W?hZ5 z4=;1#k1VqHyop)2&&Nk5GD_fpv07q5SV?cd3|4J@>|7U1EC?6A1f?%si*fDC(1QRm zZdL*b3B=4k+JlY%=NT+`uN?b*(@DUH%VmSYY7-P{!dg@nUN&LvyUuc10lHTqj*_jd zh|sg;`UEuE^5yn2g#GoXdV!bmdG#wet4#|W6?NdyZ_i{=F?RzN-}pS%_*U5-IM(gr z!=`V!ap}C!y(<0rI2=2%FGf{nk*umh(%dJ;UDW`=kxC&$fTWVh+_x0Z|8X8ZL>d(a zB$8Fq!8$*qROuyq72#e@8-Z?L8-_FW!AYyd_q=5uWF2&$xTf6 z)daQ)WRpNOH`weonD>)eSYr+yvB&}t=8XuDtXXYylK=4>oNz)n3?Vo&32Q<4+6f@b z*G&-|DP&5MsCscdUjNZ^SZyj9+`M#qTB0(f{VcQ|%DtL76%*REL>GN%^7^Z) z@u?qw@IAzO>_%mXX3{|JRowuDKC`6p=reO6Dv|!vWb_+-3`QmrDC5oLVh|v@AjC!4 zxew(JufWo~-oz&cB)ol+tLRrCY~=8A6f?)mvF7XHt$$hffZ(3{InS) zDW>sNnMJZEbk;aI8qDrBvTop7yr_i7ex$*SPbJc~o{Ise_rjP1RY)DkAjMOj8(M!L zu46ih41sd@V$8nlO?+fPBJ0S=fi|PkWRw`g7z^_M&c*P7ozcIF7KH9_#$>n*q)L*g zrsW_=S|m}qY%`Wkdjd<$r?jU!?@l-_u%FGYTa0@(t~-wS%~_Z%hh|Rv@ig8r@rT4a zu6q?u2-Iu*QG0;!FWo|+cC$Q?OdXC6R}aG%4ojiEwjvrN<|0av{dgBPKKl+<-LVjx zltrmF0lWr^cD;lK;pYCMs>xB=r8sa{E}5ocGmB(zJhMplG`0^G)9iy5FQ8?(?x8NO z2}t-=T#~3wl|bozm*Av9U2yz?N~FXUlG9#qE^&#ftFeFTW0>*YE|28L>!Lle59?yF zj-5gJp)X=w`fOVyWOJ-d~OUJgnAqyP3HiW-Uv-0)q2DAaOb`Pb#BXn)I0xj3#x+MxAH;==B zv3)Uy;4lCYcZeWi1-itTg{&7h7`KRl^_73e^bhwLLQe)sZ+$c7P%@mTaedL@N2g+3 zWff8;74O9#-loX%b#ed_XF((t&p#GAi+B`H_UeVJF{yPK+G~IijCU`=>^qj4JYc+g z#rJ6d{*~S$wJ8(^z>4GhGv6L&ZkmmD`3dN7_3;?iz7;yVK4|Eo7)pAT)sJ^$<7*#a z-OaD#gU}|lC$>GUnbMSEndJ=G4NI${!6I)$(1?mgxc$=><-AlV*`~iZ11GdC!;uUs zC5Dp9uUw&@)Zys# zt&upNmScYgX$=rvWJ|CLU1CUn1|$!y#JoEfV54GBTNjI*hYXT8o`L?ScgIj#BEGh; z9bABvrBF#1Yr#e=`tCDWo)d#er=QK(SvNGytT3O0HJ3{Vq2u>QMZmb*9*fES(M3U(khVk}6~D0}WIoYkfbT^WPWic~UK z&j#5+af>ua7Hq`ZKb?!W%=*yQS}P)L38|l+j)5m1g@NK)X@HcFZk|9UokEoa>HoVF zFWj*ZAB3`4bl`$kSeQdcJPCr_OZyvuq>%pmr5Mw_EqWgc*{g#ENUjxe`$F=$D^*DL z?Sd9RJQ)KAcSiqY0;O)PB+jBR=f7eT-Z4PgVp5LP9(9EdhvfZ(ugo%q3ud;@fe%U9 zO1xp)KM7)=Y06E>8>$OwE|?84czS1%Wm;4~^2}6OFL`I{$UVisu0V4ZP;0f^@s=>tVTvU)4t`|eCEHS0r*%#tC=?R3hjk^GNw7;=0U z^x^Bc)%zqf11vsOYCFhm&jG!6`<2#&o^cAvz8z3@^&-1vFhqGjWth z>LWO$uqNr&R0%RnyRy{zCUV}%pQ@|p<-W~yijvt9vL0Ak{pB&wM%_CA9F$coK)(@XKPbXnn7(uMjiyFtgH zPH_Iq3FtSW4@SAxgNMoGkKmEDTd>Cu&~^VuBNPYg5+Ko*#O*z>RPBItXE&owIr1w3 zQ-$PB(dR1m|V8v#<^T3-}|I&Kw3Uw@U>oR~A%VPT*Y@Y)kJfDU9 zCoUk6x~MNY{@@IpRaK3oVFP%ltQ69?!Tb}#+k{DOtgLMn zvrvZ9M`qq=`NHv_q@EOu+@(dhk!UPM_?>2b1r^ zT%WlsMaV|tUb$gLZG-ga*U8t~seOG>v+$bsO##aTN}qOUapM>a(5_b;P~^mvIA#4# ztXsGdAO3beHhQ^#>uO1siRoB=AJhfRpK6fO75MTA=yL5aj1_Q55G#c=Azv~u_f7~_ zo~s2UQhjDNX~Pbzy!dbUhez@Y(M3gMfHITIK;hT>`?;jW8=~zE3wHZ4+`~z?v)g3`KIBfIolZJ z1?M-NVXa40aQ^3|m~FUM_SmxIM3=_W2-&N;h(Y4PmahP(+dM_tf}51J1_c!DdbMeR zBV=)-EQ$*h-t4V=v3bjG?09QCK3VV{cFb9aT@m200Fi%|F`K&VICS~O$v9ot9C*rZ z+==pOGqAuwiax!47$5(pap*syD|$#Rg5W4kqiWrDymjf{FhBO@>z)@^0Yn$t=*zRB zK)aVg*|j6l zniZ?HSan*Jx0C_0tx(&q8Yuk#6q45sN9VD<(5KfC=qYuSVy%j7j*1L+uP?`k%Qs>3 z&9CD_^YK{Epp(b>p}KG&@^XUD;6Vf zJOjNh>W@>k^$_{+=5@BQXwta*Q@=}GbH0|dzh{n7cl;W)*uFn_oQ+pmAh1BlHE zWk+?z;XgPPBU+}AG{votQaRzb24t%nD8@8?3gx!y< zL^%O+USD*&ek8u&R+vBBh3(%YK)kf+)x&VqdHpb;Wg1EG-KB?u0q&<2_-Oq9;`xyK z;4)KP8hjLmM_UnARBU>|Sdd>$z>pC~V^Fo%y(t-~c^k3%7jv=N)Ij9HNUs`+e>)xh z$8^WB@?&PN7(Xq1A8-BmB`o)YaZ(Xo*GDo}I<+f(?oMj=S7)K$_}(`5a4Y9|gY#&C zxOyihHiU~+7${ojDaid>34Cb_)lxK`G^L482pXY%043vlq4o76Fr-@>99@z?sdm5e zxnNQeHvy}pJX!1TDBt2%=^BA#u9!OYd{dJWEvdGtQL!H4UX_$!-%nq})6da*L@`t2 z`nmbyQF>BVF2@2x{sEwsgWmqUo4^WMYipT2}u=7vZO#9nyG&(A>rle=Mn zj~g!ow`dbq{$QpD5at{S4(9o6qm=Fbv`tHPvr1u5+$&P_30|-E!LC7xJ%myu#KeD{ zgPAX`!H&q_yn&^C;to&mKIi*&o&GL=*Iqu0VpGDtj;jwA@8^9xq3r7?;F!Mc(dC#U z&`rQ%_J$`2pieMO84()3Apm;4E5d9Qeo|CgS7&`RQBWF;X0OG(8=p6#XVJm~x$Z-- z*lvd*-50u9+C4M;;14nrP z5t1m=(~CaB%71y*Yj?Fg<#6CEuAvOJad}rN<2J50+G$$52FRn!@algqz=ozAoGa^E zrywZi#qt9sE=CcnB57F(=xu#C$V62kK^N@I-spTxTeR!e2A!A%b4ijy84(NO0z}*b zDXjSm=G8q+T32zO#I>RY@tTX?^})f$AML+K>&pgfCp{vrrj!Ga(Oq%Ge@?`?1cmuL z-h)B+zs$mOi#{}}WA?OH0QuE83_7_R2Kt}LV*nCozYanzMG%)GZ zto~ku#WHRUaC&z}>DPwf=waQ^>&O=9EVLHsmp54|&&86)p(u`0oNHxxOKdJGLFR?E znE!7tAPf#W0wz!f%;#PeaxQ!u(mTlCiCN&fl1O6)o7ubAocurxq`lHZ<< zK_j|ikUrIEbqJ7eJ%u;DE|mRRtfH!_L8>@2w;vE>bOu*oikHJ8iRd|L9Vuy=a)-e1GfEA_{k-D7NZWu&c6tE$ z>Iihb_9ToI>t_J$DHDG0IXwN^``Bgb=+Z2u4vRmYhrz=-W3V`7CW}>KC3mKY1rY@k zS8_*p4oVNbW*;X|de0P`IJgUjaxLZhcx`WO#XHwLi6zE*NQ@)Ga8W8LHoe;@*{i1D zV#R?s9HYp_;a3(M#rNe`Evn#-^Rjf7piNfCE|Lwi4N#Uisrpwg8srrU2@sLODFHtI z6x*(S3iAztoD~{t9hhGu@!nR01t3=}SY<2_WDyamsG_0Jf=}|ZT zRUv)bWDFhF1%oBwAawin<=Ak=qnPiLH!Za$R1p2Ib1~$kt~k#9TLX|Myq<7f`_P5E z8UVyF5maonWD{20z${raKnfYIqJAH?Zu#OAnUpFDBwEK-#1;q&vUkPGNX6cY7+8R? zcMwQT?1Lk39E0&p`xZQ=Gr1aD%6+{8YMFY^`J7X{|okFSZ$Yi46wGXiLyU*Zl(*j^ymdQV}U639rl;9#j z+~Qp%K(uIr4ASH^+iuL<{uO0G@&ZI!YjuUb5yl%7+KElc#VTx3_zWGVM4!C2rsB%= zSXxUs&<~R(eK7-q$mgq>_f}3)$ipGd<79~NZx)v zhMw3NgWcktQ8lEhh}3OpMO=VbMfdmyuPA_cN-2v!!pd*cg2-VaDR8&W5}m|o6j$p| z07$$$sI5vASokxsE_&*f4)A%d(wf+F)-+4;>zz|@(!dVrFPRux6S)uyJ3qSy%m4Tf zY%l<^ec!fY&=T*goT}}cXMxQs9LfM8Y1q;L37WU80-|*Z0|5-r1^n|AoHVF2j+Oe2 z2FLcj*mTytnC0nWS&PM<7{+1BQr>YPh92JqLt+6^NOng65~k+++E@2ph!Y2O#PK=? z;YT$9c^)g&It2_~vBvhRz4lz?_yz~bp#%`UopP@`&a&{Y;sX2tC^81Xwuz>Y?%5Wt z?w*XZ%aUj8m5qg@L(%gMTgqXR--Y{A4y}&RUP1N8ETVkWHw zxesYQ+Th-cFl=yF4D}BeFAk|npyHOfm^;M2D07*naRKJrB zM}me7DB2Z*L^o{dPobN)+$2I3l0Dj?#eGw7p2QvU{^D9qUxkUpJv6Yn$0dM@WkMZs;^RUX(91i!# zi+)ya!x$U6QiB|D6b`#*GR{jS(MH!o_%WGnqwMS-UdNorRwIfBIRlAo)IRZYGS+*7X%Vmds8;q8^rYwd}S{-F*>G7~0uxC{tK; zl}&^)?r9D$-->r0T!!_pYzQ@JS$C%pK%_s#tKCfQhxXqdgE6g=ILsB>BRJ?Devv4)l;FSqdX{5h13f;am6cfezy0WvhytmH7 zoJVL$7`NH17Wu=LmQ&ogx8iqtEuZ;W2S~gt7N(Um^Tl>4+w^05Q!GF{v1e*}O*;vr zs1T{CDj|gqr4niUnk=&HJ=wGeo7f7x=tJyyX}u9A$aNE>R*^xX#}O#Ka1c6;I11g4 zZi}PSbYIj%;tqcr)0^1p%M0nz2mBjpZx&VeG}3pTixX%;w318+AUXvbHJd}OMdA?Y z2MPFCX8y>{lhE(X-WVOH&0G!a|HFLDd6-kIbp0rbeb7jgkUviVk=vR}mXwZ10g2V+ zr3$T{r;+O02`z6PkKxC7+D`eTiu^b8`oRS-Q9l=uY4^?lnIrgZ+?0gX;99dCZ(s2c z7I|_xmX03Ge$1M*Hb-$wHq7htqeUFj5kn&Z!b-Z^0_*m$$cJ##z2P~8W|Hl%$D!Yu zeK0yo;oqaaSNw4yW}DQs72LL2K-=DHXCk@`gmBp1+`0g>AAG}00lPC1MWn8Qi-@0hfaC{> zWex{2s#3gj6j-FQkru^F_4VX*qFkn$#EN2RXf^mf1M+89W8Tl^;(d={6}VLr*fKbm ziC04ClvCZ)`(Pn332oh>!=|qQsgcg!RLm88JW1xl87Brm2&uDK3NKH=P8a_8SaMyH-LQ+Lq zSc1Uunzj0NLFwfK(RpBJbm~xsc88^LSj#dT#%mMtIencXL|2tT<<1Ih-&27-?{2}S zyO!bocQ%*scY-xMFUhI7BMyQDSbc zo)_OSH>(wPx4hJOA&?x%VAofk#4}#%nsgK!v=^?l*EvX5HjAXBx|I4xHdsc57lb8d;n-e3!v2HD=fuGHa116X$nXr2GZ%~Dx`lt4t>u$ z7AL#hvQRw2iMIr*fF$3H_IhZps;f;{Lyso(^v1e|e87peCfe=NEaA9jt)TxT5X$C9 zml=n)+tEHO7;s_TE9Vw4a4nH_vz*G?1$5v*PjS z6*#SHYaAWLGh;k*^>jS_&L`ND7pV1A7ikQDgimMQ5!rbB-YT5ijktVex5J3cNvcU{KF>G|+{PSjXwdCfu!jb3m29T!^K ziQ8Sssl!w5$6Q4LvC8XV0Xa*54>qTLcNZi<=b;VSr6$81RSN0Td!X%2V{tY`G+dBS zEoQ|>ST=Qr83xqgv(xKl6Bf6Tqk*9TVS{0-*vE(U_k#yJ1@k?)f%HS`$3_kF4En+C z-{pcuUN73>X^SGD7O?2+m+O|XZ;W5!9@aw0m^e`|v@N!?UdR#gLUl5T8J<_f! zgHK2Q8Ba9Ec<6=#NPOVyp1xdM_XL*BM7f`Q4?8#AKG@nS4>^JDYjc2Su;KW#C^seV z8>wHqjavMb#47SM7x;xS!BDJVeqiKUz2GEIhG^-|?7)9~9hYR0D=_UB?ieWZ z^p?gZncpE2p;1;O3MAUqlWXuqC`D-U>qk7ayMgFMhlo7qW8htJ`(gI=@lDdIsqz@*@9~n{#&+wvD?N&-f`{JtHJqWIB8u zQIn7(ESV9^$RPdfR7~V3KE89|SZap$?_HqS)3D}Xk*gKZ zL|whDAH=_Q@kxbffM_8)eS#|;U5+WZV-hAD=FKm6YZAB2!^{WYFtb8zdu-I4ljtc> z_MW-dz)HJnu=2Hr6G%OICB}6;44vF-xc5!G@Lvn?p)C`dE}DRm+Ja<=ER7+*RXJF&)P5~% z1JHy+#I%IMFfHAmVg8*_II{#ObESk#Eb@{+(%J^=QGFr-4L#T0i?U?WU=_?gNzb?f z<2W_T1;{;%G3);kAX-q{jfLtVlU1Jp$qx>plWT61ZZ{<`0>QIzQ7vwh=|&`7m9}6J zg%4{zL}^66N}WMl73*W$;Fyn^xnS{`u;M{d8&JrrN3XvG>&~D}rdw~H;`OR~J>=rz zyuTCczW4y<<)|TQ&0cpHP&jRFfol0}Nw^6EQLL{*dd5{av%_I|0HT|@+?4Yn2au?I zyp`XfiM7p0oc}?>pQmtmc0aT}_DCFV#G}1RbCv=)MLZJ0+(7f}l9ZJReP$hYtl5l; z&@fN29#%*pEbPYL6>C-aM)_05MO=A3KE;gz^fajOfY9{!N22G&Lvf0hGnJ{mKX@K9 zj3T?t3~>vGBIppkNdrrE9BjfsMmor_Pfw6r0OF(E)B7?OWC=dB^NJLI4T- zo?#Wf0306mV8BsmdCNqc)U7r8n%-rZqvx%Xo1?GEc9KDsnFK06EXT&%7GdQqJuaF6 zq3VbT9cb$kWmTeFFkVnpjYVJR!Nf3eA2?rZW3S2HhcE*mENSXdPdq)a(pSHRi~Pc2 ziJ>|h-Ckow9>(jnoas>#+C39dQ>X5SB`sb@VZ4 zD?@qYCAnT44CKWkuZ4zt>Z!ExZdMS3NMn_rn&lNO$x_SfVtqz}^xXWr8yGTgQib%K zuVO;mG92Yf!vrFqJ`dWQMh6QLy@%XxJzAC97hr{%r>=qGey?3HH)SlvNe!A}HhEn> zN2>LFO{v&ReTh^T$rNfq3S~i9i}>@!7}>WSdhovZwTJ{Vv?4dYfazv3t(#4%FoF@b z(=Qwggbz$NNS6$jcMWj>F=^h{O}a$JX&+<&&0QRxZ``!w6 z!&5iWBOxdzWa%fKpq!}NkLZflH&4JMc_}k$&a)yLcVO)$kKmQO!E)4KAW8EIFU!tU z_w{_uHKdS!aVpMl;dNrlJ@*TRi&T)V)69oZp)k5Ir2S3LdOR}~V>`A&cVFPx^Le=_ zn|EQ0X`Css;sZRn_#Fdo>AEYluh_9CU3(o{qmw*8A7}(DJNKb{`NvrQZaKEU@IK1d zZ9_$9e1UCXvH%h}QGPE4NnNCrH`ZFbg)Y9>-?ONyADSUd*0B5kqOvIIbWf{S&qgud zXOO&OGKTkSkM3suOHj=*(Ht>H=zaNdJZ{*v!D(*C%jHgovR4;ZtRz5e&w42V^8GRB z!7Q4~3FG_!cn+R;Zk3vft5xR@Ie-)@3Z;==d=0J=*GgNDIcu@}r*rVG*?d+E+QtRJ zi5{&^C>?szgrpjjdUZnSjbm`^;7;gI#whPuF+h=6r7D918$ZQH6WFgndFYzN<+3X3 z*-&AUZ^R;HeLtkX#J-;ejoWjg8@B`?-rRX#MUo{%E0|YuVpkk~%bA#szgZmqfKWI)xp^z+6PgR4|h6kqLQf)oVy{$ymxce~Oo2|!@0x|?9S~60{%|w~4D5iOG~@ZQW%?%ZdmY%X*o^gmT7Y$H%W=R5uC&Q&4PO4CTyG5) zu~tuY4+y@96kGXyZtJfdM@O&_7+mcnl3iP%#h9Krf}^l68HD~_4o3%WR2fprG1p5z z!oq8w!15dmA^>sw)opgo>iA0guTz7en*M{A;-aXr4*p1O$zVm*K%%SowOUI3M|BU7 zBGP&HUyc#|+G3zTR=^vuvSmLuPk9h?jh-Gm$7t+DEnT}c_U7lF6hcRl)6#y@5|6Ip ziz)DDmkveyOOHc;4)aVWkgkbJqJU*xIo3b&7T$UIEtGqcoOspty5cl=5Biqnd4VX9 zq>#9LFxs^*MVbZI>I@R*vu2PmBbpOPbZv#!gO9?|oex9DWJL3njzLP3sCw#c%>5~6 zGRE<;v~CtJ*YfWInv2b#1=b^l^zSBO;F#_>(FI5X*njeW<6&o{c7p`y#(LKA{feg) zs8-MUU&o~YTKYoJUI1=}JU))4-s}jg`6NmnVS0!qA?inzzbzvL^yFJdJ-zplDEs|* zjOyA3-D;wesDu0R{n)X53)ZjNgdK^bRX>zVE8%FKdVX-z>$m9N0qy#NGgd;x&)b9U&qt;EWsvU5-1pc6AZqQH`H@PtcXL}7YFB_ z@W$RraPD%jKG=zM7yS)3wH(#@8;(Etu64TJbq|oZ_`@3!+_ybiJ#aC;=#B`c)Xk6P z;Q7}-z)o-0AJ1a@FRbKY*|>2JO_A5kU>WEsX-=hQMT_$5iRgVwcMK^@2U=FexM1d# zQTn^$j=7gt(+pfOn93JN<>P0i9y6@kDC)cBt7*++ zGI)jNZVScMf>a^>w=ZH;@AjUIt5P?iTX)NR%=9#}EI{a9#dE;w6dZMJL2}~{GDn>e z!Pk#Ox2sRWcr8K6Q)SH$z43q^LGmnIjM<|fKyCbTmQX`B=8(j^F_~2XL>}qSX7c{ z{4w`Ey#CKmVzsYT#QXF;wXhOQbQav@vyVAJ{cW40I82If?z#8SXm)6wI0imn{< zIj)!jZkCWUrlkxh1tii# z@%lHm+^ZcW^R6cM0bHws;^KHgdo zAEhP8Zrg)R=RSbhAuT2ureZ^No*h<~m5-<{JXh#J_lLVP)%76HD667>=2@4^PDHzl z2Vg+2BhXU-;<_?T0W`I>T#TJ6v#8v$59Oxj1Y|Qn#RogFX~Bp1=?!{c+dKB(ttaEVGy^9qG5LypU^77V6 z7(BW=hPeRQvV4s6hU7w!$NMF)vVPcmtAE<{r@&IX49eG z&--*l*^f^}|NiaKi&COekksHPMuWF5t%^xcenhNgHzQZ>$VK_@#CDB%> zeL(o%Ye`Z5K83_pL(p!_G3e5x9XgekAgu%7x&%Nmucf(a{)S(KEumVBG?nT4j7~|* z_nO@-Ju}n;w&Scb5SKR&98oIo9-U<7RT$6MPVWJ8T9+WZrvlrj&BP09J~16Ryvjf< z&TX-6fI&KS8-v7kjR`;!D4lgR&N;jcN4j)^yO&`09ZNkjngnF=bOPhy#B7@A&!lIn z7qTi;Pth(|ZU!s>knVhx4oF?FEM{jHdQLta->AQJK@j)<(w3|NB8-51U6&;OxXO-N zoyI0-a_59pA${W+=y6ehoa(B(6CArLP(JM$%v!g}sQTK#Tx)S@+0(F+O1)T*`f;&z zTcym;_5yUK^cH^;S8CaPp%Yy8C>~wE)#LZ@)NmEW4~|X{fF^F9dekg+X2bY-NcV| z_Zk=$pw>Z=hn~?cK!}n%jiT|#0V8+40?XlKt#nFPe=NowW(2j&M-=rGJ+R}{WF}Hc& zAG!pidpWVE*?=X;9;m{u)9%8Pp-HzAgGw4%^SloJpe$y!&2#ED24NMQ{ym#w2oR@8 zm=_?o9;kpNi zmfSxy08%rn!qYMsZx&?0#Qk!qE`0U61cX?oVgcs@#0K9?aa8+?lTm&4y51DkTklTb za;YR9jXi3@t)AHX$zFUg`939*t*6`4c5O4$v>I$Cp?mz)4?qGn@3cwtdNlVYYC-a^ zNv=|PbUj5fU)C<$SVS6{qDLJZ+}gXZ83i2qWKk-UEbh5N6#N-=iv=87JzlSpOp_AJ z5kn;z*BwXv<}6HhhxCYRwXYJ}u6Y`>OiDK{?vNs617)om7a&0C!s~EFWDL@HE>@J! z63%*s#~oXMNC3}GBH(c6fyB)M$+ww{@u1weMq-nE@lI5hDsCtb0TMTNMBGo8rOUX( zajhP?9Ak9NOIOQT@3{6U%v!s}jQcE{(yga{k3!3RaHm-K)f2u@a-0P@Gyswx9JcYt zR^szbmLdp5LY3=uu)(?;pogbZ*=yE6)3p;R3d%?~8^{NOc>xhLOdHYDY~3+y(f}o{ zmFNw4u2t{OX!X!VxY#A7O1UI>zMpZY?Ex)}j3j?sE%O$Zb9*=_0soE5sHcRyrqWUFC)qI*Qxw8ntN) z-JPi4hb=>J|Gb~;?!nMWSdFYmv68p7b{9UKu@aw}j&SzpN!G|^=V~jWV-L2^>cCtL z#CiB~jPB7EeN4xqmnqHB`DM%zHJp?64v9OW72|8OYPJ5GCIJxMu$)4nme{ZRI!Jsh z79L#|t_~9nEy0=N0Wc_?Lr?@l2&Nr~9IbXOQ7Zbv@`lCg49DG3w|kJ!8`ce-ySGKh z4y^+97XI927Mr4M39^(EO(jshV?RE*Zz&etNxqh5=#ulKH>%EJ>DVJoL^KUh4_u59 zecRi1YIl0Aug*w~-(bWv`+e+aHm=$fM(q7vyFMx)!*6EQ&x0rInn z^>}9sR(*Lo7KIqwd{4LO%AKBD$8EI5t~Z}ow*b*(#UiODA%KY4wFHR+{>j2zc>QS~ z*)@n#K^I1<07I1Mtwu;mzoXFN$D=T?-;wAofY3ePHMtSBd2TFVy!-0^-tWAz&WoP^ z#~$;QTd?e^N3k@rjh25Qvk@&g*e(!OC-G=R^RC5|R1$66c4`8|G{ilGSq25jjgqV=3Kkxt*Ci_&l$Ibn>MoCJqQ?%`{}iEkaL~WDTEa4!)sAaOAa!hK zl>KN71`X_t{>g+Lp z0mvPA$Wt>p;8RZWH|QHTyU+*B^ZUZ!Ah>N?E^|Nz96vi9-OuTdQHiYA>_Z8iMr^&+ z-GiZqEsl}kbvc3zav+HqgK2L~AQMt9bi4NgD`IOv?ySQEO7Fc0!v=T7P+@8tF+eJw zX0ZEfkK(!aKE*zBU+Ed->o0EtafjYBbq^4m>4+VYvfz4r5gD{_n`ItZiC1rV4ey&c zgeF)|Gj%Bk2TxWj4jeM3!Maqbn>;3+yPK90Z{KKaJ`hlwY!C zcKbf;5Ua*92AL|mS$U1^Tj2=mfcddViIwx2@h;~2{ol0QI&hYzDElT_gu&O=z4t<# zIH)6zcipSSA7kYWGmX}9rGN0%Y|dd_ELp8zqkaG)LSfukTC|}G>Bq0cDMx!LK;09t zt{fY#dK~loh2$y28)e%&Evq+5+OpcS1jm;%3t#bFSEd zKGC=A!e(i8Eml*w*gNTV5AHpH%2z+c=7*PIhq+>_m6cPkxp@)>j_QU1W~Zy!AIrC3 z+1DP!8#(fx60DQ7C=3GIt{kEf-7^Iz4(@`XzFKBA5?qVL8x25~nM02t$v0!Lk*ekS z*1T>3!gq32yk#Njs{*ArkHxWP9*fapiiva4!T#| z7m}pW?X!BeBju)T-Nus_{q5NpH1cQ+6o5!9Vp^V`@&a|8Bw=eU*PR?KJ}kv1(75t4 zlo}xV;9L9=R(|VQEX(Qji67&9ulXG~Ggt4n|w_tpSJQoVXuqmr8Z$2V|UB8xJ; z*?1y;T8Zu7cp7uoZ}!M*Qb>wQJ=QK2Xg{x9qdOW-^7{O0hq@TcL2zi7$}N7a-G=vW zUyK#6zOQDB#EEUY-G4>hChtjZLzLaHxp5e)=u(&A>__TT(i$d_{N@N8eZ>%rmg!OS zyEq&tTaEo+dIC=vp#-|Q{3jy@q`kHl0AUO=_U=%xM?+>PYqGkL&#ila6q35HLi&Nr zFw!k1Nv?cX1-4JP56?R3z;H3Cc08TvxI;2B(&R%+$ACP8^uLZpj|&FiG#4D=-ejtA z;6Go%OVih4o2Nh@RDns`5bGg*-f|0~bcKt(m2nMG^7nd#wl^5n7Z6V%b^buK|KS)+ z^hKAvv@he3$WhBuz>}t_7z^SG0?OquOXjuGZuVnKf-hbX{$LU>#jaw}&#NDR$V_y% zpyW+7?bj8p{(1qXXe%ODOuyArI9cX*m8YtT=G+lqK0NfmEM% zX!X}Am@LvXygnU>6CA&L6>}b2h3z4c?Mm;uWNwJeXcx-4d{9?gxaeDE`b)x_DCqf+ z`x#XBb)vy@8UJz-M)huIwY^NR&dPccnMf7&K<3lFCyAO7E*4jgY9;MjqD!P8$3kz$ zx$XA|1LWZJ25Pc$HGXd014O$pGHy$Y7JG!Yn;$2M4ds9RSLWEDcI*Yvm)Ku5hup zPbOIL`RoSN4@-x!0eaM!wFFXsoP?nxj>aISVg(>va}%gPiKS)(>r7K14wn}ozn_Rf z)I4(m!UOM`=|+^?x>r$x90#A7EOzy3^t}23NSM!LW$*O}Hjfg`F$l-D!+;n{^!96K zV2)3Trm5H6W)eKcgCtmps4BS>0&T5>uWT#_-H~5TK)(b+a_b^ur3&^ zEus&QxJ;H^=U^D9J3D{%)>`WP%O`DEe>pBwhRZcI|~jW;d}(Q)@N# z+o$086FXzDd(!7k^-8y)er-pw=8g+-LKHwk7UXm8Vg&$+vLbTBlt!!P>tEmxuU8v@ zClEn0?J3L-b)E_H)CGxfhBW)s?VXOQb?{^bQqxXE*RK!9IMP99&1srEZA#8ADF`DX-w>_!$B zivV{4;>DE&U_pRL0r+zqgUD?Tr&HbTGb=}G1L6$QQK?k_g)~UYJxgM#3f8@elfjf1 zaJ6FTdgvM9Ja5xT_dXIW@4En#Wx|qnKSY}5>gky2166~A0Ew33%=#)I8URtc!nFm6 z{yVo<+#P>s4}w@%s4f6P%Ou`_xLE${#sMU((*BvwVub|kb)<@OmmWxURw|?R4>M~5{{&68@J+vHK4ax3ck_9!V#T2*F z_F1{HUlc%U6HG?|gscNcm|OrN_b+5Yp7v-gnq#*Ul@auz&xHjEEQ#B`Dy^F0>gWto z3hBRJiZMOgpqHCo5QSsy1cz*6$eCmV5Zdht31sNnssq!jhSPnrd%v{g)=+h1@ z?l=!;YB6nhPQ_h|Fvo~$^L@m%vusxm^vUhKYdkh;7$AA1m!h&ww9?BqVR?v;C0(7u z$Kra510v@*Nx08AOug{^fAJGLVRL|G16tkv7G>Prt}kpV}PZd1(*mNl^m zHGOU_KqAPZQ9(Kn9|B~>Cs=m%47`z32VpukkRKHiWH8#I86Y*iSE1+EtcsmMx=%;6 z{GanM{;)E%cQ-FznVhX@PvXT5JF(vYgrFc;Sj84vhy9u`XPfL$IVdp1{c+73mC{H* z{zZ(|4OUSbn>Uz1nY#fie>N8zOjIHdMjaU>y0=B?{~eFx`?Nbzva0GrbzjL*x+{~8K>iYPV7(L+NyKZkK_N?4wQo;7Yr~|;zPUx3T zqBO)40NQQa`i?FZLDiMzZ= z0W}94w=Tr2zrE=d0;8(rQJk-OoX=f@r4CyUH@)k1a?-szy$_D~%>vNGKbnQ< zv);vyP)n>9bF(y_V7zmLAV=Opp{|2`j{8B1y|2ZC#3~n>>h}%9(PheU7;$(h+G%T| z-L66kBSP<%le0RD1BWy?B=(RlPI9Ge3Oxk;xR= zhsgd!NIKnlfo1bHSJI1xLH_3z2ND+dr26gEFn&D_eNO3)A!RZQ(vjYYvMS<+iA%+= zOy%CW2=ne=>RApeqHL+_!mnz|mLu0)wXFptg_3Ej0MhFSwEF8sI6o?TwPriszTzP) zitN{j(#3K`0lgTf#uOG!cW;7%4K}!Iyhq_?CJ}C92v-n=<=7HR@4D`lwjeR8nQ;Iqsvo2oAdyJS4-zXc!)#2zqY_PACZH5hM)g4d z)}?4y9V6mqWOu3oT8%pvVgCKgvCRNOQ&n7ca8n0|+fty}yQ-z&##7Lfv&nVOjkuVb z_Tq!{?!`-ya-bC^QDKMa@DZ+G4VImMwoR5_X*u?ql32B`Y~D02hqe4sOz8-< z^{C!@^8y~d#1GCz@>Q!@ihC9GuW)#f9ebel&b(d|x6dRmg@qM*9!`vJf&s0KnGGy( zf*%yl4*HMdK@t`#vs4kfT>PqMb4cM)&*jjUB`PBcQxUeRzx2-lwow zSs@$eH3Ot*@Z^F-cLS0|8a3HT|4d8XxNoafMg$lF2DjO%c(s(GKU^I>F*mWHm1DyF z^`+x_qixg>O_QLg!1gom!!y2;B}E$C+K202Nd_w-#mhAEb5n74n=-WbT?5ZbLwsA6^PMuEvs1B6H)jnEt{V zl>3S%@;;1lIMyPVVA~9kB2UtIYZ4TztVP+41gPSn$1q#jo8Tc*JEAh8=YmU>*zE*t z%HYs7kEk(d-lpY=-nON!8R=8q^wyJaCR(}dkc=CgBf)u`d*!{?@6N%XG2L;ZD+FO` zEO+7YNI`PzW?7flu6Hv)iUf!aMCD=C8Ua0yng7q5#s`aIe2DCg{2hTqb&=rzvwll1 zEe82TTIeC1#^ql%g&S5JhfQUz=C05 z%RLw1?6M?UyY7{#u{?@}kv%3N`O`#Gyx~n)gPq&JPmKl&FG6AzelM0qF3!d*_Mzo= z1Qhmftf+#BD1>{*n+`a5t@-qXxmlHT(Iv;B<9EM+vAQV8mk>hcDgT4%A=S!!nX5RJ z6d^#Skfz9k(D^koRLE;F1UNddO07Y85*aqvyOd#rx2xT&$vZa1EcBFLm7{Z-Vpr z@{>3tW|(lJUNa0wU2~#Ug$$h_CCF0OYwiXty776e$qCG*zg}0(Wty$-{owoRSSN+_ zLziH*XoB^Vt3Vj-B;dkkAbYeY>EBD`cILCSjKx`p4W0E6H zG`$<|&wu9j+#&OUqN?O}CV8Bma23)N+diW=hD8PCKAmJb-VBYAh;yxEsRSJQeRXFd zkb3#+n5@P2B-UZ+L_P#RgrLqzerOziOpUJE4x^u*k{8N}LP zcdyySYOtk_eWU!~h*5lDdi6UaFiuavDi8-)O=E6WvX=GqT2Y_ZEw$_`(PQbn`66t* zVo@;4og=?%+DyE#<`Zwmr0~0R?2#*#)Ffk%L&<{F6vRz>!Se>>GLl+P-Hp%;qp;pR z7hsa>;^eqF49eZPDx%J!Sv$a&Ke$PKI#q8VX=j|V7_fXHch%0FGN=8bt0gN7Y1EBU(?gMJ{*$VYjCUN zHF?))+K9YDQvyrP3W3ZbRU!S*+k}it>wsGP>KX&`aM((`s8TxU(7)An_b4Ubb~Na;YOWh_sKm z$xXr3r6?*%Q!wlC>0A-@mLWrGuqaRPIB+m~^yu4o_17x zrSpah{rNmhii$h-n=YN* zeugNGVm)+Iv2!239HV=*MV~lu_vZkROA#UFrEaWWdpo00~uH)I1JB*GjfnLs*bpaJZ9aX(`0i??b|fF<2l_pn+3c zDW@ENt)<9%t+fF5UoXVu zk}O(8rE^)a_QB!C9C7q@uAA--)NzMUSkg#SM=M`Y9vScCo4j=h@U8NN*!5{aqQN2L zyL^g?p59g8PAI#42s-s?gZ2zi`9Y#Y;h4ptINX-q*!|I`*!8>D@Ua4k6@`4(1Fl!xWG!~k=E4>{84((b+B?MAP&-xN3 zwJAmWC}5WF!zYvO#cWe!;SnZTE1|FGrmKcMfa)%dV@{lcfwH}+o0W1hvR51B^syPPSelNMS<#M397g6!=_ta#p_RV8g8Lc2KDa( z=**pMU(M5m^y6{p8AU+kXWU39 z%ixtj$pZUtTZ|X(S&XfrVL16GMb$^8y|7HEm(ms23P8)KjMdGr;<-mwV{1t4Egv|f zU@CE6o|xxP=i<0g-7zdGD5r&fY&BjnMMwcAQ@XAS{vn>yjWR>^VL^(^)+m77JOTaA z?2FMF814pfM;b%{hSozs!WPqPwFi=aV2e5Rqz^(XmxueJ>pDlDYd!QPWwl(%^*nh6 z&WLlZC=)vE2`md)4)^ou_)6|}Se?>ZYo|N#%9GIXUq)e4Wd_M8V20w3sBzfth=`^! zd8xZH1)hA(m)CtbGW5Ru^uY*d6da$VL`|HKh?rn_7+;dl9 zLc12|5*70pk+}yjF9(>6fSTqw>^cEPeP*$8H-*fTkp2SCr4Y+Oa7a+d??ZWLDssg1 zD~rY9UsPvp5MPq8NnV14?iRl;`WTC*J&qNArB@nww0Lsew|~Z44-uJWzAjKf9M4Va z2FLsiMkaI_wid;d+yL82;)l9p+t z2X{t47bK}9G8=bd?UcWJU2dX7TmJ$AK^zvfNmUE$^&@dqob`xst*rH6EalQUvCe>=WprgdW=_Qfx4(ne&CJo4renIF z(sjY@(mBKmid;~ExrMIv;2}k8&G(-7K9+p<8N3|=M-+wqGf)g{$T~<-6IY+T5@S2I zMt2Dcja#L_@!Qw%(u{Xdj*K_MBW2D?whUR%J182`E+vt%^FoepgBA~7hROa1_FOGm zksrK(882=?d1w|!6yvmR3R}5#kBEbUZcah#@f6-HC^GG)Rb4$TJu*#c>c09FTo`3N zDl*u0#@(2a1CFTP@wPGRT&ObL6)hFcqigYbJMBx z$J4Oz4XS75K%b**x14(=R!yFM}z%G1>S>3H-! zzaLJQ*h5>7=ib3T{(TPC_-j>MZ+UIks+fJ+XwRu1fNMKBC&^9 z4}#;CSMkzQYq8z49CiYcElP2gAjhs`L1JRS(IQpFf`iXWA$jLy3>(w|#|r2qVEZjKXy$yGD=+qV!#~CCr?;_3v~*{%iA2j+rcb$Jp%W;5 zYAVj?)B@cJ5Xlh`M$S6rPi%Z9!BHQDLVI#*fN-9+8cBS^Xmp!;5+;P) zD*#*eWAl{z%`iz?3|oY`;*-tC5 zebQg>oH>n)nTt_-kmLsEF)ogzSMypA9XE;fkl~t9)`RQg-h+sVP>Zj@Rh3y=_s{@& zZY}=tv)Nc{tgIWeNoqVi^yV`Qj`{(J4$y=2ZmB7V0j1v>iEdMm$AnOD4q)qkY`XA% zyy%0%rBcXbDD7gkZ~&4rwkAD)8ZI+|zchq-vB+!hW9j#vjR-vBdMBc(@r5=-u6q^X z;;=aP-H|vaD!po~hmJkOdT{Wi4$O0DGWo&DVVgkd4a3p(ODAHYyf@d%Bn7fKaN0e1 z%&*iJCpukdJsQnDs*5+SOBXBp<{XaDxZvwYqMM{NC40r2vt=(fU-%&A_%}y)sObr` z{M0g0s+AHpQ-aDbO~qsmbJ13WuGadUSpTKRG2gdPnsDcifYw^IHJc$4SkXK#&SO{N z3&(ik3%YvE^y)u7h9}o=#h$#QnWNP~;sL@KkpB`Wy=Mwe9NYy%^&!Q3u&x{%)cOP# zgnb?woQIfn&%pqtQ2`?6oxbmuJ=i??Zk=T= zWpiDuJQhR)Wa~a`I{yLBf>+ZJP^Nd#Ch+89SzzZJ-YW~S@+jh=ohE=I7HvIa35G|s(Z)%>zY@u*?z zivLfb=%JTVn2SzF#{-1!m6yTN0MX2aC7ZC~hNrM1bV$j4C|n%;OuAYP4v=q+L05@E zv}<7iavx?Z&W{C&8<@)3AU)NZU*uU4?PH4-k>Vj;t*R_4R&2sMw=BTh>o;S6C?UWo zMnJ+I5=xqdTiT+P3Jy<*`Xu?0m98Gv9i$fp5LXr4 z9c&*{fLroST*aGDH$qzx&DHv}65H>XhXs$VGCU`4Jm$9u3Nn8!PzaC~$e31Au_iKw zDJs(ymty4!&Lnll^m`8;-5tX;IgkK(XA4$+`B5wmWst=GFP=A+YsGDIl#M~sNZ)%Q zP8`$`$NMpem&{oBA>R7#Gg#p_MCojwOKq1{-r6NH>SZ(6$BWi4K)87&&8tlO;&0+g zms-sYGU_fo=%1dhi=|VWT!{iK)z_!tys{)Zxb+r)5f$r~e*bUgVb!`#*l&PBkZ?n| z*2IlXw96$gEF37e4n%UG_wV{)I7x?xo1^j_7WTe075%X~!At!EBqj&1 z8N4QVDM9wGg_v{KVtg2?b~DAv%19JI^iWHu&*6I`(Cy1!y(Nbb=`EcRA@I0InQBzL zwF#?#{W?||Ap|S_U_oO0+imMEb*Ai`b?fTr`RZ~@gq)}YbT7rqS7dy7YDsIYtN~q5 zeOS1zXEaa_$rz=60Af$kfNH`Dva%r0UyTVzl;SAY#qfI%bdkz+F=TXeoD~tER3iPo zG3a{f@fedzppDyaBJQ0A2|MR9Sya5W6{~;sD&AhR9enq|n$W83M<&+g3eGHPt+mZb zOd@zG)~Fav)IxqZ8&7&ItwEAP;*a8IibtoJ)d0?O`=i}W6EG!*Eb3i9tLd-4kL5p` zi*JK11MH!?rh$at61*uUz2%@)i*<*Or>pzIzB;wWx zK%zz?JMFwTjKWbzwMCmg?a`%sTl6+ZnW`Z3|E1?du7f~%YBm1xA1|6VQ|op~laea} z;YxbC-#3-!bAzmbf8W*sHCz_#)C;2A#-i3?Qqu8to( z!?9&apU`MW2qee#M(b~!jG?`bK+h;)Hs6^qLDo|++(NcTAdyQe z#XL6-;f6FLgx|nszgQNP>Jpro@PAW=;0jULw6{NF(0ZPX9MVsqJU`Wq4 z=;iifYmhKDIgrJ!|5|`o9()5^9TH_Yc$YsEQ9Szos(X+C8PX9$-Orr^5UU!(OqR7) zGGC*x1+j;e+Y_SYeq>^;H%6phwQ;+m zfWnsu5*k*}?+^q^{Q*QatuB^{FYfu{?xa-l|INIK2eHrqL|1Y(&0F)MqCgU8{Spw= z`VE65Z7A~e%#&vvgErTX!r(Zdh|9&evUAq2C-n~#v$eV@yS{D!?wuU6l36S=ppoaVRf6Sme>@| zmXt3J&O^(w)j!>N!b|nt`r}!&^u@QW z#VQ6MGq5aF2cny$IZ(yV7I#~IZA_#`O1D%@XxpP{GH#Dtg3&$Np_jP6QSwT1VB`gg z?ccG5R!M5;V7{>Gev?QG*9SlX6YutgSYn}HFq<|4M}2J=&UE9DoF4MR1v9&cU66>& z5^e^mzFUQPFFEG<|CR@pin1Vl;*w9W;+s!m znQ^Oh2Vs02q|gQmgG6dGG7rSYBQkQqg4hGe{g>mUW7}bXFN{IG0O#SWS!R)4zZ2^o zc?<76ybRm(x?Z%h(zYPMd=zWCc8zN8CDzIR*FQj9%D1YA(26XWhRa=loEvcTpYe!) zno7XB8Ok1qsDS$6Iv4>_4|n!@P%V=VwAh#2`W_laUo_u zv=rMyosV*A@`~8l#rLDNqDzxT`tHd%UI*#Y>PjBex1Mz@h~_})LTPbsmOZHS!J$Dy z%W6}7AUkR@9o6Kr{Bf82UnPN3CAcdeTTo-ldq!5 zpp6>5*DpY#;t-YcWL;q4b-2RK==g#93Nwt-QZ9<~$Aix!)`S~`8^dl`+AwYmOOy{Q z%ZD}yH}o$jpwC&oadJM8{ADR#xnm(d_V`Od|2&yje6T%OHXe|=Za9wm>WS8BYBuwZ z3Y43UN83diPc^SuFGlWqxFB&w#HEFqT;~*$*AGJ%#wHzFp;IBZ%b3ipRYm!DH#Yv^ zH7uF)K0fs|1>$NboPw*{3vxMbjRunX1Be@kNKmM%%CsQvNaNT*UHjuwG>aB{3x6gT zD0-rmq++!-@!Ska4gYd1`sM=(!TiQYSaHqM#yyf^nhfv}%jWmaUp53CzBdYIYk+vZ zSk|~%&v+^(ac)+Ax_gvc5e<@JGk#t&t;ycT7~3Iyw%K4Q8R?P;i0SlDf1RlkhD#LHj7`K2ke zcKgArs!{Q;FFImvx*n3h-8P@kogXB{X8eE>0_BUxVc6lNXqV5TXrTDP{7YUPB@p7U zDQw0jA}Ve(Tp2VGy{-BJNPM8K=nix~t{I804Ak>xvPANRv_VPr76yoHnDFM{Pqpfx z?kkbNReW+4xE2BlPfWTM7u=7Ro$+sh72!rqA^H80=+2Hu0f=Z2vwFR&0^29thi79| zMVQ5_xfKcG5gn7bqwvJ_w5`k>e`jk*I^*YkhPx+Y$O%VbFvnB4K#8iMaD51r*FM1V zAI-)ZWlaK=c-Bptn4D?D0wjXjJMBaZ5S_{5iR`C(CC#f-y|#E}-58tkD8@&Pk56=L z5;LBGr~j|cLZ9)yF)GfIa1*@t0hWIEd93oUk9BrFL<8MNJ6hy{)Lk z?$_VLvLC#FcRj`g)8v8XmmYFd|MOe&u37y9L^FHcih2U2aRAx2ADbrKt6Z$8T1d?R z5^Yi3D!k@UY1I@jhGGoyoe?t%D|F3iKtk3M#a;bHrN}mgqxQrjIDuKa&!bos{LeMZhe&Z?Ve_RI)AkQtNwJa;| zh>CCAg*6vE=xZk1@f7)6dy6>;3mpD!g!)gwG}Mh-Cqos`K>A zaBAn)I7ZwG?R(Q2e7FlAUi=VVGv%@H!>`9YdIe7Jd^kGlo_QJFuzU-aeeE&45u)7G zy()dYHE}b3k{TE4j-5noIc|zEO=wLWhAvYE;Le1oK2{M0Og6Dtx zIyM?%aZ#~}R*(FQSrBdtJ4h$DdCKe0ZX^q$w`(pf!<`08H$&uwBn@mQ!nU~Q0!)&O z6kpU0P#12*TQ@uprW7>O*DqR*?1saBI}wxg1u>RM*&g|Q|MVE9ui1n>X7dzg6x4PD z=td*T5(h*Lpn_ppg@_D;h5?zu z9UK_m^Vs_CxqsikPoLY}(=&Hw80J<{^z`%IbI*7F|NM{dn~5=>nuh7+gHa*Z$OS;I zF&RVa(NlQurq$S(x<=h3*73b&-qsfZcz&7Q0g?L$AKo-;cx*dte?eT|NbKWFI5a4Rk|xHDKpw zpTqxTBup9d&7Kd+_u4ZT3qIqjNN@qgwy=K1fY+={kdVH-74bW#WAw@^z0CYDPi!@g zHp)}biWJAuGUJDMB4sJ<@|u7_zR(4rkg@PS)BOOUL6)-jkWG4;rbqVx#Jw+Z)h{_f zvbYk%AG!h84=%OCg_;s10~S`mA41r}BeLb>;{T48BL=Kc(8 ze9CUa@UFw%(X6n!EsE^dbPmast0a9QagPSp0|-IWiuiYz;s40GZ{|uFWk#H82%fw*DtZh-nA!*AwiJnJ&EQ9 z77fL}+k}nl_v4u7VrihXBKD)(an-a^jQ7fIe2qo==$@PPYwYmoAF_`_R4c4|BX4WI zTg_o!AASPKTPiW?fd#lB>4$&Q_8@VzKKBk@{?;bcdKxI2C@+&{HLB|iog2{tBu8&L z2XNIj82kCzSS%~9Zf_VWY3V@`$SJDrX*_TeID|zosT;y30mh<@sS58`x<+2CK6yIb$ z63Y|XyrMR@*iBb~rQ;xpAyGLRgMM*4mP>R?CWzj|e|QqdzPc7$>v=5z9=;J%7hH_V zVnJk;?e!KUUFO^DKaxmJ9DzYU{}h%dicrk!mm4DDsvBys^`UCK8`>aNSj|~p6F=WK zMF)^D`pbY}&;!VKm*BDm7h|^GgD?d6;Ym+WXM?wKvvmbo)W-5?lTmNaU^f(<@bu0! zj!B^_Y(XG-WEm!D4RQfVitdw3Xd7Do?*xwVIJj~RUdhl4F(ns<0+b*j)s9Wvmd?ItCQawT5*bLu zdP)z47v+hejmbiSWOoC0-t!E8pAz!yxjccJEhQ*IH7(VwHfTX|)1TvZ_V;U{BwpKl zP1wKkX>9Sp;SwlyOUy+LekWkM8X#`>$`+AKdQ-gkKkvr%V}@aZ3?L_pOp+J&VB0^u zhJ9WEv{(_%5i6|gk_QlR9a77PRpBM)21`cGajpoEsvra?{HyfO!3m168T zgl(UF&SPCSot5EYHXXT^yjD>4rZCspEP&SjUb?a=_ll$XRZlx|i2FC~KKKC`#Nwx)yeCzS6m6$KY7g}Qa#2GX$S&em}8tl5?r3W|XvM@vk z5FG;4O1A@0{Oh~0aNICVKHG|fXjHVCjyv!8t95vB=V2UAqty{LC~0dA+BQvJh+z^j zlsmb=Vq2AtyI;9MqR9{>ftEo0k;SN5IvI0G(q{L%OOjA3UD1X!KYj!2f4Ut<{5mDm zfoGSzM?aCw^~%Dhi8vG~wzyVzPDlBJ3-NK?xFz@$A z4-hLs_{b7e-aHA5&bA<71BC9!xmKKQJcXu)llbUt3(oxSVI2PDZXEU|g=uFcCBJBR z7;uP0wBcYfKsoILMZjVhG}8Agg##sfo<#S$8x}*;m1pXd;-9$^Wna7+a|b6dlFI_S z@_5IJiqKBU>gKaJx~BpAe((m~-F3*PI~AH!LkmHY=z!=T0C*HGR_0_^E(_Pd->k=PHrC>(XF-_vU=N53^j)6-&Knf^jok~7vq*0F5^fok#5hv# zQ~ilr-E^_M)l|zi$IvDb4{CQDY{G$UbvXD>+i@V(_svOfz+ylV1{QgZtcNagWsXR= zQc_s-D>q0q{i#oPs_0LPri@1Mt&>pNW(pTk6i55I{b=0N;8$F^$PK!;B{jdqpsK&B zz6ZAqDMp!HI>fyt+xhoT3Fs7(2!aj)Hnn+L@)j=-S8 zQA?ZoU$~d#1k)lqanBd`#BSJaS9c6`ZyrM3qpzUOYeW(Nu)S5Ri47L{TN9Vrxh@#$q>^4*`n~X&S zg;){h2U=Ux>GxC2eZB&e28^baIdlvM->yg9hFa8b{3Dt@u$VsZ!1dx|BU>PJJnsJs zBUjD@i7w{TU3o%=UgiswybVWWANM#{}Pw123LB!-hA zVRnLoN0?$$IvaXdZ_LB@9U=&1xmHXHuD=&I4qHiZ=TnS@e6l+1p!7!s34qGZ{n7%3s&wj#tXFGK0XGL(-Sig9w{ zE;4E7MOk1u(~9P`d-3~6UPWEXVi-9w<9gXZ5nYQgx_CS`vnNcfEA;NsuXl~;xs z2o~2NYE_cM$sTR%Du84UI%qw5#a7SA+{248Nt6GHb!S-j(al)DW;c$cSo#GVj9m4? zu&#YOq5%khMQc;Ab=4+8$P~2+h^4u4^%+1Wj=+FbvoU@~1;&jXhH>_0J{M?oZlR?W zXKRjP|LQlfXJajnr-h4cptvN(2q>!B=FZNWan^0C22^Ie>3RuRTma#3nAc4qrU24> zrv^m#fkV`(xXAgNa)RSY$|a0Im3KqGw2w1}IjsPPZ9P-IRK$3ai!}L|`1~J)p0Esm# zFz*s-9JZSzug;hgARG2!>(@78uV+1k+l%`S=5l)R#$4Z$C;;MF*whNDL6VJYNkGD= z4jIu267E(w_`+=~mc<9$m*=8l{sfF4I|QSLm0(0iz#>$b+|<{fK%=)$5!q*3Dai&3 z!^2@klDu#|xw9=#`Mf6ko=oeJ&!@A$$8F(?Aot1DJ?WQ{h_;J_bZu}nohCw<_<%jwu**|6D9eCJg^BzedYNuUd5DGK&<7XbI#F@eKoS30PFN(?R=d_joVB<>{p%|xF7#`^(3pCO>(a|8|#x@SFkh_%+^X)L#~)LLl@NK71s zfq#1guAEkmsV>Vw*Xp->@p@W9(6B+~sz5d))k}}=0theP9XXMK$px5P)+Jc|V!jBD zx!Fb+-8@bp{^hGNno3F88^noi;9M`zIZ!Eqe@;Tx#kcf?OPO45p&PMqs3OMGmV*J0_887w z_b*uES6iD(U0s39sMUGoTBYVdcitQITW(;A8W>q_SI{# zuq2Kl`9!^V5iGxFMe&-qu=lAwX!O8g14DpgO7TVhfK|HYZ+V`N<+)rV)Y;cfV8a{? zq4RGEor{$fE0RF`d&@9oq0+H;f+K;p4Yk<%;ESm7v*jEOQ%cec6{9*jguMwM_PK`x z#^sLb5)QjC(AKq}MG@C4fjC*(zdj$+W{t%ax+W}aFeT~8*H52A^QjiEiWtpj(0uSX zK6-W!4!%@_<`ifG@B~1SFE{1--FFxfAH%;c$ygEg@wH3tn1Ye3W@A?QP*iAX2MOg$ z)Q@h}^EKG|?M-;!1BK=c5Y0h%3oXx}d#}5|5$??Z(U+7TSj4jE5VDqhcIjFue|yC& zjQq;g_*iigL-GL%Pf&w}?uIVS< zAJcs&7D#TW!jMl^VO&)?DiTE)K&b+k=80SzH{|bph&>O#jGcaR)$BLqUkO^hLPW`y zcTew1&LJq|4d)9$vRjv2A!L_QQhJ#SiM5%zkF#*{{<)}{S%IkB)$vHuK_k`9R^^rt5Xrbd33U6{b`6INws13^exwK!nYpd_hmE z(bkT$&+Wl$-+2{(OliW0S&lvc4sTJ540=8D#qNBIt&J`ldg&QAxfB!i(m+w+;lH>F z6^koTbxA2EiZ#)6srg!%o*9;o|EezTAmqn31imo!&S!4l*gojmxXVNGX-+wJCFE2+W3nax=N%`!GW7y@kbbP9I-zV(- z6#u5x*nZs-=CS|)129QMK~xBD-S-0iptQ}UhlbHA(=Xo#!O<5jNcdhQTbG{;DDs@q z-wS$GOsLr84q6bqX)=aPDaGLSBE+VZV&sgmxRmag)2DZUr~9UV_FvKg2JVpfUbY`sks*4piCh2<=$)}J7k^yA`n*B#uc-WL@7$y<{iOxVv(#>q} z?fgQJa{%y_`KV}0j+WRay5V+zrpsX{iuv1ySq2`u^qI4)ER623p- zD=v$|=fl9_Iq|-WCZ*$U&Z~g`%D8g|AOfC_O!CgYmmuI_fMEEzr1Drejip3i8o^w^ z;Ai_VIQjvSKG8B=FTS3w?u)N$`W~?`d|vZj32^wlU2fjl$zJH^?Q(lpqnFlP;U=6% zIEQhcu^M_vyJcfo=soPg&t(UTSviAVZf#)%H2hz9ugpG%O;W-45;psF8BH6 z{|-)medv~7yJud5!Yl~wT_9tZ|GD;(clHCMV>iM*Uam$j{k@t4%O+0f*zZU4ZXtzm zadGh%J1#I3&3X2~xAp_1bAz6J{4{X*J1*Lt&i#JZeA=cF$^-;|r%&!Nat&ZVKyr;x zVXyaKI#xsioUPyA07*naRCr$OT?d>TW%+(*cdsS6y}N|;kmOS6y-1BzK?DI23{6@t_U0i^^(RisNOm!8Xov?~d@w!8EHJ>Sl=_wMY>&g|V@a=^`xaCf^i-+bkL zzPG=hCH+_b4D`={?+jS|bJITq{WIV{1N{K$r;h#^$TI`|0O==>{u$^8NIwnq&p`KP zpr3oO}mSqhRk(kqLt8LrumSw%T zX3d(vjuq+8S0|4>h60KiD4Qa4+cRh_RL+qR{xtxcMnn;W9h=np1N zocKyl-rJpL`vKCOS?hnM+cU6g)v6b5+ukE=0|3YuUwk2!Wl1WPx_!cg2`7eqwix&I z1Ed(U*xyE|8E9!~`AkG6g}T|fslB~j)~s2RdBn1;y0K%&PA;U4p4{6HkeP6(G%F4>iEX$hTgMRlv`X!oy?t%kDOeT}&AHhP9l$4ZQIc(UlU-b4g z6a^r*ZI4^Mdi9;jWO8@gwk@E(v$NBn9st2V{EiC)v~AmtMx!$-D=YWx?E&_;pMM5c ztXMHM5{aCgNF=Il+pfhrB@&6{sZ?s=fB^$uudc2>zbA9p)YLRR5{XRfNgJSs@|hFv{Wi(VQrN7Vu%q}G#WKamP{t!jYgy2tEs6ei0ikuw(i>5**UYP z^XNxcu~_W(>gwuVRoZ(55CG1PFE`h*!=;=K#b33>M&sAw!0&Gh2607x2sU zd`nBq6(aI;aC(QEXSz>9)ZCunNhXu_nl)?g7&~@sXo75RZf*=R&THKdv!MmT!B7z13k^jWYXKeVFkB~Fo3V7>4=+6O`M^H?lqe#d92RH|;+uwi*ktt~Arbs{n`%#@NA zyl6!~??qR(ZJ$w9RrQB3@9EAx-2zB+b90krSyhF;(2IM(&W*)z^p(el4kQ{%Z|Wfh1EeRc6N`!k#f6Cn z=fFbXcT7+;8np)u7*JcNGWb;i2$bhlt5&@(A|w68Qp_R6SIirCdpOg;jbRW0F;`Sn zycCbe_Y7l2auYB91~^u)UTugL+ymglKNk_##pCfDka*EZK7jOO{Zgsa%hlD@z2+0? z4nVraJunH_T3UMi*U75oaE@7i;NS*=`2z?jP7w$oUUC-Ri=Wtp!dwI%+6K1( z2SS_phj)R?j@UUyu2KL*IAZzLrqOhuPI=Kj-$8k&u0$B+;MjY=LNB1t}ss^RBb}1 zJWsuDz<>cc7AYS&-o!gWq#{5761;=r7Td(%00-6x_d3dZ#@yb$v+PXmff>sYM8h&aHf@i$Ui&z*eED58%y*-gkCa)PcZd|X2 z74&3LyZfwr)6wE4Hx|wtLoNUc5~&*?6lDP>9l?;Vf4CRi1Dh8`H>{ttQPEgwunY_gjRR1iR#nwpIM;e;M% zT>l(2EfHkTm_$rC0fau{cPs{#b@m%=VnOIw1W{n3APeKWl9G}p+qO>`J9ccZI}{rm z8-M!67hfDFBDJ<{W4y+x#vPO6q?o~lcElVc`!vO3vDe`T$miR^Zrj}4JQwYA*VIHq zQ!6l&&YDV7 zQC;Q?|=Why!P5_vhl_n%MCZ&z_29qlQc!6fkRif*VNR6c3gG`BLxAZxw+Yd zQxYIz3_@dA13m}mz`!Z@Vn^fTq8(?qtSc!gL6%vMVuZXV ztG>SeRuMT7USHmm92j{oi#NzJ&p{9L$0&4^PaZ0wiq}T zcWDp+KuWO@pVQ>2Qw6YcdDzax6v!(r_2Hf=m!Z9Tov!5Cz+f%^eX4M z5nLJo(QAlzQ5p9FAteHim!h0)+wXe$TimaI>ZzyX+;h*BMT-{Y^bBBIuwX$Ly1H`m zrb0 z-0z4Pb|ex(WbpCb2{~~51Sen<=g!Co0LtYAIITNaM860D_DvI<+Cf_@D=Rlc4Nf|VkD`{BwToa;Hu-{q z;^#!e`!qN;sJ%oFj)MfO$K|%jAcDE7s%qnwmX`1N#VTn7hTcHB<7v)E91yP{0nk`N zagG)&?eECfjvsK{x(C|0>86|Hyz~5BB;Wu3_vOwz5geZ01ho-}bd^XX&KNan)LOA_ z76gz&;%hiS%B@s5u^7}%2ngPzcU}D*0m9u3KWV+uvb*D1h73Go(4awiIf^^jQWH0J zua=gU440y~MDwcBhqCBKw-K=OLT>w`hWC* z`@IA+z4~681$9>ReWQ&wlFvW?+_U>o&Yyku?^07UB=7KgJ3ujOgDYgByWQs?0&0m28cFX z;P;_Jhh{Z5WXKRX;K1+54^KW+YDQGZK5#-^sv0c&#ypwQ*tm4DZl-2e~l%f?YmnhY#v2 z0D`sAT-}|&qk+Or(JeOPZ*p6TQ+ktO8`Gyxm(Q0s$g!tPmB#3&^1<>KWMT71=Idyr zRDQF|3?tUktm~z7S(bHpWo2cr`@%Bg4w^*w_w&=9_Pt`QB-#oid42*f_Y+p&xYM@p-hZH$r^Bxb=VXLG!aRYuPK(mRKX{ zEbO%Bpe#C2ezo)S8RsC|)MK=5J6Tm#wRUzX=fwqc5Ik3ivQ9;iAfQ!-iY^v_ilO6? z&4@LcI2iR?Sy`C@M{j{d`ypu2=?O6w@+=4!#76=np@7)XFKi$HNKZvQ{T}KaTG0ka zc;k&Xq`tmh?z-zPauBz85mqM(L#$33 zaK=R4Q(_GBPToWPL+`+hEWQwZbw}q@4>wwUKZDY*hcYa)~s0u5cl18pZxc~ z|255i^PArkIQSR>MDdqvOdW(q7q-Qaq6g>xTo$*c#VLR!ZK1HzzuC5&y~86?Q-(@W z{@2>HUS;UC&`DJbIj*Ip*u23L@m@%(3y~DHp&_fT&{rBH* zoOSwo?z!iTh~>@`af?~tAoPb3Jk6aAa#!8S(7YWElD#hvtEiQqZg+29Qbb#8(|Xlo zfS>^sih~I?8ja?pb9#*yivjZ~E)^Sh3I`x*4wAMHrNynoCSN3*4B0ail!(vJjt2bN zwq6wlAZ(4cEDr}Mz`t{LAADLi5M9wm%&J7N%&FtB;rMkL0 z3m~*SYR<>8;U_jW>N&sv-vNesP^{ALh)PV(+~Ua$IB3qMTY#3swQapBDnQT}Jk!Z! z@~%iE;wf@ru|edF`=RJW6C);qc6m-ZzJo}GznQDRB%$6?(0d9HTEIZ~4BdD4m7*j? zDDIg0-2@O#o-}6Yot4j%i(qcF5yOi+g77~0-~*XCbEaH(-F2P;gM1G6zW@IFGIs3P zOjGW@!CJE1LZ*5P+A3w3m>+`Tc z1fhVKF$Vn82}inJ?y3+~++r9-C(7~UE?V*BJ!q5QAwV#f6hYl%!5qH#-h1-##~;h@ ze)l{1-~axXS1N@u1Xe5!4$b|TVTjMrPmGy*8~T9vHMZBwwQo)JW%W!03H(BOu7RrqrDns`7_-4wV+@9%8384qJQ3 zZ7GWklAmqE4n91w@)zpO(e%d>l3-6o6Bhskuy0&b-VNTG>T0G2lFy?vKb?d zwR4V}jdo}P6woamc;Eqf@x>Q2gb2>ychQKFk7%?b6=Ncxbp$uo?dtdU%Ww}v@Jca< zq_uU;fwITQADQPVQc?6KXKHI}n>}jOsDjQE3A3Svy{Fdz!VaulxpG&_vYtZfDkc*X zp%*_$RPy5(y#){wE=46eFa5mtl)(WGjEkwT1XYm!;Q-`tq!KS!uwc4v+tX-W!aM0T z*W<;zXtdBe9E}%q=FBnH!mYOQHZCIP!t2^%tIg$=f4%BUI~*%H7{QEwQp_S(Ti!lL z?wxzOX-nIzjPJu1DT`IesgoZtVkW__lhN?G6AE*9ZEfvZ3oUUEzSjZ57a~N(w(Tpl z-z1ED-y0&87X|P=l>2cH3^y)92ZH(E{;-GUbO4jR0=qgqzIePTyi~>4m&YTQL zsDtT9UYbs|S(Vm6fCm1HC!TmhZomC@lbOd$b7D6@HraF|x$OG$q-uSU?S>ta7a-_2 z^bhytHW*z0@u8Bi+Z8yveCM{ElG8T%tCUFE;YodzdK)***4EbKh!G>!iE_^Itu=t~ zg-#yEWnt^KhGm64y^jE41rc&OfC9U?=5)06(GK4A$tR!4E3dpFH{N)o2@jbtVS@378_~w8XNBKEgjH4P zs<9I%O^_>YJWobU9we_XdRXdPK9)y-4)v6SxFSu`t*agkqx&SBd;xdNES4AJ$LDpG^q5&_0a(Fip3&V zyJ^;uvL@Liwrz=6P|&+P=m;&@e&``a_n;My9FRb!Sliy-e#X$DL)S{?pdW3lGk~x| zuy`dBiPNLeXn7cstGj>ZbAxeR1?4;wZ`I`>gzixu8z4X1?9ogmO>z(FcxcPvN=vG% ztFvkp2d!ame80{C!a-5=f@rZWfI@&kG34$|rCU4Sa390ODLWGwdM6B8EJvBWt*x!? zLl*E(CX)wuc6OR0lDTWs2ZX+`+6dlr+G(fBqmMr7`I>R##>v0`{cq0#8JOD(W+H5z z{<`$;&cD3?!k1_c!v2v9Xp!&AclL2M6z~hBdq_%7+2n4C$3|o-#*-#rgpbwS-Y(*plAi1GCqiqVgy7ieGiW%25@+Fr>|&}$~pncun~$Y z*kSQII0}KdWXTfQVTT=jX#xeWMGW9jn%SyvoIgGB>`&M=x;!{`}7 zi$D&dbI%DHJj*m+o}+^Ajz0Qm6IttbZL#GR^2*HoC)u6;&nm9 z*WK^6*g!>Dd;1wqL6JZ&ZlPk9SI{DNVGs*A7cS~N@P?mo0&3iOU%$NgOga9JB|Qf9B3ciOv?Y3gaMtmPdSk!7FGVdQ_M7DxC^q%jw%aC>8dQOw=~L=$t!p z6@1>&(a~B`QnF4t$(ITsBnu}m{pNfS(VKH^3k+9%o>=`}Nco!pM zA;K||8Q(8kwoEqPeDh2?vVO;&`|K{izxfjRpye4kVB9$wpN%g-d^w27W#9DYPGQFd z4%KDe&E_Cb*?+dp{Zf{!$rwYZs8iu*@eU^-vUT9Vf$Iz;UrK=Jg>pRf2csrzcg{@= zyXZ!Wc60_P=~zsi>%my4u+<3pUivmDo-pGQMH$GsaL;zzZ6|egDCO04t+(C~x$)lL z%E0lh^5WdP{!NfIS51D&u};i#!FF)dI-f=218nw z)jD9nfOP_rFFioq3+3dc93F{8c1)#GChR^a-m6fMu!uBm_9Skd4jZ;jEz&XAk&Z!f zul@JmKPL+J^k1GL$DH~-d4B$FvaorU99DaYY&>*|XF9UGFKHdb{b}0NTMQ0z!`sKn z;x9hQDa=5zi|;;j`@hPd$goU0G3SB+VdWG@|63;@`N{!AFFPz@O-)U|5|QINJ3Ecu zf?c0G7XB_&Z}1{~iZXryjrqW$#W{w%lRyx43vkdcgLbz2#$1CL#d7N-t%(-7{Pq1L1;jCruq)nO`CvrO`o=@XFG78f z;U`!pjGN|dXA^2zfBp5-mF3pb^_2#Qp2GzT7EHA)>(odjvIDXnbrfu|=h{z!<$C~1 z_%e`l0mU1!QOE`7PbjJj7cR^S3Iy^0?xss+!zn}Lg}Hag>h_fmxGnkl_D@R8uE-SL z3mT7c6uL|An7nxa#6K3xuU+~@$gT1Bk~N>m4R33Mf@2hLJd$0GN)d39s*<$RoW3VU z2-Cu+LVeyHJ$iKCt*jU{`Co?bQEZ~Et?lEova)iwg{K((&j%1F+fP6Jw48b7nK`Fy z`MrDU5#N{duRKFuT70X_UWqb1T`8-FZ+uBs!GkayG22ndBVW>O2003GkK2erfKV^v zJ)gIJDmVQ1I1ww7Jv0xHKqo=jQHrZNn^KR-`MqyecP|F<^p!RM63epY6f3AOFB<&%xK^$&=-e(=V4V27e;|T5!L4Ko?xwV(8xTgN=~y?R~lXLc*mP zHvJTZh_pBq#6d{F7!UvH{1rW)xL1QDEAYevBoMd2Nf@=vuoJYS=TSrw@pydF+HfR( zZA2_D5?Z-(>;ZV)+R5$V@pU?8nr;2Nkab=FyD<@JE;cbswVPvpDD?;`(d zxKmcNF3xzSnYKE5(1vpA*6DLJf&hZ=L2OKI{?#k6GV#(Rkdj~S_?!$VNr%I`FU=_c z1nm<7Q8UD!1Wit3#I64xZ-T#qK=OZE-D?zgo%e!v_&&T7S0oZ?m@r{Nuj?aUYk**) zo0^*5i9{ly>U!lPMuxt_Y{{dn@e?I;a9|ALqrzOnM+}#H9=%BxmAxYGEP2lC@agJ< zG$`1zU+w9#%b2NQnltz43{L!g!OUHp+FH3yj2gI+{CJx?d;x+l80kzu4h!4iCv+t* z5i=}Eu(_PP$(@FikXvbBGDgiYtG_#D%$Q!)N51v|fvA;Ar9LhxDJkcU=$8kdZ>NTG ziL?H&fJm?cP@aGOc{$^ZGkj}Kx!XJ9n8W1Ei>JwxbyrJMI}e%ZD$`k0Hd0R5^18qh zok7UC=+)h&GnqbbosqmO3d>rXL2W|7+99otNO^-9w1l*Bq_yWv8Pa3gyK;l$~zVf3y45M zI=4`z@aCIuHVI9vbmB+2*bVP_{AP(wSSqi~e;^ashe(Zx6_McsCd#23ULYd|ZV*KK zdB5k*{@7=i%iEtnovCc-4mmk(%X?)=#rioWV~UZE`E^NKTiX)bwztCPtVjYe3!q`@ zu~z7DPgsx)ub3>yZty1qJ{`?WahT?M+qM&%1 zLXSHDAt1sQTtp{Mp>74$Bq9EgXN07%NnnM7aD$n{6OJIsGJgZSnom(y>B160I_z zBrc-|Z6c#9H<0l~JS#?vK8WbmVw(m@X{16f*y*2H4pu(Plw`*@Gd__>yby^*Cemz9 zaR^)#A|`bS5H>k;5J*^(^r*?#$hi2{Mnoj1a&sl;eK~2%#R5z}KwL99ckbM&0|pFu zAZ!UwO>~avky%U-1PKSP!6GwE1q6d#mH~;%&Y$JH%x5w#lnC^0e#M*n$(qiVY^7N> zxZ|k9Ypo9Rh^yz`Aw)TQC8;6n9nT zVY?BB$UdV_l~}Aa69J44c^FlCjf?atfXtpfd)G)Lk~vEp!Frldc^D5S2|E}w?C>{t zClDctlHcp|3BwQ-^pZ#<@?KDE7Yi@Y%AzZp==X3zu@gcJqq0m6xU|8O?HU7 z2-{C4lV^+@H?HXU>+1|4Ai|E0j`Kz201+9{-rjC8P>;pZz@lka$AVz@Wi}rsiiHyV zLOgUK1xJ=`?da&Jk4B?^9W`nc-ktZ#7haG4@CY;Zg*oF)bfUPymym4EYc_aba^>Z5Pwj+^9Ydjt|^?Mo{8|xr$ z5d_@r@qQhSqs62d3+|HV=iOpB$?!q7GG+L&^3o&k$~9O1(TJ^wTx zoUGe*+Pb~Ex*Eqv!E9b9uxk)?6rMm$I*vK$DH-#g0n9-dYb#fF>qtX zjLEb~kaFIW$)r7Y>{yq}zL4$3``)z*5GNk${?5)$i}jD(dC7X0;3SiCADLOC29gbT!+4sE^B$v-3vRz>6vNWfw~ z+;wTgdihhS)XUY?)w^>pa9p=#SqD>eBS3jrj^@l4zrKg0BYPCYiDQY_z4px z%{Ik09m|v@$^_MHVp%0Eh(P=#{`+6fl=Y(X;X~X(Oz9H8YhwfVMHuG*SZTM zXPxsbS|gFjGnJK38Bhbrj*Iqfko-ltR|5 zSyOa9WUT;X*|KHRqtWOz?kKt%A&abq3DfS{agrIumPE!(JnqQ2msTVa3PlV8goJ|c zJ$7qwmE$3@_z~&SrAw!Gc6RRH+S)pTViCbk0@q1Z+(pqIK+aRM01o`q1e6aTIPKN8 z?I)|Ms!sOL4^PW@>~*Xc$L+RgdCdouWGL(U zySa1cWAtvSt~eDcZW1T2h&(t`$`qN}18n(K9dIEt>}9D3)V zMT(Wsx$}mRyR}7zVwbjZkXW^Co&X}j;yoZrE!KD}JoJ<&s;jH>o=pMkTPl@0OGIj7 zvDk)|Wetr)B2gZTrpM0laW@BH=sXV1K|DaaB$Y}%O?f|nyP$m1Z0r-Xw&`OfDCWS5 z_E6ogau7#N25U(K?r}d(HtxB(B{*|M^cj z>ZqeKO>Da9rt;te56FbtT50d-kcbl5bTFu*hb&PuNFoXIeXjz@ylkxMVVR7zqoBP}4yDiVw3T`RXP7G{ou?&&pvKvrM1Y88^GJ*#t*^`nF29y+{( zfFL*EB5QzPVj(_I7ofS6=2nU{1P{Jv6?WW1**~l@tR~a8EbCnn`E6xoNN!*PE!mcP*ZmkJ=*yo=MyrZ@ zCwD7zZVLuMMgY)KrOWA4foD1^6?@!6BSAL+qKDO*OePUocjns2PY42q`}>tER~nNq zeJ}KO<39R{IIq8+IYn8tviHu4Sf!l56QYaLm)jV^zx}vKV`Jkxot>Rq0i2k39V$<~ z5vE*-Rl|o3OLGlOMbf5_FB1|YDabar;;J?je-N(&2>X6;1|A_OgBQCz??l;J`2 zknPc?V*<>0W9iAJcvpylAfR9H0sJWoJ*}-KvKO*GElELRgXjrBW8=`}O@p4ZZF{(7 zS^FiE$&D<_s^I+?FAM^>&>rSSZ$1RbZSS2b^P1lc#YOx8V%xSS7r}f_0C6u06O^Y}t%8Yu4|SUxFA|8&OxBk1cu*fp&=I`Sls4gE+}^{{>@zsx(ql@u`aaFP!w`9^idNi@4@G| zM*|fcgvx7xr7fq+m`@hP*2G9o>BT+R$nXDin5<}B6v#!q079|IvaF0}o$W4MxUjCh zy?vr~46_Z2y9O|B(MpZ(E5SjWs)yHxB{XfxDO4BGiaa?4VzoeA%x)ur_;Dw^69>?I z>s#M4Abt4Zhh@hdcMRKo-}}%9h&9|X@i*Fs)r^)LikT2QKpZ?*U7MoG1^A*c7B>J3 zVj6x@zvH`u2Bx`)yErMH_0vVT**X1ds=?tT>Y6iWPAZW|SQ-r6tmq>#>*)uOuL=hV zBVM^h0XJ6&T11K`AOOhs3=X8y&QdYlxj`J-!_D@w!{2}Z{qnP){VeO1-~RTu<*$GJ zYu;|S#Xa84&(Q}2+tHhjzUuHA-lstVkkfgo!$G|KD1M#ObHI6}KM3Fqb7?NZ@;qH- zdTcpn)8EMkgVTBKdK@&8I3jLF%v!Q!$rYM#QEUnWuyQTR_uL+;2@6& z`K-c>U*A)7GjCH!z%t16> z7oLS;jl*b0j~*>I-EyO>H+X2~*02CUJG9zx$D}`iVJ`TbJ_@u;?njQQmFl2*rQ?*= zDiAHjny?}yxrn=V7W#?MlPTklmfc1jo0$tr0Tk=d-$Wu|!akg+?OAPYZ58BE2^c4t$RNqqwI%)!9`#%X%`4l$vk=|zE;?Zg$&xf&q-~*z^hK5S%CZ{ScI0=ODxuh&^}Rb(j3=SExvu|Jr+>z2uS` z&ya`fE;L0B(ibX>STZucfgCX5bQu@-Hr7!Gffz>v1b1417*;LxomMpxi?(V}WWn>a z_Jt*Kh@Sc^b&NfqIs1d9|CA3_yeKVg%Vc@m0+VUj*11ZCRE(DGMja>vSJ%ol7vCsP zKbfx1(%9IT0SGrChR-+#lb6fN%C;;oFRyk3oqf}RhgI=-Ch5(+DyFoAb9Q0A4I&9s#8*ucEly^PU%dxsd~BT zgLFnzPLS>Nwi$bA_FC5Cnaeoq{J#SLToCPGz1y5N(~Kkq}rq`S|KHo3Q43oq%FBxN+adY zxv;h*?WB}O$|Pl{%)R(7W|d1y64IXf!u*YALEQRT+fGTR-7f73I0d`m0Spqm4L9`@tazS!B5Iw~@ZUlz+I{qkfNv-`TtFq_OKn{1MacJ`vHR4P?;1-EK(2~T73gfK~3lL5u#V5-2 zK08Zh-rek(@B7Vfek0djd#&mB^n3m!os&P5S<7F|Drms`2=}?IBreTWyh6si7C*Zd zuA3+{M`3l3u6J~m;4}o6Mdi}m)Fcw&OwcgMr>#KTXU;@LUj z9!_VcPMs<@-E@-y2t(=h#)ORv>#pl$5gd#tMpJmk_^TW)<2EZVU$H`tJMK7n{PD*# zoXU@`N=iyR10@UP81DOvDzh~=H=EVR#4+}X77K0O3*sO_iYTAgJ`_IV^=y#EiO^|K6PUC;(-@Gu^8#hVLbt z$G;=bKKhb8{pgG4=xAQrw5-<)pTG0YJ2H0cShJx(%%w3v8yB!4(o{_jPLNQ{GDa02 z&e5`JmF&6ap0d|od&$*TUv0YJM_0COFBv>|aIc)HUQ~dzw6tVd=`bM}6n=7tDbyL* z(;a}U-Ay1tzJ>Re{zDqu8sx1dk4t0wk__#UJLvZOxJov`db!<-F}lLqD31-2t%rP9 zCY9|bcinoQJoMnhvUKUv(2ZPq<&|>MNhf72P}m4z4A3D%I=7x{Pmo|!qjFweTAI;2 zbO!*qz4qQ)KKbMmS-Em$PBNRDu0-VanwlDu6JPABXaLEV`@x-FC%F`RAo<#Ji*7k= zH21irtXtM}Hp??}u9pv&zhIQ!uG`bo=f_pn<`{$CHF&^i*=F#8Qo3TS+;+oV^4MdK z`HE0%3tXQ{^pq)6OiuWyQC;<-$$52k7jO>vj~GQwfS^s#0mEPh4IG%0UW+XRCinvm zIKZUfLi9!HR=c0Yg>??tEiIwZtj&0sNAz=vjnb;=;oEm zL7%`&g<$n0qq5-6( zr3J}RrrZlJ5+MkSx#I)~{S_o$ZT4fRy4&XOaDwJAfDn;E`nYJVhwyjoj$r4kD53%6 zeg_p&1{@|MZHB9S*7TaJ>S%P1RW>a+93}Vnbemm7t#upDLz+9~E=w9@UEhWIdxz2A zlMSqI%g67}G38HTULHPtxXhU|$Mgh$Bcfo~uwllU=e4=%&nO9Sp0p0gIn_Qe&AItI zenws3z^3*2=by{g+iYXRwTTla8a*c;IOucf?CdOhp$7flq5-72x!L$YG$CRF!G1x6 zH0_ZPK$I}=!P-G<6ax&PfBp#24R>mC9{zdKziA?^-Vge+1FT?`+Pc-M^ zco_GE@9-S{>9pQYR=g@pR?QPhMkHdF$QPYWQWmQ)=LdeiX13v6>kS-ZM6}f%jm9T| z@4iT^G=G;y%T3jG+>5KKbhx>V|T*&HE~m4qmqqxkZaHqMbMC2((%c52qx1P6>o*_Klt!NIpmN-WW|aV=BVpe zUwzdVtW@wFx@xYitu>Cw-nxngkd~Gfc%CdTfUtUp)db{+oVJrn~VUSRRKz#Ip|&S{mSDOuONBEeuIz&~CT6}6$lE6PC6 z83~OW3ER?~SAXXxhBD*?eF)04@ggoSy^R1NH)T>6)=+a5{XWiTW=)-VD-a&&;(-Sr zG>%(bg9i^b{*`?FaRKCv+S=NpmmBRZ4uWEZITgWK@tg}q?!X-e1Lh)gm(j8-o?}=> zF@n*SFJC?bHLb|4bmkr>U-t(rpJ#dNXk4bNax%5&oWz252s#p%HidGWoC_V4=q3_8 zkGAMZcY~_8c2GA^XtkoKNikS&Eab5GjGr5GzcPlva(3ZG7n$0-yk2|lHQ8*l&9a8V zHnh%)&(^G2GkfI7k-esSuoFe&AWcn8#>DF$2#5Q+L1#i=Xn6q`Nwj!3*f@jgn5*H=%jE~~7S8SICtzKiZaXR3Daz1O;ESWZKntb%pN10ddz4zXxScAR@ z4mVvn^OKXc*c+Qf(E!rW&|ottk2?q^i9vg;T;a}Y^Yceg+`>-+q^hc_X#K@x&Y3d@ zr%V08w(V~Z95}EXyEBQC;9%%E3DvEiXs(Ih8Hk7Wb>dTIM{>@|Uw(V0a%i0OmH&(A+ZGtYLy!(a8c(H!~j5?0q0kwIV+>|*R4A&so_>;0d=ZbUD z9i_V`fO13{0}%Iyfp#%w038?m%=LsZ7X{zu%$+Nzo_eah@kZ`B>_7kc&*l8{yGo6r zEoNhqrbt&MB_+2H8#b(0oPu6+R5XChpFcknhsE8KmL3d_VFFqQq0Em3(BcSpQ)c6F zC+$suxF-i=_4V~OWn%`E(L_t4VVD5{0fM1_gt9$>!Wb@Hva(n@NZ2vMOl;fsF{)$wkdMzfIEt%49TY`MNW!2B~kk6KViqyo%?XCf^FMx+P2-8NF;WQL?WgR zF-`a+Vw&yAQSkHKci)xck3Zf7K6+hSY_WyB@=9*$V@eRTG-3{t$z-n`vzBjOiUyG7 z%ae z>#p;CFABuLYUQ=@a1O|!EX!&eGGs`m&R0(cQ|Plr0|){Y_2P0D0PzzrdNODNB~j@x z6NY|}d$8TLC1NdEvgEVY*49ZRZ~{Zg!JZ3CS)5@tByz35YEw2oXOuJVrQ(bG@Lqf$ zCRL!&g)ij(R4R45h~U7ZiR6+PBYtN_CpR&ChWM#F?(jZq9q&bsKRo4LHM+<-**|AK zik@p8cKp2p5X#!L(CD3%#IDP~0356)NO6KPH;D`Pj2=C@X#Mq@pr)p#&r+$>ByHj) zV6mg2U)U|Zc0LB;;aQ3y8eDn

Bci`8nrF>n#i$4-)YZNci9X{?|C#aP&0m@4_pM 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 literal 34654 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 literal 16612 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%0DG5wu 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 diff --git a/test/visual/golden/freedrawing/simple_result.png b/test/visual/golden/freedrawing/simple_result.png index 80a4018d3d840db567f477b2d6a87bc935b0cf31..548695f9b7f2fab551bc55dd5bba72b3e522fe19 100644 GIT binary patch literal 1497 zcmds%{Xf$Q0LQ=k+J@Pfr##oV<)NKpp2cNsu~C-CsXTS+YFu%77W!^#HxDP;oIEtD zz05O_>SP*uVR4cUbtvblFzo83^~kw@<9_&j-aoxRKYntL`1@c`hA034Ff=M9aEB-V ziwbh56Xr^ScK}Na^zj0kM~s&N0KubCJcH9B*UD+NCLvhP!+G~7_WkKxHR8>mtu1e| z*>hgEI4-yV;t=-%cJC!Pam5S4$jj4IuC&!x{`2}9FFh0y+f&OW8{6kvFV+$CvdA;* z-6e_Njmvj!h&v<3wz*CAXyr?&l4QP>2LDj7ZW@M0h0;RLd|0ET# zI>hSj%|)x?E?XT5b162332hN5H48gDq*FsW@i&FDW9nFbTN!FFCfSkP0gs%Nd%HT5+lhR z{NXTuLdO>W@)e7q)fL1Wod_F1Q6|6Iv+hBUARkr*>-#}=q_Zxcb5T9Y7&cwwF#t1y z+6S?8nmlLIG_K9a8EbWA5~g>itV_k^sDk}WXbF@v;k?6{QI{3y1P^&`_R^@s*VnOQ z+ZS&aVyL`Qk&z?83DmQA-Z(V6+<7SiG`HRd<*!D4A)-x%uOifjywb z8@rAadFX1O`F80a*`4}ZU2Tp{VUTI4jpb3|c( zjWLyMzh_5)*wzXWxgd@XM+)JXFHlFVjcq1g}5v;|-YImR>tp120v2#dM;25B8BV%IGYOq`X$s#gAc{jN`b^ zFgn0kt+0rnCLEhPw|jth6ncY}rA2GYI|`Y?9zHVI&Z|cG?dPg;>#3kE@wEo)qMp)& zfiHJAt+p4qW}8eFNL4721r0!1mXwptB>EaDF%gvYrg@FJM)=6xZbiX%e>~g_vz#$& zJS%|573|lEnK0xkw1<(Dp_zP$!LnHxYK0#c&&yWguR`d00`m}K;*;(M9#%};8jujj zqVOMTSEo7&2Rt-MNgfpqQPEl7jE6if2~M6A0>yK4CrC>SdQE2a&BqNHIC91Bl|ufq zkB%Y(*pc}l|I8mY4vC2x+Jt&dN~|R@4$3} yTu(fm2h7#o?O^~!?gCSbV7}n#;uum9 z_jXoepopPFYrIx~HV|4(;Ih#Y&fihJ*q=PlR^eeOu;fYv506WZkVHpghoyqraZW=4L-r$2EEL(4o;A#nQ9t5v zL`Gop;}(gI8O%vVa|D?6a*`HAFwu@ zW{BabY%rDhbNMpE9_ga~uyu1;J$yF*tUW$OpP`SbVDs4(yaqqi+Zi9&ikYjiPkL=v zo}y#A+@nBFVJ)Lcnevnw>(Wy)ua4=b%<`H;oB8EHa}WXH|rg@ioDv+ zyZ@wu$`{NGtYQ@DHAtVb%g3>=CZ-iNYnKOb{^-KTZ^=?Zx}f7S~A^If#Jc{NkY z+P#5WeM)7e7+O>(FR$_AD`R~p9n^cu(Ba0X2ZujBj9hl(-VW>P^38yxbSn=W0EU~b_*{ZEL$ z_IdCc$=810SPr$+WfeL;|NM?8MgHHJgw+ABEw#Dt?8uV(YQ^vr3*nl=lacwEjf8e001ld$Qi`5(iF X+Iy*DoLpal8J)q?)z4*}Q$iB}6CksP diff --git a/test/visual/golden/freedrawing/simple_top_ctx.png b/test/visual/golden/freedrawing/simple_top_ctx.png index 5f8dbd4f79df849132570b3db88c1fe311749ae6..95b4a74d275272cec79326fb8978bb5821315522 100644 GIT binary patch literal 1453 zcmeAS@N?(olHy`uVBq!ia0vp^DImU`_XQaSW-5 zdppZ>g{-Sc+y2FNk8|dTF7Iek(%K;;(j$0OP`pb}q_9IN?+ByeqBa)xlBuoI;*m#M z0}G>$aQ15KFxXMpp{SuJBs^#FB##gu9m|zjZ|~f>{e9o7cfbAO{XRbU^lt6CU$6iF zUT^ihg!`V4p~A8Y77{T6$>xpRkD4Ts4@k(AcW@{5FeVq=QPk@&Wa~Lt*uF#In1lh_ zaakM+P8NAI{B1aUU_Mj3M0D`-hflbQj6Q5#7gP4HGP|o$$B20jLk>gJ0Xg4BNi)9& z_XbNQ?zXRQU%lViB*XZJO=EIZ_ONLBbg z*!fati#yNWFPx3-%Z%N^e?8+WGWa0dFkBvxjlCIe)b(=6^%Pg z|4p{b7po|n@_P3*_3#Oo8%ihYFJmd=iK^&`KE3+DyaVY6W_Dhg->_5Y_|3Jf7GgU@ zBV6u?ZT-)9VBdj6ru`+oZvsC&;|j8HIUJ{&k-%+eV<+;%TDVDLu5z$i!HiLR{veL#W?n{)Jc@Bn7(b*d{z^I8#kHeu-ov<#2w&q9dW`qj$|SQdg`5<9Vv(@;-AkeOuj-=DIcf^cX4MgkxO7|7<#~>}+VuU?>`Zsw z40^na|sbgjd>ishz)LApoE za=u+|=M5Uo*X~*X-hPUQ=bsNhL<_a}mllTWqm!04!i1iY1=iK_9Z5q>UmT&o7 zhb@ks6m^-r%{SGtYSYK1OyA9RHUv%C>bdH0D(`CfE1$e(#W(kx9xzInsy2o38=Ib5 z+oSayIk`gFb2k>TY6=~G%M{G`j9EJ<>HCfYhf5uJITq_H=h;WAvhgxUzkH_QrTcW> zues}XNBp*FjSn-I!t6Ixy?m|Ck`@Mu9F<2r`8 z>n_1bkAB8;Z+x;ylwoW8w45_rt(r0{|L&U-oBhOi{n@L%RV&ylEL|gBv-sr;2TLcX zb6;YcvC7c9{g+#(zs~P%0^SCj8<(@blQKWI>$C3^1x7vAdzY-Dr)HFTW`F*r$7y83 z&-w9Y7n|s5*1XKgJGLErH%Vb?dsV~AFIkh^8hX{1=1#nye@Blq$i=_*^8^NQruU55 zsn=iR&#AdKZ?$(*h+5myl!Dd+yjy3^T*$af#UrrpzD_}fe_dg4mCl-YeUXZ+wjXP3 zbEmWHFLUx&q=@PI}bd%wdTwNhPi?+mRyFXuT9t5a>>Sg@AIYoZC?#P zRy9sen{e7~*}GW^Pq&MI6i4TDWreM%hgHA$Hnj%Q;RX u!8PGJhgc1lZ6LdBAXs<|fPy*ojK^Q{mYjcK^&VLMGI+ZBxvXU}^SraSW-5 zdppZ|g>0xq>;C)V9j*K>A}u!}G#0tJs7g!;kh})2(Ekv!URbhqe zqPYT!6TFm{b?`5W=;+E&&~!26;>wz+`}>@oK}^y6ImK!7i?8uy7k6`)%Vl3Pe|`V= z{cxjO6AMK)rDqK@=Ij)n^nm}t@`klZ=S?y!Ya5pQd9v}_U0v2-)zqy+T>0Soa8^9LU^4dB;w^W0DVK9!zZbzTC1t={`(G0XWag+bUo`6mjkA?>z7ykb85Ka z=dM|-7b&}XIj{BCTQ4;nVm3Wvob;gd!OWt(_dAmpEeze%$9m^tXi?DRll3wmimz|< zs$U{ca|BBGg zbt$EKLP3)+%(-IoN$tt^1J#Vx(Ve>`cW5WX`_8RhAIj?S@|Zol9>cuTwa)R0>5BYhL=yd{Mf;)X4Xd22dgvrVvZT^ZDh!2@}Kgy_c7yk9jA)bhI80X?0@?72H%r7 zjr|I@8?>Wt{bMe>uCv;7-fsR0Hj&$`-`;6`F0|oV?{&Ggp0$@JO;vFIk+MRzR$f8! zSfaxI-uA5XlIfa}mHcapgZ$6l`Konc=8{|bzP+!{@-8`cHht$Y9?p}$(<*nT`5*Ya z`Hu6$8-a|T9~eF`7FaznVr@>pYM`PpS5@0|_0ri5;Y@L}uJW`#Zf8l^RJ!Tmk~llx zT@pL=XB{gjNcM0rd+Qu@x%|n$iqLT5yLp6ASb>0i~xw}&4#RA)(TUX{(u<>Bf1Z=ZR7#ZQAS+^7oIauUdP) Q0m~)^Pgg&ebxsLQ05tIxp#T5? From 6318b2f21b841be3a94abd1993f37d81e7d06743 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 13 Dec 2022 14:43:38 +0200 Subject: [PATCH 093/153] fix: remove unwanted restore traces from migration --- src/brushes/pencil_brush.class.ts | 1 - src/brushes/spray_brush.class.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 7fa55658480..ce8024ff405 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -204,7 +204,6 @@ export class PencilBrush extends BaseBrush { // the bezier control point ctx.lineTo(p1.x, p1.y); ctx.stroke(); - ctx.restore(); } /** diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index 5b7c8eebf8d..a8a33a7f077 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -183,7 +183,6 @@ export class SprayBrush extends BaseBrush { for (let i = 0; i < this.sprayChunks.length; i++) { this.drawChunk(ctx, this.sprayChunks[i]); } - ctx.restore(); } /** From db3ce69fd476a9cf0a1a4e3058713c642ebb0d86 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 13 Dec 2022 18:11:08 +0200 Subject: [PATCH 094/153] pencil cleanup --- src/brushes/pencil_brush.class.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index ce8024ff405..4b2d474539d 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -64,10 +64,10 @@ export class PencilBrush extends BaseBrush { * @param {Point} pointer */ onMouseDown(pointer: Point, ev: TBrushEventData) { - super.onMouseDown(pointer, ev); if (!this.canvas._isMainEvent(ev.e)) { return; } + super.onMouseDown(pointer, ev); this.drawStraightLine = !!this.straightLineKey && ev.e[this.straightLineKey]; this._prepareForDrawing(pointer); @@ -101,7 +101,7 @@ export class PencilBrush extends BaseBrush { onMouseUp({ e }: TEvent) { if (!this.canvas._isMainEvent(e)) { - return true; + return; } this.drawStraightLine = false; this.oldEnd = undefined; From 1141a1a3c96c56daaff93d9aeb12ce6a96395413 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Tue, 13 Dec 2022 22:49:41 +0200 Subject: [PATCH 095/153] rename --- test/visual/freedraw.js | 2 +- .../pattern_inv_result.png} | Bin .../pattern_inv_top_ctx.png} | Bin .../pattern_result.png} | Bin .../freedrawing/clipping/pattern_top_ctx.png | Bin 0 -> 3026 bytes .../pattern_vpt_abs_inv_result.png} | Bin .../pattern_vpt_abs_inv_top_ctx.png} | Bin .../pattern_vpt_abs_result.png} | Bin .../clipping/pattern_vpt_abs_top_ctx.png | Bin 0 -> 5885 bytes .../clipping/pattern_vpt_inv_result.png | Bin 0 -> 15300 bytes .../clipping/pattern_vpt_inv_top_ctx.png | Bin 0 -> 15300 bytes .../pattern_vpt_result.png} | Bin .../pattern_vpt_top_ctx.png} | Bin .../pencil_inv_result.png} | Bin .../pencil_inv_top_ctx.png} | Bin .../pencil_result.png} | Bin .../freedrawing/clipping/pencil_top_ctx.png | Bin 0 -> 2745 bytes .../pencil_vpt_abs_inv_result.png} | Bin .../pencil_vpt_abs_inv_top_ctx.png} | Bin .../pencil_vpt_abs_result.png} | Bin .../pencil_vpt_abs_top_ctx.png} | Bin .../pencil_vpt_inv_result.png} | Bin .../clipping/pencil_vpt_inv_top_ctx.png | Bin 0 -> 9333 bytes .../freedrawing/clipping/pencil_vpt_result.png | Bin 0 -> 4176 bytes .../freedrawing/clipping/pencil_vpt_top_ctx.png | Bin 0 -> 4176 bytes .../clipping_PatternBrush_top_ctx.png | Bin 3137 -> 0 bytes .../clipping_PatternBrush_vpt_abs_result.png | Bin 6137 -> 0 bytes .../clipping_PatternBrush_vpt_inv_result.png | Bin 15181 -> 0 bytes .../clipping_PatternBrush_vpt_inv_top_ctx.png | Bin 15181 -> 0 bytes .../clipping_PencilBrush_top_ctx.png | Bin 2966 -> 0 bytes .../clipping_PencilBrush_vpt_inv_result.png | Bin 9580 -> 0 bytes .../clipping_PencilBrush_vpt_result.png | Bin 4297 -> 0 bytes .../clipping_PencilBrush_vpt_top_ctx.png | Bin 4297 -> 0 bytes 33 files changed, 1 insertion(+), 1 deletion(-) rename test/visual/golden/freedrawing/{clipping_PatternBrush_inv_top_ctx.png => clipping/pattern_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_inv_result.png => clipping/pattern_inv_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_result.png => clipping/pattern_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/clipping/pattern_top_ctx.png rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_abs_inv_result.png => clipping/pattern_vpt_abs_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_abs_inv_top_ctx.png => clipping/pattern_vpt_abs_inv_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_abs_top_ctx.png => clipping/pattern_vpt_abs_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/clipping/pattern_vpt_abs_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping/pattern_vpt_inv_result.png create mode 100644 test/visual/golden/freedrawing/clipping/pattern_vpt_inv_top_ctx.png rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_result.png => clipping/pattern_vpt_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PatternBrush_vpt_top_ctx.png => clipping/pattern_vpt_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_inv_result.png => clipping/pencil_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_inv_top_ctx.png => clipping/pencil_inv_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_result.png => clipping/pencil_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/clipping/pencil_top_ctx.png rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_inv_result.png => clipping/pencil_vpt_abs_inv_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_inv_top_ctx.png => clipping/pencil_vpt_abs_inv_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_result.png => clipping/pencil_vpt_abs_result.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_abs_top_ctx.png => clipping/pencil_vpt_abs_top_ctx.png} (100%) rename test/visual/golden/freedrawing/{clipping_PencilBrush_vpt_inv_top_ctx.png => clipping/pencil_vpt_inv_result.png} (100%) create mode 100644 test/visual/golden/freedrawing/clipping/pencil_vpt_inv_top_ctx.png create mode 100644 test/visual/golden/freedrawing/clipping/pencil_vpt_result.png create mode 100644 test/visual/golden/freedrawing/clipping/pencil_vpt_top_ctx.png delete mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png delete mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png delete mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_result.png delete mode 100644 test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png delete mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png delete mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_inv_result.png delete mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png delete mode 100644 test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 9c1c699061a..a53de6f5cdf 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2284,7 +2284,7 @@ QUnit.module('Free Drawing', hooks => { vpt && canvas.setViewportTransform([1, fabric.util.degreesToRadians(45), 0, 1, 0, -100]) pointDrawer(pointsToCover, brush); }, - name: `clipping_${builder.name}${vpt ? '_vpt' : ''}${vpt && absolutePositioned ? '_abs' : ''}${inverted ? '_inv' : ''}`, + name: `clipping/${builder.name.toLowerCase().replace('brush', '')}${vpt ? '_vpt' : ''}${vpt && absolutePositioned ? '_abs' : ''}${inverted ? '_inv' : ''}`, percentage: 0.09, width: 200, height: 200, diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_inv_top_ctx.png rename to test/visual/golden/freedrawing/clipping/pattern_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png b/test/visual/golden/freedrawing/clipping/pattern_inv_top_ctx.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_inv_result.png rename to test/visual/golden/freedrawing/clipping/pattern_inv_top_ctx.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_result.png b/test/visual/golden/freedrawing/clipping/pattern_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_result.png rename to test/visual/golden/freedrawing/clipping/pattern_result.png diff --git a/test/visual/golden/freedrawing/clipping/pattern_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..a61da072d6d26ca3c86f1fd173c95567c68409a2 GIT binary patch literal 3026 zcmeHJ`#aMOA0GCwCCo!gQ@*jyDI}+ymdV%>i6|rW;7vRzLuC%toX<0da(-eBVMLL` zc%y8H9%Cd45jm_JhS!`P&-MHh@AY2q51;$KKA&Ii>vR8d-wF11))EJf9sq$r5_p`Y z!#=bB9*F2ZR$XNj?vqfEgS7>S(Wfv60*NQ%EisqxyYmWc+5S%Qti7c7$*L*BTQd&Q zmXut3#AhmTqDHh|PvaI0oT@+yl18rO5k3+e$Q`T=X00qL z&$e!aSMDs%7Bc%*wv_O>&HfQJA$s-+A)1w{V% z`jQ4z2#lxRYJVwh4uc!|B2PR7@W0wVF%X7$Oj%VSz%T^97&>4D!uWkI%Zdh(5qQ1d zK0$!^6!YxDEZAPztPww}9~jT8rt*uitQ?#i|{<2H`@mR(A%>)pn3 z8kLyDvWVR;``&&!!_(Bq-OlEJjiv{vaWa~_(-bQTpZxiyzBp{_$;jQ@dB|yHZWJGb zf1szg?3ErcqKwO$MV)KTb6Q{5spIK!rQcHKF~%x$KIgc->eo+lI=n}Z(6n)+TQ^4+ z=3Te$_?lpKA*WCDMqLhN8b9rBEk4{ckJzq#y!_eo%GqXtD)wmpSIF2w@&(*azzj84 zC-Zz!L$Ine){3Qgt}Q=RVveh2*YpDH=s`&i5bbL z$6SgghBG#s{G!oxVP07{0b|@PbZ+hmh#Z`+5L<651a?7-CI8_m4B-S4k9=AI!@M>X zPLWfgG-}NRZpv4CaKEWEGd%iPZftSx#S`qBy=4x`Xq_Ryff>qc;@SKr zK+ENh*ELIMvjHZS({>bhEyZ@M?`~dgn&|qNTo=I3?1koLlaD;ksZ_x{M>iF0rih4Z zvZG5_C@tqz1H0q+NyE}4Ep}!Ji$pltTAnwctCGa(|KZYx>^R_IN~+Y&+DT|v(>37F z1gHN}-cvVjfECoQKVByF zRzJ2KqtC4RZNB^Z#AL~R-ujSNUw_FAJ*4B6QRu-jmcl7BE|$U@nNW7#Iyu(;oJkr- zc0f-@b`0#@^pJ`WHe0otb$RLP(mOqFyB1I0{)17Ki+|G7!UHwFAMNwqq>9O*>JKi- z8ibf6oFRyggyqCrQyNvipVap$dbJPUT|`o%C`M=5mRNad zfHhfNTYs@9(l=JtD-$t5573`x7?v)0cVC3#uVM_o%q=u@)|R_=w4CV_y)V)6{WFg6l~5Q%D@|7Iaz&Xi?w z;+GTUjK!+!nX3-zyI~hz^Fst+ivz?7t&KJ$w@BcRUnmm%+)Cn)4P{Dl{HXzB{m%Z? z=Qqi;!^3S!{P5qmG8dxE&tQ^m%!fv95dw%b^pDKoNXHu8cBjpuvmvwW!-;%1#R2s` zRSPKRKitl^+I#aAp$q*LiK{tEJCRpvqWC|S8*>Qj`foamNSPIT*B%V-?S&6%FI6rU zLmdng7|oR*LN!|_38iqB)3WChdt-(+zb3S==k&g~SEgN8^t_!#?rvd@Du%k%1@U0pQMbp@giflkdoLlKV`ZbVm!W*@gbD{)M3jwb`kzFlSWqye5?WE}^(cEs*P?3=DtEOw z%0WS9?mOil+Q;n_gM8MV&c*;@0SeA8Kh!mRP|VISSt&o8>Q*oQeD}a5j`xoUv={3tnj(cD~!0{WOVXmX?ZN5>(EON(48p2 zIe`OlgE|IoCRU1)s_puZfJuk*=7sxJDg)&ovtO|Ozy9~Qu`AVbA$~&u literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_result.png rename to test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_result.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_top_ctx.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_inv_top_ctx.png rename to test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_top_ctx.png diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_result.png similarity index 100% rename from test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_top_ctx.png rename to test/visual/golden/freedrawing/clipping/pattern_vpt_abs_result.png diff --git a/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca1eddd77bffadda7f8f2f8e7f570fcd6b39e9f GIT binary patch literal 5885 zcmeHLXIB$U)22!h2!y5*AV}{Bf}wgNAOr!W*MO*iR1=DT^Z-%~H3)>Fp+vfZbQK72 zhu$I56OoP-sS?yT&-*8yFVBbF*|TS6ch1c2HP@M>2WE!stk+m+XlU4>M*0?1+4rBp ze2F^O*wq$M1#N(Z;T@XV5zrc*B}G?f1~tD<3yh3UrqM_nwqE_ za9&F?(9Z=L7s*VS=s}^RJ6+tmNUY}r8MmZ7n|zoFA5Dk1IIuF$zLe`U6KiJ7ispcOR|M>P@U^g92y@n4FEBSIeFvQGMIAxv_; zPdbe*iNVqFYo6^*o!j`SGo*qC$wbHbZm!O<07d|O|NdvR0Hf9g%l`Wu4FF>QZGngV zY#>!@(@q>c#Y}sl4evy%<6u{zUofqA5@IUs?qgKa_a!|oEtAC(W)yxzK<%=P+qAua6td+})@EwQKTGskcx zSL5SXapPVYux})$fcf`7Z;3u+u)lsyYeDGDlC;a1rrz5X%6RNv((l&UOixh^`FE3J zMB2A|D~9Vyztle5g`{{{=+KObz%w-u>+NocNuW;?sZLcj%ub^nMeG;-QuDW+$k|-^ zx_wR8hNLS@ccj|c?5?%jP`g50?yiZU5XQ+~q?B_8#GABz`86^p>22ph2H5424*jR` zE?(c?2m6eqK@N_gjb~_sS72FqJ3#bcGMe8#{d)?>i8sqxU0PS<9kE26wcD4S=swNI zN3BEsWtm(K;I??eU-r&pSe3ny&TKB9&>AULHrh2aO$k{&RwES2cNY3^FOKl1HFnRB z<>YZp085w7GvQ0M{`*65>%n{n`w}FUS9C7^@As5P3%p>WMkyZJJ7iKh5Jyp(4i$9W zv~4HBPK=pGeMS20I}iD%D8RSR3?XMvU4^4Aot5RZh0O^K*jS~4=W()tslfhtY0HdX z?<}*xpHSV#eAWx&ppcMU!ARg~MN5n(L#+g2Tx$Ut1 z>mTgA`$f377^Kx#y&30nTQGRFJvpK{_SEg@aV9nNBJq05bahWd&L(T!4oACVnK5Av z(qro}k1cFsveDb5C~fWpIMBnrc?@ zBkiqIBf|ka~Mjt_e|pyC9ZqWxxptw&KW)ef>IQv^y(ixv#p){Cfz~U$o_D_i6otPLBx3 z$9lAnkh7eHq*Y4|y*%Rnl9y;=R$?8=BwQ->2%-!PYeghn+<*^$H(PRgV5zwp;f6^d(%pBsnK`AD zJavcDw5Dyxh@VcWADfQ38$07v6PI9gX1c5lRg(n0w!)cjI5FYYZ1T~kA|>|fjuz&g zDd_%U(L62PZ+-{ZSDK!7(gvdTeZ$?*8-<^5p4do(n%@CzHA42WbUL72iy}Mkjj#QlXKWuuWq2tmC6?APTcLh^_vv zNt>2T7ksWTacgi|;oV0c6=5sEvcWP_Yv1~<@QX5zT3OnMazPTN>2c#Fn>ZZgtkH@P zdS*@vwip~m3m8Lo?=l7F?v(%%T8fxJM57uaE5>HyXc+s%)Q#aImx1LV#;bogUqjd8 zZkj!((f2poH0H8^aHEL7t#>kaa^X%FO%MK9&j)AcbOrsZe~)Y+d=?+#^Q5sKC>C&( zt8VDIZA^Q={sSu^w1qjuc=VnOYz^teP8K8GwR$?hFrMct_-gouJmX$g!!2bCa!XoP zPBL}}R(5cE@`nb8WwB`Gn{R$)vS>_B5uIK zNrj^|nBWD>Z&8(*;K>sn6Wb6#sec!q0(aV4L2vw8o5EX4-GU-}Jk##d79!5d=?tO# z_k`;lV!ruwkiZY=i8$c5+h_hN!M z*n1gwFjT#||K*F%&t-3LBJv+RgK^t-dxqy)6%QH0rH}D49#6kmH=K)HB!WS>RFY)d zPuK-)Z-ZW_ZKS3r(9Y}cwc22emhK}ZsV*}~TH#qyDecQSR%8g8Xi?3@j-1~*+dgw$?odagRJk*-p6 z!h@pdxy`K!C3}&~m4Ewunfs#d;b?qgw*Q4Sml#SyF>!Mqme*2-N2uKPVl8!&*tB#j zTub>q$cv&lW-P^5;Tq)hAhp}A7OzLOONyrng$i2s$PKTxTJ`#b1e&y&32EJb{H&?w zQ8I1@o-3?xe0~+tks%S>QuJ?vEfG2-<+zo(N5>k($j{wogyVs^Vjf*=_D04*YHYdY z#PIZK+);H?F2LhjVDoZi{7U|h4GBr<&Zz5z$MJZCgWTAkSN^zqIcrGm%G*a--W?a+!nXBc@hQ+X6ZzGbzxP$w`eaku7G~KW{+n9xDNgIki_8-c!dTpL?+wW{M^M(M&QjusHJTMO=j z@xz=bOjN>7Q>O0MXr!g6(Q+nEC*MWuJ-lF{`f$m3+-PPS76V_Ku$+#6Bm5vR(^*FRi505y1J{g>91~MLNAN66_)O$MlN9Z*oXmKnT?pI2_~*f$3~&AdU%_cE zcU0YjC^&l*Vp%&Xa|Msosh)QHD^T>@Q?oZK(l|6~94T!(jYmX`m$TazLep+h{J2r{ zBO@@j4ex-gKRT+&r@Z$tv2C*O)0g%I<)7TTva9ZrTRyAwN(Vmsq~>Z0@yohWFv&0c zT`%Yc&LoU)6d@uAD@i&r{KT(_OgjD!#L}V zI{POyrW8~LyH|x6D03U)Z!&51;zc=bB9_=u$JkoaSKv09HJ7#Yv0E?eVU1Z|2Kh`{ z>&*sCjUaw*gwPZ$JXY2;8GPfctWL9IN6J@n5&ia%TP5=&^=>|tWj@O0NT07Ev6F`d zE865+DZm;D-PkEY237m}BH;`F;hF(^ZFR82h+zskytUUx4uq4VufSy|``<^|Wr-Sr z44ml-#>q9l0lTfz#BydrAtwvgvn1O@fp+N!zT;5Lz7bwvan!z#0kQCX90&UubhEqz}EU zP-R`;PLQ3;zEnHtwPs3DooHK}@Y^|L3KVy`1Aj`^HGC0tMQ%_ze#NG|7d_q2F0JK> z?1{c-z8g}efJcyDw-T{WM$DKA!>6W%P!!y08vs>&z%BKFUe_XiWr-d%FZp<- z`*U2T_@Xqq<=6Wxv>h}e7tI{iCfXwTeVYK zy%q~!aPHh*5tR9iM{r08>SaZ?&H|tXe}?Lab$1}Oht4R*DyPR>s4)5cQXz87Z~y0e zwrAZsUrQ>%Mg%Ek`cQi^q@Qh5juL<9>|HwQ?RUHVpQA_o3cFC{MPH*9jopn>R>#YQ z+oUPvi}uR1^nmg~9dYn2VOb0PR>RE(f<>JKasxJBA7m>Ik`z?fL?kIWR=W)Zbz-+m z=8=Si`4XX=t9JiSur!2DY_?2nsr+i-M_S5h?G7Ibb3Wzu(q5GzsUtCgcJCQWt~Cn* zI(~44{|jObI>D0!8I7;1$QtgZ$4WK#%v<=52h9Z23GpfloSS?aIrrkPMa{eGq#uq! zfLqGg(Bs@GomZ7k)K?=mUex!);nPPMGQ`(RX!<$7QGq|SeS4N;H&;MfhvD6>8Zle4 z*DnyBz*oP;`MRf~5sx$1eNO+Tn$&FkuuhiC{3Ff#=I77^L{VJ6y;sO>3 zs%|gyyMWW{&-~$Tew?9@D`%W<+O^!5RbgqZJ@MXk&2|?}Ay?s;oMeYf#H(3{Fz~%; z8(Cekz6FW9?~Tcjj0ehk9?b^137MS1k9U{0e^GP*vCQUVl80bZ@!Z3+Tl(W zTP%oQs<23zpwoOaE;U3&4%Ktxu#QIx59)!xzXkBT0S*?ic#IO9b3Wn{3aJpZlG-D( zyLLy%F~~+$_Yr&)hpnd852&D6`KGX9BU+FLysf#`oZp9FTV1Jl&A@5YJ4!GzE^J> zOP_DP40$O!0OMa@hGJ?#-i<-5gyCBo*cz3_r9B|6G zM7t1LD{7BNT&;8VH5WB{xxJEi2qPMweyztNqUg1nQ4YU^RV_n$pp55{0*YcwNWyX%$54$F5X@(x?P>LPc z5#q7Pz!WtzU3o)9i2WGXRu=8%@!dt{@jSH0m( z?N+TE7aoVxP#5&kKBlSsw4!|>5gyvYG}HwR*pYk1fNJf$Y(L8MzhnLzu{nzp*dp<4 Umkl#e``I*512g^FI}efn2WKM>a{vGU literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping/pattern_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_inv_result.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5b30fa9657c61f20e318603c5b2e1385e48dce GIT binary patch literal 15300 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping/pencil_vpt_result.png b/test/visual/golden/freedrawing/clipping/pencil_vpt_result.png new file mode 100644 index 0000000000000000000000000000000000000000..118378091ae4baaa37ee46db7e03eeffd87ed210 GIT binary patch literal 4176 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 literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping/pencil_vpt_top_ctx.png b/test/visual/golden/freedrawing/clipping/pencil_vpt_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..118378091ae4baaa37ee46db7e03eeffd87ed210 GIT binary patch literal 4176 zcmeHL`#;m~|K8?Bb2jC?G&7Q8hRCsHW0FIn=2XK_=6sm5)+#o{BIhWD95PYlR7P@$ z5;^Cv1&&T6>T#xH{-S_jS>t@(mn+x(u^MODhK?^+AZohZ^ zcc47`wUWRp*l*wvJM+^Z)_eFj5J-g20*kSaxU`%f-W!I4bzHL)v&FKhV6nf4oRbl} z%4@0TM7Yn%zvD@y(nSDVt|*R{h{pmD22q%3{zx;iKbyeD_gOHuDZml#g1lff@RC#sS^b}B*kmqz80K-VA#9{44IRtI+wN<4VjS5AJ z;>fw1A|jaYpGz*tV@?55jE6e!qV@$h1J767K_F1WTgKd$dJN&k`!JRYbQXhq$NuzfXeo6J_?6?Ky# zUM7YUZHT|!OD_!lQYN!H}CDimPRWqTL%;T?7KHZQfDZ}=&+P7w`X|pgea;_{<@65cE#H(ei9sg zSh0Zp>(Vbdh%88eBu{UJnOo=U7u*p;pw1FGD>+UY0=Cq)T31LmAn9%^bD6P=X-F3k z+=w`FG@tTLDQlaj6ZM(s%`(61?kpKB(!IpV#{DCAb)kuRnOAk@UE3$ z`zY)_G$r6NDqnCrymB?IL#`6_K?d_L(}YqEw0%%XLjAqkC4(_ENu5+?AO5SB5wxXB zQ%#+EcPnlI)Z$nmr?H2}G3P#he!US~ZBWcWOu9{yY-D)W0`EIs-#m9tExL82l;=u`_-8$iIzd6AP z*#ZCk^%==ysV0&xk@Wj29mL>o1z6x179lL-lUlUJzjosuYKtonoukq~PParIb3xWB z*NPmkgX^H<=rBuKX^G#knBwQiIzt?>wZn&X4 ztYNBA*HW|(&@58@x}gG@IO!Ig54rbwY<9qU0B+HIu${T9wl)K5kxcJaNYgeI4FIYi zO>%jiS`X(uI1Y0Q0u)F3!RkI?c`l2y6WM0| z0YIec+HVNn_y8O&MHt^Xmc`xw&vG0s6+qsXY)U~}$BZ~a@o5u zz8x&DQ#BNAZ;o0lxmri`qmaQ<`{qa0V-H_*I{s7oJB`Dq*E z6`U`_@%!SsHRrvOfw=#)Ddp$!CuLW&5|480c_*Ucvn0~VNg#3avz}ncC0@Jvwx_*q zPd};|%+-8kbx*cmQdNKXyZM!QViwhsrcLy+LV9nbD3@!#pBQI!hdEMTCuVg=km-oI z(7nz-#WObWTo-h0hnM@D0sSvJ?#aZihQs32L_$wY!-Wh_lex4qoy&U#;Y`7tU5XO! z#>|;jF6%t&x#n5Lti$+wu7;aGh5{{_@hzq$7duAQw-xpRNx{pKoQq!`v1g>BkJ20N zWiMLDyt$+_Ui|PSA=E9nd(f%rZ1X`9*Z8|_?|{kWcTF#2?<;nr8~b_+gU+O~c+>J6 zDUczr`XkZTf?cxjj45x=IhEU%j^i$9kpzH~(E4UU8Sa=&ghQ=KPmGy&PU0BSsn_xCE^^>T0w5SRI-0QS!w zQfgzc9jUQL1Z)2&vDf4E>(x7T#AyWmxh8#J>oU87E5=jEB2#YnPYA^2qny``C7(k; zclaIF!5F7&6lGGwnc=&JyMLHg>fF(w4y;Izp{G=7qk3Hu+;FvweDff6n~Sn;@*KVE zG2Jgx^w^c;*;>V`rQLlK+60;ZvRPlKNm}ZBE!2AuRKs)X6#tM%0GO;`?AtC-8#drq|klyFat+vTBV6r?}tO@Qoz2Qn(o_< zW(`Tn83^&*!LyZecmJD!uL+Sw&G5zwMI<+MDe2BuDj%A2s@Q)+HrpB6ig6j(!N6taYfH zbV=p#rWvO9_EiX{_cTLTN(MQeRk{?~Myv)p;IHZi^nJJA^tt1@nO)yMwy?l1( zvUUE$%azY=?O);{63*uW^1WacGdG?P-`g+{2E+WbVOC!M#KT(NCmcjYo{6izQgV^( zDR5*F+137&;mB+#-w||nriK7{=4)irtvHfDW6X%*YB+8lM9Xw(<>XeJtHCvk%aNnAr9B|DG4@~!b0W$Hm<1k4K#4}!Z%+xS&O(t!o zq~kwc@+9d9+pcHq;Ivudf-4rtd4_f0TH0K`{p5lF&1~~Em|PRTBLPVe>eK)?9U4;G z34aleM0U}{M4rV+*(f*Qn{@f()+P04u1M!BxYd~W3&i5KI%OwxqxFz{lbW|$%71Z!W z=}L1;5+dwQ$Or#!>sm$Fi$g&N#3BLb8_-2AZ_wkx}R_j?ti(CFB zf+gM`)A|MNJHP^ZH%rc(RN0WYTlH2?Wk?KjrcLabM2so@rd@D5xqPgD#jOxKKMnl^ zx_@A+bRfrE%MvJi3PB1S`(S$Oj*0!I6LA_ezd_h=ttn`z0j(-(weTfD?Vxv7`6A!9 zvT7V^x#ug{N%IQ7a#pmxj;w5f1CIQ}dG?@>dgD&VZ-g%+#A;z$k6Q}c2g~(#6UsHt zu4&ysQ2^ga*=2mhxkz$X!CvDrBwo%{wTBMwip6O|N`ux^<$(o)H+ja@s^{u74<@5o+gi zthefJ9^AzGkk;LKic}Q7KV<4yI$3}ALjhQ|_C^wtrv0EpA+qO^XNfmY#Kke5^KuC; za|8*@TNaHLm0~=8(aWcRD|2x&<)&o@w2DieZ@KxJhE9Bm3IidC{LVz_&SoW28VKcB zf&^!zSXl$304u^Myiw)9Yc%91Ps87kuSAvGtFq3BW|h`J2cFg-4PoXj4^A518jF;P z4>~@BWs2Lw+*CMKYV;N7*)euEuDX6#mX!WC31Ri{q?}3{g{`K>SUvAsMsSH0dfNR8 z$5iaUmnQZZ&zTW#`fB;y=*y%ERbe;C70b*VT3jQMxit-vM>VL$$sx{IrjWhN=Q4Jm z!PoLdby?7*Bj^^@EFAC+UkR&wfR!vriT@a?yEQdA^-|-vM~zNB9bu)B!Tl3{-+%1M zyS=yWL5?Uf-F-eG16CkNAnMv=F;tWqe@94Q^cCr0Sqn=~N9$#KmJ6f09<QW) z4$7*s1*E>7aUNJrdslAQe^_awB3^+eK(K^SfVh(!IcuTiG*Ez3T6Lyu3Di!yJWg5t z9D8XQayPDNN;r2YS`1U}F>INXtx!7_`M?6_>MCTdOaQ)lHjFH4x6QK)B7^gyPLE%$ zHKk71$~RsvL*iS0jeIu}9^C44x}6uW(E-Xjp+S)p#WCH!77i=@OlRdqX*a2ZQ+~qR zF+f?ZcEU#`o3GFK*CvI`Jp+v2KW7htS5}`+zi$%7=qEJi3(1difAJKLY0Q_EP1`+M zgVnzn5qvBsAqP6})91TW%uT^A+Q?xp_@}_Vx)6f&34U8YsqzU4SbKHiy6fB<_Vpd@ ziWPM;`r>t&>lM^hpuSU+L@rUJCF4J7_NZNXv7YJuA;nYe{GdK@8_px&>bldijL9l? zdiG*IJW8O;)@&1rm%0ld=??hrcX(7L((=JNo6vpS@*R@?hM^9dS_CFjp)-VrTqk`9 z60aYh#*qZ?TMpK#4c*Uap#lo6nh+%2W6sCt+kTMyCV7VD0boTs-wq89><=2yybE;h l<0%;x|8L;`@CB~#fydGc7jiqw0`|WMKo&S_EbBCp_CLF^b~69~ literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_top_ctx.png deleted file mode 100644 index 04255b239aaf300aa34d84532869e190dc57ae31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3137 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 diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_abs_result.png deleted file mode 100644 index f99584517e56b63f6ec7dcde9e4bf3b4f9225bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6137 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�q|&&ytaXGWPt@+A=aOVEPRZKnCFr|}rZDqx%C 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 hmMgkn7j%7xs}gHWpgE#M0lXiJ1J!t2h#um diff --git a/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping_PatternBrush_vpt_inv_top_ctx.png deleted file mode 100644 index acacc6092f063ab05a6d660fa86de3b148cb1d36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15181 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 hmMgkn7j%7xs}gHWpgE#M0lXiJ1J!t2h#um diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_top_ctx.png deleted file mode 100644 index c1bf14fb205ca7ded0cde5e3d796985a77abfb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2966 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 diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_result.png deleted file mode 100644 index 18fd5d6ce603e0b7368f4ee83e086dc6e75bd4fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4297 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 NnHZTHR_i;*{1@KH`k?>- diff --git a/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png b/test/visual/golden/freedrawing/clipping_PencilBrush_vpt_top_ctx.png deleted file mode 100644 index 18fd5d6ce603e0b7368f4ee83e086dc6e75bd4fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4297 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 NnHZTHR_i;*{1@KH`k?>- From cafd0b3cfeaf73b72ca47923bcfaa92632a87404 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 25 Dec 2022 09:36:35 +0200 Subject: [PATCH 096/153] fix(): imports after updating from master --- src/brushes/DrawShape.ts | 2 +- src/brushes/DrawShapeBase.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index 849b1a0b9b0..4df28988d79 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -1,7 +1,7 @@ import { fabric } from '../../HEADER'; import { ModifierKey } from '../EventTypeDefs'; import { Point } from '../point.class'; -import { FabricObject } from '../shapes/fabricObject.class'; +import type { FabricObject } from '../shapes/Object/FabricObject'; import { Rect } from '../shapes/rect.class'; import { TBrushEventData } from './base_brush.class'; import { DrawShapeBase } from './DrawShapeBase'; diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 519b3acda8b..d9c2b0d292c 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,6 +1,6 @@ import { Point } from '../point.class'; import { Shadow } from '../shadow.class'; -import { FabricObject } from '../shapes/fabricObject.class'; +import type { FabricObject } from '../shapes/Object/FabricObject'; import { BaseBrush } from './base_brush.class'; /** From 59e81e97ecc865ea5b3e545c724232217a488a59 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 25 Dec 2022 09:47:39 +0200 Subject: [PATCH 097/153] reapply canvas class diff --- src/brushes/base_brush.class.ts | 2 +- src/canvas.class.ts | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 6af8f1b42d4..1d1cd5e860d 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -13,7 +13,7 @@ export type TBrushEventData = TEvent & { pointer: Point }; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ -export abstract class BaseBrush { +export abstract class BaseBrush { /** * Color of a brush * @type String diff --git a/src/canvas.class.ts b/src/canvas.class.ts index 321d3f571be..b1b323bbc49 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -73,7 +73,8 @@ type TDestroyedCanvas = Omit< * @fires selection:updated * @fires selection:created * - * @fires path:created after a drawing operation ends and the path is added + * @fires interaction:completed after a drawing operation ends + * * @fires mouse:down * @fires mouse:move * @fires mouse:up @@ -606,9 +607,18 @@ export class Canvas< if (this.destroyed) { return; } - if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) { + if ( + (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) || + this.shouldClearContextTop + ) { this.clearContext(this.contextTop); this.contextTopDirty = false; + if (this.shouldClearContextTop) { + // in case we are rendering a requested render state might have changed + // so we render top layer to sync visuals + this.hasLostContext = true; + this.shouldClearContextTop = false; + } } if (this.hasLostContext) { this.renderTopLayer(this.contextTop); @@ -622,7 +632,7 @@ export class Canvas< renderTopLayer(ctx: CanvasRenderingContext2D): void { ctx.save(); if (this.isDrawingMode && this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush._render(); + this.freeDrawingBrush && this.freeDrawingBrush.render(); this.contextTopDirty = true; } // we render the top context - last object From 96504f9a33c3f506c931ab0602d7bc980809601c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 25 Dec 2022 09:51:42 +0200 Subject: [PATCH 098/153] fix imports --- src/brushes/base_brush.class.ts | 2 +- src/brushes/circle_brush.class.ts | 2 +- src/brushes/spray_brush.class.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 1d1cd5e860d..52ee9624262 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -3,7 +3,7 @@ import { Color } from '../color'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../point.class'; import { Shadow } from '../shadow.class'; -import { FabricObject } from '../shapes/fabricObject.class'; +import { FabricObject } from '../shapes/Object/FabricObject'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; import { Canvas } from '../__types__'; diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 3dd6bd18ddf..33b8ebd8b42 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -2,7 +2,7 @@ import { fabric } from '../../HEADER'; import { Color } from '../color'; import { Point } from '../point.class'; import { Circle } from '../shapes/circle.class'; -import { FabricObject } from '../shapes/fabricObject.class'; +import type { FabricObject } from '../shapes/Object/FabricObject'; import { Group } from '../shapes/group.class'; import { getRandomInt } from '../util/internals'; import { Canvas } from '../__types__'; diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index a8a33a7f077..f417a920fee 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -1,6 +1,6 @@ import { fabric } from '../../HEADER'; import { Point } from '../point.class'; -import { FabricObject } from '../shapes/fabricObject.class'; +import { FabricObject } from '../shapes/Object/FabricObject'; import { Group } from '../shapes/group.class'; import { Rect } from '../shapes/rect.class'; import { getRandomInt } from '../util/internals'; From b410f65924c719afadb4c95ab19fac58207b21e6 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 25 Dec 2022 09:59:14 +0200 Subject: [PATCH 099/153] canvas type --- src/brushes/base_brush.class.ts | 7 ++----- src/brushes/circle_brush.class.ts | 4 ++-- src/brushes/pattern_brush.class.ts | 2 +- src/brushes/pencil_brush.class.ts | 2 +- src/brushes/spray_brush.class.ts | 4 ++-- src/canvas.class.ts | 4 +++- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 52ee9624262..ce319b18376 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -1,4 +1,5 @@ import { fabric } from '../../HEADER'; +import type { Canvas } from '../canvas.class'; import { Color } from '../color'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../point.class'; @@ -6,7 +7,6 @@ import { Shadow } from '../shadow.class'; import { FabricObject } from '../shapes/Object/FabricObject'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; -import { Canvas } from '../__types__'; export type TBrushEventData = TEvent & { pointer: Point }; @@ -80,10 +80,7 @@ export abstract class BaseBrush { */ clipPath?: FabricObject; - /** - * @todo add type - */ - canvas: Canvas; + readonly canvas: Canvas; active = false; diff --git a/src/brushes/circle_brush.class.ts b/src/brushes/circle_brush.class.ts index 33b8ebd8b42..ec3a1ddad95 100644 --- a/src/brushes/circle_brush.class.ts +++ b/src/brushes/circle_brush.class.ts @@ -1,11 +1,11 @@ import { fabric } from '../../HEADER'; +import type { Canvas } from '../canvas.class'; import { Color } from '../color'; import { Point } from '../point.class'; import { Circle } from '../shapes/circle.class'; -import type { FabricObject } from '../shapes/Object/FabricObject'; import { Group } from '../shapes/group.class'; +import type { FabricObject } from '../shapes/Object/FabricObject'; import { getRandomInt } from '../util/internals'; -import { Canvas } from '../__types__'; import { BaseBrush, TBrushEventData } from './base_brush.class'; export type CircleBrushPoint = { diff --git a/src/brushes/pattern_brush.class.ts b/src/brushes/pattern_brush.class.ts index 0bbb36fd468..5d8b876e9df 100644 --- a/src/brushes/pattern_brush.class.ts +++ b/src/brushes/pattern_brush.class.ts @@ -1,7 +1,7 @@ import { fabric } from '../../HEADER'; +import type { Canvas } from '../canvas.class'; import { Pattern } from '../pattern.class'; import { createCanvasElement } from '../util/misc/dom'; -import { Canvas } from '../__types__'; import { PencilBrush } from './pencil_brush.class'; export class PatternBrush extends PencilBrush { diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 4b2d474539d..2a07a2987af 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -1,10 +1,10 @@ import { fabric } from '../../HEADER'; +import type { Canvas } from '../canvas.class'; import { ModifierKey, TEvent } from '../EventTypeDefs'; import { Point } from '../point.class'; import { Path } from '../shapes/path.class'; import { PathData } from '../typedefs'; import { getSmoothPathFromPoints, joinPath } from '../util/path'; -import { Canvas } from '../__types__'; import { BaseBrush, TBrushEventData } from './base_brush.class'; /** diff --git a/src/brushes/spray_brush.class.ts b/src/brushes/spray_brush.class.ts index f417a920fee..3aac3bff3b6 100644 --- a/src/brushes/spray_brush.class.ts +++ b/src/brushes/spray_brush.class.ts @@ -1,10 +1,10 @@ import { fabric } from '../../HEADER'; +import type { Canvas } from '../canvas.class'; import { Point } from '../point.class'; -import { FabricObject } from '../shapes/Object/FabricObject'; import { Group } from '../shapes/group.class'; +import { FabricObject } from '../shapes/Object/FabricObject'; import { Rect } from '../shapes/rect.class'; import { getRandomInt } from '../util/internals'; -import { Canvas } from '../__types__'; import { BaseBrush, TBrushEventData } from './base_brush.class'; export type SprayBrushPoint = { diff --git a/src/canvas.class.ts b/src/canvas.class.ts index b1b323bbc49..cf3cbd3266e 100644 --- a/src/canvas.class.ts +++ b/src/canvas.class.ts @@ -489,11 +489,13 @@ export class Canvas< contextTop: CanvasRenderingContext2D; wrapperEl: HTMLDivElement; cacheCanvasEl: HTMLCanvasElement; - protected _isCurrentlyDrawing: boolean; + _isCurrentlyDrawing: boolean; + shouldClearContextTop: boolean; freeDrawingBrush?: BaseBrush; _activeObject: FabricObject | null; _hasITextHandlers?: boolean; _iTextInstances: (IText | Textbox)[]; + /** * Constructor * @param {HTMLCanvasElement | String} el <canvas> element to initialize instance on From e6dd5f24b5503db58df680706faa16e51c10926e Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 25 Dec 2022 10:05:47 +0200 Subject: [PATCH 100/153] fix TS --- src/brushes/pencil_brush.class.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index 2a07a2987af..370be670418 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -1,6 +1,6 @@ import { fabric } from '../../HEADER'; import type { Canvas } from '../canvas.class'; -import { ModifierKey, TEvent } from '../EventTypeDefs'; +import { ModifierKey, TEvent, TPointerEvent } from '../EventTypeDefs'; import { Point } from '../point.class'; import { Path } from '../shapes/path.class'; import { PathData } from '../typedefs'; @@ -30,7 +30,7 @@ export class PencilBrush extends BaseBrush { * @type boolean * @default false */ - drawStraightLine = false; + protected drawStraightLine = false; /** * The event modifier key that makes the brush draw a straight line. @@ -59,12 +59,17 @@ export class PencilBrush extends BaseBrush { return midPoint; } + protected shouldHandleEvent(e: TPointerEvent) { + // @ts-expect-error TODO: canvas events mixin migration + return this.canvas._isMainEvent(e); + } + /** * Invoked on mouse down * @param {Point} pointer */ onMouseDown(pointer: Point, ev: TBrushEventData) { - if (!this.canvas._isMainEvent(ev.e)) { + if (!this.shouldHandleEvent(ev.e)) { return; } super.onMouseDown(pointer, ev); @@ -82,7 +87,7 @@ export class PencilBrush extends BaseBrush { * @param {Point} pointer */ onMouseMove(pointer: Point, { e }: TEvent) { - if (!this.canvas._isMainEvent(e)) { + if (!this.shouldHandleEvent(e)) { return; } this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; @@ -100,7 +105,7 @@ export class PencilBrush extends BaseBrush { } onMouseUp({ e }: TEvent) { - if (!this.canvas._isMainEvent(e)) { + if (!this.shouldHandleEvent(e)) { return; } this.drawStraightLine = false; From f53a9218028c47e44dde4faaf47e7018bd45cbfc Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:04:41 +0200 Subject: [PATCH 101/153] fix merge conflict --- src/brushes/base_brush.class.ts | 2 ++ src/canvas/canvas_events.ts | 9 +-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index d33ca5119ed..5f68b67a791 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -86,6 +86,8 @@ export abstract class BaseBrush { * @returns true if brush should continue blocking interaction */ abstract onMouseUp(ev: TBrushEventData): boolean | void; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + onDoubleClick(pointer: Point) {} /** * Sets brush styles diff --git a/src/canvas/canvas_events.ts b/src/canvas/canvas_events.ts index 3174a84abc3..ecc8859c3c9 100644 --- a/src/canvas/canvas_events.ts +++ b/src/canvas/canvas_events.ts @@ -513,10 +513,6 @@ export class Canvas extends SelectableCanvas { this.fire('drop:after', options); } - /** - * @private - * @param {Event} e Event object fired on mousedown - */ private _onContextMenu(e: TPointerEvent): false { const options = this._simpleEventHandler('contextmenu:before', { e }); // TODO: this line is silly because the dev can subscribe to the event and prevent it themselves @@ -525,11 +521,8 @@ export class Canvas extends SelectableCanvas { return false; } - /** - * @private - * @param {Event} e Event object fired on mousedown - */ private _onDoubleClick(e: TPointerEvent) { + this.freeDrawingBrush?.onDoubleClick(this.getPointer(e)); this._cacheTransformEventData(e); this._handleEvent(e, 'dblclick'); this._resetTransformEventData(); From bae043bc97412b072542b5daf0c09b24816ef681 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:06:42 +0200 Subject: [PATCH 102/153] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dbb9c56a3f..1c2b87a89c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## [next] -- chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) +- feat(): DrawShape, DrawOval, DrawPoly [#8430](https://github.com/fabricjs/fabric.js/pull/8430) - fix(Object Stacking): 🔙 refactor logic to support Group 🔝 - chore(TS): migrate Group/ActiveSelection [#8455](https://github.com/fabricjs/fabric.js/pull/8455) - chore(TS): Migrate smaller mixins to classes (dataurl and serialization ) [#8542](https://github.com/fabricjs/fabric.js/pull/8542) From c6f589613c75556e27dcc5013fd88eb933ff4f68 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:09:06 +0200 Subject: [PATCH 103/153] Update base_brush.class.ts --- src/brushes/base_brush.class.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 5f68b67a791..fd6707be737 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -87,7 +87,9 @@ export abstract class BaseBrush { */ abstract onMouseUp(ev: TBrushEventData): boolean | void; // eslint-disable-next-line @typescript-eslint/no-unused-vars - onDoubleClick(pointer: Point) {} + onDoubleClick(pointer: Point) { + // noop + } /** * Sets brush styles From ea3c88be60ea38a728e1beb69866a41ea3c20422 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:10:39 +0200 Subject: [PATCH 104/153] Update DrawShapeBase.ts --- src/brushes/DrawShapeBase.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index d9c2b0d292c..c3d7f3ef6c9 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -37,7 +37,7 @@ export abstract class DrawShapeBase extends BaseBrush { if (!shape) return; shape.setCoords(); this.canvas.fire('before:path:created', { path: shape }); - this.canvas.add(this.shape); + this.canvas.add(shape); this.canvas.fire('path:created', { path: shape }); this.canvas.clearContext(this.canvas.contextTop); this.shape = undefined; From 62e94e548de3f55fd031a56cceded321cd397175 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:12:30 +0200 Subject: [PATCH 105/153] Update canvas.class.ts --- src/canvas/canvas.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/canvas/canvas.class.ts b/src/canvas/canvas.class.ts index b49cba36201..0b88a5f573c 100644 --- a/src/canvas/canvas.class.ts +++ b/src/canvas/canvas.class.ts @@ -492,7 +492,7 @@ export class SelectableCanvas< contextTop: CanvasRenderingContext2D; wrapperEl: HTMLDivElement; cacheCanvasEl: HTMLCanvasElement; - protected _isCurrentlyDrawing: boolean; + _isCurrentlyDrawing: boolean; freeDrawingBrush?: BaseBrush; _activeObject?: FabricObject; _hasITextHandlers?: boolean; From b5f4461eb1c338dcf887fa4bc10e50fa0df916ec Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:27:04 +0200 Subject: [PATCH 106/153] fix merge --- src/canvas/canvas_events.ts | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/canvas/canvas_events.ts b/src/canvas/canvas_events.ts index ecc8859c3c9..8136ee54ee8 100644 --- a/src/canvas/canvas_events.ts +++ b/src/canvas/canvas_events.ts @@ -993,14 +993,14 @@ export class Canvas extends SelectableCanvas { * @param {Event} e Event object fired on mousedown */ _onMouseDownInDrawingMode(e: TPointerEvent) { - this._isCurrentlyDrawing = true; + let dirty = false; if (this.getActiveObject()) { this.discardActiveObject(e); - this.requestRenderAll(); + dirty = true; } const pointer = this.getPointer(e); - this.freeDrawingBrush && - this.freeDrawingBrush.onMouseDown(pointer, { e, pointer }); + this.freeDrawingBrush?.onMouseDown(pointer, { e, pointer }); + dirty && this.requestRenderAll(); this._handleEvent(e, 'down'); } @@ -1027,14 +1027,10 @@ export class Canvas extends SelectableCanvas { */ _onMouseUpInDrawingMode(e: TPointerEvent) { const pointer = this.getPointer(e); - if (this.freeDrawingBrush) { - this._isCurrentlyDrawing = !!this.freeDrawingBrush.onMouseUp({ - e: e, - pointer: pointer, - }); - } else { - this._isCurrentlyDrawing = false; - } + this.freeDrawingBrush!.onMouseUp({ + e, + pointer, + }); this._handleEvent(e, 'up'); } From a462280e4cff8056c1e0b33be127a4629083a8b8 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 01:27:56 +0200 Subject: [PATCH 107/153] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcf45a6d4b4..08dfb290509 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,6 @@ - brush doesn't add result to canvas anymore - `path:created`, `before:path:created` events are deprecated, use `interaction:completed` instead - `_render` method is now protected, use `render` instead -- chore(TS): migrate Polyline/Polygon [#8417](https://github.com/fabricjs/fabric.js/pull/8417) - feat(): DrawShape, DrawOval, DrawPoly [#8430](https://github.com/fabricjs/fabric.js/pull/8430) - fix(Object Stacking): 🔙 refactor logic to support Group 🔝 - chore(TS): migrate Group/ActiveSelection [#8455](https://github.com/fabricjs/fabric.js/pull/8455) From d59f41d0eb2923b5dee9c3a411d5e3e3d2ef48bf Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 07:27:42 +0200 Subject: [PATCH 108/153] better types --- src/brushes/DrawShape.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index 4df28988d79..5212d6c5a57 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -3,16 +3,15 @@ import { ModifierKey } from '../EventTypeDefs'; import { Point } from '../point.class'; import type { FabricObject } from '../shapes/Object/FabricObject'; import { Rect } from '../shapes/rect.class'; +import { Constructor } from '../typedefs'; import { TBrushEventData } from './base_brush.class'; import { DrawShapeBase } from './DrawShapeBase'; -export class DrawShape< - T extends typeof FabricObject = typeof Rect -> extends DrawShapeBase> { +export class DrawShape extends DrawShapeBase { /** * class to build shape from */ - builder: T = Rect as unknown as T; + builder: Constructor = Rect as unknown as Constructor; /** * set to `true` for the shape to be centered on mouse/touch down @@ -32,7 +31,7 @@ export class DrawShape< protected start: Point; create() { - return new this.builder() as InstanceType; + return new this.builder(); } protected setBounds(a: Point, b: Point) { From 94c4a9e0c963ae96623b0fd100e68608c811ee77 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 07:29:44 +0200 Subject: [PATCH 109/153] forgotten --- src/brushes/DrawOval.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/DrawOval.ts b/src/brushes/DrawOval.ts index df26bf8fe44..a858d5b6a2a 100644 --- a/src/brushes/DrawOval.ts +++ b/src/brushes/DrawOval.ts @@ -3,7 +3,7 @@ import { Point } from '../point.class'; import { Ellipse } from '../shapes/ellipse.class'; import { DrawShape } from './DrawShape'; -export class DrawOval extends DrawShape { +export class DrawOval extends DrawShape { builder = Ellipse; protected setBounds(a: Point, b: Point) { From d9e18ae59de8bab14bbbff0ac849a8572d767f49 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 07:46:55 +0200 Subject: [PATCH 110/153] imports --- src/brushes/base_brush.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index d8dc2306f02..37a2152dc5c 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -3,7 +3,7 @@ import type { Canvas } from '../canvas/canvas_events'; import { Color } from '../color'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../point.class'; -import type { Shadow } from '../shadow.class'; +import { Shadow } from '../shadow.class'; import { FabricObject } from '../shapes/Object/FabricObject'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; From 3b0f892991140729c51192b18895eb29844179b7 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 10:06:10 +0200 Subject: [PATCH 111/153] `_isCurrentlyDrawing` => `isCurrentlyDrawing()` --- src/brushes/base_brush.class.ts | 5 ++- src/canvas/canvas.class.ts | 55 +++++++++++++++++---------------- src/canvas/canvas_events.ts | 21 +++++++------ src/typedefs.ts | 2 ++ test/unit/canvas_events.js | 2 +- 5 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index 37a2152dc5c..782b2a38496 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -92,7 +92,7 @@ export abstract class BaseBrush { // eslint-disable-next-line @typescript-eslint/no-unused-vars onMouseDown(pointer: Point, ev: TBrushEventData) { - this.canvas._isCurrentlyDrawing = this.active = true; + this.active = true; } abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; @@ -254,8 +254,7 @@ export abstract class BaseBrush { } protected async finalize() { - // TODO: once canvas is migrated refactor `_isCurrentlyDrawing` to a method - this.canvas._isCurrentlyDrawing = this.active = false; + this.active = false; this._resetShadow(); const shape = this.finalizeShape(); if (shape) { diff --git a/src/canvas/canvas.class.ts b/src/canvas/canvas.class.ts index 5327fe72741..11fadf82fa3 100644 --- a/src/canvas/canvas.class.ts +++ b/src/canvas/canvas.class.ts @@ -1,7 +1,6 @@ import { fabric } from '../../HEADER'; +import type { BaseBrush } from '../brushes/base_brush.class'; import { dragHandler, getActionFromCorner } from '../controls/actions'; -import { Point } from '../point.class'; -import { FabricObject } from '../shapes/Object/FabricObject'; import { CanvasEvents, ModifierKey, @@ -9,35 +8,35 @@ import { TPointerEvent, Transform, } from '../EventTypeDefs'; +import { TSVGReviver } from '../mixins/object.svg_export'; +import { Point } from '../point.class'; +import type { IText } from '../shapes/itext.class'; +import { FabricObject } from '../shapes/Object/FabricObject'; +import type { Textbox } from '../shapes/textbox.class'; +import { AssertKeys, TMat2D, TOriginX, TOriginY, TSize } from '../typedefs'; +import { getPointer, isTouchEvent } from '../util/dom_event'; +import { + cleanUpJsdomNode, + makeElementUnselectable, + wrapElement, +} from '../util/dom_misc'; +import { setStyle } from '../util/dom_style'; +import { isTransparent } from '../util/misc/isTransparent'; +import { invertTransform, transformPoint } from '../util/misc/matrix'; import { addTransformToObject, saveObjectTransform, } from '../util/misc/objectTransforms'; -import { StaticCanvas, TCanvasSizeOptions } from './static_canvas.class'; +import { pick } from '../util/misc/pick'; +import { sendPointToPlane } from '../util/misc/planeChange'; +import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { isActiveSelection, isCollection, isFabricObjectCached, isInteractiveTextObject, } from '../util/types'; -import { invertTransform, transformPoint } from '../util/misc/matrix'; -import { isTransparent } from '../util/misc/isTransparent'; -import { TMat2D, TOriginX, TOriginY, TSize } from '../typedefs'; -import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; -import { getPointer, isTouchEvent } from '../util/dom_event'; -import type { IText } from '../shapes/itext.class'; -import { - cleanUpJsdomNode, - makeElementUnselectable, - wrapElement, -} from '../util/dom_misc'; -import { setStyle } from '../util/dom_style'; -import type { BaseBrush } from '../brushes/base_brush.class'; -import type { Textbox } from '../shapes/textbox.class'; -import { pick } from '../util/misc/pick'; -import { TSVGReviver } from '../mixins/object.svg_export'; -import { sendPointToPlane } from '../util/misc/planeChange'; -import { createCanvasElement } from '../util/misc/dom'; +import { StaticCanvas, TCanvasSizeOptions } from './static_canvas.class'; type TDestroyedCanvas = Omit< SelectableCanvas, @@ -493,7 +492,6 @@ export class SelectableCanvas< contextTop: CanvasRenderingContext2D; wrapperEl: HTMLDivElement; cacheCanvasEl: HTMLCanvasElement; - _isCurrentlyDrawing: boolean; shouldClearContextTop: boolean; freeDrawingBrush?: BaseBrush; _activeObject?: FabricObject; @@ -637,8 +635,8 @@ export class SelectableCanvas< renderTopLayer(ctx: CanvasRenderingContext2D): void { ctx.save(); - if (this.isDrawingMode && this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush.render(); + if (this.isCurrentlyDrawing()) { + this.freeDrawingBrush!.render(); this.contextTopDirty = true; } // we render the top context - last object @@ -1208,9 +1206,8 @@ export class SelectableCanvas< // @ts-ignore this._resetTransformEventData(); super.setDimensions(dimensions, options); - if (this._isCurrentlyDrawing) { - this.freeDrawingBrush && - this.freeDrawingBrush._setBrushStyles(this.contextTop); + if (this.isCurrentlyDrawing()) { + this.freeDrawingBrush!._setBrushStyles(this.contextTop); } } @@ -1344,6 +1341,10 @@ export class SelectableCanvas< return this.upperCanvasEl; } + isCurrentlyDrawing(): this is AssertKeys { + return !!(this.isDrawingMode && this.freeDrawingBrush?.active); + } + /** * Returns currently active object * @return {FabricObject | null} active object diff --git a/src/canvas/canvas_events.ts b/src/canvas/canvas_events.ts index 8136ee54ee8..0cb0a1be639 100644 --- a/src/canvas/canvas_events.ts +++ b/src/canvas/canvas_events.ts @@ -13,6 +13,7 @@ import { Point } from '../point.class'; import { ActiveSelection } from '../shapes/active_selection.class'; import { Group } from '../shapes/group.class'; import type { FabricObject } from '../shapes/Object/FabricObject'; +import { AssertKeys } from '../typedefs'; import { stopEvent } from '../util/dom_event'; import { createCanvasElement } from '../util/misc/dom'; import { sendPointToPlane } from '../util/misc/planeChange'; @@ -779,7 +780,7 @@ export class Canvas extends SelectableCanvas { return; } - if (this.isDrawingMode && this._isCurrentlyDrawing) { + if (this.isCurrentlyDrawing()) { this._onMouseUpInDrawingMode(e); return; } @@ -1009,13 +1010,12 @@ export class Canvas extends SelectableCanvas { * @param {Event} e Event object fired on mousemove */ _onMouseMoveInDrawingMode(e: TPointerEvent) { - if (this._isCurrentlyDrawing) { + if (this.isCurrentlyDrawing()) { const pointer = this.getPointer(e); - this.freeDrawingBrush && - this.freeDrawingBrush.onMouseMove(pointer, { - e, - pointer, - }); + this.freeDrawingBrush!.onMouseMove(pointer, { + e, + pointer, + }); } this.setCursor(this.freeDrawingCursor); this._handleEvent(e, 'move'); @@ -1025,9 +1025,12 @@ export class Canvas extends SelectableCanvas { * @private * @param {Event} e Event object fired on mouseup */ - _onMouseUpInDrawingMode(e: TPointerEvent) { + _onMouseUpInDrawingMode( + this: AssertKeys, + e: TPointerEvent + ) { const pointer = this.getPointer(e); - this.freeDrawingBrush!.onMouseUp({ + this.freeDrawingBrush.onMouseUp({ e, pointer, }); diff --git a/src/typedefs.ts b/src/typedefs.ts index 83989a543c5..f23967e7769 100644 --- a/src/typedefs.ts +++ b/src/typedefs.ts @@ -112,3 +112,5 @@ export type TDataUrlOptions = TToCanvasElementOptions & { quality?: number; enableRetinaScaling?: boolean; }; + +export type AssertKeys = T & Record>; diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index 1e378ace770..e6f4f9ccf5d 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -311,7 +311,7 @@ var brush = new fabric.PencilBrush({ color: 'red', width: 4 }); canvas.isDrawingMode = true; canvas.freeDrawingBrush = brush; - canvas._isCurrentlyDrawing = true; + canvas.isCurrentlyDrawing = () => true; brush.render = function() { rendered = true; }; brush._setBrushStyles = function() { prepareFor = true; }; canvas.setDimensions({ width: 200, height: 200 }); From 3cdbbb2c62ef246ddc2f04574c9273fa55bf4a73 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 30 Dec 2022 10:08:37 +0200 Subject: [PATCH 112/153] cleanup --- src/brushes/pencil_brush.class.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/brushes/pencil_brush.class.ts b/src/brushes/pencil_brush.class.ts index f820fdb701e..c8aaab50285 100644 --- a/src/brushes/pencil_brush.class.ts +++ b/src/brushes/pencil_brush.class.ts @@ -60,7 +60,6 @@ export class PencilBrush extends BaseBrush { } protected shouldHandleEvent(e: TPointerEvent) { - // @ts-expect-error TODO: canvas events mixin migration return this.canvas._isMainEvent(e); } From 9093607e65819e485fd9921b1c3fbdf7bb54529f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 10:03:57 +0200 Subject: [PATCH 113/153] export --- index.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/index.js b/index.js index f496a21aacf..5061f6f8206 100644 --- a/index.js +++ b/index.js @@ -341,6 +341,10 @@ import { PencilBrush } from './src/brushes/pencil_brush.class'; import { CircleBrush } from './src/brushes/circle_brush.class'; import { SprayBrush } from './src/brushes/spray_brush.class'; import { PatternBrush } from './src/brushes/pattern_brush.class'; +import { DrawOval } from './src/brushes/DrawOval'; +import { DrawPoly } from './src/brushes/DrawPoly'; +import { DrawShape } from './src/brushes/DrawShape'; +import { DrawShapeBase } from './src/brushes/DrawShapeBase'; import { FabricObject as Object } from './src/shapes/Object/FabricObject'; import { Line } from './src/shapes/line.class'; import { Circle } from './src/shapes/circle.class'; @@ -397,6 +401,10 @@ const fabric = { CircleBrush, SprayBrush, PatternBrush, + DrawOval, + DrawPoly, + DrawShape, + DrawShapeBase, Object, Line, Circle, From e5dc0d2f16df5555f6b527cbc5cb265499a6792b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 10:06:30 +0200 Subject: [PATCH 114/153] cleanup --- src/brushes/DrawOval.ts | 3 --- src/brushes/DrawPoly.ts | 3 --- src/brushes/DrawShape.ts | 3 --- 3 files changed, 9 deletions(-) diff --git a/src/brushes/DrawOval.ts b/src/brushes/DrawOval.ts index a858d5b6a2a..fd6db5ebe3b 100644 --- a/src/brushes/DrawOval.ts +++ b/src/brushes/DrawOval.ts @@ -1,4 +1,3 @@ -import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Ellipse } from '../shapes/ellipse.class'; import { DrawShape } from './DrawShape'; @@ -33,5 +32,3 @@ export class DrawOval extends DrawShape { } } } - -fabric.DrawOval = DrawOval; diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index 55ee1ced846..ea9df6fc647 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -1,4 +1,3 @@ -import { fabric } from '../../HEADER'; import { Point } from '../point.class'; import { Polygon } from '../shapes/polygon.class'; import { Polyline } from '../shapes/polyline.class'; @@ -60,5 +59,3 @@ export class DrawPoly extends DrawShapeBase { this.finalize(); } } - -fabric.DrawPoly = DrawPoly; diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index 5212d6c5a57..81b97749c8a 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -1,4 +1,3 @@ -import { fabric } from '../../HEADER'; import { ModifierKey } from '../EventTypeDefs'; import { Point } from '../point.class'; import type { FabricObject } from '../shapes/Object/FabricObject'; @@ -75,5 +74,3 @@ export class DrawShape extends DrawShapeBase { this.finalize(); } } - -fabric.DrawShape = DrawShape; From e7eab9db071e879e2da33641edce2f92affe63a1 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 10:54:09 +0200 Subject: [PATCH 115/153] fix merge error --- src/canvas/canvas.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/canvas/canvas.class.ts b/src/canvas/canvas.class.ts index 5c85ba382ae..5e8c0cff216 100644 --- a/src/canvas/canvas.class.ts +++ b/src/canvas/canvas.class.ts @@ -39,7 +39,7 @@ import { import { StaticCanvas, TCanvasSizeOptions } from './static_canvas.class'; type TDestroyedCanvas = Omit< - StaticCanvas, + SelectableCanvas, | 'contextTop' | 'contextCache' | 'lowerCanvasEl' From 835ef5c350476b02c2fd45faa890bdc5c2434894 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 10:57:58 +0200 Subject: [PATCH 116/153] fix mrege error --- src/brushes/base_brush.class.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/base_brush.class.ts b/src/brushes/base_brush.class.ts index db56c8f80cd..1c3f8c94508 100644 --- a/src/brushes/base_brush.class.ts +++ b/src/brushes/base_brush.class.ts @@ -2,7 +2,7 @@ import type { Canvas } from '../canvas/canvas_events'; import { Color } from '../color/color.class'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../point.class'; -import type { Shadow } from '../shadow.class'; +import { Shadow } from '../shadow.class'; import { FabricObject } from '../shapes/Object/FabricObject'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; From 70b03a4c25f6803cca598e37e098302f5fc24f5b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 10:58:44 +0200 Subject: [PATCH 117/153] fix merge error --- src/canvas/canvas.class.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/canvas/canvas.class.ts b/src/canvas/canvas.class.ts index 5e8c0cff216..8ceb658ba6d 100644 --- a/src/canvas/canvas.class.ts +++ b/src/canvas/canvas.class.ts @@ -9,12 +9,18 @@ import { TPointerEvent, Transform, } from '../EventTypeDefs'; -import { TSVGReviver } from '../mixins/object.svg_export'; import { Point } from '../point.class'; import type { IText } from '../shapes/itext.class'; import { FabricObject } from '../shapes/Object/FabricObject'; import type { Textbox } from '../shapes/textbox.class'; -import { AssertKeys, TMat2D, TOriginX, TOriginY, TSize } from '../typedefs'; +import { + AssertKeys, + TMat2D, + TOriginX, + TOriginY, + TSize, + TSVGReviver, +} from '../typedefs'; import { getPointer, isTouchEvent } from '../util/dom_event'; import { cleanUpJsdomNode, From b750eee9195df80b880ccd01db334d75c881dbab Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Fri, 6 Jan 2023 11:02:49 +0200 Subject: [PATCH 118/153] another annoying merge error --- src/canvas/canvas.class.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/canvas/canvas.class.ts b/src/canvas/canvas.class.ts index 8ceb658ba6d..5a5593f30c4 100644 --- a/src/canvas/canvas.class.ts +++ b/src/canvas/canvas.class.ts @@ -35,6 +35,7 @@ import { saveObjectTransform, } from '../util/misc/objectTransforms'; import { pick } from '../util/misc/pick'; +import { sendPointToPlane } from '../util/misc/planeChange'; import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; import { isActiveSelection, @@ -840,7 +841,7 @@ export class SelectableCanvas< /** * @private * @param {Event} e Event object - * @param {FaricObject} target + * @param {FabricObject} target */ _setupCurrentTransform( e: TPointerEvent, From d790f4b5d88fcbb34fe6ea0ad0fb97bab597b3cc Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 09:40:59 +0200 Subject: [PATCH 119/153] Update CHANGELOG.md --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c8d3b56a94..dfbc17993c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,6 @@ ## [next] - feat(): DrawShape, DrawOval, DrawPoly [#8430](https://github.com/fabricjs/fabric.js/pull/8430) -- fix(): `_initRetinaScaling` initializaing the scaling regardless of settings in Canvas. [#8565](https://github.com/fabricjs/fabric.js/pull/8565) -- fix(): regression of canvas migration with pointer and sendPointToPlane [#8563](https://github.com/fabricjs/fabric.js/pull/8563) - feat(): Node entry point [#8632](https://github.com/fabricjs/fabric.js/pull/8632) - chore(): Change import and export strategy [#8622](https://github.com/fabricjs/fabric.js/pull/8622) - chore(): rename files to modern style [#8621](https://github.com/fabricjs/fabric.js/pull/8621) From fa0d06323dcf56379d4c723ff859732dfd957556 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:07:27 +0200 Subject: [PATCH 120/153] fix merge error --- src/canvas/SelectableCanvas.ts | 77 +++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 29 deletions(-) diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index e077c8b53ee..517b3fd72fc 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -1,8 +1,7 @@ -import { getEnv } from '../env'; +import type { BaseBrush } from '../brushes/BaseBrush'; import { dragHandler } from '../controls/drag'; import { getActionFromCorner } from '../controls/util'; -import { Point } from '../Point'; -import { FabricObject } from '../shapes/Object/FabricObject'; +import { getEnv } from '../env'; import { CanvasEvents, ModifierKey, @@ -10,32 +9,39 @@ import { TPointerEvent, Transform, } from '../EventTypeDefs'; +import { Point } from '../Point'; +import type { IText } from '../shapes/IText/IText'; +import { FabricObject } from '../shapes/Object/FabricObject'; import { - addTransformToObject, - saveObjectTransform, -} from '../util/misc/objectTransforms'; -import { StaticCanvas, TCanvasSizeOptions } from './StaticCanvas'; -import { - isActiveSelection, - isCollection, - isFabricObjectCached, -} from '../util/types'; -import { invertTransform, transformPoint } from '../util/misc/matrix'; -import { isTransparent } from '../util/misc/isTransparent'; -import { TMat2D, TOriginX, TOriginY, TSize } from '../typedefs'; -import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; + AssertKeys, + TMat2D, + TOriginX, + TOriginY, + TSize, + TSVGReviver, +} from '../typedefs'; import { getPointer, isTouchEvent } from '../util/dom_event'; -import type { IText } from '../shapes/IText/IText'; import { cleanUpJsdomNode, makeElementUnselectable, wrapElement, } from '../util/dom_misc'; import { setStyle } from '../util/dom_style'; -import type { BaseBrush } from '../brushes/BaseBrush'; +import { isTransparent } from '../util/misc/isTransparent'; +import { invertTransform, transformPoint } from '../util/misc/matrix'; +import { + addTransformToObject, + saveObjectTransform, +} from '../util/misc/objectTransforms'; import { pick } from '../util/misc/pick'; -import { TSVGReviver } from '../typedefs'; import { sendPointToPlane } from '../util/misc/planeChange'; +import { degreesToRadians } from '../util/misc/radiansDegreesConversion'; +import { + isActiveSelection, + isCollection, + isFabricObjectCached, +} from '../util/types'; +import { StaticCanvas, TCanvasSizeOptions } from './StaticCanvas'; type TDestroyedCanvas = Omit< SelectableCanvas, @@ -72,7 +78,8 @@ type TDestroyedCanvas = Omit< * @fires selection:updated * @fires selection:created * - * @fires path:created after a drawing operation ends and the path is added + * @fires interaction:completed after a drawing operation ends + * * @fires mouse:down * @fires mouse:move * @fires mouse:up @@ -153,7 +160,7 @@ export class SelectableCanvas< > extends StaticCanvas { declare _objects: FabricObject[]; /** - * When true, objects can be transformed by one side (unproportionally) + * When true, objects can be transformed by one side (unproportionately) * when dragged on the corners that normally would not do that. * @type Boolean * @default @@ -491,7 +498,7 @@ export class SelectableCanvas< declare contextTop: CanvasRenderingContext2D; declare wrapperEl: HTMLDivElement; declare cacheCanvasEl: HTMLCanvasElement; - protected declare _isCurrentlyDrawing: boolean; + protected declare shouldClearContextTop: boolean; declare freeDrawingBrush?: BaseBrush; declare _activeObject?: FabricObject; @@ -589,9 +596,18 @@ export class SelectableCanvas< if (this.destroyed) { return; } - if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) { + if ( + (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) || + this.shouldClearContextTop + ) { this.clearContext(this.contextTop); this.contextTopDirty = false; + if (this.shouldClearContextTop) { + // in case we are rendering a requested render state might have changed + // so we render top layer to sync visuals + this.hasLostContext = true; + this.shouldClearContextTop = false; + } } if (this.hasLostContext) { this.renderTopLayer(this.contextTop); @@ -607,8 +623,8 @@ export class SelectableCanvas< */ renderTopLayer(ctx: CanvasRenderingContext2D): void { ctx.save(); - if (this.isDrawingMode && this._isCurrentlyDrawing) { - this.freeDrawingBrush && this.freeDrawingBrush._render(); + if (this.isCurrentlyDrawing()) { + this.freeDrawingBrush.render(); this.contextTopDirty = true; } // we render the top context - last object @@ -807,7 +823,7 @@ export class SelectableCanvas< /** * @private * @param {Event} e Event object - * @param {FaricObject} target + * @param {FabricObject} target */ _setupCurrentTransform( e: TPointerEvent, @@ -1179,9 +1195,8 @@ export class SelectableCanvas< // @ts-ignore this._resetTransformEventData(); super._setDimensionsImpl(dimensions, options); - if (this._isCurrentlyDrawing) { - this.freeDrawingBrush && - this.freeDrawingBrush._setBrushStyles(this.contextTop); + if (this.isCurrentlyDrawing()) { + this.freeDrawingBrush._setBrushStyles(this.contextTop); } } @@ -1300,6 +1315,10 @@ export class SelectableCanvas< return this.upperCanvasEl; } + isCurrentlyDrawing(): this is AssertKeys { + return !!(this.isDrawingMode && this.freeDrawingBrush?.active); + } + /** * Returns currently active object * @return {FabricObject | null} active object From 5f885717b77e167be39fd99ad8b088daf7bf4666 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:13:38 +0200 Subject: [PATCH 121/153] Update Object.ts --- src/shapes/Object/Object.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/shapes/Object/Object.ts b/src/shapes/Object/Object.ts index 7fcc98db712..82d686e519f 100644 --- a/src/shapes/Object/Object.ts +++ b/src/shapes/Object/Object.ts @@ -1610,11 +1610,9 @@ export class FabricObject< * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output * @returns {Promise} */ - clone(propertiesToInclude: string[]) { + clone(propertiesToInclude: string[]): Promise { const objectForm = this.toObject(propertiesToInclude); - // todo ok understand this. is static or it isn't? - // TS is more an issue here than an helper. - // @ts-ignore + // @ts-expect-error TS doesn't recognize `this.constructor` return this.constructor.fromObject(objectForm); } From d0ee64380f1fcc82dcbf05f639d0d96525898d15 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:20:01 +0200 Subject: [PATCH 122/153] Update freedraw.js --- test/visual/freedraw.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index fbc34497c9b..f85f443f4f9 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -3,8 +3,9 @@ canvas.freeDrawingBrush = brush; } var options = { e: { pointerId: 1 } }; - function pointDrawer(points, brush, fireUp = false, onMove = undefined) { - setBrush(brush.canvas, brush); +function pointDrawer(points, brush, onComplete = false, onMove = undefined) { + const { canvas } = brush; + setBrush(canvas, brush); brush.onMouseDown(points[0], options); for (var i = 1; i < points.length; i++) { points[i].x = parseFloat(points[i].x); From 8c0a4476ebecfb950a9c3d5195f2846cb7d281f0 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:23:12 +0200 Subject: [PATCH 123/153] fix imports, merge error --- src/brushes/DrawOval.ts | 4 ++-- src/brushes/DrawPoly.ts | 6 +++--- src/brushes/DrawShape.ts | 6 +++--- src/brushes/DrawShapeBase.ts | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/brushes/DrawOval.ts b/src/brushes/DrawOval.ts index fd6db5ebe3b..8d3d9a2d746 100644 --- a/src/brushes/DrawOval.ts +++ b/src/brushes/DrawOval.ts @@ -1,5 +1,5 @@ -import { Point } from '../point.class'; -import { Ellipse } from '../shapes/ellipse.class'; +import { Point } from '../Point'; +import { Ellipse } from '../shapes/Ellipse'; import { DrawShape } from './DrawShape'; export class DrawOval extends DrawShape { diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index ea9df6fc647..f765d637de1 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -1,6 +1,6 @@ -import { Point } from '../point.class'; -import { Polygon } from '../shapes/polygon.class'; -import { Polyline } from '../shapes/polyline.class'; +import { Point } from '../Point'; +import { Polygon } from '../shapes/Polygon'; +import { Polyline } from '../shapes/Polyline'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawPoly extends DrawShapeBase { diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index 81b97749c8a..fa2b6b166ef 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -1,9 +1,9 @@ import { ModifierKey } from '../EventTypeDefs'; -import { Point } from '../point.class'; +import { Point } from '../Point'; import type { FabricObject } from '../shapes/Object/FabricObject'; -import { Rect } from '../shapes/rect.class'; +import { Rect } from '../shapes/Rect'; import { Constructor } from '../typedefs'; -import { TBrushEventData } from './base_brush.class'; +import { TBrushEventData } from './BaseBrush'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawShape extends DrawShapeBase { diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index c3d7f3ef6c9..70eae99d0f9 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,7 +1,7 @@ -import { Point } from '../point.class'; -import { Shadow } from '../shadow.class'; +import { Point } from '../Point'; +import { Shadow } from '../Shadow'; import type { FabricObject } from '../shapes/Object/FabricObject'; -import { BaseBrush } from './base_brush.class'; +import { BaseBrush } from './BaseBrush'; /** * Declarative shape drawing using pointer events From a430e2e3337af6054cf2a47b998ac5dc3ecce99c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:32:58 +0200 Subject: [PATCH 124/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index f85f443f4f9..71b94704864 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2303,7 +2303,7 @@ QUnit.module('Free Drawing', hooks => { inverted, canvas }); - clipPath.viewportCenter(); + canvas.viewportCenterObject(clipPath); brush.clipPath = clipPath; canvas.freeDrawingBrush = brush; canvas.isDrawingMode = true; From 393de14fd7df1004ab62e0e73f2f7fa5ffa2ba41 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:36:34 +0200 Subject: [PATCH 125/153] Update BaseBrush.ts --- src/brushes/BaseBrush.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index ed4d6c850bc..a3b0699fcdc 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -2,7 +2,7 @@ import type { Canvas } from '../canvas/Canvas'; import { Color } from '../color/Color'; import { TEvent } from '../EventTypeDefs'; import type { Point } from '../Point'; -import type { Shadow } from '../Shadow'; +import { Shadow } from '../Shadow'; import { FabricObject } from '../shapes/Object/FabricObject'; import { multiplyTransformMatrices } from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; From e23657f0d0d8f605647880470799df59a3ced87b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 10:37:00 +0200 Subject: [PATCH 126/153] Update SelectableCanvas.ts --- src/canvas/SelectableCanvas.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 517b3fd72fc..ea013690da2 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -498,7 +498,7 @@ export class SelectableCanvas< declare contextTop: CanvasRenderingContext2D; declare wrapperEl: HTMLDivElement; declare cacheCanvasEl: HTMLCanvasElement; - protected declare shouldClearContextTop: boolean; + declare shouldClearContextTop: boolean; declare freeDrawingBrush?: BaseBrush; declare _activeObject?: FabricObject; From a0aa51a2d4a966e7be0806bac70645ca8a47e120 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 19:03:54 +0200 Subject: [PATCH 127/153] Squashed commit of the following: commit 6435abcea31f9de1466c04e51d66935e6966aa5e Author: ShaMan123 Date: Sat Feb 4 19:02:49 2023 +0200 Update observable.js commit b29d5e81ee98d8518b5b6d8644e8e732ba03574a Author: ShaMan123 Date: Sat Feb 4 18:59:49 2023 +0200 Update controls_handlers.js commit 476ed500c6c3fcccedce90ec6be8579f80cbe4b2 Author: ShaMan123 Date: Sat Feb 4 18:53:59 2023 +0200 Update observable.js commit ab934ed9da4aa4bea675b0ad12d3cc7ef59acb64 Author: ShaMan123 Date: Sat Feb 4 18:51:20 2023 +0200 Update observable.js commit 71362afc7ecfce5d6b02e2a256f7b08cc77516d8 Author: ShaMan123 Date: Sat Feb 4 18:45:06 2023 +0200 Update observable.js commit ed15fcb61e6b14743b9d3a937ed67bda15ab53db Author: ShaMan123 Date: Sat Feb 4 18:23:53 2023 +0200 fix commit 3d4af1326e449383f565d0cce01c4e099c6c544f Author: ShaMan123 Date: Sat Feb 4 18:22:29 2023 +0200 non enumerable commit ca11adb023122f98a97879b01d844a798fb6ce68 Author: ShaMan123 Date: Sat Feb 4 18:10:55 2023 +0200 goldens commit 9b7726a64da14524163587ab6d553057bd04e55b Author: ShaMan123 Date: Sat Feb 4 18:09:00 2023 +0200 fix tests commit 739c540400dd13216098faebdd39c901aaf3da11 Author: ShaMan123 Date: Sat Feb 4 18:06:37 2023 +0200 fix commit 93946a812b33111e1b3b3916a01d46f9d1f46bee Author: ShaMan123 Date: Sat Feb 4 17:25:11 2023 +0200 tests commit db95bc29e785b7d11f3ce22febadc29c877932bc Author: ShaMan123 Date: Sat Feb 4 17:15:59 2023 +0200 rename exports commit 30b95a06851c6090e566924905fc7fc907deb7ed Author: ShaMan123 Date: Sat Feb 4 17:12:15 2023 +0200 rername commit 20a290271af521f1ae99bc37e2c264cd7d42682b Author: ShaMan123 Date: Sat Feb 4 17:04:38 2023 +0200 types commit e5df495bf2173fe67b436129e53e7695ff2d6fd1 Author: ShaMan123 Date: Sat Feb 4 16:59:35 2023 +0200 feat(): Observable brush concepts: freeDrawingCursor => Brush#cursor FabricEvent, preventDefault Brush#subscribe commit 8d20d9383e409e622e25c19b1ff2b4a63771f602 Author: ShaMan123 Date: Sat Feb 4 16:47:55 2023 +0200 no button in event --- fabric.ts | 4 + src/EventTypeDefs.ts | 1 - src/FabricEvent.ts | 32 ++ src/Observable.ts | 22 +- src/brushes/BaseBrush.ts | 52 ++-- src/brushes/CircleBrush.ts | 36 +-- src/brushes/DrawPoly.ts | 26 +- src/brushes/DrawShape.ts | 25 +- src/brushes/DrawShapeBase.ts | 4 +- src/brushes/PencilBrush.ts | 55 ++-- src/brushes/SimpleBrush.ts | 61 ++++ src/brushes/SprayBrush.ts | 35 +-- src/canvas/Canvas.ts | 294 +++++++----------- src/canvas/SelectableCanvas.ts | 8 - src/shapes/IText/ITextClickBehavior.ts | 2 +- test/unit/brushes.js | 82 +++-- test/unit/controls_handlers.js | 32 +- test/unit/draw_shapes.js | 34 +- test/unit/observable.js | 45 ++- test/visual/freedraw.js | 29 +- .../golden/freedrawing/withText_result.png | Bin 0 -> 9797 bytes .../golden/freedrawing/withText_top_ctx.png | Bin 0 -> 6745 bytes test/visual/golden/mesh_withText.png | Bin 11039 -> 0 bytes test/visual/golden/top_ctx_freedrawing1.png | Bin 926 -> 0 bytes test/visual/golden/top_ctx_withText.png | Bin 8467 -> 0 bytes 25 files changed, 468 insertions(+), 411 deletions(-) create mode 100644 src/FabricEvent.ts create mode 100644 src/brushes/SimpleBrush.ts create mode 100644 test/visual/golden/freedrawing/withText_result.png create mode 100644 test/visual/golden/freedrawing/withText_top_ctx.png delete mode 100644 test/visual/golden/mesh_withText.png delete mode 100644 test/visual/golden/top_ctx_freedrawing1.png delete mode 100644 test/visual/golden/top_ctx_withText.png diff --git a/fabric.ts b/fabric.ts index 274c6f764ec..91b5ffdd11d 100644 --- a/fabric.ts +++ b/fabric.ts @@ -328,6 +328,7 @@ import { Canvas2dFilterBackend } from './src/filters/Canvas2dFilterBackend'; import { WebGLFilterBackend } from './src/filters/WebGLFilterBackend'; import { runningAnimations } from './src/util/animation/AnimationRegistry'; import { Observable } from './src/Observable'; +import { FabricEvent as Event } from './src/FabricEvent'; import { Point } from './src/Point'; import { Intersection } from './src/Intersection'; import { Color } from './src/color/Color'; @@ -336,6 +337,7 @@ import { Gradient } from './src/gradient/Gradient'; import { Pattern } from './src/Pattern'; import { Shadow } from './src/Shadow'; import { BaseBrush } from './src/brushes/BaseBrush'; +import { SimpleBrush } from './src/brushes/SimpleBrush'; import { PencilBrush } from './src/brushes/PencilBrush'; import { CircleBrush } from './src/brushes/CircleBrush'; import { SprayBrush } from './src/brushes/SprayBrush'; @@ -392,10 +394,12 @@ export { Color, Control, Observable, + Event, Gradient, Pattern, Shadow, BaseBrush, + SimpleBrush, PencilBrush, CircleBrush, SprayBrush, diff --git a/src/EventTypeDefs.ts b/src/EventTypeDefs.ts index 6cf7189a7eb..b151a954efc 100644 --- a/src/EventTypeDefs.ts +++ b/src/EventTypeDefs.ts @@ -132,7 +132,6 @@ export type TPointerEventInfo = TEvent & { target?: FabricObject; subTargets?: FabricObject[]; - button?: number; isClick: boolean; pointer: Point; transform?: Transform | null; diff --git a/src/FabricEvent.ts b/src/FabricEvent.ts new file mode 100644 index 00000000000..2ab0a2d91e6 --- /dev/null +++ b/src/FabricEvent.ts @@ -0,0 +1,32 @@ +export type TFabricEvent = FabricEvent & T; + +export class FabricEvent { + declare defaultPrevented: boolean; + declare propagate: boolean; + static init(data?: T) { + return new FabricEvent(data) as TFabricEvent; + } + private constructor(data?: T) { + Object.defineProperties(this, { + defaultPrevented: { + value: false, + enumerable: false, + configurable: false, + writable: true, + }, + propagate: { + value: true, + enumerable: false, + configurable: false, + writable: true, + }, + }); + Object.assign(this, data || {}); + } + preventDefault() { + this.defaultPrevented = true; + } + stopPropagation() { + this.propagate = false; + } +} diff --git a/src/Observable.ts b/src/Observable.ts index 2a6ac099930..f83ed31ddce 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -1,4 +1,6 @@ -export type TEventCallback = (options: T) => any; +import { FabricEvent, TFabricEvent } from './FabricEvent'; + +export type TEventCallback = (options: TFabricEvent) => any; type EventRegistryObject< K extends string | number | symbol = string, @@ -160,16 +162,18 @@ export class Observable { * @param {String} eventName Event name to fire * @param {Object} [options] Options object */ - fire(eventName: K, options?: EventSpec[K]) { - if (!this.__eventListeners) { - return; - } - - const listenersForEvent = this.__eventListeners[eventName]?.concat(); - if (listenersForEvent) { + fire( + eventName: K, + options?: EventSpec[K] | TFabricEvent + ): TFabricEvent { + const ev = + options instanceof FabricEvent ? options : FabricEvent.init(options); + if (this.__eventListeners && this.__eventListeners[eventName]) { + const listenersForEvent = this.__eventListeners[eventName].concat(); for (let i = 0; i < listenersForEvent.length; i++) { - listenersForEvent[i].call(this, options || {}); + listenersForEvent[i].call(this, ev); } } + return ev; } } diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index a3b0699fcdc..653711456ae 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -1,6 +1,7 @@ import type { Canvas } from '../canvas/Canvas'; import { Color } from '../color/Color'; -import { TEvent } from '../EventTypeDefs'; +import { CanvasEvents, TEvent } from '../EventTypeDefs'; +import { Observable } from '../Observable'; import type { Point } from '../Point'; import { Shadow } from '../Shadow'; import { FabricObject } from '../shapes/Object/FabricObject'; @@ -12,7 +13,9 @@ export type TBrushEventData = TEvent & { pointer: Point }; /** * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ -export abstract class BaseBrush { +export abstract class BaseBrush< + T extends FabricObject = FabricObject +> extends Observable { /** * Color of a brush * @type String @@ -64,14 +67,6 @@ export abstract class BaseBrush { */ strokeDashArray: number[] | null = null; - /** - * When `true`, the free drawing is limited to the whiteboard size. Default to false. - * @type Boolean - * @default false - */ - - limitedToCanvasSize = false; - /** * Same as FabricObject `clipPath` property. * The clip path is positioned relative to the top left corner of the viewport. @@ -79,35 +74,44 @@ export abstract class BaseBrush { */ clipPath?: FabricObject; + /** + * Cursor value used during free drawing + * @type String + * @default crosshair + */ + cursor: CSSStyleDeclaration['cursor'] = 'crosshair'; + declare readonly canvas: Canvas; active = false; + private _disposer?: () => void; + constructor(canvas: Canvas) { + super(); this.canvas = canvas; + const subscribers = this.subscribe(); + this._disposer = () => { + subscribers.forEach((d) => d()); + this._disposer = undefined; + }; } - protected abstract _render(ctx: CanvasRenderingContext2D): void; + protected abstract subscribe(): VoidFunction[]; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - onMouseDown(pointer: Point, ev: TBrushEventData) { - this.active = true; + protected unsubscribe() { + this._disposer && this._disposer(); } - abstract onMouseMove(pointer: Point, ev: TBrushEventData): void; + protected abstract _render(ctx: CanvasRenderingContext2D): void; - /** - * @returns true if brush should continue blocking interaction - */ - abstract onMouseUp(ev: TBrushEventData): void; + protected abstract finalizeShape(): T | undefined; - // eslint-disable-next-line @typescript-eslint/no-unused-vars - onDoubleClick(pointer: Point) { - // noop + protected start() { + this.active = true; + this.canvas.setCursor(this.cursor); } - protected abstract finalizeShape(): T | undefined; - /** * Sets brush styles * @private diff --git a/src/brushes/CircleBrush.ts b/src/brushes/CircleBrush.ts index 639013f82e7..4fdc654141f 100644 --- a/src/brushes/CircleBrush.ts +++ b/src/brushes/CircleBrush.ts @@ -1,11 +1,13 @@ import type { Canvas } from '../canvas/Canvas'; import { Color } from '../color/Color'; +import { TPointerEventInfo } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { Circle } from '../shapes/Circle'; import { Group } from '../shapes/Group'; import type { FabricObject } from '../shapes/Object/FabricObject'; import { getRandomInt } from '../util/internals'; -import { BaseBrush, TBrushEventData } from './BaseBrush'; +import { SimpleBrush } from './SimpleBrush'; export type CircleBrushPoint = { x: number; @@ -14,7 +16,7 @@ export type CircleBrushPoint = { fill: string; }; -export class CircleBrush extends BaseBrush { +export class CircleBrush extends SimpleBrush { /** * Width of a brush * @type Number @@ -86,21 +88,14 @@ export class CircleBrush extends BaseBrush { return new Group(circles); } - /** - * Invoked on mouse down - */ - onMouseDown(pointer: Point, ev: TBrushEventData) { - super.onMouseDown(pointer, ev); + down(ev: TFabricEvent) { + super.down(ev); this.points = []; this.canvas.clearContext(this.canvas.contextTop); this._setShadow(); - this.drawDot(pointer); + this.drawDot(ev.pointer); } - /** - * Render the full state of the brush - * @private - */ protected _render(ctx: CanvasRenderingContext2D) { const points = this.points; for (let i = 0; i < points.length; i++) { @@ -108,14 +103,9 @@ export class CircleBrush extends BaseBrush { } } - /** - * Invoked on mouse move - * @param {Point} pointer - */ - onMouseMove(pointer: Point) { - if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) { - return; - } + move(ev: TFabricEvent) { + super.move(ev); + const { pointer } = ev; if (this.needsFullRender()) { this.addPoint(pointer); this.render(); @@ -124,10 +114,8 @@ export class CircleBrush extends BaseBrush { } } - /** - * Invoked on mouse up - */ - onMouseUp() { + up(ev: TFabricEvent) { + super.up(ev); this.finalize(); } } diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index 45675ee8c4a..f4f276b31cc 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -1,12 +1,17 @@ +import { TPointerEventInfo } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { Polygon } from '../shapes/Polygon'; import { Polyline } from '../shapes/Polyline'; -import { TBrushEventData } from './BaseBrush'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawPoly extends DrawShapeBase { builder = Polygon; + protected subscribe() { + return [...super.subscribe(), this.on('mouse:dblclick', this.end)]; + } + private addPoint(pointer: Point) { this.shape!.points.push(pointer); } @@ -34,8 +39,9 @@ export class DrawPoly extends DrawShapeBase { return shape; } - onMouseDown(pointer: Point, ev: TBrushEventData) { - super.onMouseDown(pointer, ev); + down(ev: TFabricEvent) { + super.down(ev); + const { pointer } = ev; if (this.shape) { this.addPoint(pointer); } else { @@ -45,18 +51,22 @@ export class DrawPoly extends DrawShapeBase { } } - onMouseMove(pointer: Point) { - this.replacePoint(pointer); + move(ev: TFabricEvent) { + super.move(ev); + this.replacePoint(ev.pointer); } - onMouseUp({ pointer }: { pointer: Point }) { + up(ev: TFabricEvent) { + super.up(ev); + const { pointer } = ev; this.replacePoint(pointer); this.addPoint(pointer); return true; } - onDoubleClick(pointer: Point) { - this.shape && this.replacePoint(pointer); + end(ev: TFabricEvent) { + ev.preventDefault(); + this.shape && this.replacePoint(ev.pointer); this.finalize(); } } diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index bad300e85d4..6f0dfa239e9 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -1,9 +1,9 @@ -import { ModifierKey } from '../EventTypeDefs'; +import { ModifierKey, TPointerEventInfo } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import type { FabricObject } from '../shapes/Object/FabricObject'; import { Rect } from '../shapes/Rect'; import { Constructor } from '../typedefs'; -import { TBrushEventData } from './BaseBrush'; import { DrawShapeBase } from './DrawShapeBase'; export class DrawShape extends DrawShapeBase { @@ -27,7 +27,7 @@ export class DrawShape extends DrawShapeBase { */ symmetric?: boolean; - protected start: Point; + protected pointerStart: Point; create() { return new this.builder(); @@ -58,20 +58,23 @@ export class DrawShape extends DrawShapeBase { } } - onMouseDown(pointer: Point, ev: TBrushEventData) { - super.onMouseDown(pointer, ev); + down(ev: TFabricEvent) { + super.down(ev); this.build(); - this.start = pointer; + this.pointerStart = ev.pointer; } - onMouseMove(pointer: Point, ev: TBrushEventData) { - this.symmetric = this.modifierKey && ev.e[this.modifierKey]; - this.setBounds(this.start, pointer); + move(ev: TFabricEvent) { + super.move(ev); + const { e, pointer } = ev; + this.symmetric = this.modifierKey && e[this.modifierKey]; + this.setBounds(this.pointerStart, pointer); this.render(); } - onMouseUp(ev: TBrushEventData) { - this.setBounds(this.start, ev.pointer); + up(ev: TFabricEvent) { + super.up(ev); + this.setBounds(this.pointerStart, ev.pointer); this.finalize(); } } diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index 1aee2fed532..a8ffb186565 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -1,14 +1,14 @@ import { Point } from '../Point'; import { Shadow } from '../Shadow'; import type { FabricObject } from '../shapes/Object/FabricObject'; -import { BaseBrush } from './BaseBrush'; +import { SimpleBrush } from './SimpleBrush'; /** * Declarative shape drawing using pointer events */ export abstract class DrawShapeBase< T extends FabricObject -> extends BaseBrush { +> extends SimpleBrush { shape: T | undefined; stroke = ''; fill = ''; diff --git a/src/brushes/PencilBrush.ts b/src/brushes/PencilBrush.ts index f7e7f0cec46..90dc73a5ef3 100644 --- a/src/brushes/PencilBrush.ts +++ b/src/brushes/PencilBrush.ts @@ -1,10 +1,16 @@ import type { Canvas } from '../canvas/Canvas'; -import { ModifierKey, TEvent } from '../EventTypeDefs'; +import { + ModifierKey, + TEvent, + TPointerEvent, + TPointerEventInfo, +} from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { Path } from '../shapes/Path'; import { PathData } from '../typedefs'; import { getSmoothPathFromPoints, joinPath } from '../util/path'; -import { BaseBrush, TBrushEventData } from './BaseBrush'; +import { SimpleBrush } from './SimpleBrush'; /** * @param {PathData} pathData @@ -14,7 +20,7 @@ function isEmptyPath(pathData: PathData): boolean { return joinPath(pathData) === 'M 0 0 Q 0 0 0 0 L 0 0'; } -export class PencilBrush extends BaseBrush { +export class PencilBrush extends SimpleBrush { /** * Discard points that are less than `decimate` pixel distant from each other * @type Number @@ -58,21 +64,10 @@ export class PencilBrush extends BaseBrush { return midPoint; } - protected shouldHandleEvent(e: TPointerEvent) { - return this.canvas._isMainEvent(e); - } - - /** - * Invoked on mouse down - * @param {Point} pointer - */ - onMouseDown(pointer: Point, ev: TBrushEventData) { - if (!this.shouldHandleEvent(ev.e)) { - return; - } - super.onMouseDown(pointer, ev); - this.drawStraightLine = - !!this.straightLineKey && ev.e[this.straightLineKey]; + down(ev: TFabricEvent) { + super.down(ev); + const { e, pointer } = ev; + this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; this._prepareForDrawing(pointer); // capture coordinates immediately // this allows to draw dots (when movement never occurs) @@ -80,18 +75,10 @@ export class PencilBrush extends BaseBrush { this.render(); } - /** - * Invoked on mouse move - * @param {Point} pointer - */ - onMouseMove(pointer: Point, { e }: TEvent) { - if (!this.shouldHandleEvent(e)) { - return; - } + move(ev: TFabricEvent) { + super.move(ev); + const { e, pointer } = ev; this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; - if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) { - return; - } if (this._addPoint(pointer) && this._points.length > 1) { if (this.needsFullRender()) { // redraw curve @@ -102,10 +89,8 @@ export class PencilBrush extends BaseBrush { } } - onMouseUp({ e }: TEvent) { - if (!this.shouldHandleEvent(e)) { - return; - } + up(ev: TFabricEvent) { + super.up(ev); this.drawStraightLine = false; this.oldEnd = undefined; this.canvas.contextTop.closePath(); @@ -122,7 +107,6 @@ export class PencilBrush extends BaseBrush { } /** - * @private * @param {Point} point Point to be added to points array */ protected _addPoint(point: Point) { @@ -177,7 +161,6 @@ export class PencilBrush extends BaseBrush { /** * Draw a smooth path on the topCanvas using quadraticCurveTo - * @private * @param {CanvasRenderingContext2D} ctx */ protected _render(ctx: CanvasRenderingContext2D) { @@ -212,7 +195,7 @@ export class PencilBrush extends BaseBrush { /** * Decimate points array with the decimate value */ - decimatePoints(points: Point[], distance: number) { + protected decimatePoints(points: Point[], distance: number) { if (points.length <= 2) { return points; } diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts new file mode 100644 index 00000000000..71af97406e5 --- /dev/null +++ b/src/brushes/SimpleBrush.ts @@ -0,0 +1,61 @@ +import { TPointerEventInfo } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; +import type { FabricObject } from '../shapes/Object/FabricObject'; +import { BaseBrush } from './BaseBrush'; + +export abstract class SimpleBrush< + T extends FabricObject = FabricObject +> extends BaseBrush { + /** + * When `true`, free drawing is limited to the canvas size + * @type Boolean + * @default false + */ + limitedToCanvasSize = false; + + protected subscribe() { + return [ + this.on( + 'mouse:down:before', + (ev) => this.shouldHandleEvent(ev) && this.down(ev) + ), + this.on( + 'mouse:move:before', + (ev) => this.shouldHandleMoveEvent(ev) && this.move(ev) + ), + this.on( + 'mouse:up:before', + (ev) => this.shouldHandleEvent(ev) && this.up(ev) + ), + ]; + } + + protected shouldHandleEvent({ e }: TPointerEventInfo) { + return this.canvas._isMainEvent(e); + } + + protected shouldHandleMoveEvent(ev: TPointerEventInfo) { + return ( + this.active && + this.shouldHandleEvent(ev) && + (!this.limitedToCanvasSize || !this._isOutSideCanvas(ev.pointer)) + ); + } + + protected down(ev: TFabricEvent) { + ev.preventDefault(); + this.start(); + if (this.canvas.getActiveObject()) { + this.canvas.discardActiveObject(ev.e); + this.canvas.requestRenderAll(); + } + } + + protected move(ev: TFabricEvent) { + ev.preventDefault(); + } + + protected up(ev: TFabricEvent) { + ev.preventDefault(); + } +} diff --git a/src/brushes/SprayBrush.ts b/src/brushes/SprayBrush.ts index 4ad723e0819..070bea3b4b8 100644 --- a/src/brushes/SprayBrush.ts +++ b/src/brushes/SprayBrush.ts @@ -1,10 +1,11 @@ import type { Canvas } from '../canvas/Canvas'; +import { TPointerEventInfo } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { Group } from '../shapes/Group'; -import type { FabricObject } from '../shapes/Object/FabricObject'; import { Rect } from '../shapes/Rect'; import { getRandomInt } from '../util/internals'; -import { BaseBrush, TBrushEventData } from './BaseBrush'; +import { SimpleBrush } from './SimpleBrush'; export type SprayBrushPoint = { x: number; @@ -33,7 +34,7 @@ function getUniqueRects(rects: Rect[]) { return uniqueRectsArray; } -export class SprayBrush extends BaseBrush { +export class SprayBrush extends SimpleBrush { /** * Width of a spray * @type Number @@ -122,36 +123,24 @@ export class SprayBrush extends BaseBrush { }); } - /** - * Invoked on mouse down - * @param {Point} pointer - */ - onMouseDown(pointer: Point, ev: TBrushEventData) { - super.onMouseDown(pointer, ev); + down(ev: TFabricEvent) { + super.down(ev); this.sprayChunks = []; this.canvas.clearContext(this.canvas.contextTop); this._setBrushStyles(); this._setShadow(); - this.addSprayChunk(pointer); + this.addSprayChunk(ev.pointer); this.renderChunk(this.sprayChunk); } - /** - * Invoked on mouse move - * @param {Point} pointer - */ - onMouseMove(pointer: Point) { - if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) { - return; - } - this.addSprayChunk(pointer); + move(ev: TFabricEvent) { + super.move(ev); + this.addSprayChunk(ev.pointer); this.renderChunk(this.sprayChunk); } - /** - * Invoked on mouse up - */ - onMouseUp() { + up(ev: TFabricEvent) { + super.up(ev); this.finalize(); } diff --git a/src/canvas/Canvas.ts b/src/canvas/Canvas.ts index d3ae15f32f3..ef272f09e74 100644 --- a/src/canvas/Canvas.ts +++ b/src/canvas/Canvas.ts @@ -9,6 +9,7 @@ import { TPointerEventNames, Transform, } from '../EventTypeDefs'; +import { FabricEvent, TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { ActiveSelection } from '../shapes/ActiveSelection'; import { Group } from '../shapes/Group'; @@ -28,7 +29,10 @@ import { TextEditingManager } from './TextEditingManager'; const addEventOptions = { passive: false } as EventListenerOptions; function checkClick(e: TPointerEvent, value: number) { - return !!(e as MouseEvent).button && (e as MouseEvent).button === value - 1; + return ( + typeof (e as MouseEvent).button === 'number' && + (e as MouseEvent).button === value - 1 + ); } // just to be clear, the utils are now deprecated and those are here exactly as minifier helpers @@ -116,14 +120,6 @@ export class Canvas extends SelectableCanvas { declare currentSubTargets?: FabricObject[]; - /** - * Holds a reference to a pointer during mousedown to compare on mouse up and determine - * if it was a click event - * @type FabricObject - * @private - */ - declare _previousPointer: Point; - private _isClick: boolean; textEditingManager = new TextEditingManager(); @@ -521,7 +517,7 @@ export class Canvas extends SelectableCanvas { */ private _onDrop(e: DragEvent) { const { target, targets } = this.findDragTargets(e); - const options = this._basicEventHandler('drop:before', { + const ev = this._basicEventHandler('drop:before', { e, target, subTargets: targets, @@ -529,33 +525,32 @@ export class Canvas extends SelectableCanvas { pointer: this.getPointer(e), }); // will be set by the drop target - options.didDrop = false; + ev.didDrop = false; // will be set by the drop target, used in case options.target refuses the drop - options.dropTarget = undefined; + ev.dropTarget = undefined; // fire `drop` - this._basicEventHandler('drop', options); + this._basicEventHandler('drop', ev); // inform canvas of the drop // we do this because canvas was unaware of what happened at the time the `drop` event was fired on it // use for side effects - this.fire('drop:after', options); + this.fire('drop:after', ev); } private _onContextMenu(e: TPointerEvent): false { const target = this.findTarget(e), subTargets = this.targets || []; - const options = this._basicEventHandler('contextmenu:before', { + const ev = this._basicEventHandler('contextmenu:before', { e, target, subTargets, }); // TODO: this line is silly because the dev can subscribe to the event and prevent it themselves this.stopContextMenu && stopEvent(e); - this._basicEventHandler('contextmenu', options); + this._basicEventHandler('contextmenu', ev); return false; } private _onDoubleClick(e: TPointerEvent) { - this.freeDrawingBrush?.onDoubleClick(this.getPointer(e)); this._cacheTransformEventData(e); this._handleEvent(e, 'dblclick'); this._resetTransformEventData(); @@ -784,6 +779,17 @@ export class Canvas extends SelectableCanvas { return false; } + protected shouldHandleDefaultEvent( + e: TPointerEvent, + beforeEvent?: TFabricEvent> + ) { + return ( + !beforeEvent?.defaultPrevented && + (checkClick(e, LEFT_CLICK) || !('button' in e)) && + this._isMainEvent(e) + ); + } + /** * Method that defines the actions when mouse is released on canvas. * The method resets the currentTransform parameters, store the image corner @@ -792,46 +798,46 @@ export class Canvas extends SelectableCanvas { * @param {Event} e Event object fired on mouseup */ __onMouseUp(e: TPointerEvent) { - const transform = this._currentTransform; this._cacheTransformEventData(e); const target = this._target; - const isClick = this._isClick; - this._handleEvent(e, 'up:before'); - // if right/middle click just fire events and return - // target undefined will make the _handleEvent search the target - if (checkClick(e, RIGHT_CLICK)) { - if (this.fireRightClick) { - this._handleEvent(e, 'up', RIGHT_CLICK, isClick); - } - return; - } + const beforeEvent = this._handleEvent(e, 'up:before'); + const shouldHandle = this.shouldHandleDefaultEvent(e, beforeEvent); + const invalidate = shouldHandle && this.performDefaultUp(e); + this._handleEvent(e, 'up', this._isClick); - if (checkClick(e, MIDDLE_CLICK)) { - if (this.fireMiddleClick) { - this._handleEvent(e, 'up', MIDDLE_CLICK, isClick); - } - this._resetTransformEventData(); - return; + if (shouldHandle) { + this._groupSelector = null; + this._currentTransform = null; + // reset the target information about which corner is selected + target && (target.__corner = undefined); } - if (this.isCurrentlyDrawing()) { - this._onMouseUpInDrawingMode(e); - return; + if (invalidate) { + this.requestRenderAll(); + } else if ( + !this._isClick && + !( + isInteractiveTextObject(this._activeObject) && + this._activeObject.isEditing + ) + ) { + this.renderTop(); } + } - if (!this._isMainEvent(e)) { - return; - } - let shouldRender = false; + protected performDefaultUp(e: TPointerEvent) { + const transform = this._currentTransform; + const target = this._target; + let invalidate = false; if (transform) { this._finalizeCurrentTransform(e); - shouldRender = transform.actionPerformed; + invalidate = transform.actionPerformed; } - if (!isClick) { + if (!this._isClick) { const targetWasActive = target === this._activeObject; this._maybeGroupObjects(e); - if (!shouldRender) { - shouldRender = + if (!invalidate) { + invalidate = this._shouldRender(target) || (!targetWasActive && target === this._activeObject); } @@ -848,7 +854,7 @@ export class Canvas extends SelectableCanvas { target.activeOn === 'up' ) { this.setActiveObject(target, e); - shouldRender = true; + invalidate = true; } else { const control = target.controls[corner as string]; const mouseUpHandler = @@ -880,22 +886,7 @@ export class Canvas extends SelectableCanvas { originalMouseUpHandler(e, transform, pointer.x, pointer.y); } this._setCursorFromEvent(e, target); - this._handleEvent(e, 'up', LEFT_CLICK, isClick); - this._groupSelector = null; - this._currentTransform = null; - // reset the target information about which corner is selected - target && (target.__corner = undefined); - if (shouldRender) { - this.requestRenderAll(); - } else if ( - !isClick && - !( - isInteractiveTextObject(this._activeObject) && - this._activeObject.isEditing - ) - ) { - this.renderTop(); - } + return invalidate; } _basicEventHandler( @@ -906,12 +897,14 @@ export class Canvas extends SelectableCanvas { target?: FabricObject; subTargets: FabricObject[]; }; - this.fire(eventType, options); - target && target.fire(eventType, options); + const ev = this.fire(eventType, options) as TFabricEvent< + CanvasEvents[T] & ObjectEvents[T] + >; + target && target.fire(eventType, ev); for (let i = 0; i < subTargets.length; i++) { - subTargets[i].fire(eventType, options); + subTargets[i].fire(eventType, ev); } - return options; + return ev; } /** @@ -920,37 +913,43 @@ export class Canvas extends SelectableCanvas { * @param {Event} e event from mouse * @param {String} eventType event to fire (up, down or move) * @param {fabric.Object} targetObj receiving event - * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move. */ _handleEvent( e: TPointerEvent, eventType: TPointerEventNames, - button = LEFT_CLICK, isClick = false ) { - const target = this._target, - targets = this.targets || [], - options: TPointerEventInfo = { - e: e, - target: target, - subTargets: targets, - button, - isClick, - pointer: this.getPointer(e), - absolutePointer: this.getPointer(e, true), - transform: this._currentTransform, - }; - if (eventType === 'up') { - options.currentTarget = this.findTarget(e); - options.currentSubTargets = this.targets; + if ( + (!this.fireMiddleClick && checkClick(e, MIDDLE_CLICK)) || + (!this.fireRightClick && checkClick(e, RIGHT_CLICK)) + ) { + return; } - this.fire(`mouse:${eventType}`, options); + const target = this._target; + const targets = this.targets || []; + const ev = FabricEvent.init({ + e, + target, + subTargets: targets, + isClick, + pointer: this.getPointer(e), + absolutePointer: this.getPointer(e, true), + transform: this._currentTransform, + ...(eventType === 'up' + ? { + currentTarget: this.findTarget(e), + currentSubTargets: this.targets, + } + : {}), + }); + this.fire(`mouse:${eventType}`, ev); // this may be a little be more complicated of what we want to handle - target && target.fire(`mouse${eventType}`, options); + target && target.fire(`mouse${eventType}`, ev); for (let i = 0; i < targets.length; i++) { - targets[i].fire(`mouse${eventType}`, options); + targets[i].fire(`mouse${eventType}`, ev); } + return ev; } /** @@ -995,54 +994,6 @@ export class Canvas extends SelectableCanvas { } } - /** - * @private - * @param {Event} e Event object fired on mousedown - */ - _onMouseDownInDrawingMode(e: TPointerEvent) { - let dirty = false; - if (this.getActiveObject()) { - this.discardActiveObject(e); - dirty = true; - } - const pointer = this.getPointer(e); - this.freeDrawingBrush?.onMouseDown(pointer, { e, pointer }); - dirty && this.requestRenderAll(); - this._handleEvent(e, 'down'); - } - - /** - * @private - * @param {Event} e Event object fired on mousemove - */ - _onMouseMoveInDrawingMode(e: TPointerEvent) { - if (this.isCurrentlyDrawing()) { - const pointer = this.getPointer(e); - this.freeDrawingBrush!.onMouseMove(pointer, { - e, - pointer, - }); - } - this.setCursor(this.freeDrawingCursor); - this._handleEvent(e, 'move'); - } - - /** - * @private - * @param {Event} e Event object fired on mouseup - */ - _onMouseUpInDrawingMode( - this: AssertKeys, - e: TPointerEvent - ) { - const pointer = this.getPointer(e); - this.freeDrawingBrush.onMouseUp({ - e, - pointer, - }); - this._handleEvent(e, 'up'); - } - /** * Method that defines the actions when mouse is clicked on canvas. * The method inits the currentTransform parameters and renders all the @@ -1054,40 +1005,20 @@ export class Canvas extends SelectableCanvas { __onMouseDown(e: TPointerEvent) { this._isClick = true; this._cacheTransformEventData(e); - this._handleEvent(e, 'down:before'); - let target: FabricObject | undefined = this._target; - // if right click just fire events - if (checkClick(e, RIGHT_CLICK)) { - if (this.fireRightClick) { - this._handleEvent(e, 'down', RIGHT_CLICK); - } - return; - } - - if (checkClick(e, MIDDLE_CLICK)) { - if (this.fireMiddleClick) { - this._handleEvent(e, 'down', MIDDLE_CLICK); - } - return; - } - - if (this.isDrawingMode) { - this._onMouseDownInDrawingMode(e); - return; - } - - if (!this._isMainEvent(e)) { - return; - } - - // ignore if some object is being transformed at this moment - if (this._currentTransform) { - return; - } + const beforeEvent = this._handleEvent(e, 'down:before'); + const invalidate = + this.shouldHandleDefaultEvent(e, beforeEvent) && + // ignore if some object is being transformed at this moment + // TODO: check if this can ever happen (mouseup clears it) + !this._currentTransform && + this.performDefaultDown(e); + this._handleEvent(e, 'down'); + // we must renderAll so that we update the visuals + invalidate && this.requestRenderAll(); + } - const pointer = this.getPointer(e, true); - // save pointer for check in __onMouseUp event - this._previousPointer = pointer; + protected performDefaultDown(e: TPointerEvent) { + let target: FabricObject | undefined = this._target; const shouldRender = this._shouldRender(target), shouldGroup = this._shouldGroup(e, target); if (this._shouldClearSelection(e, target)) { @@ -1102,7 +1033,7 @@ export class Canvas extends SelectableCanvas { // and there is no target, or the following 3 condition both apply // target is not selectable ( otherwise we selected it ) // target is not editing - // target is not already selected ( otherwise we drage ) + // target is not already selected ( otherwise we drag ) if ( this.selection && (!target || @@ -1144,9 +1075,7 @@ export class Canvas extends SelectableCanvas { // we clear `_objectsToRender` in case of a change in order to repopulate it at rendering // run before firing the `down` event to give the dev a chance to populate it themselves invalidate && (this._objectsToRender = undefined); - this._handleEvent(e, 'down'); - // we must renderAll so that we update the visuals - invalidate && this.requestRenderAll(); + return invalidate; } /** @@ -1196,27 +1125,20 @@ export class Canvas extends SelectableCanvas { */ __onMouseMove(e: TPointerEvent) { this._isClick = false; - this._handleEvent(e, 'move:before'); this._cacheTransformEventData(e); + const beforeEvent = this._handleEvent(e, 'move:before'); + this.shouldHandleDefaultEvent(e, beforeEvent) && this.performDefaultMove(e); + this._handleEvent(e, 'move'); + this._resetTransformEventData(); + } - if (this.isDrawingMode) { - this._onMouseMoveInDrawingMode(e); - return; - } - - if (!this._isMainEvent(e)) { - return; - } - + protected performDefaultMove(e: TPointerEvent) { const groupSelector = this._groupSelector; - - // We initially clicked in an empty area, so we draw a box for multiple selection if (groupSelector) { + // We initially clicked in an empty area, so we draw a box for multiple selection const pointer = this.getPointer(e); - groupSelector.left = pointer.x - groupSelector.ex; groupSelector.top = pointer.y - groupSelector.ey; - this.renderTop(); } else if (!this._currentTransform) { const target = this.findTarget(e); @@ -1226,8 +1148,6 @@ export class Canvas extends SelectableCanvas { this._transformObject(e); } this.textEditingManager.onMouseMove(e); - this._handleEvent(e, 'move'); - this._resetTransformEventData(); } /** diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index ea013690da2..fb1fbccaeb5 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -318,13 +318,6 @@ export class SelectableCanvas< */ declare defaultCursor: CSSStyleDeclaration['cursor']; - /** - * Cursor value used during free drawing - * @type String - * @default crosshair - */ - declare freeDrawingCursor: CSSStyleDeclaration['cursor']; - /** * Cursor value used for disabled elements ( corners with disabled action ) * @type String @@ -1641,7 +1634,6 @@ Object.assign(SelectableCanvas.prototype, { hoverCursor: 'move', moveCursor: 'move', defaultCursor: 'default', - freeDrawingCursor: 'crosshair', notAllowedCursor: 'not-allowed', containerClass: 'canvas-container', perPixelTargetFind: false, diff --git a/src/shapes/IText/ITextClickBehavior.ts b/src/shapes/IText/ITextClickBehavior.ts index dbc6b7f2def..60f5cbcd087 100644 --- a/src/shapes/IText/ITextClickBehavior.ts +++ b/src/shapes/IText/ITextClickBehavior.ts @@ -168,7 +168,7 @@ export abstract class ITextClickBehavior< * standard handler for mouse up, overridable * @private */ - mouseUpHandler({ e, transform, button }: TPointerEventInfo) { + mouseUpHandler({ e, transform }: TPointerEventInfo) { const didDrag = this.draggableTextDelegate.end(e); if (this.canvas) { this.canvas.textEditingManager.unregister(this); diff --git a/test/unit/brushes.js b/test/unit/brushes.js index 4ea7837f112..a077981dcb5 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -1,6 +1,12 @@ (function() { var canvas = new fabric.Canvas(); var parsePath = fabric.util.parsePath; + function fireBrushEvent(brush, type, pointer) { + brush.fire(`mouse:${type}:before`, fabric.Event.init({ + e: {}, + pointer + })); + } QUnit.module('fabric.BaseBrush', function(hooks) { hooks.afterEach(function() { canvas.cancelRequestedRender(); @@ -9,11 +15,31 @@ QUnit.test('fabric brush constructor', function(assert) { assert.ok(fabric.BaseBrush); - var brush = new fabric.BaseBrush(); + let setCursor; + + var brush = new fabric.SimpleBrush({ + setCursor(cursor) { + setCursor = cursor; + } + }); assert.ok(brush instanceof fabric.BaseBrush, 'should inherit from fabric.BaseBrush'); + assert.ok(brush instanceof fabric.SimpleBrush, 'should inherit from fabric.SimpleBrush'); assert.equal(brush.color, 'rgb(0, 0, 0)', 'default color is black'); assert.equal(brush.width, 1, 'default width is 1'); + assert.equal(brush.cursor, 'crosshair', 'default cursor'); + }); + QUnit.test('start', function(assert) { + let setCursor; + const brush = new fabric.SimpleBrush({ + setCursor(cursor) { + setCursor = cursor; + } + }); + assert.equal(brush.cursor, 'crosshair', 'default cursor'); + brush.cursor = 'testCursor'; + brush.start(); + assert.equal(setCursor, 'testCursor', 'should set canvas cursor'); }); QUnit.test('fabric pencil brush constructor', function(assert) { assert.ok(fabric.PencilBrush); @@ -40,18 +66,18 @@ QUnit.test('fabric pencil brush draw point', function(assert) { var brush = new fabric.PencilBrush(canvas); var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); - brush.onMouseDown(pointer, { e: {} }); + fireBrushEvent(brush, 'down', pointer); var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual(pathData, parsePath('M 9.999 10 L 10.001 10'), 'path data create a small line that looks like a point'); }); QUnit.test('fabric pencil brush multiple points', function(assert) { var brush = new fabric.PencilBrush(canvas); var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); - brush.onMouseDown(pointer, { e: {} }); - brush.onMouseMove(pointer, { e: {} }); - brush.onMouseMove(pointer, { e: {} }); - brush.onMouseMove(pointer, { e: {} }); - brush.onMouseMove(pointer, { e: {} }); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer); + fireBrushEvent(brush, 'move', pointer); + fireBrushEvent(brush, 'move', pointer); + fireBrushEvent(brush, 'move', pointer); var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual(pathData, parsePath('M 9.999 10 L 10.001 10'), 'path data create a small line that looks like a point'); assert.equal(brush._points.length, 2, 'concident points are discarded'); @@ -61,11 +87,11 @@ var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15}); var pointer3 = canvas.getPointer({ clientX: 20, clientY: 20}); - brush.onMouseDown(pointer, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, @@ -81,11 +107,11 @@ var pointer3 = canvas.getPointer({ clientX: 20, clientY: 160}); var pointer4 = canvas.getPointer({ clientX: 320, clientY: 100}); var pointer5 = canvas.getPointer({ clientX: 100, clientY: 100}); - brush.onMouseDown(pointer, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); - brush.onMouseMove(pointer4, { e: {} }); - brush.onMouseMove(pointer5, { e: {} }); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'move', pointer4); + fireBrushEvent(brush, 'move', pointer5); var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, @@ -102,11 +128,11 @@ var pointer3 = canvas.getPointer({ clientX: 20, clientY: 160}); var pointer4 = canvas.getPointer({ clientX: 320, clientY: 100}); var pointer5 = canvas.getPointer({ clientX: 100, clientY: 100}); - brush.onMouseDown(pointer, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); - brush.onMouseMove(pointer4, { e: {} }); - brush.onMouseMove(pointer5, { e: {} }); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'move', pointer4); + fireBrushEvent(brush, 'move', pointer5); var pathData = brush.getPathFromPoints(brush._points); assert.deepEqual( pathData, @@ -126,12 +152,12 @@ var pointer = canvas.getPointer({ clientX: 10, clientY: 10}); var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15}); var pointer3 = canvas.getPointer({ clientX: 20, clientY: 20}); - brush.onMouseDown(pointer, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); - brush.onMouseMove(pointer2, { e: {} }); - brush.onMouseMove(pointer3, { e: {} }); - brush.onMouseUp({ e: {} }); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'up', pointer3); }); }); }); diff --git a/test/unit/controls_handlers.js b/test/unit/controls_handlers.js index ce4d2503c05..b9ebc7042c6 100644 --- a/test/unit/controls_handlers.js +++ b/test/unit/controls_handlers.js @@ -90,15 +90,13 @@ transform.target.canvas.on('object:resizing', function(options) { assert.equal(options.target, transform.target); }); - transform.target.on('resizing', function(options) { - assert.deepEqual(options, { - e: eventData, - transform: transform, - pointer: new fabric.Point( - 200, - 300, - ), - }); + transform.target.on('resizing', function (options) { + assert.equal(options.e, eventData); + assert.equal(options.transform, transform); + assert.deepEqual(options.pointer, new fabric.Point( + 200, + 300, + )); done(); }); fabric.controlsUtils.changeWidth(eventData, transform, 200, 300); @@ -201,15 +199,13 @@ transform.target.canvas.on('object:scaling', function(options) { assert.equal(options.target, transform.target); }); - transform.target.on('scaling', function(options) { - assert.deepEqual(options, { - e: eventData, - transform: transform, - pointer: new fabric.Point( - 200, - 300, - ), - }); + transform.target.on('scaling', function (options) { + assert.equal(options.e, eventData); + assert.equal(options.transform, transform); + assert.deepEqual(options.pointer, new fabric.Point( + 200, + 300, + )); done(); }); fabric.controlsUtils.scalingXOrSkewingY(eventData, transform, 200, 300); diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js index a4cf8f5ba71..0162d4d79b6 100644 --- a/test/unit/draw_shapes.js +++ b/test/unit/draw_shapes.js @@ -1,5 +1,12 @@ - let canvas; + QUnit.module('Draw Shapes', function (hooks) { + let canvas; + function fireBrushEvent(brush, type, pointer, { suffix = ':before', e = {} } = {}) { + brush.fire(`mouse:${type}${suffix}`, fabric.Event.init({ + e, + pointer + })); + } hooks.before(() => { canvas = new fabric.Canvas(); }); @@ -17,7 +24,7 @@ }); hooks.afterEach(() => canvas.off()); - async function runShapeBrushTest(brush, assert, e = {}) { + async function runShapeBrushTest(brush, assert, e) { let fired = false; const result = await new Promise(resolve => { canvas.on('interaction:completed', ({ result }) => { @@ -27,12 +34,12 @@ var pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); var pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); var pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); - brush.onMouseDown(pointer, { e }); - brush.onMouseMove(pointer2, { e }); - brush.onMouseMove(pointer3, { e }); - brush.onMouseMove(pointer2, { e }); - brush.onMouseMove(pointer3, { e }); - brush.onMouseUp({ e, pointer: pointer3 }); + fireBrushEvent(brush, 'down', pointer, { e }); + fireBrushEvent(brush, 'move', pointer2, { e }); + fireBrushEvent(brush, 'move', pointer3, { e }); + fireBrushEvent(brush, 'move', pointer2, { e }); + fireBrushEvent(brush, 'move', pointer3, { e }); + fireBrushEvent(brush, 'up', pointer3, { e }); }); assert.equal(fired, true, 'interaction:completed event should have fired'); return result; @@ -161,7 +168,6 @@ const done = assert.async(); const brush = new fabric.DrawPoly(canvas); brush.builder = builder; - const e = {}; assert.expect(3); canvas.on('interaction:completed', ({ result: poly }) => { assert.ok(poly instanceof builder, `should create poly of type ${builder.name}`); @@ -175,11 +181,11 @@ const pointer = canvas.getPointer({ clientX: 10, clientY: 10 }); const pointer2 = canvas.getPointer({ clientX: 15, clientY: 15 }); const pointer3 = canvas.getPointer({ clientX: 20, clientY: 25 }); - brush.onMouseDown(pointer, { e }); - brush.onMouseMove(pointer3, { e }); - brush.onMouseUp({ e, pointer: pointer2 }); - brush.onMouseMove(pointer2, { e }); - brush.onDoubleClick(pointer3); + fireBrushEvent(brush, 'down', pointer); + fireBrushEvent(brush, 'move', pointer3); + fireBrushEvent(brush, 'up', pointer2); + fireBrushEvent(brush, 'move', pointer2); + fireBrushEvent(brush, 'dblclick', pointer3, { suffix: '' }); }); }); }); diff --git a/test/unit/observable.js b/test/unit/observable.js index f01276c425e..2799ee09a95 100644 --- a/test/unit/observable.js +++ b/test/unit/observable.js @@ -21,6 +21,47 @@ QUnit.test('fire + on', function (assert) { assert.equal(eventFired, true); }); +QUnit.test('fire event/object', function (assert) { + let foo = new fabric.Observable(); + let received; + foo.on('bar:baz', ev => { + received = ev; + }); + + let fired = foo.fire('bar:baz'); + assert.ok(received instanceof fabric.Event, 'should be an event'); + assert.equal(received, fired, 'should be the same ref'); + received = null; + + fired = foo.fire('bar:baz', { foo: 'bar' }); + assert.ok(received instanceof fabric.Event, 'should be an event'); + assert.equal(received, fired, 'should be the same ref'); + assert.equal(received.foo, 'bar', 'object should be set'); + received = null; + + const ev = fabric.Event.init({ foo: 'bar' }); + fired = foo.fire('bar:baz', ev); + assert.ok(received instanceof fabric.Event, 'should be an event'); + assert.equal(received, fired, 'should be the same ref'); + assert.equal(ev, fired, 'should be the same ref'); + assert.equal(received.foo, 'bar', 'object should be set'); + assert.equal(ev.defaultPrevented, false, 'default not prevented'); + assert.equal(ev.propagate, true, 'propagation not prevented'); + + foo.on('bar:baz', ev => { + ev.preventDefault(); + }); + fired = foo.fire('bar:baz'); + assert.equal(fired.defaultPrevented, true, 'default prevented'); + assert.equal(fired.propagate, true, 'propagation not prevented'); + foo.on('bar:baz', ev => { + ev.stopPropagation(); + }); + fired = foo.fire('bar:baz'); + assert.equal(fired.defaultPrevented, true, 'default prevented'); + assert.equal(fired.propagate, false, 'propagation prevented'); +}); + QUnit.test('fire once', function (assert) { var foo = new fabric.Observable(); @@ -40,7 +81,6 @@ QUnit.test('fire once multiple handlers', function (assert) { var eventFired = 0; var eventFired2 = 0; var eventFired3 = 0; - var eventData = { a: 'b', c: 'd' }; foo.once({ 'bar:baz': () => { eventFired++; @@ -50,8 +90,6 @@ QUnit.test('fire once multiple handlers', function (assert) { }, 'blah:blah:bloo': (e) => { eventFired3++; - assert.deepEqual(e, eventData); - assert.equal(e, eventData); } }); foo.fire('bar:baz'); @@ -65,7 +103,6 @@ QUnit.test('fire once multiple handlers', function (assert) { assert.equal(eventFired, 1); assert.equal(eventFired2, 1); assert.equal(eventFired3, 0); - foo.fire('blah:blah:bloo', eventData); }); QUnit.test('off', function (assert) { diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 71b94704864..1949297495b 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -1,28 +1,33 @@ - function setBrush(canvas, brush) { - canvas.isDrawingMode = true; - canvas.freeDrawingBrush = brush; - } - var options = { e: { pointerId: 1 } }; +function setBrush(canvas, brush) { + canvas.isDrawingMode = true; + canvas.freeDrawingBrush = brush; +} +function fireBrushEvent(brush, type, pointer) { + brush.fire(`mouse:${type}:before`, fabric.Event.init({ + e: { pointerId: 1 }, + pointer + })); +} function pointDrawer(points, brush, onComplete = false, onMove = undefined) { const { canvas } = brush; setBrush(canvas, brush); - brush.onMouseDown(points[0], options); + fireBrushEvent(brush, 'down', points[0]); for (var i = 1; i < points.length; i++) { points[i].x = parseFloat(points[i].x); points[i].y = parseFloat(points[i].y); - brush.onMouseMove(points[i], options); + fireBrushEvent(brush, 'move', points[i]); onMove && onMove(points[i], i, points); } if (onComplete) { canvas.once('interaction:completed', ({ result }) => { typeof onComplete === 'function' ? onComplete(canvas, result) : canvas.add(result); }); - brush.onMouseUp(options); + fireBrushEvent(brush, 'up', points[points.length - 1]); } } function fireBrushUp(canvas) { - canvas.freeDrawingBrush.onMouseUp(options); + fireBrushEvent(canvas.freeDrawingBrush, 'up', new fabric.Point()); } // function eraserDrawer(points, brush, fireUp = false) { @@ -2251,7 +2256,7 @@ QUnit.module('Free Drawing', hooks => { } }); - function withText(canvas) { + function withText(canvas) { canvas.add(new fabric.IText('This textbox should NOT\nclear the brush during rendering')); const brush = new fabric.PencilBrush(canvas); brush.color = 'red'; @@ -2262,17 +2267,15 @@ QUnit.module('Free Drawing', hooks => { tests.push({ test: 'textbox should not clear brush', build: withText, - golden: 'withText.png', + name: 'withText', percentage: 0.02, width: 200, height: 250, - fabricClass: 'Canvas', targets: { top: true, main: false, mesh: true, result: false, - compare: false } }); diff --git a/test/visual/golden/freedrawing/withText_result.png b/test/visual/golden/freedrawing/withText_result.png new file mode 100644 index 0000000000000000000000000000000000000000..d81e594636de6751bd063cfdb6d887a1fb9457ad GIT binary patch literal 9797 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 b{sRFx+417<9#G!Tg#kzvE#-P8%ZUF0e$Dve literal 0 HcmV?d00001 diff --git a/test/visual/golden/freedrawing/withText_top_ctx.png b/test/visual/golden/freedrawing/withText_top_ctx.png new file mode 100644 index 0000000000000000000000000000000000000000..12bf6aa835314abccfbb3f011c7316f0e712189f GIT binary patch literal 6745 zcmV-f8m8rmP)Py46G=otRCr$PU5n8iH4@fDz!3o^0w4m;5daYY5nv(!A^=Blb_8c407rlw!Qlvi z2V2&O_4lLyuO~mR8Dyl@a7b73T#qfaN0NpoC4bvaDX^>I0ben z-~e&l_}6ACy$I@#!wmpO*;B!uu$2;pBLgik{Vzhk~b2(PW@?Etaffll8)PGI;tgzyc4 zVv7>5LI^L15b&>hbAYIm++R3O!1#qEMl3-fRlXlWcoX{oM?VJ$2NivcXbOxW{D-7Q z^fQZ&e-lVvxzrTkNKFoM7`jJxrVF1TGQ5A6+O_hc_j*|)u$(`Gx4dih$q~X$) zY+p&nNU{OK2#%R}E=e}nXki;b4O*%~NzM;OTi}-=gzxvbUO{@yuYW#FYMe;R0tmCq zZn-dVol=B~0)rBbf7r1P?%xWq%=W@1Rb$y0!7&f}VhG{et)&aw9?RFh9@13Bq}|E| z2t+hQHFv`%f0m->a!kjwztKVgbqOEsi_JlHhj1(zzVIDkkSUhtAYige}G60qr1xRYLTV<;

)J2b4n;YcRuIjR02EVIPWS10c1xYtT+f%b4l)q2$LiRe~U_57(nrgG6~Ygz&4> z1PBy!KG|7S5}uq_LkKUo=G%z$n3wmI)NieisHl2{Mb!q7c_RQ6I18Y9MW;UOfr<=E zfFDwlyJ3#-_S~F`Gf-K%*L6Q0Bs@MU8tz?q=blJPkD39p+!z4mRA%rvC0XLD7pq3) zGTKetK-rkhopZ`_@91oK$}_orqf=gTU(gCb=JjU*#lWtD0Sm+OZ)Icl44;(t?Au{V zk`-^MDi%B~r5lvdKrsNvyrGx8GfEB7^7e=`li~~1Qj%H($h=R`_W>3}S|41*1q9|W zzrBNHiu_jHtI7lj$T&{S2G?gz4PR{hpx!_{ziG^SRMTE?%oUjySqHdMU!EjE2q4z3 z-qba&^@msKtP7W89zI4o1=Q@1WFwsb0>+X&C6-Pyf1)P}tR_cF5g=KD5J;rbr=`~E z`aVvF%@f#`c$<8(nPvWYi*l9&-ZG8I!GS2(8M@b1;|30Add^u1Sj}hqP*t?+;ed~ zI_x010f~C-WBGP*6>CSLAZ5T+uMi##&<2m<=1O*4WP0S&FwOR}h7AHYA40@;_JpmftMA71blHX$vl4=05uu~vW;3D=|O3AFvH#bv|R0oh1gC0Nu zXgu)9$CRawWCoII0dl{CR0s}0!4D@Ld+>sl#>kTMF#$<409gSHBCr4p+@_vUEXlfh zW2=LtS%56}jHC;I;&zK3GfTZmwQxfh09gSGfC59`)i5bGmK|60+O;YIg|hU$)EI`H zg4$kg+)ERie|!X0kpV4!Z)JB9}K0I8NEbetuqoqXk|e zZjW>i5CRDj2Hn$@#=)A`t?kWB)E;qwOj5+{ku-3iH}rqpHf(*2TGSqKfDmKQK_#T0 z_mVxF4vEJnaE%s+WI<5MCec{Wuj1z&R9a_2Fo$Yk&Vo zF}{OpET}w!Ypqe~--=#uh7dl>A=chAW&okDG~BC*MQAr{DkKC{gx$*^D?5h*&(fSF zpy|54x?7Dw!d@as9U$Z}LW#|rVg=d=S-cO?bZjvG-E0*A!0{gr zPF5HL>K9yxn^L6^pum>;W?7YSri}r;A6%^lAYrcpuOdMVHj4{G00_Jzn|2Br^U(W| zPOp_6{F2nEYq`?31&>oXQ>{6z8p+Bad8jjXmJ!4OQZYDY+Jead6#V`?@_>S{8SI+Ln5(s{#%b;v0ob|#Ld^18p*Ba(#|8TSU$GuAynx);vkQ9$ z&e6MPmo)kTl)IARz`202v{L$iA3{KM{iczWMLAXJRvkb9j#9i;5}Olc*h{=Pc1(k8 zm_$$XY4s@Z}j?0MuN2){UKmSUOxv2>D}7Kp%pXwd)Fy&Nn%|7$pNyUhO%qVnY26# zJQSZ+Qn|}lvB+x!Pmj00DR6VrZ=7=9z7Qr!6##MdN|*~O8Gf0-sFfR51wb^u6qWEu z*VCM@wuZw%>q@x?+vn^Kut(CzOKi-WQ{Zyu2HFHXS973Lnk;1}D;lIWNE6)0&!+$) z_((C)JnzGPs*qKJjME9cAM$DHPdWuoQQ*VaJhj-jI6z`4<^4*h0DG!C7R(J0uToe# z8?`$>kvrA70iu=G-0n8}%5o_1&mfdu;{eIo4u7UJ3b4C(=LK>D1QB%WM7h#7&*vjg z0rqMp>;O?b6eCY=e?v_acsB@Ujk8G*#Tdx9IAs^PgC*3Bjhw1?%cOvaaV{Z2RAL}Q zqUVhy+k8KvRsn;|z4pfvDS#u;Pq&6c9+p(HMH^v_e76(o07sger4T_B+pc1`i!L`)A z)9jC8*>Gmy&Jl}RXOLVl$~Uj2kRpZyDnRpJ6 z1sgdyI5EXGmP)*1Yqky$qKt!sjiEUQQj2#uKz6px!NJMXtYfLgI~*YU0BQZ223D?B z8qCb@s5uUDbvbfvl6$MTD9Jib5#XpX4uUxYBp-9Q{Km<3DSfF6E9Z1DnAq{z9NN`p zq|a+S9W)}lL#rfa&ffI;%<2tQR>a^02!d*w*F4`;4^JVW8|5j~Qtexm^x#&pv?_Qn zcPvX+9jBXLHA`Zua#^J>dy8yp4%L}+{cI8hlNu-cKfi3`|ZHLT+KJ;u+W-iX7dn=OyT>u1W;V8+Y zt!81%UkxFAwYK-}&MgxW_p?f^SfjBjRvW}n&6;WTa6becr$wZ^=QAA|yma~C|#YY0tG`5y-)>MY+F2GBx`4ZKx08)smmBnx; zAA)*^>%dITvpYae?%v(w>|U(p_+%vG>-Gunw2L0iG@r-;!pj??03j*TlRYAGk!0+a z8<*vYo#tl0?o_OWUfhE{Vt#&loIH1^7&01LSnOPE6JD+koUnX z%dB4xp2Qe$hXT@ANVP)E-0G7t9Uu$V9H+}_pcd5F%so~M)ym?Kn#i6xK<>y|saq1@ z_-2?=NK6~0@!l}ttasQRGb$|8%B)bsp`QnA)JW1OyG#x(_6XRYDN{c?GXRfGAD-qArl;o?3> z*puP`f=QBX0+2`p)@ z$Gf4>b1YQ>_NHAr&yasyV8_D3};)}CmjY*thdnT^*Yz@Qut z4sPLxdcLSaQe3P3e0d^4&2O{ans1d7B$4>lb?>a6aIxxD6B494?mw7tXW#%eiu7Jp zInB#iN0v*;S!`E^mQmXK>cE}qumB62n;K(+}G;0(VqLpSmM9JtD|2e&N_1tIS!<&F=W_Jiy8QdxZn;k7XaHecWQ1wTbb&Wn>E zD}VqnI2*w7YzW~c=b#*8b&y}RMW&yIDaWq(W+p)>!1n_RASh7@c|I@-OF2*8OO*V6 zd*9Nz{vrdkMM#h_1OUV83u5kfZ>g45;>QiCJx@x_URYa;sstf*>Ssl%v9*7uAQ`7v z2e&Gj$g3vZP3fMqVl{viXpow0Rx4#fGnlRTprDxqDG(epEmT3$v1$c+KP~MLS`5g= zB}l>GnCYXoaUH8xrZ;cJ0AZ_-C_pLz2j~KC3ViaSUX{+$*O&ZOmDftui#3LTy0Ixi zzB6Dy^Q^dEzV_RnGKpKA*Gdf_6&@88i|me5tOv#3dTVOxs}x~HRIEzX39-_mol1{t z?T#hbqySRmWs)Kr+Nt!Y+U^hqNX-l(k$!C`J#hBkqUc`rc84@TYB9{$)YcCz*yA%DI9hQtBOT#-M=^{W;6zC;Lu2V032{xYZtg~4jkY?Zh+M8tzj#m zY$QD{05`gMO3cY&^s&6WmKz|*&_$+h&5gy~YY+pvR-zv-)ml}Xh=W6Q1sgAOfIJcg z>Iu$`ps-w4Gq_w62KlG3pA2pfZpLG^w%ObOY354eFr7gBF{hxi!Tl!JfE-oB*OKB* z+8ttEta1A4exCK&E%zaS9;qnNmB*Eh^PA!a%6m|3$xtqK;+7yS0%WE&fC58wH>pus z#d(N1DB3>a`DpuzuXF0{61$S(^MU zI{%~t^d?M)@k0=0m8clP&dRgX!p|c3joMWQN)dY4I#X!*_h`B z2rkyt&LZVy@$yI8tuLhmns@{m2 z0HwDo+`|$8(Qm<;gH)w;U&RsRNb^lfYfLU z9_G1OY%)7QNX^nZ7xEe0h#`beEQn|H&Zrdgid9|YcOlQK2>V0|AX@HTWYr=#38POV zKxc%Bo7X}*10+Xj_mJf97S;IiC?*+F1Rx|uu#wVrnf@F?_?X@Ypx|0F4b{#XC{brI z=;$v%QX@@@0Er|(@Kyg#nv<3~IVB6u(nKYyExo>-@ncmj6c4WzBvH~*at|Z{qUFt6 ztwKWefnltQgH&>ZcE*lop2{T&uJZoMh{n8Sf0m0-JbJoYL7d_OFyvc1D-UugRb-YLg1xRXhjbCj|ZAl^q5c+Cq6mf_G$V}J< zfpSyTB!+>A2CphJ-f_ekb5?EL0b~IbxT5hjtC*R4$Y1joku-BwWq0 zf+a|0Lt23C=5tZ#i`3kFKGTbo0AxCFVQV&x!VyW8Z>AI`l$IX&t40d~tB#SfF#QwkucjRjGx-2fJN zqF}JHRUS9EF)E90S^zP+pfoEOnnlRPL+k)4$e_b{5P$_gq$xz-5Vb~BS{Kv`EB*U$ zuQdQ-aQ`CKZFV1t1VFS!?;+z*2S^wE0G6!t&ZS43r2#^!^B>Bp6}C^^do?o^D?p4y zZ!AFOegFr6a(JEEh9rSq1tux3DFDR6vuBc|C+-wq<$%1vlhEv zQ6tu{AYF2%axB4O`f*DTlpU3J>&C1rr4PUXgB}tk8Yl&VMD$BLPDcZ@E613rR_qeQ z@C%ayhNHfafU}))2$sS?a=q#5XpyOZH!{rGa?4WJyX?;M12# zjNkx?fk+6y3?Y2K)zvr)SS&`Mcw_H9X+@-A+*aTAa)88B4fYA7$);^$q;4HbxcDW$ z?`atD6?HbG(t-^jc=0$fPZf!Msf1ee-!X$p$N`bJ4%|aZHZUrVw2PAPb;CqQEFDxx8fx{k(5J1&T>X+*^Vw zK$a7sU>d*z(A;}bYAf27&nEpoSyaS)Ya7e}vd0&c>HzTISKDn!{jz-g%0=?W;$I)% zvq*s4Nt#(LbFjqkYso!}_FCN&u6TglPk3>AEz~lc!8jX)E18*En_H35@*-^zj-4k} z3_wB51=miuo=MC>Hmfm;cj>MXraB37V7mY$&x}v^SutSg?>&9NkHrF;0?5Lh45`xM zmCqJD!tu`PRI7Q>O#;M$!okyQW3XTB!#1;sftm)010{k3WV^hkvn$+L$g;CujNS!6 z7C>p~Zge#!$$U|3o1*_ry~I( z{A$cFhPxKUHZHeswQOS?ZNCHLh(ag-zA*X$9yIGBZTBmJ6r7E0{0l&Ip+3cItpg;6 vO5Uei3OGQz-Fjbm3PyA07*naRCr$Poe8)mMRoUoH7qJ_0aOssKt#a}G#E`3*AGP56p$Sai6C(W#6$psXFJ>Ifjlp4s;wC$N|&wrsF`zfx#T;0MhM_jsrtD&;g{|9vufdfOLDH z<3KeIbP}W*-?~~;!hsGTQ?k(AG^=r-14uQ#b+x9119br8DZnnk+kj64Umug#n#0b( zzXMkS{|sC=W}990;v9Gaur2UU!1sZJi&t%a$qXQC`i;6(;30p^Gi(9y9AH1-?}5kr ze)b9gkiP`J0ld_=sRjBtuq^Ogy5?p%kgexFz?*?J{GYP*o)}*B1IQnN9{`v2Y%(!H z%y_Dw{W-uzJ)98Gwg6t(!>~PpzXF~P?AigO_4{W_;FZ8*fW4;yAR7V;fg6DL0=M;9 z!i|7aflWtzE%bGHJ#Z}WUEqDd!@kbyzzM((0VRk){zl+1f3)h3Sn2ThD1WqlPZbGb z;RPOOT0haNfZzF_MZlTBw+-m`S}2ns+WbcYn&`CyMp6_Ys;+h=H8%Hvd&sw`FV1KE zQA__6;)qoX;|g^8Sm48czV{R;-^3zC=I~MA6J-Em9S{x&UQ}?>pVP6q4xr=#vXj3w z4?4S-0f^?UyMZp^p9C_1JR0~6@Q#2Iq#%!z7ke@A5#S$zwgRNc9CYG1vM4|-d=q$6 zh1HN0*}=dME7YxAB?HK2z%zi;hO|@`Agg&vaXfH;uHF0>XHq4Ijvj{q&-0SBjQ}Y+ z2b~m79t98!e*yf$@3YDq7WfAP|1nMjW$Knu^OgdLg#&=){(kT$;77pk4LmC+k|z}) zukoAaiWUQ;=p2dyL=xbMWj5!KvdKUa6d=}}xj%sWTJ&w(!t(23!9M_(Oy(Wr*}#dw zOMvgS2_P2M*U|VRu=1f!0v4IWNPt*pmy#kV6bWpvHcrzTm4X1oy8Fgez~jn{_8$1% zn(!(EHIo^~#AsbuRaIpnjS{wIS_}>A z!gu;KUYR$!wr1uz7C(wNc6D^h|F9%4|z2u0Av;x!z=?OZNxQgHMd(E^!XA}xd%F6(|qng7)WfRqQi(u@L#K7c2A!=*H9wx>Pycbs=y zDGQK18+5$7#Q#H)BbF@El9G}V@+Zp!Q{D@o+64BMXn7snvIQ(!#f@F+_}>HPUI~BL z#QC>rju}AYv5=QkD?bSLt_IRBj!U;0SkE_-2Z$u-Z^g$A;lAr2CO&4YhpW5&A@?HL z*Lp#sA?kFYkKRz;c=sgDMITBjlxC7XyKHmXRIKM*Ie zdg;l2Q_ICg)K7xs4U{ro{SI`&DT&5&1%O3H~Js}^D2U9jYn zuAwHzwvTC($rsW+!y#2IV8(vMMnmyi+f35#G?Q?&J6-c{!A)^ z=;;H-F2k7m(UGpq5i8$ZQ3;X(Qm#0!^`5X9Fuv&TDrMGZ#TYd3ec_?6J0s=7#c<22 zvtRs>%O;S#GiL|U29-C)-PYabLP)Ej>!)NrWc1~@%*+fGtSv@V{f?B8GP7LrHK1V9w53GXi%#Zf1AP>t&|UD`wPsbgE4+E_+#_t1zSZc~ zaMQU?p&`;oQoeruDE~py-?b0k?(68(Fh_!C4U`7RwXmryeUWK(9+_#bVQM+EjzMFDWhYXn0ZIwxfGQk+shFz>swxXKliu%z~hPDoER$u7%&46>wNGc ze@9)1yTkblodgz*Qn0KI=>D1AowfEi`#Y=@BlD;{H5#Zz%FgV zqFI1k>NRtv+bUaOKls|0-Njl|Mk$g>9cc=6|L99)_WDL!!P)19wTKSohx}A@S@K^CdHpqTZ1R(0`Y2JDAEqyxvPjAN z^9+v>CMPwl?r_pRiiUkiv+h^&uTG^g6zQlXE$H|XWFcI->+I{X2=ndVq`pvh!D(x| zvwANTIb!AONIx#Eg^mL+?`cdDMQ2f6HkVuXcio5dKuBs$JuemMJS(G}j&9lvvVYtw zJH}OT_2=L%{vbT;i#7w0J>j8~oz||^q%~SF3y{1DJ?6ahRzxuxK@R z2NIYn)BUh?862~^dneyZI<_CGOVyJq_t310N5Pr^#$>eX*050e>q((I;m)<4$8HLVnAu?z=O8;`Nh-^JHb{c$gD8{0{{Fdm zW*n9$ge>TiK67kjrS2dNkRbE+l7(w`higuqwUqWV6iRI>6`l0uhp zsqm#<7l?X~Thb~DaQf)ZP?-&}Q4;}@O+>~6Df_SJZ%G$Gj?q`V_o8o|Sd}It73t3M zECY8v=#FxQtmLT%H)cQDbY=Eb zs2m6GG4ARnZwo0@^wAMW^kT7>vU`UdLgz?_TtV4UbbrxNYmVDW8GvlLEu4Q=xrx+S zS{f<2Y#d=gsyzj$Q|v5><gPfvuj3>9o1TnE z0?9$c_IfX>W-3aarPATWT1|m`Ed6b)fpzVUna@h*FSQU{Z|KBt!h@ m?TscAbKbh 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 Z{C^0(gNnd16ukfd002ovPDHLkV1fsR5Q6{! diff --git a/test/visual/golden/top_ctx_freedrawing1.png b/test/visual/golden/top_ctx_freedrawing1.png deleted file mode 100644 index 37483dd28e52005d3f66af10ecaafe2f8dbef70c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 zcmeAS@N?(olHy`uVBq!ia0vp^DIm)(dNUF^7kKb>6J>GiCM_lURx+vD^Tzj;fH1CDpSf}7|;$LG~o3`TJm#bRs z4gTC*<;%U)l_SpFt9yxt6SvY7A>)fdI_t~rbe~m!`e;!6+~S;N`MERCS=-Z}o%#N= z@Z8MjbDmeG9XNvoaxQR+ajfIkJ6j&jBcLPhabeE;Z9KDCZJz}%nHnc>u;oERg6q_; zd^QJ-FFL;qjd;G~!Tc59GeW1nnIrX9hJ_XFz75LrtAnr*0^f_1J zS^UpWe6M-%pUQjFgZrC)yXrqX;Zb#Bu3jPU!S#aHvcK-(W*Q@vJ|hjIC%%ei3%o*R@ut?B=3e#&m&EkPS;_4Ks98HESW zcKlx9d?xAOrn2bSH>PjC9cSO4sv+`Hu_;;bbM5?Bb9z4gd*NQ$ylP6~`UII9Lizn) zBHZr@@4RAkx2ofTOU*xL`PVX?(P8UtmrV5jul|FjLj9iHn~i^V>S!)JQ`OD>-q}{A zZO44o#Y^tit}8B{QoY;Z%`Az7y~ld&b}AU3+?Uf)9sZ$^vovk{n)%#E>Soj!{u7!b zT%!;%<%kc*wv`V)op(6>eZmj7b4T{QRlT~??9~1^g>N|}Rcot8NU&cO zkqOK8bZ*+LdTpoPs~?-a?3{K}_2b#Dwm?c;s3)b#m}O^myLU0%``=C*5<_np@h?`f^q412LqPr`dz z_P3Cm`z8iInWkD{oK)xS9un51^jYBG_0spUrBaD8y*_QYY*Z*t3xRe}w1u%!7x1=H2%Qdi~zv p{;^k|bPtMu>JLjJ5-`8Df8_pM^HIBmC@{k@c)I$ztaD0e0ssj@%ToXV diff --git a/test/visual/golden/top_ctx_withText.png b/test/visual/golden/top_ctx_withText.png deleted file mode 100644 index 00fec78a57c484ff6fdc1bfb1e46280d3c0a3a5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8467 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 From f1c14ca8aa8f936434bead2b857eaeb917314c89 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 19:30:22 +0200 Subject: [PATCH 128/153] subscribe to resize to set brush styles --- src/EventTypeDefs.ts | 2 ++ src/brushes/BaseBrush.ts | 8 ++++++-- src/brushes/SimpleBrush.ts | 1 + src/canvas/Canvas.ts | 12 +++++++++++- src/canvas/SelectableCanvas.ts | 16 ---------------- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/EventTypeDefs.ts b/src/EventTypeDefs.ts index b151a954efc..381479041cb 100644 --- a/src/EventTypeDefs.ts +++ b/src/EventTypeDefs.ts @@ -259,6 +259,8 @@ export type StaticCanvasEvents = CollectionEvents & { // rendering 'before:render': { ctx: CanvasRenderingContext2D }; 'after:render': { ctx: CanvasRenderingContext2D }; + + resize: never; }; export type CanvasEvents = StaticCanvasEvents & diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index 653711456ae..a67ad4e9657 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -97,7 +97,9 @@ export abstract class BaseBrush< }; } - protected abstract subscribe(): VoidFunction[]; + protected subscribe(): VoidFunction[] { + return [this.on('resize', () => this._setBrushStyles())]; + } protected unsubscribe() { this._disposer && this._disposer(); @@ -117,7 +119,9 @@ export abstract class BaseBrush< * @private * @param {CanvasRenderingContext2D} ctx */ - _setBrushStyles(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + protected _setBrushStyles( + ctx: CanvasRenderingContext2D = this.canvas.contextTop + ) { ctx.strokeStyle = this.color; ctx.lineWidth = this.width; ctx.lineCap = this.strokeLineCap; diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts index 71af97406e5..c7f3c275ae6 100644 --- a/src/brushes/SimpleBrush.ts +++ b/src/brushes/SimpleBrush.ts @@ -15,6 +15,7 @@ export abstract class SimpleBrush< protected subscribe() { return [ + ...super.subscribe(), this.on( 'mouse:down:before', (ev) => this.shouldHandleEvent(ev) && this.down(ev) diff --git a/src/canvas/Canvas.ts b/src/canvas/Canvas.ts index ef272f09e74..0d2f9e5564f 100644 --- a/src/canvas/Canvas.ts +++ b/src/canvas/Canvas.ts @@ -14,7 +14,7 @@ import { Point } from '../Point'; import { ActiveSelection } from '../shapes/ActiveSelection'; import { Group } from '../shapes/Group'; import type { FabricObject } from '../shapes/Object/FabricObject'; -import { AssertKeys } from '../typedefs'; +import { AssertKeys, TSize } from '../typedefs'; import { isTouchEvent, stopEvent } from '../util/dom_event'; import { createCanvasElement } from '../util/misc/dom'; import { sendPointToPlane } from '../util/misc/planeChange'; @@ -24,6 +24,7 @@ import { isInteractiveTextObject, } from '../util/types'; import { SelectableCanvas } from './SelectableCanvas'; +import { TCanvasSizeOptions } from './StaticCanvas'; import { TextEditingManager } from './TextEditingManager'; const addEventOptions = { passive: false } as EventListenerOptions; @@ -753,6 +754,15 @@ export class Canvas extends SelectableCanvas { _onResize() { this.calcOffset(); this._resetTransformEventData(); + this.fire('resize'); + } + + protected _setDimensionsImpl( + dimensions: TSize, + options?: TCanvasSizeOptions + ) { + this._resetTransformEventData(); + super._setDimensionsImpl(dimensions, options); } /** diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index fb1fbccaeb5..1fe7457409d 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -1177,22 +1177,6 @@ export class SelectableCanvas< return pointer.multiply(cssScale); } - /** - * Internal use only - * @protected - */ - protected _setDimensionsImpl( - dimensions: TSize, - options?: TCanvasSizeOptions - ) { - // @ts-ignore - this._resetTransformEventData(); - super._setDimensionsImpl(dimensions, options); - if (this.isCurrentlyDrawing()) { - this.freeDrawingBrush._setBrushStyles(this.contextTop); - } - } - /** * Helper for setting width/height * @private From 51298842f98e26c4480f356c157f48ea2ca7e3f5 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 19:41:17 +0200 Subject: [PATCH 129/153] Update canvas_events.js --- test/unit/canvas_events.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index ae54e34aec1..0495ee9edac 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -337,7 +337,8 @@ assert.equal(isClick, false, 'moving the pointer, the click is false'); }); - QUnit.test('setDimensions and active brush', function(assert) { + QUnit.test('setDimensions and active brush', function (assert) { + var done = assert.async(); var prepareFor = false; var rendered = false; var canvas = new fabric.Canvas(null, { width: 500, height: 500 }); @@ -345,12 +346,14 @@ canvas.isDrawingMode = true; canvas.freeDrawingBrush = brush; canvas.isCurrentlyDrawing = () => true; - brush.render = function() { rendered = true; }; - brush._setBrushStyles = function() { prepareFor = true; }; + brush.render = () => { rendered = true; }; + brush._setBrushStyles = () => { prepareFor = true }; + canvas.on('after:render', () => { + assert.equal(rendered, true, 'the brush called the render method'); + assert.equal(prepareFor, true, 'the brush called the _setBrushStyles method'); + done(); + }); canvas.setDimensions({ width: 200, height: 200 }); - canvas.renderAll(); - assert.equal(rendered, true, 'the brush called the render method'); - assert.equal(prepareFor, true, 'the brush called the _setBrushStyles method'); }); QUnit.test('mouse:up should return target and currentTarget', function(assert) { From fed5077d7e0bf51866aad2ac83b8ff9282ddb414 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 19:50:17 +0200 Subject: [PATCH 130/153] Update canvas_events.js --- test/unit/canvas_events.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index 0495ee9edac..58a572eb6d1 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -337,7 +337,7 @@ assert.equal(isClick, false, 'moving the pointer, the click is false'); }); - QUnit.test('setDimensions and active brush', function (assert) { + QUnit.test('setDimensions and active brush', async function (assert) { var done = assert.async(); var prepareFor = false; var rendered = false; @@ -348,14 +348,18 @@ canvas.isCurrentlyDrawing = () => true; brush.render = () => { rendered = true; }; brush._setBrushStyles = () => { prepareFor = true }; - canvas.on('after:render', () => { - assert.equal(rendered, true, 'the brush called the render method'); - assert.equal(prepareFor, true, 'the brush called the _setBrushStyles method'); - done(); - }); - canvas.setDimensions({ width: 200, height: 200 }); + await new Promise(resolve => { + Promise.all([ + new Promise(resolve => canvas.on('resize', resolve)), + new Promise(resolve => canvas.on('after:render', resolve)) + ]).then(resolve); + canvas.setDimensions({ width: 200, height: 200 }); + }); + assert.equal(rendered, true, 'the brush called the render method'); + assert.equal(prepareFor, true, 'the brush called the _setBrushStyles method'); + done(); }); - + QUnit.test('mouse:up should return target and currentTarget', function(assert) { var e1 = { clientX: 30, clientY: 30, which: 1 }; var e2 = { clientX: 100, clientY: 100, which: 1 }; From 41b50463a67179e908626c6f9b15fcc919f38cd7 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:04:48 +0200 Subject: [PATCH 131/153] fix(): resize event --- src/brushes/BaseBrush.ts | 5 +++-- src/canvas/Canvas.ts | 24 ++++++++++++------------ src/canvas/SelectableCanvas.ts | 13 ++++++++++--- src/canvas/StaticCanvas.ts | 1 + test/unit/brushes.js | 27 +++++++++++++++++++++++++++ test/unit/canvas_events.js | 6 +++--- 6 files changed, 56 insertions(+), 20 deletions(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index a67ad4e9657..86c994bcc77 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -14,8 +14,9 @@ export type TBrushEventData = TEvent & { pointer: Point }; * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo} */ export abstract class BaseBrush< - T extends FabricObject = FabricObject -> extends Observable { + T extends FabricObject = FabricObject, + EventSpec extends CanvasEvents = CanvasEvents +> extends Observable { /** * Color of a brush * @type String diff --git a/src/canvas/Canvas.ts b/src/canvas/Canvas.ts index 0d2f9e5564f..28ecc1cef55 100644 --- a/src/canvas/Canvas.ts +++ b/src/canvas/Canvas.ts @@ -135,7 +135,7 @@ export class Canvas extends SelectableCanvas { '_onMouseMove', '_onMouseUp', '_onTouchEnd', - '_onResize', + '_onWindowResize', // '_onGesture', // '_onDrag', // '_onShake', @@ -161,6 +161,14 @@ export class Canvas extends SelectableCanvas { this.addOrRemove(addListener, 'add'); } + protected _setDimensionsImpl( + dimensions: TSize, + options?: TCanvasSizeOptions + ) { + this._resetTransformEventData(); + super._setDimensionsImpl(dimensions, options); + } + /** * return an event prefix pointer or mouse. * @private @@ -172,7 +180,7 @@ export class Canvas extends SelectableCanvas { addOrRemove(functor: any, eventjsFunctor: 'add' | 'remove') { const canvasElement = this.upperCanvasEl, eventTypePrefix = this._getEventPrefix(); - functor(getEnv().window, 'resize', this._onResize); + functor(getEnv().window, 'resize', this._onWindowResize); functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown); functor( canvasElement, @@ -751,18 +759,9 @@ export class Canvas extends SelectableCanvas { /** * @private */ - _onResize() { + _onWindowResize() { this.calcOffset(); this._resetTransformEventData(); - this.fire('resize'); - } - - protected _setDimensionsImpl( - dimensions: TSize, - options?: TCanvasSizeOptions - ) { - this._resetTransformEventData(); - super._setDimensionsImpl(dimensions, options); } /** @@ -1587,6 +1586,7 @@ export class Canvas extends SelectableCanvas { * @override clear {@link textEditingManager} */ destroy() { + this.removeListeners(); super.destroy(); this.textEditingManager.dispose(); } diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 1fe7457409d..e3e2c6f5222 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -9,6 +9,7 @@ import { TPointerEvent, Transform, } from '../EventTypeDefs'; +import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import type { IText } from '../shapes/IText/IText'; import { FabricObject } from '../shapes/Object/FabricObject'; @@ -41,7 +42,7 @@ import { isCollection, isFabricObjectCached, } from '../util/types'; -import { StaticCanvas, TCanvasSizeOptions } from './StaticCanvas'; +import { StaticCanvas } from './StaticCanvas'; type TDestroyedCanvas = Omit< SelectableCanvas, @@ -495,6 +496,14 @@ export class SelectableCanvas< declare freeDrawingBrush?: BaseBrush; declare _activeObject?: FabricObject; + fire( + eventName: K, + options?: EventSpec[K] | TFabricEvent + ) { + const ev = this.freeDrawingBrush?.fire(eventName, options); + return super.fire(eventName, ev || options); + } + protected initElements(el: string | HTMLCanvasElement) { super.initElements(el); this._applyCanvasStyle(this.lowerCanvasEl); @@ -1492,8 +1501,6 @@ export class SelectableCanvas< lowerCanvasEl = this.lowerCanvasEl!, upperCanvasEl = this.upperCanvasEl!, cacheCanvasEl = this.cacheCanvasEl!; - // @ts-ignore - this.removeListeners(); super.destroy(); wrapperEl.removeChild(upperCanvasEl); wrapperEl.removeChild(lowerCanvasEl); diff --git a/src/canvas/StaticCanvas.ts b/src/canvas/StaticCanvas.ts index 08831accfb6..99c5915c508 100644 --- a/src/canvas/StaticCanvas.ts +++ b/src/canvas/StaticCanvas.ts @@ -495,6 +495,7 @@ export class StaticCanvas< cssOnly, backstoreOnly, }); + this.fire('resize'); if (!cssOnly) { this.requestRenderAll(); } diff --git a/test/unit/brushes.js b/test/unit/brushes.js index a077981dcb5..e802bcee62c 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -23,6 +23,7 @@ } }); + assert.ok(brush instanceof fabric.Observable, 'should inherit from fabric.Observable'); assert.ok(brush instanceof fabric.BaseBrush, 'should inherit from fabric.BaseBrush'); assert.ok(brush instanceof fabric.SimpleBrush, 'should inherit from fabric.SimpleBrush'); assert.equal(brush.color, 'rgb(0, 0, 0)', 'default color is black'); @@ -41,6 +42,32 @@ brush.start(); assert.equal(setCursor, 'testCursor', 'should set canvas cursor'); }); + QUnit.test('canvas event is fired on brush', function(assert) { + const done = assert.async(); + const brush = new fabric.SimpleBrush(canvas); + canvas.freeDrawingBrush = brush; + let e; + const fired = []; + Promise.all([ + new Promise(resolve => { + canvas.on('foo', ev => { + fired.push({ canvas: ev }); + resolve(); + }); + }), + new Promise(resolve => { + brush.on('foo', ev => { + fired.push({ brush: ev }); + resolve(); + }); + }) + ]).then(() => { + assert.equal(fired[0].brush, e, 'same event ref, firing order is kept') + assert.equal(fired[1].canvas, e, 'same event ref, firing order is kept') + done(); + }) + e = canvas.fire('foo', { bar: 'baz' }); + }); QUnit.test('fabric pencil brush constructor', function(assert) { assert.ok(fabric.PencilBrush); var brush = new fabric.PencilBrush(canvas); diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index 58a572eb6d1..ef79c6f03c8 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -112,7 +112,7 @@ // window resize cacheAndAssertTransformEvent(); - canvas._onResize(); + canvas._onWindowResize(); assertTransformEventCacheIsReset(); }); @@ -342,7 +342,7 @@ var prepareFor = false; var rendered = false; var canvas = new fabric.Canvas(null, { width: 500, height: 500 }); - var brush = new fabric.PencilBrush({ color: 'red', width: 4 }); + var brush = new fabric.SimpleBrush(canvas); canvas.isDrawingMode = true; canvas.freeDrawingBrush = brush; canvas.isCurrentlyDrawing = () => true; @@ -351,7 +351,7 @@ await new Promise(resolve => { Promise.all([ new Promise(resolve => canvas.on('resize', resolve)), - new Promise(resolve => canvas.on('after:render', resolve)) + new Promise(resolve => canvas.on('after:render', resolve)), ]).then(resolve); canvas.setDimensions({ width: 200, height: 200 }); }); From ba5fc89ce70daaf9b84319b577152a5125850ca4 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:09:35 +0200 Subject: [PATCH 132/153] Update CHANGELOG.md --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49b28939bbf..b405932654b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,11 +2,13 @@ ## [next] -- feat(Brush): `clipPath` [#8476](https://github.com/fabricjs/fabric.js/pull/8476) +- feat(Brush): new API, extend `Observable`, support `clipPath` [#8476](https://github.com/fabricjs/fabric.js/pull/8476) BREAKING: - brush doesn't add result to canvas anymore - `path:created`, `before:path:created` events are deprecated, use `interaction:completed` instead - `_render` method is now protected, use `render` instead + - renamed `PencilBrush#convertPointsToSVGPath` => `getPathFromPoints` + - `Canvas#freeDrawingCursor` => `Brush#cursor` - feat(): DrawShape, DrawOval, DrawPoly [#8430](https://github.com/fabricjs/fabric.js/pull/8430) - feat(): Node entry point [#8632](https://github.com/fabricjs/fabric.js/pull/8632) - chore(): Change import and export strategy [#8622](https://github.com/fabricjs/fabric.js/pull/8622) From 3549c5ce3f5982e4776656b440689298cd2851d1 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:16:35 +0200 Subject: [PATCH 133/153] comment --- src/brushes/BaseBrush.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index 86c994bcc77..fa0710f9578 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -98,6 +98,11 @@ export abstract class BaseBrush< }; } + /** + * This method wires the internal lifecycle to canvas events, + * making it very easy to change the hooks that the brush responds to. + * @returns an array of disposers + */ protected subscribe(): VoidFunction[] { return [this.on('resize', () => this._setBrushStyles())]; } From a4af26189d26ca7405f0f3f40adfb68213a623f5 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:23:02 +0200 Subject: [PATCH 134/153] clipping methods --- src/brushes/BaseBrush.ts | 55 +++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index fa0710f9578..fc88d588128 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -5,7 +5,11 @@ import { Observable } from '../Observable'; import type { Point } from '../Point'; import { Shadow } from '../Shadow'; import { FabricObject } from '../shapes/Object/FabricObject'; -import { multiplyTransformMatrices } from '../util/misc/matrix'; +import { TCachedFabricObject } from '../shapes/Object/Object'; +import { + invertTransform, + multiplyTransformMatrices, +} from '../util/misc/matrix'; import { sendObjectToPlane } from '../util/misc/planeChange'; export type TBrushEventData = TEvent & { pointer: Point }; @@ -194,22 +198,30 @@ export abstract class BaseBrush< ); } - /** - * needed for `absolutePositioned` `clipPath` - * @private - */ - calcTransformMatrix() { - return this.canvas.viewportTransform; - } - /** * @private * @param {CanvasRenderingContext2D} ctx * @param {FabricObject} clipPath */ - drawClipPathOnCache(ctx: CanvasRenderingContext2D, clipPath: FabricObject) { - // TODO: no proto calls - FabricObject.prototype.drawClipPathOnCache.call(this, ctx, clipPath); + private drawClipPathOnCache( + ctx: CanvasRenderingContext2D, + clipPath: TCachedFabricObject + ) { + ctx.save(); + ctx.globalCompositeOperation = clipPath.inverted + ? 'destination-out' + : 'destination-in'; + if (clipPath.absolutePositioned) { + ctx.transform(...invertTransform(this.canvas.viewportTransform)); + } + clipPath.transform(ctx); + ctx.scale(1 / clipPath.zoomX, 1 / clipPath.zoomY); + ctx.drawImage( + clipPath._cacheCanvas, + -clipPath.cacheTranslationX, + -clipPath.cacheTranslationY + ); + ctx.restore(); } /** @@ -217,14 +229,21 @@ export abstract class BaseBrush< * @param {CanvasRenderingContext2D} ctx * @param {FabricObject} clipPath */ - _drawClipPath(ctx: CanvasRenderingContext2D, clipPath?: FabricObject) { + protected _drawClipPath( + ctx: CanvasRenderingContext2D, + clipPath?: FabricObject + ) { if (!clipPath) { return; } - ctx.save(); - // TODO: no proto calls - FabricObject.prototype._drawClipPath.call(this, ctx, clipPath); - ctx.restore(); + // needed to setup a couple of variables + // path canvas gets overridden with this one. + // TODO find a better solution? + clipPath._set('canvas', this.canvas); + clipPath.shouldCache(); + clipPath._transformDone = true; + clipPath.renderCache({ forClipping: true }); + this.drawClipPathOnCache(ctx, clipPath as TCachedFabricObject); } /** @@ -240,7 +259,7 @@ export abstract class BaseBrush< clipPath, undefined, this.clipPath.absolutePositioned - ? multiplyTransformMatrices(this.calcTransformMatrix(), t) + ? multiplyTransformMatrices(this.canvas.viewportTransform, t) : t ); return clipPath; From aeb0f2ca69450335bc1ec296f421240bd9c44510 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:23:40 +0200 Subject: [PATCH 135/153] Update BaseBrush.ts --- src/brushes/BaseBrush.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index fc88d588128..fd867fb0532 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -4,7 +4,7 @@ import { CanvasEvents, TEvent } from '../EventTypeDefs'; import { Observable } from '../Observable'; import type { Point } from '../Point'; import { Shadow } from '../Shadow'; -import { FabricObject } from '../shapes/Object/FabricObject'; +import type { FabricObject } from '../shapes/Object/FabricObject'; import { TCachedFabricObject } from '../shapes/Object/Object'; import { invertTransform, From ae569e97d3b3a63f05d8acf85c2ab5fedfb30438 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:42:08 +0200 Subject: [PATCH 136/153] fix(PencilBrush): limitedToCanvasSize --- src/brushes/PencilBrush.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/brushes/PencilBrush.ts b/src/brushes/PencilBrush.ts index 90dc73a5ef3..19053849e29 100644 --- a/src/brushes/PencilBrush.ts +++ b/src/brushes/PencilBrush.ts @@ -75,10 +75,17 @@ export class PencilBrush extends SimpleBrush { this.render(); } + protected shouldHandleMoveEvent(ev: TPointerEventInfo) { + return this.active && this.shouldHandleEvent(ev); + } + move(ev: TFabricEvent) { super.move(ev); const { e, pointer } = ev; this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; + if (this.limitedToCanvasSize && this._isOutSideCanvas(ev.pointer)) { + this.oldEnd = ev.pointer; + } if (this._addPoint(pointer) && this._points.length > 1) { if (this.needsFullRender()) { // redraw curve From cace8d6987be83f48495cc3727496f4486a33e5b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:53:27 +0200 Subject: [PATCH 137/153] Revert "fix(PencilBrush): limitedToCanvasSize" This reverts commit ae569e97d3b3a63f05d8acf85c2ab5fedfb30438. --- src/brushes/PencilBrush.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/brushes/PencilBrush.ts b/src/brushes/PencilBrush.ts index 19053849e29..90dc73a5ef3 100644 --- a/src/brushes/PencilBrush.ts +++ b/src/brushes/PencilBrush.ts @@ -75,17 +75,10 @@ export class PencilBrush extends SimpleBrush { this.render(); } - protected shouldHandleMoveEvent(ev: TPointerEventInfo) { - return this.active && this.shouldHandleEvent(ev); - } - move(ev: TFabricEvent) { super.move(ev); const { e, pointer } = ev; this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; - if (this.limitedToCanvasSize && this._isOutSideCanvas(ev.pointer)) { - this.oldEnd = ev.pointer; - } if (this._addPoint(pointer) && this._points.length > 1) { if (this.needsFullRender()) { // redraw curve From 52aeeaf7a45a815a505945c3fa0c3f6d0a0b2b73 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 21:58:19 +0200 Subject: [PATCH 138/153] Update DrawShape.ts --- src/brushes/DrawShape.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index 6f0dfa239e9..a7b744b92ea 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -74,7 +74,6 @@ export class DrawShape extends DrawShapeBase { up(ev: TFabricEvent) { super.up(ev); - this.setBounds(this.pointerStart, ev.pointer); this.finalize(); } } From d3a61250377a07dd87ffcbb38594a32314779606 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sat, 4 Feb 2023 23:14:27 +0200 Subject: [PATCH 139/153] future proof: extractPointer ease of overriding --- src/brushes/CircleBrush.ts | 4 ++-- src/brushes/DrawPoly.ts | 8 ++++---- src/brushes/DrawShape.ts | 6 +++--- src/brushes/PencilBrush.ts | 13 +++++-------- src/brushes/SimpleBrush.ts | 6 +++++- src/brushes/SprayBrush.ts | 4 ++-- 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/brushes/CircleBrush.ts b/src/brushes/CircleBrush.ts index 4fdc654141f..710d5bf836c 100644 --- a/src/brushes/CircleBrush.ts +++ b/src/brushes/CircleBrush.ts @@ -93,7 +93,7 @@ export class CircleBrush extends SimpleBrush { this.points = []; this.canvas.clearContext(this.canvas.contextTop); this._setShadow(); - this.drawDot(ev.pointer); + this.drawDot(this.extractPointer(ev)); } protected _render(ctx: CanvasRenderingContext2D) { @@ -105,7 +105,7 @@ export class CircleBrush extends SimpleBrush { move(ev: TFabricEvent) { super.move(ev); - const { pointer } = ev; + const pointer = this.extractPointer(ev); if (this.needsFullRender()) { this.addPoint(pointer); this.render(); diff --git a/src/brushes/DrawPoly.ts b/src/brushes/DrawPoly.ts index f4f276b31cc..c0b8388ac2f 100644 --- a/src/brushes/DrawPoly.ts +++ b/src/brushes/DrawPoly.ts @@ -41,7 +41,7 @@ export class DrawPoly extends DrawShapeBase { down(ev: TFabricEvent) { super.down(ev); - const { pointer } = ev; + const pointer = this.extractPointer(ev); if (this.shape) { this.addPoint(pointer); } else { @@ -53,12 +53,12 @@ export class DrawPoly extends DrawShapeBase { move(ev: TFabricEvent) { super.move(ev); - this.replacePoint(ev.pointer); + this.replacePoint(this.extractPointer(ev)); } up(ev: TFabricEvent) { super.up(ev); - const { pointer } = ev; + const pointer = this.extractPointer(ev); this.replacePoint(pointer); this.addPoint(pointer); return true; @@ -66,7 +66,7 @@ export class DrawPoly extends DrawShapeBase { end(ev: TFabricEvent) { ev.preventDefault(); - this.shape && this.replacePoint(ev.pointer); + this.shape && this.replacePoint(this.extractPointer(ev)); this.finalize(); } } diff --git a/src/brushes/DrawShape.ts b/src/brushes/DrawShape.ts index a7b744b92ea..b1097c64e24 100644 --- a/src/brushes/DrawShape.ts +++ b/src/brushes/DrawShape.ts @@ -61,14 +61,14 @@ export class DrawShape extends DrawShapeBase { down(ev: TFabricEvent) { super.down(ev); this.build(); - this.pointerStart = ev.pointer; + this.pointerStart = this.extractPointer(ev); } move(ev: TFabricEvent) { super.move(ev); - const { e, pointer } = ev; + const { e } = ev; this.symmetric = this.modifierKey && e[this.modifierKey]; - this.setBounds(this.pointerStart, pointer); + this.setBounds(this.pointerStart, this.extractPointer(ev)); this.render(); } diff --git a/src/brushes/PencilBrush.ts b/src/brushes/PencilBrush.ts index 90dc73a5ef3..7c8549d58cd 100644 --- a/src/brushes/PencilBrush.ts +++ b/src/brushes/PencilBrush.ts @@ -1,10 +1,5 @@ import type { Canvas } from '../canvas/Canvas'; -import { - ModifierKey, - TEvent, - TPointerEvent, - TPointerEventInfo, -} from '../EventTypeDefs'; +import { ModifierKey, TPointerEventInfo } from '../EventTypeDefs'; import { TFabricEvent } from '../FabricEvent'; import { Point } from '../Point'; import { Path } from '../shapes/Path'; @@ -66,7 +61,8 @@ export class PencilBrush extends SimpleBrush { down(ev: TFabricEvent) { super.down(ev); - const { e, pointer } = ev; + const { e } = ev; + const pointer = this.extractPointer(ev); this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; this._prepareForDrawing(pointer); // capture coordinates immediately @@ -77,7 +73,8 @@ export class PencilBrush extends SimpleBrush { move(ev: TFabricEvent) { super.move(ev); - const { e, pointer } = ev; + const { e } = ev; + const pointer = this.extractPointer(ev); this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; if (this._addPoint(pointer) && this._points.length > 1) { if (this.needsFullRender()) { diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts index c7f3c275ae6..baf32272e54 100644 --- a/src/brushes/SimpleBrush.ts +++ b/src/brushes/SimpleBrush.ts @@ -31,6 +31,10 @@ export abstract class SimpleBrush< ]; } + protected extractPointer(ev: TFabricEvent) { + return ev.pointer; + } + protected shouldHandleEvent({ e }: TPointerEventInfo) { return this.canvas._isMainEvent(e); } @@ -39,7 +43,7 @@ export abstract class SimpleBrush< return ( this.active && this.shouldHandleEvent(ev) && - (!this.limitedToCanvasSize || !this._isOutSideCanvas(ev.pointer)) + (!this.limitedToCanvasSize || !this._isOutSideCanvas(ev.absolutePointer)) ); } diff --git a/src/brushes/SprayBrush.ts b/src/brushes/SprayBrush.ts index 070bea3b4b8..828274bc55a 100644 --- a/src/brushes/SprayBrush.ts +++ b/src/brushes/SprayBrush.ts @@ -129,13 +129,13 @@ export class SprayBrush extends SimpleBrush { this.canvas.clearContext(this.canvas.contextTop); this._setBrushStyles(); this._setShadow(); - this.addSprayChunk(ev.pointer); + this.addSprayChunk(this.extractPointer(ev)); this.renderChunk(this.sprayChunk); } move(ev: TFabricEvent) { super.move(ev); - this.addSprayChunk(ev.pointer); + this.addSprayChunk(this.extractPointer(ev)); this.renderChunk(this.sprayChunk); } From 22662a39c65c7ca2c65dbcc001750cde743a4ad5 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 00:21:44 +0200 Subject: [PATCH 140/153] remove down redundancy --- src/brushes/BaseBrush.ts | 2 ++ src/brushes/CircleBrush.ts | 2 -- src/brushes/DrawShapeBase.ts | 2 +- src/brushes/PatternBrush.ts | 2 +- src/brushes/SprayBrush.ts | 7 +++---- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index fd867fb0532..a2693a7049f 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -122,6 +122,8 @@ export abstract class BaseBrush< protected start() { this.active = true; this.canvas.setCursor(this.cursor); + this._setBrushStyles(); + this._setShadow(); } /** diff --git a/src/brushes/CircleBrush.ts b/src/brushes/CircleBrush.ts index 710d5bf836c..8b23ece1523 100644 --- a/src/brushes/CircleBrush.ts +++ b/src/brushes/CircleBrush.ts @@ -91,8 +91,6 @@ export class CircleBrush extends SimpleBrush { down(ev: TFabricEvent) { super.down(ev); this.points = []; - this.canvas.clearContext(this.canvas.contextTop); - this._setShadow(); this.drawDot(this.extractPointer(ev)); } diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index a8ffb186565..d88374c3333 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -41,7 +41,7 @@ export abstract class DrawShapeBase< return shape; } - _setBrushStyles() { + protected _setBrushStyles() { this.setStyles(); } diff --git a/src/brushes/PatternBrush.ts b/src/brushes/PatternBrush.ts index 81b3d2306f5..6bf52468b4e 100644 --- a/src/brushes/PatternBrush.ts +++ b/src/brushes/PatternBrush.ts @@ -46,7 +46,7 @@ export class PatternBrush extends PencilBrush { * Sets brush styles * @param {CanvasRenderingContext2D} ctx */ - _setBrushStyles(ctx: CanvasRenderingContext2D) { + protected _setBrushStyles(ctx: CanvasRenderingContext2D) { super._setBrushStyles(ctx); const pattern = this.getPattern(ctx); pattern && (ctx.strokeStyle = pattern); diff --git a/src/brushes/SprayBrush.ts b/src/brushes/SprayBrush.ts index 828274bc55a..63f0f684bc8 100644 --- a/src/brushes/SprayBrush.ts +++ b/src/brushes/SprayBrush.ts @@ -92,7 +92,9 @@ export class SprayBrush extends SimpleBrush { this.sprayChunk = []; } - _setBrushStyles(ctx: CanvasRenderingContext2D = this.canvas.contextTop) { + protected _setBrushStyles( + ctx: CanvasRenderingContext2D = this.canvas.contextTop + ) { super._setBrushStyles(ctx); ctx.fillStyle = this.color; } @@ -126,9 +128,6 @@ export class SprayBrush extends SimpleBrush { down(ev: TFabricEvent) { super.down(ev); this.sprayChunks = []; - this.canvas.clearContext(this.canvas.contextTop); - this._setBrushStyles(); - this._setShadow(); this.addSprayChunk(this.extractPointer(ev)); this.renderChunk(this.sprayChunk); } From ac75b893f69d5fcef8a7b599fe129ee1368196fd Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 00:25:56 +0200 Subject: [PATCH 141/153] cleanup pencil --- src/brushes/PencilBrush.ts | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/src/brushes/PencilBrush.ts b/src/brushes/PencilBrush.ts index 7c8549d58cd..88b360de073 100644 --- a/src/brushes/PencilBrush.ts +++ b/src/brushes/PencilBrush.ts @@ -64,10 +64,11 @@ export class PencilBrush extends SimpleBrush { const { e } = ev; const pointer = this.extractPointer(ev); this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey]; - this._prepareForDrawing(pointer); // capture coordinates immediately // this allows to draw dots (when movement never occurs) - this._addPoint(pointer); + this._points = [pointer, pointer]; + this._hasStraightLine = false; + this.canvas.contextTop.moveTo(pointer.x, pointer.y); this.render(); } @@ -94,15 +95,6 @@ export class PencilBrush extends SimpleBrush { this.finalize(); } - /** - * @param {Point} pointer Actual mouse position related to the canvas. - */ - protected _prepareForDrawing(pointer: Point) { - this._reset(); - this._addPoint(pointer); - this.canvas.contextTop.moveTo(pointer.x, pointer.y); - } - /** * @param {Point} point Point to be added to points array */ @@ -121,17 +113,6 @@ export class PencilBrush extends SimpleBrush { return true; } - /** - * Clear points array and set contextTop canvas style. - * @private - */ - _reset() { - this._points = []; - this._setBrushStyles(this.canvas.contextTop); - this._setShadow(); - this._hasStraightLine = false; - } - /** * draw the curve update */ From bc0e900f10d14607b391105787a75f66a1b5caf7 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 00:39:18 +0200 Subject: [PATCH 142/153] setViewportTransform + drawing --- src/canvas/SelectableCanvas.ts | 4 ++++ src/canvas/StaticCanvas.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index e3e2c6f5222..6e27838940e 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -1477,6 +1477,10 @@ export class SelectableCanvas< * @param {Array} vpt a Canvas 2D API transform matrix */ setViewportTransform(vpt: TMat2D) { + if (this.isCurrentlyDrawing()) { + // force brush to redraw + this.shouldClearContextTop = true; + } super.setViewportTransform(vpt); const activeObject = this._activeObject; if (activeObject) { diff --git a/src/canvas/StaticCanvas.ts b/src/canvas/StaticCanvas.ts index 99c5915c508..088c119f411 100644 --- a/src/canvas/StaticCanvas.ts +++ b/src/canvas/StaticCanvas.ts @@ -553,7 +553,7 @@ export class StaticCanvas< overlayObject.setCoords(); } this.calcViewportBoundaries(); - this.renderOnAddRemove && this.requestRenderAll(); + this.requestRenderAll(); } /** From 5a1f38120f1337fb660373a501518a9d016be873 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 00:48:47 +0200 Subject: [PATCH 143/153] Update brushes.js --- test/unit/brushes.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/unit/brushes.js b/test/unit/brushes.js index e802bcee62c..f73db3fc18d 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -4,7 +4,8 @@ function fireBrushEvent(brush, type, pointer) { brush.fire(`mouse:${type}:before`, fabric.Event.init({ e: {}, - pointer + pointer, + absolutePointer: brush.canvas._isRetinaScaling() ? brush.canvas.restorePointerVpt(pointer) : pointer })); } QUnit.module('fabric.BaseBrush', function(hooks) { @@ -35,7 +36,8 @@ const brush = new fabric.SimpleBrush({ setCursor(cursor) { setCursor = cursor; - } + }, + contextTop: canvas.contextTop }); assert.equal(brush.cursor, 'crosshair', 'default cursor'); brush.cursor = 'testCursor'; From 60147f276379b1556d2373641195d49cb5186e9f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 00:51:13 +0200 Subject: [PATCH 144/153] Update PatternBrush.ts --- src/brushes/PatternBrush.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/brushes/PatternBrush.ts b/src/brushes/PatternBrush.ts index 6bf52468b4e..693549a7798 100644 --- a/src/brushes/PatternBrush.ts +++ b/src/brushes/PatternBrush.ts @@ -46,7 +46,9 @@ export class PatternBrush extends PencilBrush { * Sets brush styles * @param {CanvasRenderingContext2D} ctx */ - protected _setBrushStyles(ctx: CanvasRenderingContext2D) { + protected _setBrushStyles( + ctx: CanvasRenderingContext2D = this.canvas.contextTop + ) { super._setBrushStyles(ctx); const pattern = this.getPattern(ctx); pattern && (ctx.strokeStyle = pattern); From 9d3b47ba5d1e53fd9ca637cdce1df90c4a8e61e3 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 01:01:15 +0200 Subject: [PATCH 145/153] setVpt + brush.clipPath --- src/canvas/SelectableCanvas.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 6e27838940e..785af1369b4 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -1480,6 +1480,7 @@ export class SelectableCanvas< if (this.isCurrentlyDrawing()) { // force brush to redraw this.shouldClearContextTop = true; + this.freeDrawingBrush!.clipPath?.setCoords(); } super.setViewportTransform(vpt); const activeObject = this._activeObject; From 65da3a299d0dadb61f9fc159bc116683473ea09f Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 01:16:17 +0200 Subject: [PATCH 146/153] fix(vpt): move to `absolutePointer` fix(vpt): move to `absolutePointer` test --- src/brushes/BaseBrush.ts | 15 ++++++++++----- src/brushes/DrawShapeBase.ts | 6 ------ src/brushes/PatternBrush.ts | 2 +- src/brushes/SimpleBrush.ts | 2 +- test/unit/draw_shapes.js | 3 ++- test/visual/freedraw.js | 3 ++- .../clipping/pattern_vpt_abs_inv_result.png | Bin 14768 -> 23131 bytes .../clipping/pattern_vpt_abs_inv_top_ctx.png | Bin 14768 -> 5189 bytes .../clipping/pattern_vpt_inv_result.png | Bin 15300 -> 23594 bytes .../clipping/pattern_vpt_inv_top_ctx.png | Bin 15300 -> 5650 bytes .../clipping/pencil_vpt_abs_inv_result.png | Bin 8230 -> 6203 bytes .../clipping/pencil_vpt_abs_inv_top_ctx.png | Bin 8230 -> 3538 bytes .../clipping/pencil_vpt_inv_result.png | Bin 9333 -> 6478 bytes .../clipping/pencil_vpt_inv_top_ctx.png | Bin 9333 -> 4232 bytes 14 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index a2693a7049f..9cf4c9784d2 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -76,6 +76,7 @@ export abstract class BaseBrush< * Same as FabricObject `clipPath` property. * The clip path is positioned relative to the top left corner of the viewport. * The `absolutePositioned` property renders the clip path w/o viewport transform. + * The clip path is prone to the `setCoords` gotcha. */ clipPath?: FabricObject; @@ -143,7 +144,7 @@ export abstract class BaseBrush< } transform(ctx: CanvasRenderingContext2D) { - ctx.transform(...this.canvas.viewportTransform); + // noop } protected needsFullRender() { @@ -213,8 +214,8 @@ export abstract class BaseBrush< ctx.globalCompositeOperation = clipPath.inverted ? 'destination-out' : 'destination-in'; - if (clipPath.absolutePositioned) { - ctx.transform(...invertTransform(this.canvas.viewportTransform)); + if (!clipPath.absolutePositioned) { + ctx.transform(...this.canvas.viewportTransform); } clipPath.transform(ctx); ctx.scale(1 / clipPath.zoomX, 1 / clipPath.zoomY); @@ -260,8 +261,11 @@ export abstract class BaseBrush< sendObjectToPlane( clipPath, undefined, - this.clipPath.absolutePositioned - ? multiplyTransformMatrices(this.canvas.viewportTransform, t) + !this.clipPath.absolutePositioned + ? multiplyTransformMatrices( + invertTransform(this.canvas.viewportTransform), + t + ) : t ); return clipPath; @@ -297,6 +301,7 @@ export abstract class BaseBrush< shadow: this.shadow ? new Shadow(this.shadow) : undefined, clipPath: await this.createClipPath(shape), }); + sendObjectToPlane(shape, undefined, this.canvas.viewportTransform); shape.setCoords(); } this.onEnd(shape); diff --git a/src/brushes/DrawShapeBase.ts b/src/brushes/DrawShapeBase.ts index d88374c3333..a60c9789f63 100644 --- a/src/brushes/DrawShapeBase.ts +++ b/src/brushes/DrawShapeBase.ts @@ -45,12 +45,6 @@ export abstract class DrawShapeBase< this.setStyles(); } - transform(ctx: CanvasRenderingContext2D) { - const t = this.canvas.viewportTransform; - const offset = new Point().transform(t); - ctx.transform(t[0], t[1], t[2], t[3], -offset.x, -offset.y); - } - protected _render(ctx: CanvasRenderingContext2D) { ctx.save(); this.shape!.transform(ctx); diff --git a/src/brushes/PatternBrush.ts b/src/brushes/PatternBrush.ts index 693549a7798..ffc160f8ca9 100644 --- a/src/brushes/PatternBrush.ts +++ b/src/brushes/PatternBrush.ts @@ -38,7 +38,7 @@ export class PatternBrush extends PencilBrush { * Creates "pattern" instance property * @param {CanvasRenderingContext2D} ctx */ - getPattern(ctx: CanvasRenderingContext2D) { + protected getPattern(ctx: CanvasRenderingContext2D) { return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat'); } diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts index baf32272e54..d3164f7e2a6 100644 --- a/src/brushes/SimpleBrush.ts +++ b/src/brushes/SimpleBrush.ts @@ -32,7 +32,7 @@ export abstract class SimpleBrush< } protected extractPointer(ev: TFabricEvent) { - return ev.pointer; + return ev.absolutePointer; } protected shouldHandleEvent({ e }: TPointerEventInfo) { diff --git a/test/unit/draw_shapes.js b/test/unit/draw_shapes.js index 0162d4d79b6..f89c9e470d4 100644 --- a/test/unit/draw_shapes.js +++ b/test/unit/draw_shapes.js @@ -4,7 +4,8 @@ function fireBrushEvent(brush, type, pointer, { suffix = ':before', e = {} } = {}) { brush.fire(`mouse:${type}${suffix}`, fabric.Event.init({ e, - pointer + pointer, + absolutePointer: brush.canvas._isRetinaScaling() ? brush.canvas.restorePointerVpt(pointer) : pointer })); } hooks.before(() => { diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index 1949297495b..ef32c15f233 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -5,7 +5,8 @@ function setBrush(canvas, brush) { function fireBrushEvent(brush, type, pointer) { brush.fire(`mouse:${type}:before`, fabric.Event.init({ e: { pointerId: 1 }, - pointer + pointer, + absolutePointer: brush.canvas._isRetinaScaling() ? brush.canvas.restorePointerVpt(pointer) : pointer })); } function pointDrawer(points, brush, onComplete = false, onMove = undefined) { diff --git a/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_result.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_result.png index 7b9fd2e5e675e958521ef64df98dbb6963a1a950..e799718987e6be60ca1e044abaafb0b99af2839e 100644 GIT binary patch literal 23131 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

UKs}X( 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 diff --git a/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_abs_inv_top_ctx.png index 7b9fd2e5e675e958521ef64df98dbb6963a1a950..d348811feb1ced926314ee13741672135199b54d 100644 GIT binary patch literal 5189 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

UKs}X( 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 diff --git a/test/visual/golden/freedrawing/clipping/pattern_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping/pattern_vpt_inv_result.png index 5b5b30fa9657c61f20e318603c5b2e1385e48dce..ec7603ebfa6dc5c04c3ba922c1b3228f6e74f050 100644 GIT binary patch literal 23594 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 BIG+Fj literal 15300 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 ByWRi* literal 15300 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 literal 8230 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 K^w7F4Fa8hCzLz=x diff --git a/test/visual/golden/freedrawing/clipping/pencil_vpt_abs_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping/pencil_vpt_abs_inv_top_ctx.png index 67971e3f944569e47a3682878b968ec92aa156e2..5f6ebb68b2a2eafb2efeadae3a2ae1f825acf224 100644 GIT binary patch literal 3538 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 Qye18B(Hd=4W#OCrPkGOpa{vGU literal 8230 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 K^w7F4Fa8hCzLz=x diff --git a/test/visual/golden/freedrawing/clipping/pencil_vpt_inv_result.png b/test/visual/golden/freedrawing/clipping/pencil_vpt_inv_result.png index 2719929a6396764961104eaa17a77aeb8070dd49..1480b90b5f62e6aa2a73d6385f7e471951e99a04 100644 GIT binary patch literal 6478 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 literal 9333 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 diff --git a/test/visual/golden/freedrawing/clipping/pencil_vpt_inv_top_ctx.png b/test/visual/golden/freedrawing/clipping/pencil_vpt_inv_top_ctx.png index 2719929a6396764961104eaa17a77aeb8070dd49..922ac157114c16288b933a044a8b19be93ae51cf 100644 GIT binary patch literal 4232 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 literal 9333 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 z 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 Zf`tE@W4|4EiaAFFfT-%K)GOIV{|_ZkqqzV8 From 3c92b86bab62d0b9ca8019254fb88220005940ba Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 08:20:13 +0200 Subject: [PATCH 147/153] fix setCoords timing --- src/canvas/SelectableCanvas.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 785af1369b4..42352173e60 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -1477,16 +1477,14 @@ export class SelectableCanvas< * @param {Array} vpt a Canvas 2D API transform matrix */ setViewportTransform(vpt: TMat2D) { + const objects: (FabricObject | undefined)[] = [this._activeObject]; if (this.isCurrentlyDrawing()) { // force brush to redraw this.shouldClearContextTop = true; - this.freeDrawingBrush!.clipPath?.setCoords(); + objects.push(this.freeDrawingBrush!.clipPath); } super.setViewportTransform(vpt); - const activeObject = this._activeObject; - if (activeObject) { - activeObject.setCoords(); - } + objects.forEach((object) => object?.setCoords()); } /** From 7d899bb2c62abff0eebd28957641c82011e08cec Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 09:09:35 +0200 Subject: [PATCH 148/153] fix(): respect `isDrawingMode` --- src/brushes/SimpleBrush.ts | 14 ++++--- src/canvas/SelectableCanvas.ts | 4 +- test/unit/brushes.js | 68 +++++++++++++++++++++++++++++++--- 3 files changed, 74 insertions(+), 12 deletions(-) diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts index d3164f7e2a6..374ac0f4e9d 100644 --- a/src/brushes/SimpleBrush.ts +++ b/src/brushes/SimpleBrush.ts @@ -18,7 +18,7 @@ export abstract class SimpleBrush< ...super.subscribe(), this.on( 'mouse:down:before', - (ev) => this.shouldHandleEvent(ev) && this.down(ev) + (ev) => this.shouldHandleEvent(ev, false) && this.down(ev) ), this.on( 'mouse:move:before', @@ -26,7 +26,7 @@ export abstract class SimpleBrush< ), this.on( 'mouse:up:before', - (ev) => this.shouldHandleEvent(ev) && this.up(ev) + (ev) => this.shouldHandleEvent(ev, true) && this.up(ev) ), ]; } @@ -35,19 +35,21 @@ export abstract class SimpleBrush< return ev.absolutePointer; } - protected shouldHandleEvent({ e }: TPointerEventInfo) { - return this.canvas._isMainEvent(e); + protected shouldHandleEvent({ e }: TPointerEventInfo, mustBeActive: boolean) { + return this.canvas._isMainEvent(e) && (!mustBeActive || this.active); } protected shouldHandleMoveEvent(ev: TPointerEventInfo) { return ( - this.active && - this.shouldHandleEvent(ev) && + this.shouldHandleEvent(ev, true) && (!this.limitedToCanvasSize || !this._isOutSideCanvas(ev.absolutePointer)) ); } protected down(ev: TFabricEvent) { + if (!this.canvas.isDrawingMode) { + return; + } ev.preventDefault(); this.start(); if (this.canvas.getActiveObject()) { diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 42352173e60..46f647282b9 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -599,7 +599,9 @@ export class SelectableCanvas< return; } if ( - (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) || + (this.contextTopDirty && + !this._groupSelector && + !this.isCurrentlyDrawing()) || this.shouldClearContextTop ) { this.clearContext(this.contextTop); diff --git a/test/unit/brushes.js b/test/unit/brushes.js index f73db3fc18d..eee37ce41b9 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -2,13 +2,17 @@ var canvas = new fabric.Canvas(); var parsePath = fabric.util.parsePath; function fireBrushEvent(brush, type, pointer) { + const { canvas } = brush; brush.fire(`mouse:${type}:before`, fabric.Event.init({ e: {}, pointer, - absolutePointer: brush.canvas._isRetinaScaling() ? brush.canvas.restorePointerVpt(pointer) : pointer + absolutePointer: canvas._isRetinaScaling && canvas._isRetinaScaling() ? canvas.restorePointerVpt(pointer) : pointer })); } - QUnit.module('fabric.BaseBrush', function(hooks) { + QUnit.module('fabric.BaseBrush', function (hooks) { + hooks.beforeEach(function() { + canvas.isDrawingMode = true; + }); hooks.afterEach(function() { canvas.cancelRequestedRender(); }); @@ -31,19 +35,59 @@ assert.equal(brush.width, 1, 'default width is 1'); assert.equal(brush.cursor, 'crosshair', 'default cursor'); }); - QUnit.test('start', function(assert) { + QUnit.test('down should call start and discard active object', function(assert) { + let called = false, discarded = false, rendered = false; + const brush = new fabric.SimpleBrush({ + isDrawingMode: true, + contextTop: canvas.contextTop, + _activeObject: {}, + _isMainEvent() { + return true; + }, + getActiveObject() { + return this._activeObject; + }, + discardActiveObject() { + discarded = true; + }, + requestRenderAll() { + rendered = true; + } + }); + brush.start = () => { + called = true; + } + fireBrushEvent(brush, 'down', new fabric.Point()); + assert.ok(called, 'should call start'); + assert.ok(discarded && rendered, 'should discard active object'); + }); + QUnit.test('start sets cursor', function(assert) { let setCursor; const brush = new fabric.SimpleBrush({ + contextTop: canvas.contextTop, setCursor(cursor) { setCursor = cursor; - }, - contextTop: canvas.contextTop + } }); assert.equal(brush.cursor, 'crosshair', 'default cursor'); brush.cursor = 'testCursor'; brush.start(); assert.equal(setCursor, 'testCursor', 'should set canvas cursor'); }); + QUnit.test('down: not a respected event', function(assert) { + let called = false, checked = false; + const brush = new fabric.SimpleBrush({ + _isMainEvent() { + checked = true; + return true; + }, + down() { + called = true; + } + }); + fireBrushEvent(brush, 'down', new fabric.Point()); + assert.ok(!called && checked, 'should not call down'); + }); QUnit.test('canvas event is fired on brush', function(assert) { const done = assert.async(); const brush = new fabric.SimpleBrush(canvas); @@ -70,6 +114,20 @@ }) e = canvas.fire('foo', { bar: 'baz' }); }); + QUnit.test('respecting isDrawingMode', function(assert) { + const brush = new fabric.SimpleBrush(canvas); + canvas.freeDrawingBrush = brush; + canvas.isDrawingMode = false; + let fired = false, called = false; + brush.on('mouse:down:before', () => (fired = true)); + fireBrushEvent(brush, 'down', new fabric.Point()); + assert.ok(fired, 'should fire down on brush'); + assert.ok(!brush.active, 'brush should not activate'); + brush.move = brush.up = () => (called = true); + fireBrushEvent(brush, 'move', new fabric.Point()); + fireBrushEvent(brush, 'up', new fabric.Point()); + assert.ok(!called, 'brush methods should not be called'); + }); QUnit.test('fabric pencil brush constructor', function(assert) { assert.ok(fabric.PencilBrush); var brush = new fabric.PencilBrush(canvas); From 01610a21e6eb759434fd6cdde06720774a3a8660 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 09:21:12 +0200 Subject: [PATCH 149/153] dep(): `isDrawingMode` => `brush#enabled` --- src/brushes/BaseBrush.ts | 14 ++++++++++++++ src/brushes/SimpleBrush.ts | 9 +++++---- src/canvas/SelectableCanvas.ts | 14 ++------------ src/canvas/canvas_gestures.mixin.ts | 2 +- test/unit/brushes.js | 15 ++++++++------- test/unit/canvas_events.js | 5 +---- test/visual/freedraw.js | 2 -- 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/brushes/BaseBrush.ts b/src/brushes/BaseBrush.ts index 9cf4c9784d2..a375a9b77c9 100644 --- a/src/brushes/BaseBrush.ts +++ b/src/brushes/BaseBrush.ts @@ -91,6 +91,8 @@ export abstract class BaseBrush< active = false; + enabled = true; + private _disposer?: () => void; constructor(canvas: Canvas) { @@ -116,6 +118,18 @@ export abstract class BaseBrush< this._disposer && this._disposer(); } + enable() { + this.enabled = true; + } + + disable() { + this.enabled = false; + if (this.active) { + this.canvas.clearContext(this.canvas.contextTop); + this.active = false; + } + } + protected abstract _render(ctx: CanvasRenderingContext2D): void; protected abstract finalizeShape(): T | undefined; diff --git a/src/brushes/SimpleBrush.ts b/src/brushes/SimpleBrush.ts index 374ac0f4e9d..af9e6796be3 100644 --- a/src/brushes/SimpleBrush.ts +++ b/src/brushes/SimpleBrush.ts @@ -36,7 +36,11 @@ export abstract class SimpleBrush< } protected shouldHandleEvent({ e }: TPointerEventInfo, mustBeActive: boolean) { - return this.canvas._isMainEvent(e) && (!mustBeActive || this.active); + return ( + this.enabled && + (!mustBeActive || this.active) && + this.canvas._isMainEvent(e) + ); } protected shouldHandleMoveEvent(ev: TPointerEventInfo) { @@ -47,9 +51,6 @@ export abstract class SimpleBrush< } protected down(ev: TFabricEvent) { - if (!this.canvas.isDrawingMode) { - return; - } ev.preventDefault(); this.start(); if (this.canvas.getActiveObject()) { diff --git a/src/canvas/SelectableCanvas.ts b/src/canvas/SelectableCanvas.ts index 46f647282b9..dc14d592f3f 100644 --- a/src/canvas/SelectableCanvas.ts +++ b/src/canvas/SelectableCanvas.ts @@ -359,16 +359,6 @@ export class SelectableCanvas< */ declare skipTargetFind: boolean; - /** - * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing. - * After mousedown, mousemove creates a shape, - * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas. - * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing} - * @type Boolean - * @default - */ - declare isDrawingMode: boolean; - /** * Indicates whether objects should remain in current stack position when selected. * When false objects are brought to top and rendered as part of the selection group @@ -1304,7 +1294,7 @@ export class SelectableCanvas< } isCurrentlyDrawing(): this is AssertKeys { - return !!(this.isDrawingMode && this.freeDrawingBrush?.active); + return !!this.freeDrawingBrush?.active; } /** @@ -1483,7 +1473,7 @@ export class SelectableCanvas< if (this.isCurrentlyDrawing()) { // force brush to redraw this.shouldClearContextTop = true; - objects.push(this.freeDrawingBrush!.clipPath); + objects.push(this.freeDrawingBrush.clipPath); } super.setViewportTransform(vpt); objects.forEach((object) => object?.setCoords()); diff --git a/src/canvas/canvas_gestures.mixin.ts b/src/canvas/canvas_gestures.mixin.ts index 344e023e8c7..43c32203952 100644 --- a/src/canvas/canvas_gestures.mixin.ts +++ b/src/canvas/canvas_gestures.mixin.ts @@ -26,7 +26,7 @@ Object.assign(Canvas.prototype, { */ __onTransformGesture: function (e, self) { if ( - this.isDrawingMode || + // this.isDrawingMode || // I don't know what to do here !e.touches || e.touches.length !== 2 || 'gesture' !== self.gesture diff --git a/test/unit/brushes.js b/test/unit/brushes.js index eee37ce41b9..da45510cd78 100644 --- a/test/unit/brushes.js +++ b/test/unit/brushes.js @@ -10,9 +10,7 @@ })); } QUnit.module('fabric.BaseBrush', function (hooks) { - hooks.beforeEach(function() { - canvas.isDrawingMode = true; - }); + hooks.afterEach(function() { canvas.cancelRequestedRender(); }); @@ -38,7 +36,6 @@ QUnit.test('down should call start and discard active object', function(assert) { let called = false, discarded = false, rendered = false; const brush = new fabric.SimpleBrush({ - isDrawingMode: true, contextTop: canvas.contextTop, _activeObject: {}, _isMainEvent() { @@ -79,7 +76,7 @@ const brush = new fabric.SimpleBrush({ _isMainEvent() { checked = true; - return true; + return false; }, down() { called = true; @@ -114,10 +111,14 @@ }) e = canvas.fire('foo', { bar: 'baz' }); }); - QUnit.test('respecting isDrawingMode', function(assert) { + QUnit.test('disabling brush', function(assert) { const brush = new fabric.SimpleBrush(canvas); canvas.freeDrawingBrush = brush; - canvas.isDrawingMode = false; + brush.active = true; + assert.ok(brush.enabled, 'disabled brush'); + brush.disable(); + assert.ok(!brush.enabled, 'disabled brush'); + assert.ok(!brush.active, 'deactivated brush'); let fired = false, called = false; brush.on('mouse:down:before', () => (fired = true)); fireBrushEvent(brush, 'down', new fabric.Point()); diff --git a/test/unit/canvas_events.js b/test/unit/canvas_events.js index ef79c6f03c8..bc615bc323c 100644 --- a/test/unit/canvas_events.js +++ b/test/unit/canvas_events.js @@ -125,7 +125,6 @@ canvas.fireMiddleClick = false; canvas.fireRightClick = false; canvas._currentTransform = false; - canvas.isDrawingMode = false; canvas.__onMouseDown({ button: 0, target: canvas.upperCanvasEl }); assert.equal(clickCount, 1, 'mouse down fired'); clickCount = 0; @@ -151,7 +150,6 @@ canvas.fireMiddleClick = false; canvas.fireRightClick = false; canvas._currentTransform = false; - canvas.isDrawingMode = false; canvas.__onMouseDown({ which: 1, target: canvas.upperCanvasEl }); assert.equal(clickCount, 1, 'mouse:down:before fired'); clickCount = 0; @@ -343,9 +341,8 @@ var rendered = false; var canvas = new fabric.Canvas(null, { width: 500, height: 500 }); var brush = new fabric.SimpleBrush(canvas); - canvas.isDrawingMode = true; canvas.freeDrawingBrush = brush; - canvas.isCurrentlyDrawing = () => true; + brush.active = true; brush.render = () => { rendered = true; }; brush._setBrushStyles = () => { prepareFor = true }; await new Promise(resolve => { diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index ef32c15f233..492245f0d07 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -1,5 +1,4 @@ function setBrush(canvas, brush) { - canvas.isDrawingMode = true; canvas.freeDrawingBrush = brush; } function fireBrushEvent(brush, type, pointer) { @@ -2310,7 +2309,6 @@ QUnit.module('Free Drawing', hooks => { canvas.viewportCenterObject(clipPath); brush.clipPath = clipPath; canvas.freeDrawingBrush = brush; - canvas.isDrawingMode = true; vpt && canvas.setViewportTransform([1, fabric.util.degreesToRadians(45), 0, 1, 0, -100]) pointDrawer(pointsToCover, brush); }, From 804ef496fb073aa9e31864dc0d6ce0686abeb24b Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 10:03:16 +0200 Subject: [PATCH 150/153] feat(FabricEvent): `path` --- src/FabricEvent.ts | 3 +++ src/Observable.ts | 3 +++ test/unit/observable.js | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/src/FabricEvent.ts b/src/FabricEvent.ts index 2ab0a2d91e6..d16b40ff97d 100644 --- a/src/FabricEvent.ts +++ b/src/FabricEvent.ts @@ -1,8 +1,11 @@ +import type { Observable } from './Observable'; + export type TFabricEvent = FabricEvent & T; export class FabricEvent { declare defaultPrevented: boolean; declare propagate: boolean; + path: Observable[] = []; static init(data?: T) { return new FabricEvent(data) as TFabricEvent; } diff --git a/src/Observable.ts b/src/Observable.ts index f83ed31ddce..9d4c1b7aa63 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -169,10 +169,13 @@ export class Observable { const ev = options instanceof FabricEvent ? options : FabricEvent.init(options); if (this.__eventListeners && this.__eventListeners[eventName]) { + let called = false; const listenersForEvent = this.__eventListeners[eventName].concat(); for (let i = 0; i < listenersForEvent.length; i++) { + called = true; listenersForEvent[i].call(this, ev); } + called && ev.path.push(this); } return ev; } diff --git a/test/unit/observable.js b/test/unit/observable.js index 2799ee09a95..ade862ed2fa 100644 --- a/test/unit/observable.js +++ b/test/unit/observable.js @@ -62,6 +62,44 @@ QUnit.test('fire event/object', function (assert) { assert.equal(fired.propagate, false, 'propagation prevented'); }); +QUnit.module('event path', (hooks) => { + const a = new fabric.Observable(), b = new fabric.Observable(); + hooks.afterEach(() => { + a.off(); + b.off(); + }); + function fire(targets, control, subscribe, message) { + QUnit.test(message, assert => { + const ev = fabric.Event.init({ foo: 'bar' }); + subscribe && subscribe(); + targets.forEach(target => target.fire('foo', ev)); + assert.equal(ev.path.length, control.length, 'event path should match'); + ev.path.forEach((o, i) => assert.equal(o, control[i], `path[${i}] should match`)); + }); + } + fire([a, b], [], null, 'no registered event handlers'); + const subscribe = () => { + a.on('foo', () => { }); + b.on('foo', () => { }); + } + fire([a], [a], subscribe, 'a only'); + fire([a, b], [a, b], subscribe, 'a & b'); + fire([a, b, b, a], [a, b, b, a], subscribe, 'multiple firing'); + const multipleSubscriber = () => { + a.on('foo', () => { }); + a.on('foo', () => { }); + a.on('foo', () => { }); + b.on('foo', () => { }); + } + fire([b, a], [b, a], multipleSubscriber, 'multiple subscriptions'); + const subscribeWithDisposing = () => { + a.on('foo', () => { }); + a.on('foo', () => { })(); + b.on('foo', () => { }); + } + fire([b, a], [b, a], subscribeWithDisposing, 'respect disposing'); +}); + QUnit.test('fire once', function (assert) { var foo = new fabric.Observable(); From 7d9abf522356f3b39583bdf0ddaea3bc20077466 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 10:44:00 +0200 Subject: [PATCH 151/153] feat(FabricEvent): stop propagation --- src/FabricEvent.ts | 36 +++++++++++++++-- src/Observable.ts | 14 ++++++- test/unit/observable.js | 86 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 131 insertions(+), 5 deletions(-) diff --git a/src/FabricEvent.ts b/src/FabricEvent.ts index d16b40ff97d..dee87a1f713 100644 --- a/src/FabricEvent.ts +++ b/src/FabricEvent.ts @@ -2,13 +2,21 @@ import type { Observable } from './Observable'; export type TFabricEvent = FabricEvent & T; +export enum PropagationState { + propagate = 1, + stop = 0, + stopImmediately = -1, +} + export class FabricEvent { declare defaultPrevented: boolean; - declare propagate: boolean; + declare propagate: PropagationState; path: Observable[] = []; + static init(data?: T) { return new FabricEvent(data) as TFabricEvent; } + private constructor(data?: T) { Object.defineProperties(this, { defaultPrevented: { @@ -18,7 +26,7 @@ export class FabricEvent { writable: true, }, propagate: { - value: true, + value: PropagationState.propagate, enumerable: false, configurable: false, writable: true, @@ -26,10 +34,32 @@ export class FabricEvent { }); Object.assign(this, data || {}); } + + /** + * https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault + */ preventDefault() { this.defaultPrevented = true; } + + /** + * https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation + */ stopPropagation() { - this.propagate = false; + this.propagate = PropagationState.stop; + } + + /** + * https://developer.mozilla.org/en-US/docs/Web/API/Event/stopImmediatePropagation + */ + stopImmediatePropagation() { + this.propagate = PropagationState.stopImmediately; + } + + /** + * https://developer.mozilla.org/en-US/docs/Web/API/Event/composedPath + */ + composedPath() { + return this.path; } } diff --git a/src/Observable.ts b/src/Observable.ts index 9d4c1b7aa63..da142048122 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -1,4 +1,4 @@ -import { FabricEvent, TFabricEvent } from './FabricEvent'; +import { FabricEvent, PropagationState, TFabricEvent } from './FabricEvent'; export type TEventCallback = (options: TFabricEvent) => any; @@ -168,10 +168,20 @@ export class Observable { ): TFabricEvent { const ev = options instanceof FabricEvent ? options : FabricEvent.init(options); - if (this.__eventListeners && this.__eventListeners[eventName]) { + if ( + this.__eventListeners && + this.__eventListeners[eventName] && + ev.propagate === PropagationState.propagate + ) { let called = false; const listenersForEvent = this.__eventListeners[eventName].concat(); for (let i = 0; i < listenersForEvent.length; i++) { + if ( + (ev.propagate as PropagationState) === + PropagationState.stopImmediately + ) { + break; + } called = true; listenersForEvent[i].call(this, ev); } diff --git a/test/unit/observable.js b/test/unit/observable.js index ade862ed2fa..4fcae9aec93 100644 --- a/test/unit/observable.js +++ b/test/unit/observable.js @@ -75,6 +75,7 @@ QUnit.module('event path', (hooks) => { targets.forEach(target => target.fire('foo', ev)); assert.equal(ev.path.length, control.length, 'event path should match'); ev.path.forEach((o, i) => assert.equal(o, control[i], `path[${i}] should match`)); + assert.equal(ev.composedPath(), ev.path, 'just an alias method'); }); } fire([a, b], [], null, 'no registered event handlers'); @@ -100,6 +101,91 @@ QUnit.module('event path', (hooks) => { fire([b, a], [b, a], subscribeWithDisposing, 'respect disposing'); }); +QUnit.module('event propagation', hooks => { + QUnit.test('stopped before firing', assert => { + const a = new fabric.Observable(); + let fired = false; + a.on('foo', () => { + fired = true; + }); + const ev = fabric.Event.init({ foo: 'bar' }); + ev.stopPropagation(); + assert.equal(ev.propagate, false, 'stopPropagation should have an effect'); + a.fire('foo', ev); + assert.equal(fired, false, 'event should be skipped'); + }); + QUnit.test('stopPropagation', assert => { + const a = new fabric.Observable(), b = new fabric.Observable(); + let fired = false, skipped = true, bFired = false; + a.on('foo', () => { + fired++; + }); + a.on('foo', () => { + fired++; + }); + a.on('foo', (ev) => { + ev.stopPropagation(); + fired++; + }); + a.on('foo', () => { + fired++; + skipped = false; + }); + b.on('foo', () => { + bFired = true; + }); + let ev = fabric.Event.init({ foo: 'bar' }); + a.fire('foo', ev); + b.fire('foo', ev); + assert.equal(fired, 4, 'last event should be skipped'); + assert.ok(!skipped, 'last event should fire'); + assert.ok(!bFired, 'b should not fire'); + + fired = 0; + ev = fabric.Event.init({ foo: 'bar' }); + b.fire('foo', ev); + a.fire('foo', ev); + assert.equal(fired, 4, 'last event should be skipped'); + assert.ok(!skipped, 'last event should fire'); + assert.ok(bFired, 'b should fire'); + }); + QUnit.test('stopImmediatePropagation', assert => { + const a = new fabric.Observable(), b = new fabric.Observable(); + let fired = false, skipped = true, bFired = false; + a.on('foo', () => { + fired++; + }); + a.on('foo', () => { + fired++; + }); + a.on('foo', (ev) => { + ev.stopImmediatePropagation(); + fired++; + }); + a.on('foo', () => { + fired++; + skipped = false; + }); + b.on('foo', () => { + bFired = true; + }); + let ev = fabric.Event.init({ foo: 'bar' }); + a.fire('foo', ev); + b.fire('foo', ev); + assert.equal(fired, 3, 'last event should be skipped'); + assert.ok(skipped, 'last event should be skipped'); + assert.ok(!bFired, 'b should not fire'); + + fired = 0; + ev = fabric.Event.init({ foo: 'bar' }); + b.fire('foo', ev); + a.fire('foo', ev); + assert.equal(fired, 3, 'last event should be skipped'); + assert.ok(skipped, 'last event should be skipped'); + assert.ok(bFired, 'b should fire'); + }); +}); + QUnit.test('fire once', function (assert) { var foo = new fabric.Observable(); From d1a0fdf56b6021d99cce952686b952251d385c3c Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 12:19:44 +0200 Subject: [PATCH 152/153] Update freedraw.js --- test/visual/freedraw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/visual/freedraw.js b/test/visual/freedraw.js index c24420e8c0e..1e789a93720 100644 --- a/test/visual/freedraw.js +++ b/test/visual/freedraw.js @@ -2086,7 +2086,7 @@ QUnit.module('Free Drawing', hooks => { fabricClass: 'Canvas', - disabled: fabric.getEnv().isLikelyNode + disabled: isNode() }; function freedrawing(canvas) { From f1f08435def165a169760176d13db0288ca1fb05 Mon Sep 17 00:00:00 2001 From: ShaMan123 Date: Sun, 5 Feb 2023 13:05:07 +0200 Subject: [PATCH 153/153] Update FabricEvent.ts --- src/FabricEvent.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/FabricEvent.ts b/src/FabricEvent.ts index dee87a1f713..3af50ff5bd0 100644 --- a/src/FabricEvent.ts +++ b/src/FabricEvent.ts @@ -11,7 +11,7 @@ export enum PropagationState { export class FabricEvent { declare defaultPrevented: boolean; declare propagate: PropagationState; - path: Observable[] = []; + declare path: Observable[]; static init(data?: T) { return new FabricEvent(data) as TFabricEvent; @@ -31,6 +31,12 @@ export class FabricEvent { configurable: false, writable: true, }, + path: { + value: [], + enumerable: false, + configurable: false, + writable: true, + }, }); Object.assign(this, data || {}); }

(`{*CJNM?d9%44C|{dN zO!A6T*Fq($C0KI)?uY~qf4s5Q-b0Eb9!eXRz3C8Uk7@fJZ6-sSL3=6P8io>+H!c2c z!S5YpPPUgPH>GARS$=Rdm z)9J%DLLkL6ly}wt%tk+{+(Q_$LUC1SSp8fyDL3gQ5vs0Itrz0rQt&&i!-FV^o2f|D z9Q<|S6LFTrQdJu8Z6>n1@sl(>gqw1I6y8CvLJA)_{6GtcL4U;Yl$ise`F;q3X!6K* zQI5`UF3nnu-{`m*BNKLMC!Kc{#}y%A5Jm*-nNSW zXQ5>CFtk2F0M5Y(!lK`eiA-iE>Z+1rDQk-VjMPytYic4f(b zMiFiX%7z(!J9(ogzjI}PH?v2V+U%d*WZK@Gg=DBAQUt%zwUGP)UF0c=cAVLczilD6 zc7?PfuEOP)Rh%NhmdhNw;DrnC*n?cM#$}t*@E_35R+=G2O)AEJd`t#(t3xNE$mLBt zG+=R)M7CTOE}@Xq!*2i7Y@Z!gd=-vtu%!%KS2u!6`{Y(3!ab0i*3U53S|F$P#|kic zkPvA$XP&d+AmUg@xgFyr!EVTV?I6?o1&z3qErlT**qpGPJDY{o z2)Wp&vli+L*zMTPFc6Xh(fnUB6BN`DWE19?N9P!iO-t2B^x-b>)aS)(UgUt6oqOH$ z%$BybrjX?w^Qq?5&Bo3(xrHP14405awLF9X^y9TNE|3oimC=vv4P-T;<2SRNdH>&! z)?<1M)*528S4Ty%^MZnzd#c53=D(*eTN9RZW54E@YX~zq`iV`*(OL?HTDs*Ny9rID zsyVGQP&?2ktY|Fh%H*CEb!mJB(6+ zR4XjmET*ukGh2tr++KHr-fHO($MGk!Rsn$^a;BCAw|e zh;)?2(cCZ|rk|Flpaa*|&;E}=Vvv(i@GX`69An-a+`t5>9b6>+yq>3d#BF*yyaHNF zoS0y~eEvtqMe1p&u+H&0>W$SerK zZcMTcvH-4G{MK?$|>ZEY-hjMG0hQ%|=4*52-vpQo4nJ~dzEpTw91 z<*LYXO`Uh|WTF6wPT(D8MR!I;zINxr^_d_!d-a(4KsrByS5x;|k>UB9W&9j=8Tj1j z!>DYvE!pHTEse@t=GE_)`>Uq1kI6M}TmF*qB8VD)ba4WOC>$2V_d#NB|^y?K@BEC5q;q$SRkDpNlLlP4&!|_gR`eR`vBV=74H+Q~s zkqERIVI}ZyG<9%`cAT*Cf=~GMgi5JRb}KgENh}e-TXbLQjpG)9E{t)YqkC}&7rOb7 zemW&7)vlgp`_i-U6)(Oe;*S`;iTY|4NFsfY-*Nb^*R3cV|7a?Tx%m1nWj3~y(=H?V zHT{3H03lAfa}$*yocW0n24*T-eC&%zeBjlF;t^LENZHDI)+S$Tlqf^bm|t~l@1h31 zg#QBOmSFJQDN&d+xV|E!;?HJ+oht~E#>zo=vEyf1gH!c%EVKZhxrF~P#TN%0DjP8* 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≫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® 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 diff --git a/test/visual/golden/mesh_freedrawing5.png b/test/visual/golden/mesh_freedrawing5.png deleted file mode 100644 index a0b3c628f7b4b562454f61e91e8f75dd64f4559b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-wj^(N7l!{JxM1({$qWpPa-J@Z zAsLNtuNitVJ4zh=_D99qs%I!Me z)nj7H*|fAIx2Jy}te%!%v3^G4!82#h{OeaLaooTo!xVi$y?}KKcg5_YZSxf)MCWkL zW0jiaesE)gVfnd@EWevxPhvWJSup3>xoEEqiaTa6aH-$bwDitScaC$+USFQ8l)qza zn)SeT(TU4z-k**+`kifqK;b*7z0-5kR&~8mnKO5j^qN&CY7X7h+bP0l+XkK DT6CHG diff --git a/test/visual/golden/mesh_freedrawing6.png b/test/visual/golden/mesh_freedrawing6.png deleted file mode 100644 index cffdce61051cda41587b09b31c167088d22d7a36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18237 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