#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 )
myContext->Erase( myShape, theIsUpdateViewer );
}
-void HYDROGUI_Shape::update( const bool theIsUpdateViewer,
- const bool theIsDisplayOnTop )
+void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
{
setIsToUpdate( false );
bool isSaved = anImageToSave.save( aTextureFileName );
if ( !isSaved )
anImageError = QObject::tr( "FILE_CAN_NOT_BE_CREATED" ).arg( aTextureFileName );
+ else
+ QFile::setPermissions( aTextureFileName, (QFile::Permissions)0x4FFFF );
}
if ( !anImageError.isEmpty() )
if ( myShape.IsNull() || !isVisible() )
return;
- myContext->Display( myShape, theIsUpdateViewer );
-
- if ( theIsDisplayOnTop ) {
- // Display the shape on the top Z layer
- Standard_Integer aNewLayerId = -1;
- if ( myContext->CurrentViewer() &&
- myContext->CurrentViewer()->AddZLayer( aNewLayerId ) &&
- aNewLayerId > 0 ) {
- myContext->SetZLayer( myShape, aNewLayerId );
- }
- }
+ displayShape( theIsUpdateViewer );
if (isDeactivateSelection)
myContext->Deactivate(myShape);
void HYDROGUI_Shape::setVisible( const bool theState,
const bool theIsUpdateViewer )
{
- if ( myIsVisible == theState )
- return;
-
myIsVisible = theState;
if ( myShape.IsNull() )
return;
- if ( myIsVisible )
- myContext->Display( myShape, theIsUpdateViewer );
+ if ( ( myIsVisible && myContext->IsDisplayed( myShape ) ) ||
+ ( !myIsVisible && !myContext->IsDisplayed( myShape ) ) )
+ return;
+
+ 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