diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp index 92bd728426130172f849d00ab1aa6dc6d92c3d19..33cfa0cd28be27513199e6b4499b00f072809668 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp +++ b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.cpp @@ -29,24 +29,23 @@ namespace imstk { VTKScreenCaptureUtility::VTKScreenCaptureUtility(vtkRenderWindow* const rw, const std::string prefix /*= "Screenshot-"*/) : + ScreenCaptureUtility(prefix), m_windowToImageFilter(vtkSmartPointer<vtkWindowToImageFilter>::New()), m_pngWriter(vtkSmartPointer<vtkPNGWriter>::New()) { - m_screenShotNumber = 0; - m_screenShotPrefix = prefix; if (rw != nullptr) { m_renderWindow = rw; } } -void -VTKScreenCaptureUtility::saveScreenShot() +std::string +VTKScreenCaptureUtility::saveScreenShot(const std::string& captureName) { if (m_renderWindow == nullptr) { LOG(WARNING) << "Render window has not been set yet! "; - return; + return ""; } if (m_windowToImageFilter->GetInput() == nullptr) @@ -63,13 +62,13 @@ VTKScreenCaptureUtility::saveScreenShot() m_windowToImageFilter->Modified(); - std::string captureName = m_screenShotPrefix + std::to_string(m_screenShotNumber) + ".png"; + std::string filename = captureName + ".png"; - m_pngWriter->SetFileName(captureName.data()); + m_pngWriter->SetFileName(filename.data()); m_pngWriter->Write(); LOG(INFO) << "Screen shot " << m_screenShotNumber << " saved as " << captureName << "\n"; - m_screenShotNumber++; + return filename; } } // imstk diff --git a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h index d1be6ad193ef5cb4d563ddb72cf3699da7769a7b..1bff766fffd5c59e839233ef172b328930c5a44d 100644 --- a/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h +++ b/Source/SimulationManager/VTKRenderer/imstkVTKScreenCaptureUtility.h @@ -39,6 +39,8 @@ namespace imstk class VTKScreenCaptureUtility : public ScreenCaptureUtility { public: + using ScreenCaptureUtility::saveScreenShot; + /// /// \brief Constructor /// @@ -52,7 +54,7 @@ public: /// /// \brief Saves the screenshot as a png file /// - virtual void saveScreenShot() override; + virtual std::string saveScreenShot(const std::string& captureName) override; protected: vtkSmartPointer<vtkWindowToImageFilter> m_windowToImageFilter; diff --git a/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.cpp b/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.cpp index 971fb5e87fcc07b1610b5e46b6c283d3abbbe00d..c2d7b5e9daf7312635625b8a8f7a206713dc222d 100644 --- a/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.cpp +++ b/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.cpp @@ -26,16 +26,14 @@ namespace imstk { VulkanScreenCaptureUtility::VulkanScreenCaptureUtility(const std::string prefix /*= "Screenshot-"*/) +ScreenCaptureUtility(prefix) { - m_screenShotNumber = 0; - m_screenShotPrefix = prefix; } -void -VulkanScreenCaptureUtility::saveScreenShot() +std::string +VulkanScreenCaptureUtility::saveScreenShot(const std::string) { LOG(WARNING) << "Screen capture not supported\n"; - - m_screenShotNumber++; + return ""; } } // imstk diff --git a/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.h b/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.h index 5813d798bb83864eb306c8fdc977ea0b239c6547..a5af3da587c540ab4103cd81e6cfdada5f43ca3c 100644 --- a/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.h +++ b/Source/SimulationManager/VulkanRenderer/imstkVulkanScreenCaptureUtility.h @@ -48,7 +48,7 @@ public: /// /// \brief Saves the screenshot as a png file /// - virtual void saveScreenShot(); + std::string saveScreenShot(const std::string&) override; protected: }; diff --git a/Source/SimulationManager/imstkScreenCaptureUtility.cpp b/Source/SimulationManager/imstkScreenCaptureUtility.cpp index be19bdb9e020f5a550575b9b83f97e9bfa458c6a..c72310eeeb7a05f173789b6f5f9fecbe2188c20c 100644 --- a/Source/SimulationManager/imstkScreenCaptureUtility.cpp +++ b/Source/SimulationManager/imstkScreenCaptureUtility.cpp @@ -23,6 +23,18 @@ namespace imstk { +ScreenCaptureUtility::ScreenCaptureUtility(std::string prefix) : m_screenShotPrefix(prefix), m_screenShotNumber(0) +{ +} + +std::string +ScreenCaptureUtility::saveScreenShot() +{ + std::string captureName = m_screenShotPrefix + std::to_string(m_screenShotNumber) + ".png"; + ++m_screenShotNumber; + return saveScreenShot(captureName); +} + unsigned int ScreenCaptureUtility::getScreenShotNumber() const { diff --git a/Source/SimulationManager/imstkScreenCaptureUtility.h b/Source/SimulationManager/imstkScreenCaptureUtility.h index 415265b2145dfba525da12b428f67ab88d8f87b6..e714a89f0e7952875dc9cdc1bd3a15b42c98886f 100644 --- a/Source/SimulationManager/imstkScreenCaptureUtility.h +++ b/Source/SimulationManager/imstkScreenCaptureUtility.h @@ -34,35 +34,46 @@ class ScreenCaptureUtility { public: /// - /// \brief Saves the screenshot as a png file + /// \brief Constructor + /// + ScreenCaptureUtility(std::string prefix = "Screenshot-"); + + /// + /// \brief Saves a screenshot with a name of <prefix><screenshotNumber>.<implementationImageType> + /// the <ImplementationImageType> is most likely `.png`. + /// \return the file name that was actually used to store the file, "" if the file storage failed + std::string saveScreenShot(); + /// - virtual void saveScreenShot() = 0; + /// \brief Saves a screenshot with the given name, the implementation will add the image + /// type used to store the file + /// \param name base name for the file to store + /// \return the file name that was actually used to store the file, "" if the file storage failed + virtual std::string saveScreenShot(const std::string& name) = 0; /// - /// \brief Returns the number of the screenshot + /// \brief Returns the number of the next screenshot /// unsigned int getScreenShotNumber() const; /// - /// \brief set/reset the prefix amd the count numbers + /// \brief set/reset the prefix and the count numbers + /// void setScreenShotPrefix(const std::string& newPrefix); /// - /// \brief reset the screenshot number indicator + /// \brief reset the screenshot number + /// void resetScreenShotNumber(); protected: - /// - /// \brief Constructor - /// - ScreenCaptureUtility() = default; /// /// \brief Destructor /// virtual ~ScreenCaptureUtility() = default; - unsigned int m_screenShotNumber = 0; //> screen shot number is added to the file prefix, and incremented everytime a screen shot is taken - std::string m_screenShotPrefix; //> the prefix for the screenshots to be saved + unsigned int m_screenShotNumber = 0; ///< screen shot number is added to the file prefix, and incremented everytime a screen shot is taken + std::string m_screenShotPrefix; ///< the prefix for the screenshots to be saved }; } // imstk