From: jfa Date: Mon, 15 Jan 2024 13:35:35 +0000 (+0000) Subject: Porting to OCCT 7.8.0 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7ae1bd79bf5e868fd45158081c8aef3acd427f86;p=modules%2Fgui.git Porting to OCCT 7.8.0 --- diff --git a/src/DDS/DDS.h b/src/DDS/DDS.h index e66c62c40..237e3c3a9 100644 --- a/src/DDS/DDS.h +++ b/src/DDS/DDS.h @@ -24,7 +24,6 @@ #define DDS_H #include -#include #define UNIT_SYSTEM_SI "SI" diff --git a/src/DDS/DDS_DicItem.h b/src/DDS/DDS_DicItem.h index 49a51e50c..8fb19463b 100644 --- a/src/DDS/DDS_DicItem.h +++ b/src/DDS/DDS_DicItem.h @@ -33,7 +33,7 @@ #include #include -#include +#include #include #include diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index c897f7930..63e2510f3 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -27,7 +27,7 @@ // E.A. : On windows with python 2.6, there is a conflict // E.A. : between pymath.h and Standard_math.h which define // E.A. : some same symbols : acosh, asinh, ... - #include + #include #ifndef DISABLE_PYCONSOLE #include #include diff --git a/src/OCCViewer/OCCViewer_VService.h b/src/OCCViewer/OCCViewer_VService.h index 9afe8d5ed..cd24387ae 100644 --- a/src/OCCViewer/OCCViewer_VService.h +++ b/src/OCCViewer/OCCViewer_VService.h @@ -28,7 +28,6 @@ #include #include #include -#include #include #include diff --git a/src/OCCViewer/OCCViewer_ViewPort3d.cxx b/src/OCCViewer/OCCViewer_ViewPort3d.cxx index 23cf8b4ed..7e7b26c13 100644 --- a/src/OCCViewer/OCCViewer_ViewPort3d.cxx +++ b/src/OCCViewer/OCCViewer_ViewPort3d.cxx @@ -58,7 +58,7 @@ static int sx = 0; static int sy = 0; static Standard_Boolean zRotation = Standard_False; -//#include +#include /*! Constructor @@ -324,28 +324,28 @@ void OCCViewer_ViewPort3d::updateBackground() activeView()->SetBgImageStyle( Aspect_FM_NONE ); // cancel texture background switch ( type ) { case OCCViewer_Viewer::HorizontalGradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_HOR, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Horizontal, Standard_True ); break; case OCCViewer_Viewer::VerticalGradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_VER, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Vertical, Standard_True ); break; case OCCViewer_Viewer::Diagonal1Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_DIAG1, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Diagonal1, Standard_True ); break; case OCCViewer_Viewer::Diagonal2Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_DIAG2, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Diagonal2, Standard_True ); break; case OCCViewer_Viewer::Corner1Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_CORNER1, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Corner1, Standard_True ); break; case OCCViewer_Viewer::Corner2Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_CORNER2, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Corner2, Standard_True ); break; case OCCViewer_Viewer::Corner3Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_CORNER3, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Corner3, Standard_True ); break; case OCCViewer_Viewer::Corner4Gradient: - activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GFM_CORNER4, Standard_True ); + activeView()->SetBgGradientColors( qCol1, qCol2, Aspect_GradientFillMethod_Corner4, Standard_True ); break; default: break; @@ -760,6 +760,26 @@ void OCCViewer_ViewPort3d::attachWindow( const Handle(V3d_View)& view, const Handle(Aspect_Window)& window) { if (!view.IsNull()) { +#if OCC_VERSION_LARGE > 0x07070000 + // Workaround for OCCT bug 33647 (porting to OCCT 7.8.0 regression). + if (myBackground.isValid()) { + if (myBackground.mode() == Qtx::SimpleGradientBackground) { + QColor c1, c2; + int type = myBackground.gradient(c1, c2); + if (type >= OCCViewer_Viewer::Corner1Gradient && + type <= OCCViewer_Viewer::Corner4Gradient) { + if (!c2.isValid()) c2 = c1; + Quantity_Color qCol1 (c1.red()/255., c1.green()/255., c1.blue()/255., Quantity_TOC_RGB); + Quantity_Color qCol2 (c2.red()/255., c2.green()/255., c2.blue()/255., Quantity_TOC_RGB); + view->SetBgImageStyle(Aspect_FM_NONE); // cancel texture background + // Set first horizontal gradient background, as first + // initialization with corner gradient leads to a bug. + //view->SetBgGradientColors(qCol1, qCol2, Aspect_GradientFillMethod_Horizontal, Standard_True); + view->SetBgGradientColors(qCol1, qCol2, Aspect_GradientFillMethod_Horizontal); + } + } + } +#endif view->SetWindow( window ); updateBackground(); } diff --git a/src/SALOME_PY/SalomePy.cxx b/src/SALOME_PY/SalomePy.cxx index 7e9138f12..fae147331 100644 --- a/src/SALOME_PY/SalomePy.cxx +++ b/src/SALOME_PY/SalomePy.cxx @@ -28,12 +28,11 @@ // E.A. : On windows with python 2.6, there is a conflict // E.A. : between pymath.h and Standard_math.h which define // E.A. : some same symbols : acosh, asinh, ... -#include - #include - #include +#include +#include +#include #endif -#include #include #include diff --git a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx index 322b4323b..14ecb3ac1 100644 --- a/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx +++ b/src/SALOME_PYQT/SalomePyQt/SalomePyQt.cxx @@ -27,7 +27,7 @@ // E.A. : On windows with python 2.6, there is a conflict // E.A. : between pymath.h and Standard_math.h which define // E.A. : some same symbols : acosh, asinh, ... -#include +#include #include #include #endif diff --git a/src/SVTK/SVTK_Hash.h b/src/SVTK/SVTK_Hash.h index 990848bf9..5d65de6b0 100644 --- a/src/SVTK/SVTK_Hash.h +++ b/src/SVTK/SVTK_Hash.h @@ -34,9 +34,12 @@ #include #include +#include + typedef std::vector SVTK_ListOfInteger; typedef std::vector SVTK_ListOfVtk; +#if OCC_VERSION_LARGE < 0x07080000 class SVTK_Hasher { public: @@ -90,6 +93,59 @@ struct svtkIdHasher } }; +#else + +class SVTK_Hasher { + +public: + size_t operator()(const std::vector ids) const + { + Standard_Integer seed = (Standard_Integer)ids.size(); + for ( Standard_Integer v : ids ) + seed ^= v + 0x9e3779b9 + ( seed << 6 ) + ( seed >> 2 ); + return (size_t)(seed & IntegerLast()); + } + + bool operator()(const SVTK_ListOfInteger& theKey1, + const SVTK_ListOfInteger& theKey2) const + { + return theKey1 == theKey2; + } +}; + +class SVTK_vtkHasher { + +public: + size_t operator()(const std::vector ids) const + { + vtkIdType seed = (vtkIdType)ids.size(); + for ( vtkIdType v : ids ) + seed ^= v + 0x9e3779b97f4a7c15 + ( seed << 6 ) + ( seed >> 2 ); + return (size_t)(seed & (std::numeric_limits::max)()); + } + + bool operator()(const SVTK_ListOfVtk& theKey1, + const SVTK_ListOfVtk& theKey2) const + { + return theKey1 == theKey2; + } +}; + +struct svtkIdHasher +{ + size_t operator()(const vtkIdType theValue) const + { + return (size_t)(theValue & (std::numeric_limits::max)()); + } + + bool operator()(const vtkIdType& id1, const vtkIdType& id2) const + { + return id1 == id2; + } +}; + +#endif // OCC_VERSION_LARGE < 0x07080000 + typedef NCollection_IndexedMap SVTK_IndexedMapOfIds; typedef NCollection_IndexedMap SVTK_IndexedMapOfVtkIds; typedef NCollection_Map< vtkIdType, svtkIdHasher > SVTK_TVtkIDsMap; diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index a8300ea62..6a5847fd4 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -28,7 +28,7 @@ // E.A. : On windows with python 2.6, there is a conflict // E.A. : between pymath.h and Standard_math.h which define // E.A. : some same symbols : acosh, asinh, ... - #include + #include #ifndef DISABLE_PYCONSOLE #include #include