#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());
}
}