void FlatView::setCloud(boost::shared_ptr<PointCloud> new_pc) { if(new_pc == pc_.lock()) return; if(!pc_.expired()){ boost::shared_ptr<PointCloud> old_pc = pc_.lock(); disconnect(old_pc.get(), SIGNAL(flagUpdate()), this, SLOT(update())); disconnect(old_pc.get(), SIGNAL(labelUpdate()), this, SLOT(update())); } pc_ = new_pc; // Late event cause deletion possible? Seems to help? if(pc_.expired()) return; boost::shared_ptr<PointCloud> pc = pc_.lock(); cloud_idx_lookup_.resize(pc->scan_width()*pc->scan_height(), -1); for(uint idx = 0 ; idx < pc->cloudToGridMap().size(); idx++){ QPoint p = cloudToImageCoord(idx); cloud_idx_lookup_[p.x() + p.y()*pc->scan_width()] = idx; } connect(pc.get(), SIGNAL(flagUpdate()), this, SLOT(update())); connect(pc.get(), SIGNAL(labelUpdate()), this, SLOT(update())); if(gl_init_) resizeGL(width(), height()); if(this->isVisible()) update(); }
static void markNew(struct gbStatusTbl* statusTbl, struct gbStatus* status, struct gbProcessed* processed, struct gbAligned* aligned) /* mark an entry as new */ { slAddHead(&statusTbl->newList, status); statusTbl->numNew++; status->entry = processed->entry; status->selectProc = processed; status->selectAlign = aligned; status->stateChg = GB_NEW; status->seqRelease = gbStatusTblGetStr(statusTbl, aligned->update->release->version); status->seqUpdate = gbStatusTblGetStr(statusTbl, aligned->update->shortName); status->metaRelease = status->seqRelease; status->metaUpdate = status->seqUpdate; status->extRelease = status->seqRelease; status->extUpdate = status->seqUpdate; flagUpdate(processed, aligned, TRUE); if (gbVerbose >= 5) traceSelect("new", status); }
static void markMetaChanged(struct gbSelect* select, struct gbStatusTbl* statusTbl, struct gbStatus* tmpStatus, struct gbProcessed* processed, struct gbAligned* aligned) /* mark an entry as metaChanged */ { struct gbStatus* status = gbStatusStore(statusTbl, tmpStatus); slAddHead(&statusTbl->metaChgList, status); statusTbl->numMetaChg++; status->entry = processed->entry; status->selectProc = processed; status->stateChg = GB_META_CHG; status->metaRelease = gbStatusTblGetStr(statusTbl, aligned->update->release->version); status->metaUpdate = gbStatusTblGetStr(statusTbl, aligned->update->shortName); if (!sameString(status->extRelease, select->release->version)) { /* ext seq also changed */ status->stateChg |= GB_EXT_CHG; status->extRelease = status->metaRelease; status->extUpdate = status->metaUpdate; } flagUpdate(processed, aligned, FALSE); if (gbVerbose >= 5) traceSelect("metaChg", status); }
static void markSeqChanged(struct gbStatusTbl* statusTbl, struct gbStatus* tmpStatus, struct gbProcessed* processed, struct gbAligned* aligned) /* mark an entry as seqChanged; called if version or number of alignments * changes */ { struct gbStatus* status = gbStatusStore(statusTbl, tmpStatus); slAddHead(&statusTbl->seqChgList, status); statusTbl->numSeqChg++; status->entry = aligned->entry; status->selectProc = processed; status->selectAlign = aligned; status->stateChg = (GB_SEQ_CHG|GB_META_CHG|GB_EXT_CHG); status->seqRelease = gbStatusTblGetStr(statusTbl, aligned->update->release->version); status->seqUpdate = gbStatusTblGetStr(statusTbl, aligned->update->shortName); status->metaRelease = status->seqRelease; status->metaUpdate = status->seqUpdate; status->extRelease = status->seqRelease; status->extUpdate = status->seqUpdate; flagUpdate(processed, aligned, TRUE); if (gbVerbose >= 5) traceSelect("seqChg", status); }
static void markRebuildDerived(struct gbStatusTbl* statusTbl, struct gbStatus* tmpStatus, struct gbProcessed* processed, struct gbAligned* aligned) /* mark an entry as rebuilDerived, which is a subset of metaChg */ { struct gbStatus* status = gbStatusStore(statusTbl, tmpStatus); slAddHead(&statusTbl->metaChgList, status); // metaChgList is correct statusTbl->numRebuildDerived++; status->entry = processed->entry; status->selectProc = processed; status->stateChg = GB_REBUILD_DERIVED; status->metaRelease = gbStatusTblGetStr(statusTbl, aligned->update->release->version); status->metaUpdate = gbStatusTblGetStr(statusTbl, aligned->update->shortName); flagUpdate(processed, aligned, FALSE); if (gbVerbose >= 5) traceSelect("rebuildDerived", status); }
static void markExtChanged(struct gbStatusTbl* statusTbl, struct gbStatus* tmpStatus, struct gbProcessed* processed, struct gbAligned* aligned) /* mark an entry as extChanged */ { struct gbStatus* status = gbStatusStore(statusTbl, tmpStatus); slAddHead(&statusTbl->extChgList, status); statusTbl->numExtChg++; status->entry = processed->entry; status->selectProc = processed; status->stateChg = GB_EXT_CHG; status->extRelease = gbStatusTblGetStr(statusTbl, aligned->update->release->version); status->extUpdate = gbStatusTblGetStr(statusTbl, aligned->update->shortName); /* flag update as needing processing */ flagUpdate(processed, aligned, FALSE); if (gbVerbose >= 5) traceSelect("extChg", status); }