X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSHAPERGUI%2FSHAPERGUI_SalomeViewer.cpp;h=8762f187958186de535e52879e3302b4e4f07810;hb=9a3d914571afc7318df989643dca720889fcc50b;hp=dc11d995f7482e637d411d1dd29e428735f45030;hpb=da4fc462d1aca655d3c80123e556bbb5efd30299;p=modules%2Fshaper.git diff --git a/src/SHAPERGUI/SHAPERGUI_SalomeViewer.cpp b/src/SHAPERGUI/SHAPERGUI_SalomeViewer.cpp index dc11d995f..8762f1879 100644 --- a/src/SHAPERGUI/SHAPERGUI_SalomeViewer.cpp +++ b/src/SHAPERGUI/SHAPERGUI_SalomeViewer.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SHAPERGUI_SalomeViewer.h" @@ -27,13 +26,18 @@ #include #include +#include +#include #include #include #include +#include -#define SALOME_PATCH_FOR_CTRL_WHEEL +#if OCC_VERSION_HEX < 0x070400 + #define SALOME_PATCH_FOR_CTRL_WHEEL +#endif SHAPERGUI_SalomeView::SHAPERGUI_SalomeView(OCCViewer_Viewer* theViewer) : ModuleBase_IViewWindow(), myCurrentView(0) @@ -119,7 +123,7 @@ Handle(V3d_View) SHAPERGUI_SalomeViewer::activeView() const //********************************************** QWidget* SHAPERGUI_SalomeViewer::activeViewPort() const { - QWidget* aViewPort; + QWidget* aViewPort = 0; if (mySelector) { OCCViewer_Viewer* aViewer = mySelector->viewer(); SUIT_ViewManager* aMgr = aViewer->getViewManager(); @@ -277,11 +281,19 @@ void SHAPERGUI_SalomeViewer::onViewCreated(SUIT_ViewWindow* theView) myWindowScale.insert(aView->getViewPort()->getView(), aView->getViewPort()->getView()->Camera()->Scale()); - emit viewCreated(myView); + QTimer::singleShot(10, this, SLOT(onAfterViewCreated())); + emit viewCreated(myView); +} +//********************************************** +void SHAPERGUI_SalomeViewer::onAfterViewCreated() +{ + // Update trihedron and dimension arrows + emit onViewTransformed(OCCViewer_ViewWindow::ZOOMVIEW); } + //********************************************** void SHAPERGUI_SalomeViewer::onActivated(SUIT_ViewManager* theMgr) { @@ -374,8 +386,20 @@ void SHAPERGUI_SalomeViewer::fitAll() //********************************************** void SHAPERGUI_SalomeViewer::eraseAll() { - SOCC_Viewer* aViewer = dynamic_cast(myView->viewer()); - aViewer->EraseAll(0); + Handle(AIS_InteractiveContext) aContext = AISContext(); + if (aContext.IsNull()) + return; + AIS_ListOfInteractive aList; + aContext->DisplayedObjects(aList); + AIS_ListIteratorOfListOfInteractive aLIt; + Handle(AIS_InteractiveObject) anAISIO; + for (aLIt.Initialize(aList); aLIt.More(); aLIt.Next()) { + anAISIO = aLIt.Value(); + Handle(Standard_Type) aType = anAISIO->DynamicType(); + if (anAISIO->IsKind(STANDARD_TYPE(SALOME_AISShape))) { + aContext->Erase(anAISIO, false); + } + } } //********************************************** @@ -393,7 +417,7 @@ void SHAPERGUI_SalomeViewer::setViewProjection(double theX, double theY, aView3d->SetProj(theX, theY, theZ); aView3d->SetTwist( theTwist ); aView3d->FitAll(0.01, false); - aView3d->SetZSize(0.); + //aView3d->SetZSize(0.); if (aView3d->Depth() < 0.1) aView3d->DepthFitAll(); } @@ -495,6 +519,89 @@ void SHAPERGUI_SalomeViewer::activateViewer(bool toActivate) } } +bool SHAPERGUI_SalomeViewer::isColorScaleVisible() const +{ + if (mySelector) { + return mySelector->viewer()->isColorScaleVisible(); + } + return false; +} + +void SHAPERGUI_SalomeViewer::setColorScaleShown(bool on) +{ + if (mySelector) { + mySelector->viewer()->setColorScaleShown(on); + } +} + +void SHAPERGUI_SalomeViewer::setColorScalePosition(double theX, double theY) +{ + if (mySelector) { + QWidget* aWindow = activeViewPort(); + mySelector->viewer()->getColorScale()->SetPosition(aWindow->width() * theX, + aWindow->height() * theY); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleSize(double theW, double theH) +{ + if (mySelector) { + QWidget* aWindow = activeViewPort(); + mySelector->viewer()->getColorScale()->SetSize(aWindow->width() * theW, + aWindow->height() * theH); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleRange(double theMin, double theMax) +{ + if (mySelector) { + mySelector->viewer()->getColorScale()->SetRange(theMin, theMax); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleIntervals(int theNb) +{ + if (mySelector) { + mySelector->viewer()->getColorScale()->SetNumberOfIntervals(theNb); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleTextHeigth(int theH) +{ + if (mySelector) { + mySelector->viewer()->getColorScale()->SetTextHeight(theH); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleTextColor(const QColor& theColor) +{ + if (mySelector) { + Quantity_Color aColor(theColor.redF(), theColor.greenF(), theColor.blueF(), Quantity_TOC_RGB); + mySelector->viewer()->getColorScale()->SetColor(aColor); + } +} + +void SHAPERGUI_SalomeViewer::setColorScaleTitle(const QString& theText) +{ + if (mySelector) { + mySelector->viewer()->getColorScale()->SetTitle(theText.toStdString().c_str()); + } +} + +void SHAPERGUI_SalomeViewer::setFitter(OCCViewer_Fitter* theFitter) +{ + if (mySelector) + mySelector->viewer()->setFitter(theFitter); +} + +OCCViewer_Fitter* SHAPERGUI_SalomeViewer::fitter() const +{ + if (mySelector) + return mySelector->viewer()->fitter(); + return 0; +} + + //void SHAPERGUI_SalomeViewer::Zfitall() //{ // if (!mySelector || !mySelector->viewer())