From ae8c8ec98d1057745fbe1ef192b6378e7ad6551d Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Wed, 5 Jul 2023 12:20:57 +0200
Subject: [PATCH] fix: screenshot in fsaverage

---
 docs/releases/v2.12.2.md                         |  5 +++++
 mkdocs.yml                                       |  1 +
 package.json                                     |  2 +-
 src/ui/ui.module.ts                              | 16 +++++++++++++---
 .../threeSurferGlue/threeSurfer.component.ts     |  2 ++
 5 files changed, 22 insertions(+), 4 deletions(-)
 create mode 100644 docs/releases/v2.12.2.md

diff --git a/docs/releases/v2.12.2.md b/docs/releases/v2.12.2.md
new file mode 100644
index 000000000..7cc249830
--- /dev/null
+++ b/docs/releases/v2.12.2.md
@@ -0,0 +1,5 @@
+# v2.12.2
+
+## Bugfixes
+
+- fixes screenshot in fsaverage
diff --git a/mkdocs.yml b/mkdocs.yml
index 207b2580c..3b54fefc8 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -33,6 +33,7 @@ nav:
     - Fetching datasets: 'advanced/datasets.md'
     - Display non-atlas volumes: 'advanced/otherVolumes.md'
   - Release notes:
+    - v2.12.2: 'releases/v2.12.2.md'
     - v2.12.1: 'releases/v2.12.1.md'
     - v2.12.0: 'releases/v2.12.0.md'
     - v2.11.4: 'releases/v2.11.4.md'
diff --git a/package.json b/package.json
index 5314a2daa..5746b8bb3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "siibra-explorer",
-  "version": "2.12.1",
+  "version": "2.12.2",
   "description": "siibra-explorer - explore brain atlases. Based on humanbrainproject/nehuba & google/neuroglancer. Built with angular",
   "scripts": {
     "lint": "eslint src --ext .ts",
diff --git a/src/ui/ui.module.ts b/src/ui/ui.module.ts
index 2e083c87b..98efd3854 100644
--- a/src/ui/ui.module.ts
+++ b/src/ui/ui.module.ts
@@ -40,11 +40,21 @@ import { HANDLE_SCREENSHOT_PROMISE, TypeHandleScrnShotPromise } from "../screens
     {
       provide: HANDLE_SCREENSHOT_PROMISE,
       useValue: ((param) => {
-        const canvas: HTMLCanvasElement = document.querySelector('#neuroglancer-container canvas')
+        const ngCanvas: HTMLCanvasElement = document.querySelector('#neuroglancer-container canvas')
+        const threeSurferCanvas: HTMLCanvasElement = document.querySelector('three-surfer-glue-cmp canvas')
+        
+        if (threeSurferCanvas) {
+          const tsViewer = window['tsViewer']
+          tsViewer.renderer.render(tsViewer.scene, tsViewer.camera)
+        }
+        if (ngCanvas) {
+          window['viewer'].display.draw()
+        }
+        const canvas = ngCanvas || threeSurferCanvas
         if (!canvas) {
-          return Promise.reject(`element '#neuroglancer-container canvas' not found`)
+          return Promise.reject(`element '#neuroglancer-container canvas' or 'three-surfer-glue-cmp canvas' not found`)
         }
-        (window as any).viewer.display.draw()
+        
         if (!param) {
           return new Promise(rs => {
             canvas.toBlob(blob => {
diff --git a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
index 522d54c51..4af773b7b 100644
--- a/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
+++ b/src/viewerModule/threeSurfer/threeSurferGlue/threeSurfer.component.ts
@@ -824,11 +824,13 @@ export class ThreeSurferGlueCmp implements IViewer<'threeSurfer'>, AfterViewInit
       () => this.domEl.removeEventListener((window as any).ThreeSurfer.CUSTOM_EVENTNAME_UPDATED, customEvHandler)
     )
     this.tsRef = new (window as any).ThreeSurfer(this.domEl, {highlightHovered: true})
+    window['tsViewer'] = this.tsRef
 
     this.onDestroyCb.push(
       () => {
         this.tsRef.dispose()
         this.tsRef = null
+        window['tsViewer'] = null
       }
     )
     this.tsRef.control.enablePan = false
-- 
GitLab