QVariantMap ParabolaPointer::toVariantMap() const { QVariantMap qVariantMap; QVariantMap qRenderStates; for (auto iter = _renderStates.cbegin(); iter != _renderStates.cend(); iter++) { auto renderState = iter->second; QVariantMap qRenderState; qRenderState["start"] = renderState->getStartID(); qRenderState["end"] = renderState->getEndID(); qRenderStates[iter->first.c_str()] = qRenderState; } qVariantMap["renderStates"] = qRenderStates; QVariantMap qDefaultRenderStates; for (auto iter = _defaultRenderStates.cbegin(); iter != _defaultRenderStates.cend(); iter++) { float distance = iter->second.first; auto defaultRenderState = iter->second.second; QVariantMap qDefaultRenderState; qDefaultRenderState["distance"] = distance; qDefaultRenderState["start"] = defaultRenderState->getStartID(); qDefaultRenderState["end"] = defaultRenderState->getEndID(); qDefaultRenderStates[iter->first.c_str()] = qDefaultRenderState; } qVariantMap["defaultRenderStates"] = qDefaultRenderStates; return qVariantMap; }
static void reConnectAnnotation(IDnum * currentPreNodeID, Annotation * annot, Coordinate * currentPosition, IDnum sequenceIndex, PreGraph * preGraph, PreMarker ** previous) { IDnum nextPreNodeID = getStartID(annot); *previous = addPreMarker_pg(preGraph, nextPreNodeID, sequenceIndex, currentPosition, *previous); while (*currentPreNodeID != getFinishID(annot)) { nextPreNodeID = (*currentPreNodeID) + 1; *previous = addPreMarker_pg(preGraph, nextPreNodeID, sequenceIndex, currentPosition, *previous); *currentPreNodeID = nextPreNodeID; } }
static void convertInsertionMarkers(InsertionMarker * insertionMarkers, InsertionMarker * veryLastMarker, IDnum * chains) { InsertionMarker *marker; Annotation *annot; for (marker = insertionMarkers; marker != veryLastMarker; marker++) { annot = marker->annot; if (getAnnotSequenceID(annot) > 0) { if (marker->isStart) { if (getStartID(annot) == 0) setStartID(annot, chains [getAnnotSequenceID (annot)]); else setStartID(annot, getStartID(annot) + 1); } } else { if (marker->isStart) setStartID(annot, -getStartID(annot)); else { if (getFinishID(annot) == 0) setFinishID(annot, -chains [-getAnnotSequenceID (annot)]); else setFinishID(annot, -getFinishID(annot) - 1); } } } free(insertionMarkers); }
static void connectAnnotation(IDnum * currentPreNodeID, Annotation * annot, Coordinate * currentPosition, IDnum sequenceIndex, boolean isReference, PreGraph * preGraph) { IDnum nextPreNodeID = getStartID(annot); connectPreNodeToTheNext(currentPreNodeID, nextPreNodeID, currentPosition, sequenceIndex, isReference, preGraph); while (*currentPreNodeID != getFinishID(annot)) { nextPreNodeID = (*currentPreNodeID) + 1; connectPreNodeToTheNext(currentPreNodeID, nextPreNodeID, currentPosition, sequenceIndex, isReference, preGraph); } }
// The overlap structure implied by this edge Overlap Edge::getOverlap() const { return Overlap(getStartID(), getEndID(), getMatch()); }