static int sy = 0;
static Standard_Boolean zRotation = Standard_False;
-//#include <Standard_Version.hxx>
+#include <Basics_OCCTVersion.hxx>
/*!
Constructor
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;
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();
}
#include <vtkType.h>
#include <limits>
+#include <Basics_OCCTVersion.hxx>
+
typedef std::vector<Standard_Integer> SVTK_ListOfInteger;
typedef std::vector<vtkIdType> SVTK_ListOfVtk;
+#if OCC_VERSION_LARGE < 0x07080000
class SVTK_Hasher {
public:
}
};
+#else
+
+class SVTK_Hasher {
+
+public:
+ size_t operator()(const std::vector<Standard_Integer> 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<vtkIdType> 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<vtkIdType>::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<vtkIdType>::max)());
+ }
+
+ bool operator()(const vtkIdType& id1, const vtkIdType& id2) const
+ {
+ return id1 == id2;
+ }
+};
+
+#endif // OCC_VERSION_LARGE < 0x07080000
+
typedef NCollection_IndexedMap<SVTK_ListOfInteger,SVTK_Hasher> SVTK_IndexedMapOfIds;
typedef NCollection_IndexedMap<SVTK_ListOfVtk, SVTK_vtkHasher> SVTK_IndexedMapOfVtkIds;
typedef NCollection_Map< vtkIdType, svtkIdHasher > SVTK_TVtkIDsMap;