X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ViewerProxy.cpp;h=cc73e969d09231ad0ad0395bbafac7ddddb253ee;hb=77ce6d35ac8d2f0fdaecb4f23e0870bf74e36103;hp=c0fb508ebe0770e7376b2208fd56ed3165f41beb;hpb=085ba8117d0a4953e5ffc315432df41c12f4f246;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewerProxy.cpp b/src/XGUI/XGUI_ViewerProxy.cpp index c0fb508eb..cc73e969d 100644 --- a/src/XGUI/XGUI_ViewerProxy.cpp +++ b/src/XGUI/XGUI_ViewerProxy.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// Copyright (C) 2014-2024 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -449,35 +449,51 @@ bool XGUI_ViewerProxy::canDragByMouse() const } //*************************************** -void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shape& theIgnoreShape) +Handle(AIS_Shape) createPresentation(const TopoDS_Shape& theShape, double theDeviation) +{ + Handle(AIS_Shape) aAis = new AIS_Shape(theShape); + aAis->SetColor(HIGHLIGHT_COLOR); + aAis->SetZLayer(Graphic3d_ZLayerId_Top); //Graphic3d_ZLayerId_Topmost + aAis->Attributes()->SetDeviationCoefficient(theDeviation); + aAis->Attributes()->SetIsoOnPlane(false); + return aAis; +} + +//*************************************** +void XGUI_ViewerProxy::createPresentations(const ResultPtr& theRes, + const TopoDS_Shape& theIgnoreShape) { Handle(AIS_InteractiveContext) aContext = AISContext(); + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + Handle(AIS_Shape) aAis; + Handle(AIS_InteractiveObject) anAISIO; + double aDeviation = 0.001; + + TopoDS_Shape aTShape = theRes->shape()->impl(); + if (!aTShape.IsSame(theIgnoreShape)) { + AISObjectPtr aAISPrs = aDisplayer->getAISObject(theRes); + if (aAISPrs.get()) { + anAISIO = aAISPrs->impl(); + aDeviation = anAISIO->Attributes()->DeviationCoefficient(); + } + else { + aDeviation = Config_PropManager::real("Visualization", "construction_deflection"); + } + aAis = createPresentation(aTShape, aDeviation); + myHighlights.Append(aAis); + aContext->Display(aAis, false); + aContext->Deactivate(aAis); + } +} + - double aDeflection; +void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shape& theIgnoreShape) +{ if (theFeature.get()) { std::list aResults = theFeature->results(); std::list::const_iterator aIt; - XGUI_Displayer* aDisplayer = myWorkshop->displayer(); - ResultPtr aRes; - Handle(AIS_InteractiveObject) anAISIO; - Handle(AIS_Shape) aAis; for (aIt = aResults.cbegin(); aIt != aResults.cend(); aIt++) { - aRes = (*aIt); - TopoDS_Shape aTShape = aRes->shape()->impl(); - if (!aTShape.IsSame(theIgnoreShape)) { - anAISIO = aDisplayer->getAISObject(aRes)->impl(); - if (!anAISIO.IsNull()) { - aAis = new AIS_Shape(aTShape); - aAis->SetColor(HIGHLIGHT_COLOR); - aAis->SetZLayer(Graphic3d_ZLayerId_Top); //Graphic3d_ZLayerId_Topmost - aDeflection = anAISIO->Attributes()->DeviationCoefficient(); - aAis->Attributes()->SetDeviationCoefficient(aDeflection); - aAis->Attributes()->SetIsoOnPlane(false); - myHighlights.Append(aAis); - aContext->Display(aAis, false); - aContext->Deactivate(aAis); - } - } + createPresentations((*aIt), theIgnoreShape); } } } @@ -710,24 +726,13 @@ void XGUI_ViewerProxy::setupColorScale() setColorScaleIntervals(aN); } - -//*************************************** -//void XGUI_ViewerProxy::Zfitall() -//{ -//#ifdef HAVE_SALOME -// myWorkshop->salomeConnector()->viewer()->Zfitall(); -//#else -// AppElements_Viewer* aViewer = myWorkshop->mainWindow()->viewer(); -// AppElements_ViewWindow* aView = aViewer->activeViewWindow(); -// if (aView) { -// Handle(V3d_View) aView3d = aView->v3dView(); -// aView3d->ZFitAll(); -// if (aView3d->Depth() < 0.1) -// aView3d->DepthFitAll(); -// } -//#endif -//} - +void XGUI_ViewerProxy::setText( + const ModuleBase_IViewer::TextColor& theText, const int theSize) +{ +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->setText(theText, theSize); +#endif +} #ifdef HAVE_SALOME void XGUI_ViewerProxy::setFitter(OCCViewer_Fitter* theFitter)