@@ -72,9 +72,8 @@ export default defineComponent({
7272 setSpeed ,
7373 });
7474
75- // Canvas for rendering frames
75+ // Canvas for dimension tracking
7676 const frameCanvas = document .createElement (' canvas' );
77- const frameCtx = frameCanvas .getContext (' 2d' );
7877
7978 // Video info loaded from backend
8079 const videoInfo = ref <{
@@ -166,26 +165,29 @@ export default defineComponent({
166165 }
167166
168167 /**
169- * Render a frame to the canvas
168+ * Render a frame to the quad feature
170169 */
171170 async function renderFrame(frameNumber : number ) {
172171 try {
173172 const img = await loadFrame (frameNumber );
174173
174+ // Update canvas dimensions if needed
175175 if (frameCanvas .width !== img .width || frameCanvas .height !== img .height ) {
176176 frameCanvas .width = img .width ;
177177 frameCanvas .height = img .height ;
178178 }
179179
180- if (frameCtx ) {
181- frameCtx .drawImage (img , 0 , 0 );
182- }
183-
184- // Update the geojs quad feature
185- if (geoViewer .value ) {
186- geoViewer .value .scheduleAnimationFrame (() => {
187- geoViewer .value .draw ();
188- });
180+ // Update the geojs quad feature with the new image
181+ if (quadFeature ) {
182+ quadFeature
183+ .data ([
184+ {
185+ ul: { x: 0 , y: 0 },
186+ lr: { x: img .width , y: img .height },
187+ image: img ,
188+ },
189+ ])
190+ .draw ();
189191 }
190192 } catch (err ) {
191193 console .error (` Failed to render frame ${frameNumber }: ` , err );
@@ -287,6 +289,8 @@ export default defineComponent({
287289
288290 // eslint-disable-next-line @typescript-eslint/no-explicit-any
289291 let quadFeatureLayer = undefined as any ;
292+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
293+ let quadFeature = undefined as any ;
290294
291295 watch (
292296 () => props .isDefaultImage ,
@@ -327,14 +331,15 @@ export default defineComponent({
327331 // Initialize geojs viewer
328332 initializeViewer (width , height );
329333
330- // Create quad feature layer with the canvas as the source
334+ // Create quad feature layer for rendering frames
331335 quadFeatureLayer = geoViewer .value .createLayer (' feature' , {
332336 features: [' quad' ],
333337 autoshareRenderer: false ,
338+ renderer: ' canvas' ,
334339 });
335340
336- quadFeatureLayer
337- . createFeature ( ' quad ' )
341+ quadFeature = quadFeatureLayer . createFeature ( ' quad ' );
342+ quadFeature
338343 .data ([
339344 {
340345 ul: { x: 0 , y: 0 },
0 commit comments