From fc0a438a0481df62de3160031f07f3fe4cc4cdee Mon Sep 17 00:00:00 2001
From: Christoph Reiter <reiter.christoph@gmail.com>
Date: Wed, 21 Oct 2020 12:02:01 +0200
Subject: [PATCH] Only extract the image data once in the clipping case.

---
 packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js | 2 +-
 packages/qr-code-scanner/src/qr-code-scanner.js          | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js b/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
index d3130a9e..f7728da0 100644
--- a/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
+++ b/packages/qr-code-scanner/src/dbp-qr-code-scanner-demo.js
@@ -49,7 +49,7 @@ class QrCodeScannerDemo extends ScopedElementsMixin(LitElement) {
                 <div class="container">
                     <div class="columns is-centered">
                         <div class="column">
-                            <dbp-qr-code-scanner lang="${this.lang}"></dbp-qr-code-scanner>
+                            <dbp-qr-code-scanner clip-mask lang="${this.lang}"></dbp-qr-code-scanner>
                         </div>
                     </div>
                 </div>
diff --git a/packages/qr-code-scanner/src/qr-code-scanner.js b/packages/qr-code-scanner/src/qr-code-scanner.js
index 698f772d..e58f4a8e 100644
--- a/packages/qr-code-scanner/src/qr-code-scanner.js
+++ b/packages/qr-code-scanner/src/qr-code-scanner.js
@@ -263,8 +263,7 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
                 let maskHeight = 0;
                 let maskStartX = canvasElement.width;
                 let maskStartY = canvasElement.height;
-
-                let imageData = canvas.getImageData(0 , 0, canvasElement.width, canvasElement.height);
+                let imageData;
 
                 if (that.clipMask) {
                     //draw mask
@@ -302,6 +301,8 @@ export class QrCodeScanner extends ScopedElementsMixin(DBPLitElement) {
                     canvas.fill();
 
                     imageData = canvas.getImageData(maskStartX , maskStartY, maskWidth, maskHeight);
+                } else {
+                    imageData = canvas.getImageData(0 , 0, canvasElement.width, canvasElement.height);
                 }
 
                 let code = null;
-- 
GitLab