Skip to content

Commit 9f71941

Browse files
authored
HTMLMesh: Reuse <canvas> instance (#22098)
* HTMLMesh: Reuse <canvas> instance. * Updated examples builds
1 parent cf38d5b commit 9f71941

File tree

2 files changed

+37
-12
lines changed

2 files changed

+37
-12
lines changed

examples/js/interactive/HTMLMesh.js

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
} //
5858

5959

60+
const canvases = new WeakMap();
61+
6062
function html2canvas( element ) {
6163

6264
var range = document.createRange();
@@ -233,14 +235,25 @@
233235

234236
}
235237

236-
var offset = element.getBoundingClientRect();
237-
var canvas = document.createElement( 'canvas' );
238-
canvas.width = offset.width;
239-
canvas.height = offset.height;
240-
var context = canvas.getContext( '2d'
238+
const offset = element.getBoundingClientRect();
239+
let canvas;
240+
241+
if ( canvases.has( element ) ) {
242+
243+
canvas = canvases.get( element );
244+
245+
} else {
246+
247+
canvas = document.createElement( 'canvas' );
248+
canvas.width = offset.width;
249+
canvas.height = offset.height;
250+
251+
}
252+
253+
const context = canvas.getContext( '2d'
241254
/*, { alpha: false }*/
242255
);
243-
var clipper = new Clipper( context ); // console.time( 'drawElement' );
256+
const clipper = new Clipper( context ); // console.time( 'drawElement' );
244257

245258
drawElement( element ); // console.timeEnd( 'drawElement' );
246259

examples/jsm/interactive/HTMLMesh.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ class HTMLTexture extends CanvasTexture {
6767

6868
//
6969

70+
const canvases = new WeakMap();
71+
7072
function html2canvas( element ) {
7173

7274
var range = document.createRange();
@@ -245,15 +247,25 @@ function html2canvas( element ) {
245247

246248
}
247249

248-
var offset = element.getBoundingClientRect();
250+
const offset = element.getBoundingClientRect();
251+
252+
let canvas;
253+
254+
if ( canvases.has( element ) ) {
255+
256+
canvas = canvases.get( element );
249257

250-
var canvas = document.createElement( 'canvas' );
251-
canvas.width = offset.width;
252-
canvas.height = offset.height;
258+
} else {
259+
260+
canvas = document.createElement( 'canvas' );
261+
canvas.width = offset.width;
262+
canvas.height = offset.height;
263+
264+
}
253265

254-
var context = canvas.getContext( '2d'/*, { alpha: false }*/ );
266+
const context = canvas.getContext( '2d'/*, { alpha: false }*/ );
255267

256-
var clipper = new Clipper( context );
268+
const clipper = new Clipper( context );
257269

258270
// console.time( 'drawElement' );
259271

0 commit comments

Comments
 (0)