diff options
Diffstat (limited to 'src/utils/imageBlurrer.js')
-rw-r--r-- | src/utils/imageBlurrer.js | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/src/utils/imageBlurrer.js b/src/utils/imageBlurrer.js deleted file mode 100644 index 2a29e27d1..000000000 --- a/src/utils/imageBlurrer.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * - * @copyright Copyright (c) 2020, Daniel Calviño Sánchez (danxuliu@gmail.com) - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -import { generateFilePath } from '@nextcloud/router' - -let worker - -const pendingResults = {} -let pendingResultsNextId = 0 - -function loadWorker() { - try { - worker = new Worker(generateFilePath('spreed', '', 'js/image-blurrer-worker.js')) - worker.onmessage = function(message) { - const pendingResult = pendingResults[message.data.id] - if (!pendingResult) { - console.debug('No pending result for blurring image with id ' + message.data.id) - - return - } - - pendingResult(message.data.blurredImageAsDataUrl) - - delete pendingResults[message.data.id] - } - } catch (exception) { - worker = null - console.error('Image blurrer worker could not be loaded', exception) - } -} - -function blurSync(image, width, height, blurRadius) { - return new Promise((resolve, reject) => { - const canvas = document.createElement('canvas') - canvas.width = width - canvas.height = height - - const context = canvas.getContext('2d') - context.filter = `blur(${blurRadius}px)` - context.drawImage(image, 0, 0, canvas.width, canvas.height) - - resolve(canvas.toDataURL()) - }) -} - -export default function blur(image, width, height, blurRadius) { - if (typeof OffscreenCanvas === 'undefined') { - return blurSync(image, width, height, blurRadius) - } - - if (worker === undefined) { - loadWorker() - } - - if (!worker) { - return blurSync(image, width, height, blurRadius) - } - - const id = pendingResultsNextId - - pendingResultsNextId++ - - return new Promise((resolve, reject) => { - pendingResults[id] = resolve - - worker.postMessage({ - id: id, - image: image, - width: width, - height: height, - blurRadius: blurRadius, - }) - }) -} |