1 #ifndef SNAPSHOTCAPTUREWIDGET_HPP
2 #define SNAPSHOTCAPTUREWIDGET_HPP
7 #include <MultiWidgets/Widget.hpp>
9 #include <folly/futures/Future.h>
13 enum { OVERSAMPLE = 2 };
14 enum { MAXSIZE = 4096 };
15 enum { DEFAULT_SNAPSHOT_MASK = Utils::OBJECT_MENU |
16 Utils::OBJECT_EXCLUDE_FROM_SNAPSHOT};
23 typedef std::function<void(bool ok, QString title)> SnapShotCallback;
25 virtual folly::Future<bool> requestSnapshot(
const Nimble::SizeI & maximumDimensions,
26 const QString & filename,
27 const Nimble::SizeI & preferredDimensions = Nimble::SizeI(0, 0),
28 int oversample = OVERSAMPLE) = 0;
31 class SnapShotCaptureWidget;
32 INTRUSIVE_PTR_TYPEDEF(SnapShotCaptureWidget);
34 class SHOWCASE_API SnapShotCaptureWidget :
public MultiWidgets::Widget
38 typedef SnapShottable::SnapShotCallback Callback;
40 SnapShotCaptureWidget();
41 virtual ~SnapShotCaptureWidget();
43 virtual void update(
const MultiWidgets::FrameInfo &frameInfo) OVERRIDE;
49 folly::Future<bool> requestSnapshot(MultiWidgets::WidgetPtr w,
50 const QString & filename,
51 const Nimble::SizeI & maximumDimensions = Nimble::SizeI(MAXSIZE, MAXSIZE),
52 const Nimble::SizeI & preferredDimensions = Nimble::SizeI(0, 0),
53 int oversample = OVERSAMPLE,
54 const Nimble::Vector2f & viewOffset = Nimble::Vector2f(0, 0),
55 const Nimble::SizeF & viewSize = Nimble::SizeF(0, 0),
56 bool forceSnapshot =
false,
57 uint64_t objectMask = DEFAULT_SNAPSHOT_MASK);
59 void addFlashEffect(MultiWidgets::WidgetPtr w);
61 static folly::Future<bool> takeSnapshot(MultiWidgets::WidgetPtr w,
62 const QString & filePath,
bool flash =
false,
63 const Nimble::SizeI & maximumDimensions = Nimble::SizeI(MAXSIZE, MAXSIZE),
64 Nimble::Vector2f viewOffset = Nimble::Vector2f(0, 0),
65 Nimble::SizeF viewSize = Nimble::SizeF(0, 0),
66 uint64_t objectMask = DEFAULT_SNAPSHOT_MASK);
68 static SnapShotCaptureWidgetPtr snapshotWidget();
72 virtual void renderContent(Luminous::RenderContext &r)
const OVERRIDE;
81 #endif // SNAPSHOTCAPTUREWIDGET_HPP