void SkyQPainter::drawSkyPolyline(LineList* list, SkipList* skipList, LineListLabel* label) { SkyList *points = list->points(); bool isVisible, isVisibleLast; QPointF oLast = m_proj->toScreen( points->first(), true, &isVisibleLast ); // & with the result of checkVisibility to clip away things below horizon isVisibleLast &= m_proj->checkVisibility( points->first() ); QPointF oThis, oThis2; for ( int j = 1 ; j < points->size() ; j++ ) { SkyPoint* pThis = points->at( j ); oThis2 = oThis = m_proj->toScreen( pThis, true, &isVisible ); // & with the result of checkVisibility to clip away things below horizon isVisible &= m_proj->checkVisibility(pThis); bool doSkip = false; if( skipList ) { doSkip = skipList->skip(j); } if ( !doSkip ) { if ( isVisible && isVisibleLast ) { drawLine( oLast, oThis ); if ( label ) label->updateLabelCandidates( oThis.x(), oThis.y(), list, j ); } } oLast = oThis2; isVisibleLast = isVisible; } }
void SkyQPainter::drawSkyPolyline(LineList* list, SkipList* skipList, LineListLabel* label) { SkyList *points = list->points(); bool isVisible, isVisibleLast; QPointF oLast = m_proj->toScreen( points->first(), true, &isVisibleLast ); // & with the result of checkVisibility to clip away things below horizon isVisibleLast &= m_proj->checkVisibility( points->first() ); QPointF oThis, oThis2; for ( int j = 1 ; j < points->size() ; j++ ) { SkyPoint* pThis = points->at( j ); oThis2 = oThis = m_proj->toScreen( pThis, true, &isVisible ); // & with the result of checkVisibility to clip away things below horizon isVisible &= m_proj->checkVisibility(pThis); bool doSkip = false; if( skipList ) { doSkip = skipList->skip(j); } bool pointsVisible = false; //Temporary solution to avoid random lines in Gnomonic projection and draw lines up to horizon if(SkyMap::Instance()->projector()->type() == Projector::Gnomonic) { if ( isVisible && isVisibleLast ) pointsVisible = true; } else { if ( isVisible || isVisibleLast ) pointsVisible = true; } if ( !doSkip ) { if(pointsVisible) { drawLine( oLast, oThis ); if ( label ) label->updateLabelCandidates( oThis.x(), oThis.y(), list, j ); } } oLast = oThis2; isVisibleLast = isVisible; } }