#include <QFile>
HYDROGUI_Shape::HYDROGUI_Shape( const Handle(AIS_InteractiveContext)& theContext,
- const Handle(HYDROData_Entity)& theObject )
+ const Handle(HYDROData_Entity)& theObject,
+ const int theZLayer )
: myContext( theContext ),
myObject( theObject ),
+ myZLayer( theZLayer ),
myIsHighlight( false ),
myFillingColor( Qt::transparent ),
myBorderColor( Qt::black ),
if ( myContext.IsNull() || myShape.IsNull() || !isVisible() )
return;
- myContext->Display( myShape, theIsUpdateViewer );
+ displayShape( theIsUpdateViewer );
}
void HYDROGUI_Shape::erase( const bool theIsUpdateViewer )
if ( myShape.IsNull() || !isVisible() )
return;
- myContext->Display( myShape, theIsUpdateViewer );
-
- if ( theIsDisplayOnTop ) {
+ displayShape( theIsUpdateViewer );
+ // the following code is not necessary if the Z layer is set for the shape
+ if ( myZLayer && theIsDisplayOnTop )
+ {
// Display the shape on the top Z layer
Standard_Integer aNewLayerId = -1;
if ( myContext->CurrentViewer() &&
( !myIsVisible && !myContext->IsDisplayed( myShape ) ) )
return;
- if ( myIsVisible )
- myContext->Display( myShape, theIsUpdateViewer );
+ if ( myIsVisible ) {
+ displayShape( theIsUpdateViewer );
+ }
else
myContext->Erase( myShape, theIsUpdateViewer );
}
return;
colorShapeBorder( getActiveColor() );
- myContext->Display( myShape, isUpdateViewer );
+ displayShape( isUpdateViewer );
}
bool HYDROGUI_Shape::isHighlighted() const
return myTextureFileName;
}
+void HYDROGUI_Shape::setZLayer( const int theZLayer )
+{
+ if ( myZLayer == theZLayer )
+ return;
+
+ myZLayer = theZLayer;
+ if ( !myShape.IsNull() && isVisible() && !myContext.IsNull() && myZLayer >= 0 )
+ myContext->SetZLayer( myShape, myZLayer );
+}
+
void HYDROGUI_Shape::buildShape()
{
// Erase previously created shape
if ( !theToDisplay || !isVisible() || myContext.IsNull() )
return;
- myContext->Display( myShape, theIsUpdateViewer );
+ displayShape( theIsUpdateViewer );
+}
+
+void HYDROGUI_Shape::displayShape( const bool theIsUpdateViewer )
+{
+ myContext->Display( myShape, Standard_False );
+
+ if ( myZLayer >= 0 )
+ myContext->SetZLayer( myShape, myZLayer );
+
+ myContext->UpdateCurrentViewer();
}
QColor HYDROGUI_Shape::getActiveColor() const