13 #ifndef hifi_Snapshot_h
14 #define hifi_Snapshot_h
16 #include <glm/glm.hpp>
19 #include <QStandardPaths>
22 #include <QtGui/QImage>
24 #include <SettingHandle.h>
25 #include <DependencyManager.h>
30 class SnapshotMetaData {
33 QUrl getURL() {
return _URL; }
34 void setURL(QUrl URL) { _URL = URL; }
53 class Snapshot :
public QObject,
public Dependency {
58 QString saveSnapshot(QImage image,
const QString& filename,
const QString& pathname = QString());
59 void save360Snapshot(
const glm::vec3& cameraPosition,
60 const bool& cubemapOutputFormat,
62 const QString& filename);
63 QTemporaryFile* saveTempSnapshot(QImage image);
64 SnapshotMetaData* parseSnapshotData(QString snapshotPath);
70 void uploadSnapshot(
const QString& filename,
const QUrl& href = QUrl(
""));
85 void snapshotLocationSet(
const QString& value);
94 Q_INVOKABLE QString getSnapshotsLocation();
101 Q_INVOKABLE
void setSnapshotsLocation(
const QString& location);
108 Q_INVOKABLE QString getSnapshotFormat();
115 Q_INVOKABLE
void setSnapshotFormat(
const QString& format);
122 Q_INVOKABLE QString getAnimatedSnapshotFormat();
129 Q_INVOKABLE
void setAnimatedSnapshotFormat(
const QString& format);
136 Q_INVOKABLE QStringList getAvailableSnapshotFormats();
143 Q_INVOKABLE QStringList getAvailableSnapshotFormatsWithDescriptions();
150 Q_INVOKABLE QStringList getAvailableAnimatedSnapshotFormats();
157 Q_INVOKABLE QStringList getAvailableAnimatedSnapshotFormatsWithDescriptions();
162 void takeNextSnapshot();
165 QFile* savedFileForSnapshot(QImage& image,
167 const QString& userSelectedFilename = QString(),
168 const QString& userSelectedPathname = QString());
169 QString _snapshotFilename;
171 bool _cubemapOutputFormat;
172 QTimer _snapshotTimer;
173 qint16 _snapshotIndex;
174 bool _waitingOnSnapshot {
false };
175 bool _taking360Snapshot {
false };
177 QVariant _oldAttachedEntityId;
178 QVariant _oldOrientation;
180 QVariant _oldNearClipPlaneDistance;
181 QVariant _oldFarClipPlaneDistance;
182 QImage _imageArray[6];
183 void convertToCubemap();
184 void convertToEquirectangular();