#include "blob_result_model.hpp"
#include <QRect>
BlobResultModel::BlobResultModel(
const std::vector<Cvb::Foundation::BlobResult> &blobResults)
: QAbstractListModel(), blobResults_(blobResults) {}
QHash<int, QByteArray> BlobResultModel::roleNames() const {
QHash<int, QByteArray> names;
names[Center] = "blobCenter";
names[BoundingBox] = "boundingBox";
names[Size] = "blobSize";
return names;
}
int BlobResultModel::rowCount(const QModelIndex &) const {
return static_cast<int>(blobResults_.size());
}
QVariant BlobResultModel::data(const QModelIndex &index, int role) const {
if (!index.isValid())
return QVariant();
const auto &result = blobResults_[index.row()];
switch (role) {
default:
return QVariant();
case Center:
return QVariant(QPointF(result.X(), result.Y()));
case BoundingBox:
return QVariant(
QRect(result.BoundingBox().Left(), result.BoundingBox().Top(),
result.BoundingBox().Width(), result.BoundingBox().Height()));
case Size:
return QVariant(result.Size());
}
}