From 86cf62699c11a6f346e42fd7ed4f21461ad75fa0 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 17 Mar 2023 15:58:07 +0100 Subject: [PATCH] Add a helper, in `DOMFilterFactory`, to reduce duplication when creating ``s Currently we repeat the same code verbatim multiple times in the `DOMFilterFactory`, which seems completely unnecessary. --- src/display/display_utils.js | 62 ++++++++++-------------------------- 1 file changed, 16 insertions(+), 46 deletions(-) diff --git a/src/display/display_utils.js b/src/display/display_utils.js index d46e82e8c..54f2ff40c 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -98,6 +98,13 @@ class DOMFilterFactory extends BaseFilterFactory { return this.#_defs; } + #appendFeFunc(feComponentTransfer, func, table) { + const feFunc = this.#document.createElementNS(SVG_NS, func); + feFunc.setAttribute("type", "discrete"); + feFunc.setAttribute("tableValues", table); + feComponentTransfer.append(feFunc); + } + addFilter(maps) { if (!maps) { return "none"; @@ -157,21 +164,9 @@ class DOMFilterFactory extends BaseFilterFactory { ); filter.append(feComponentTransfer); - const type = "discrete"; - const feFuncR = this.#document.createElementNS(SVG_NS, "feFuncR"); - feFuncR.setAttribute("type", type); - feFuncR.setAttribute("tableValues", tableR); - feComponentTransfer.append(feFuncR); - - const feFuncG = this.#document.createElementNS(SVG_NS, "feFuncG"); - feFuncG.setAttribute("type", type); - feFuncG.setAttribute("tableValues", tableG); - feComponentTransfer.append(feFuncG); - - const feFuncB = this.#document.createElementNS(SVG_NS, "feFuncB"); - feFuncB.setAttribute("type", type); - feFuncB.setAttribute("tableValues", tableB); - feComponentTransfer.append(feFuncB); + this.#appendFeFunc(feComponentTransfer, "feFuncR", tableR); + this.#appendFeFunc(feComponentTransfer, "feFuncG", tableG); + this.#appendFeFunc(feComponentTransfer, "feFuncB", tableB); this.#defs.append(filter); @@ -239,21 +234,9 @@ class DOMFilterFactory extends BaseFilterFactory { ); filter.append(feComponentTransfer); - let type = "discrete"; - let feFuncR = this.#document.createElementNS(SVG_NS, "feFuncR"); - feFuncR.setAttribute("type", type); - feFuncR.setAttribute("tableValues", table); - feComponentTransfer.append(feFuncR); - - let feFuncG = this.#document.createElementNS(SVG_NS, "feFuncG"); - feFuncG.setAttribute("type", type); - feFuncG.setAttribute("tableValues", table); - feComponentTransfer.append(feFuncG); - - let feFuncB = this.#document.createElementNS(SVG_NS, "feFuncB"); - feFuncB.setAttribute("type", type); - feFuncB.setAttribute("tableValues", table); - feComponentTransfer.append(feFuncB); + this.#appendFeFunc(feComponentTransfer, "feFuncR", table); + this.#appendFeFunc(feComponentTransfer, "feFuncG", table); + this.#appendFeFunc(feComponentTransfer, "feFuncB", table); const feColorMatrix = this.#document.createElementNS( SVG_NS, @@ -281,22 +264,9 @@ class DOMFilterFactory extends BaseFilterFactory { } return arr.join(","); }; - - type = "discrete"; - feFuncR = this.#document.createElementNS(SVG_NS, "feFuncR"); - feFuncR.setAttribute("type", type); - feFuncR.setAttribute("tableValues", `${getSteps(0, 5)}`); - feComponentTransfer.append(feFuncR); - - feFuncG = this.#document.createElementNS(SVG_NS, "feFuncG"); - feFuncG.setAttribute("type", type); - feFuncG.setAttribute("tableValues", `${getSteps(1, 5)}`); - feComponentTransfer.append(feFuncG); - - feFuncB = this.#document.createElementNS(SVG_NS, "feFuncB"); - feFuncB.setAttribute("type", type); - feFuncB.setAttribute("tableValues", `${getSteps(2, 5)}`); - feComponentTransfer.append(feFuncB); + this.#appendFeFunc(feComponentTransfer, "feFuncR", getSteps(0, 5)); + this.#appendFeFunc(feComponentTransfer, "feFuncG", getSteps(1, 5)); + this.#appendFeFunc(feComponentTransfer, "feFuncB", getSteps(2, 5)); this.#defs.append(filter);