void QGIViewPart::updateView(bool update) { if (getViewObject() == 0 || !getViewObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { return; } QGIView::updateView(update); TechDraw::DrawViewPart *viewPart = dynamic_cast<TechDraw::DrawViewPart *>(getViewObject()); if (update || viewPart->isTouched() || viewPart->Source.isTouched() || viewPart->Direction.isTouched() || viewPart->XAxisDirection.isTouched() || viewPart->Tolerance.isTouched() || viewPart->Scale.isTouched() || viewPart->ShowHiddenLines.isTouched() || viewPart->ShowSmoothLines.isTouched() || viewPart->ShowSeamLines.isTouched() ) { // Remove all existing graphical representations (QGIxxxx) otherwise BRect only grows, never shrinks? // is this where selection messes up? prepareGeometryChange(); QList<QGraphicsItem*> items = childItems(); for(QList<QGraphicsItem*>::iterator it = items.begin(); it != items.end(); ++it) { if (dynamic_cast<QGIEdge *> (*it) || dynamic_cast<QGIFace *>(*it) || dynamic_cast<QGIVertex *>(*it)) { removeFromGroup(*it); scene()->removeItem(*it); // We store these and delete till later to prevent rendering crash ISSUE deleteItems.append(*it); } } draw(); } else if (update || viewPart->LineWidth.isTouched() || viewPart->HiddenWidth.isTouched()) { QList<QGraphicsItem*> items = childItems(); for(QList<QGraphicsItem*>::iterator it = items.begin(); it != items.end(); ++it) { QGIEdge *edge = dynamic_cast<QGIEdge *>(*it); if(edge && edge->getHiddenEdge()) { edge->setStrokeWidth(viewPart->HiddenWidth.getValue() * lineScaleFactor); } else { edge->setStrokeWidth(viewPart->LineWidth.getValue() * lineScaleFactor); } } draw(); } else { QGIView::draw(); } }
void QGIViewPart::updateView(bool update) { auto viewPart( dynamic_cast<TechDraw::DrawViewPart *>(getViewObject()) ); if( viewPart == nullptr ) { return; } QGIView::updateView(update); if (update || viewPart->isTouched() || viewPart->Source.isTouched() || viewPart->Direction.isTouched() || viewPart->Tolerance.isTouched() || viewPart->Scale.isTouched() || viewPart->HardHidden.isTouched() || viewPart->SmoothVisible.isTouched() || viewPart->SeamVisible.isTouched() || viewPart->IsoVisible.isTouched() || viewPart->SmoothHidden.isTouched() || viewPart->SeamHidden.isTouched() || viewPart->IsoHidden.isTouched() || viewPart->IsoCount.isTouched() ) { draw(); } else if (update || viewPart->LineWidth.isTouched() || viewPart->HiddenWidth.isTouched()) { QList<QGraphicsItem*> items = childItems(); for(QList<QGraphicsItem*>::iterator it = items.begin(); it != items.end(); ++it) { QGIEdge *edge = dynamic_cast<QGIEdge *>(*it); if(edge && edge->getHiddenEdge()) { edge->setWidth(viewPart->HiddenWidth.getValue() * lineScaleFactor); } else { edge->setWidth(viewPart->LineWidth.getValue() * lineScaleFactor); } } draw(); } else { QGIView::draw(); } }