-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathimagesaverthread.cpp
57 lines (35 loc) · 956 Bytes
/
imagesaverthread.cpp
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "imagesaverthread.h"
#include <QDebug>
ImageSaverThread::ImageSaverThread() {}
using namespace std;
void ImageSaverThread::Push(const std::variant<QImage, QPixmap> &Img, const QString &Path)
{
if (holds_alternative<QImage>(Img)){
Queue.push(
{QPixmap::fromImage(get<QImage>(Img)),
Path}
);
}
else if (holds_alternative<QPixmap>(Img))
{
Queue.push({get<QPixmap>(Img), Path});
}else{
throw std::invalid_argument("Unknown variant type for ImageSaverThread::Push; valid are QImage and QPixmap");
}
}
void ImageSaverThread::Stop()
{
Running = false;
}
void ImageSaverThread::run()
{
while (Running)
{
ImageSaveOrder Ord;
Queue.wait_and_pop(Ord);
QPixmap& Pix = Ord.first;
QString& Path = Ord.second;
Pix.save(Path, "PNG");
qDebug() << "Saver thread: Image saved to: " << Path;
}
}