-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBioImageProvider.cpp
More file actions
45 lines (35 loc) · 1.57 KB
/
BioImageProvider.cpp
File metadata and controls
45 lines (35 loc) · 1.57 KB
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
#include "BioImageProvider.h"
#include "BioImage.h"
#include "BioImageManager.h"
#include <QDebug>
BioImageProvider::BioImageProvider()
:QQuickImageProvider(QQuickImageProvider::Image)
{
}
QImage BioImageProvider::requestImage(const QString &id, QSize *size, const QSize &)
{
// find the parametors
// Bi/img/{imageid}/cmap/{colormapname}/min/{min}/max/{max}/t/{on/off}
QStringList idSplit = id.split('/');
QString imageId = idSplit.contains("img") ? idSplit.at(idSplit.indexOf("img")+1) : "";
if(imageId == "") {
return QImage();
}
zeroth::BioImage* img = BioImageManager::instance().image(imageId);
if(!img) {
return QImage();
}
QString colorMap = idSplit.contains("cmap") ?idSplit.at(idSplit.indexOf("cmap")+1): "Greys";
double min = idSplit.contains("min") ? idSplit.at(idSplit.indexOf("min")+1).toDouble(): BioImageManager::instance().imgMin(imageId);
double max = idSplit.contains("max") ? idSplit.at(idSplit.indexOf("max")+1).toDouble(): BioImageManager::instance().imgMax(imageId);
bool threshoald = idSplit.contains("t") ?idSplit.at(idSplit.indexOf("t")+1).toInt(): 0;
qDebug() << id;
qDebug() << colorMap << min << max << threshoald;
QVector<QRgb> qtColorTable = BioImageManager::instance().colorTable(colorMap);
QImage qImg(img->width(), img->height(), QImage::Format_Indexed8);
memcpy(qImg.bits(), img->displayImage(min, max, threshoald), img->width()*img->height());
qImg.setColorTable(qtColorTable);
size->setWidth(img->width());
size->setHeight(img->height());
return qImg;
}