diff Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 1674:0621e523b670

number of frames in badge
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 23 Nov 2020 17:05:24 +0100
parents 570398585b5f
children 6fa05252b085
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp	Mon Nov 23 16:21:33 2020 +0100
+++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp	Mon Nov 23 17:05:24 2020 +0100
@@ -462,6 +462,35 @@
     }
   }
 
+  size_t GetSeriesNumberOfFrames(const std::string& seriesInstanceUid) const
+  {
+    OrthancStone::SeriesMetadataLoader::Accessor accessor(*metadataLoader_, seriesInstanceUid);
+    
+    if (accessor.IsComplete())
+    {
+      size_t count = 0;
+      
+      for (size_t i = 0; i < accessor.GetInstancesCount(); i++)
+      {
+        uint32_t f;
+        if (accessor.GetInstance(i).ParseUnsignedInteger32(f, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
+        {
+          count += f;
+        }
+        else
+        {
+          count++;
+        }
+      }
+
+      return count;
+    }
+    else
+    {
+      return 0;
+    }
+  }
+
   void AcquireObserver(IObserver* observer)
   {  
     observer_.reset(observer);
@@ -2360,7 +2389,7 @@
         customEvent.initCustomEvent("FrameUpdated", false, false,
                                     { "canvasId" : UTF8ToString($0),
                                         "currentFrame" : $1,
-                                        "framesCount" : $2,
+                                        "numberOfFrames" : $2,
                                         "quality" : $3 });
         window.dispatchEvent(customEvent);
       },
@@ -2933,4 +2962,16 @@
     EXTERN_CATCH_EXCEPTIONS;
     return 0;
   }
+
+
+  EMSCRIPTEN_KEEPALIVE
+  unsigned int GetSeriesNumberOfFrames(const char* seriesInstanceUid)
+  {
+    try
+    {
+      return GetResourcesLoader().GetSeriesNumberOfFrames(seriesInstanceUid);
+    }
+    EXTERN_CATCH_EXCEPTIONS;
+    return 0;
+  }    
 }