Skip to content
Snippets Groups Projects
Commit 8b3e274e authored by Andrew Wilson's avatar Andrew Wilson :elephant:
Browse files

Merge branch 'feature/screenshot-names' into 'master'

Enable screenshots to be named with a specific name

See merge request iMSTK/iMSTK!549
parents 4d0097fc 05b25e79
No related branches found
No related tags found
No related merge requests found
...@@ -29,24 +29,23 @@ ...@@ -29,24 +29,23 @@
namespace imstk namespace imstk
{ {
VTKScreenCaptureUtility::VTKScreenCaptureUtility(vtkRenderWindow* const rw, const std::string prefix /*= "Screenshot-"*/) : VTKScreenCaptureUtility::VTKScreenCaptureUtility(vtkRenderWindow* const rw, const std::string prefix /*= "Screenshot-"*/) :
ScreenCaptureUtility(prefix),
m_windowToImageFilter(vtkSmartPointer<vtkWindowToImageFilter>::New()), m_windowToImageFilter(vtkSmartPointer<vtkWindowToImageFilter>::New()),
m_pngWriter(vtkSmartPointer<vtkPNGWriter>::New()) m_pngWriter(vtkSmartPointer<vtkPNGWriter>::New())
{ {
m_screenShotNumber = 0;
m_screenShotPrefix = prefix;
if (rw != nullptr) if (rw != nullptr)
{ {
m_renderWindow = rw; m_renderWindow = rw;
} }
} }
void std::string
VTKScreenCaptureUtility::saveScreenShot() VTKScreenCaptureUtility::saveScreenShot(const std::string& captureName)
{ {
if (m_renderWindow == nullptr) if (m_renderWindow == nullptr)
{ {
LOG(WARNING) << "Render window has not been set yet! "; LOG(WARNING) << "Render window has not been set yet! ";
return; return "";
} }
if (m_windowToImageFilter->GetInput() == nullptr) if (m_windowToImageFilter->GetInput() == nullptr)
...@@ -63,13 +62,13 @@ VTKScreenCaptureUtility::saveScreenShot() ...@@ -63,13 +62,13 @@ VTKScreenCaptureUtility::saveScreenShot()
m_windowToImageFilter->Modified(); 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(); m_pngWriter->Write();
LOG(INFO) << "Screen shot " << m_screenShotNumber << " saved as " << captureName << "\n"; LOG(INFO) << "Screen shot " << m_screenShotNumber << " saved as " << captureName << "\n";
m_screenShotNumber++; return filename;
} }
} // imstk } // imstk
...@@ -39,6 +39,8 @@ namespace imstk ...@@ -39,6 +39,8 @@ namespace imstk
class VTKScreenCaptureUtility : public ScreenCaptureUtility class VTKScreenCaptureUtility : public ScreenCaptureUtility
{ {
public: public:
using ScreenCaptureUtility::saveScreenShot;
/// ///
/// \brief Constructor /// \brief Constructor
/// ///
...@@ -52,7 +54,7 @@ public: ...@@ -52,7 +54,7 @@ public:
/// ///
/// \brief Saves the screenshot as a png file /// \brief Saves the screenshot as a png file
/// ///
virtual void saveScreenShot() override; virtual std::string saveScreenShot(const std::string& captureName) override;
protected: protected:
vtkSmartPointer<vtkWindowToImageFilter> m_windowToImageFilter; vtkSmartPointer<vtkWindowToImageFilter> m_windowToImageFilter;
......
...@@ -26,16 +26,14 @@ ...@@ -26,16 +26,14 @@
namespace imstk namespace imstk
{ {
VulkanScreenCaptureUtility::VulkanScreenCaptureUtility(const std::string prefix /*= "Screenshot-"*/) VulkanScreenCaptureUtility::VulkanScreenCaptureUtility(const std::string prefix /*= "Screenshot-"*/)
ScreenCaptureUtility(prefix)
{ {
m_screenShotNumber = 0;
m_screenShotPrefix = prefix;
} }
void std::string
VulkanScreenCaptureUtility::saveScreenShot() VulkanScreenCaptureUtility::saveScreenShot(const std::string)
{ {
LOG(WARNING) << "Screen capture not supported\n"; LOG(WARNING) << "Screen capture not supported\n";
return "";
m_screenShotNumber++;
} }
} // imstk } // imstk
...@@ -48,7 +48,7 @@ public: ...@@ -48,7 +48,7 @@ public:
/// ///
/// \brief Saves the screenshot as a png file /// \brief Saves the screenshot as a png file
/// ///
virtual void saveScreenShot(); std::string saveScreenShot(const std::string&) override;
protected: protected:
}; };
......
...@@ -23,6 +23,18 @@ ...@@ -23,6 +23,18 @@
namespace imstk 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 unsigned int
ScreenCaptureUtility::getScreenShotNumber() const ScreenCaptureUtility::getScreenShotNumber() const
{ {
......
...@@ -34,35 +34,46 @@ class ScreenCaptureUtility ...@@ -34,35 +34,46 @@ class ScreenCaptureUtility
{ {
public: 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; 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); void setScreenShotPrefix(const std::string& newPrefix);
/// ///
/// \brief reset the screenshot number indicator /// \brief reset the screenshot number
///
void resetScreenShotNumber(); void resetScreenShotNumber();
protected: protected:
///
/// \brief Constructor
///
ScreenCaptureUtility() = default;
/// ///
/// \brief Destructor /// \brief Destructor
/// ///
virtual ~ScreenCaptureUtility() = default; 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 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 std::string m_screenShotPrefix; ///< the prefix for the screenshots to be saved
}; };
} // imstk } // imstk
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment