1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#pragma once
#if (defined(YADE_OPENGL) and defined(YADE_QT5))
#include <lib/opengl/OpenGLWrapper.hpp>
#include <core/Scene.hpp>
#include <pkg/common/PeriodicEngines.hpp>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
#pragma GCC diagnostic ignored "-Wsuggest-override"
#include <gui/qt5/OpenGLManager.hpp>
#pragma GCC diagnostic pop
namespace yade { // Cannot have #include directive inside.
class SnapshotEngine : public PeriodicEngine {
public:
void action() override;
// clang-format off
YADE_CLASS_BASE_DOC_ATTRS(SnapshotEngine,PeriodicEngine,"Periodically save snapshots of GLView(s) as .png files. Files are named *fileBase* + *counter* + '.png' (counter is left-padded by 0s, i.e. snap00004.png).",
((string,format,"PNG",,"Format of snapshots (one of JPEG, PNG, EPS, PS, PPM, BMP) `QGLViewer documentation <http://www.libqglviewer.com/refManual/classQGLViewer.html#abbb1add55632dced395e2f1b78ef491c>`_. File extension will be lowercased *format*. Validity of format is not checked."))
((string,fileBase,"",,"Basename for snapshots"))
((int,counter,0,,"Number that will be appended to fileBase when the next snapshot is saved (incremented at every save). |yupdate|"))
((bool,ignoreErrors,true,,"Only report errors instead of throwing exceptions, in case of timeouts."))
((vector<string>,snapshots,,,"Files that have been created so far"))
((int,msecSleep,0,,"number of msec to sleep after snapshot (to prevent 3d hw problems) [ms]"))
((Real,deadTimeout,3,,"Timeout for 3d operations (opening new view, saving snapshot); after timing out, throw exception (or only report error if *ignoreErrors*) and make myself :yref:`dead<Engine.dead>`. [s]"))
((string,plot,,,"Name of field in :yref:`yade.plot.imgData` to which taken snapshots will be appended automatically."))
);
// clang-format on
DECLARE_LOGGER;
};
REGISTER_SERIALIZABLE(SnapshotEngine);
} // namespace yade
#endif
|