static void Check(const char *S, const bool cHO, const vector<PointPriorityQueue::Entry*>& heap, const SparseMatrix<size_t*>& map, const uint w, const uint h) { for (size_t i = 0; i < heap.size(); ++i) { const PointPriorityQueue::Entry *e = heap[i]; assert(i == e->index); if (i && cHO) assert(e->score >= heap[(i-1)/2]->score); assert(e->I == e->x + e->y * w); assert(&e->index == map.Get(e->x, e->y)); } for (uint y = 0; y < h; ++y) { for (uint x = 0; x < w; ++x) { const size_t *index = map.Get(x, y); size_t i; assert(index == NULL || ((i = *index) < heap.size() && heap[i]->I == (x + y * w))); } } }
void Livewire::WriteBitmap(const SparseMatrix<uint> &data, uint w, uint h, const char *name) { QImage b(w, h, QImage::Format_Indexed8); b.setColorTable(*GetGrayscaleColorTable()); uint max = 0; for (uint y = 0; y < h; ++y) { for (uint x = 0; x < w; ++x) { uint val = data.Get(x, y); if (val > max) max = val; } } for (uint y = 0; y < h; ++y) { byte *line = b.scanLine(y); for (uint x = 0; x < w; ++x) line[x] = (byte)(data.Get(x, y) * 255 / max); } b.save(QString::number(QDateTime::currentMSecsSinceEpoch()) + "-" + QString(name) + ".png"); }