#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROGUI_ShapeImage.h>
#include <HYDROGUI_ShapeBathymetry.h>
-// TODO
-//#include <HYDROGUI_ShapeLandCoverMap.h>
+#include <HYDROGUI_ShapeLandCoverMap.h>
#include "HYDROGUI_Operation.h"
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_ZLayers.h"
#include <HYDROData_Bathymetry.h>
+#include <HYDROData_Image.h>
#include <HYDROData_LandCoverMap.h>
#include <HYDROData_StricklerTable.h>
#include <AIS_InteractiveContext.hxx>
#include <AIS_ListIteratorOfListOfInteractive.hxx>
#include <AIS_ListOfInteractive.hxx>
-
-#include <Aspect_ColorScale.hxx>
+#include <AIS_ColorScale.hxx>
#include <TColStd_SequenceOfInteger.hxx>
return aResShape;
if( theObject->IsKind( STANDARD_TYPE( HYDROData_Image ) ) )
- aResShape = new HYDROGUI_ShapeImage( theContext, Handle_HYDROData_Image::DownCast( theObject ) );
+ aResShape = new HYDROGUI_ShapeImage( theContext, Handle(HYDROData_Image)::DownCast( theObject ) );
else if( theObject->IsKind( STANDARD_TYPE( HYDROData_Bathymetry ) ) )
- aResShape = new HYDROGUI_ShapeBathymetry( this, theContext, Handle_HYDROData_Bathymetry::DownCast( theObject ) );
+ aResShape = new HYDROGUI_ShapeBathymetry( this, theContext, Handle(HYDROData_Bathymetry)::DownCast( theObject ) );
else if( theObject->IsKind( STANDARD_TYPE( HYDROData_LandCoverMap ) ) ) {
bool isScalarMode = module()->isLandCoversScalarMapModeOn( theViewerId );
- /* TODO
- aResShape = new HYDROGUI_ShapeLandCover( this, theContext, Handle_HYDROData_LandCoverMap::DownCast( theObject ), -1, isScalarMode );
- */
+ aResShape = new HYDROGUI_ShapeLandCoverMap( this, theContext, Handle(HYDROData_LandCoverMap)::DownCast( theObject ), -1, isScalarMode );
}
else
aResShape = new HYDROGUI_Shape( theContext, theObject );
int aViewerId = (size_t)theViewer;//TODO: check if viewer id is correct
bool isLandCoverColoringOn = module()->isLandCoversScalarMapModeOn( aViewerId );
- QList<HYDROGUI_Shape*> aLandCoverShapes = module()->getObjectShapes( aViewerId, KIND_LAND_COVER_MAP );
+ QList<HYDROGUI_Shape*> aLandCoverMapShapes = module()->getObjectShapes( aViewerId, KIND_LAND_COVER_MAP );
QList<HYDROGUI_Shape*> aBathShapes = module()->getObjectShapes( aViewerId, KIND_BATHYMETRY );
bool isDisplayColorScale = !aBathShapes.empty() || isLandCoverColoringOn;
}
}
- Handle(Aspect_ColorScale) aColorScale;
+ Handle(AIS_ColorScale) aColorScale = GetColorScale( aViewerId );
+ Handle(AIS_InteractiveContext) aCtx = theViewer->getAISContext();
if( isDisplayColorScale )
{
- aColorScale = aView->ColorScale();
if( !aColorScale.IsNull() )
{
aColorScale->SetXPosition( anXPos );
aColorScale->SetTitle( aColorScaleTitle );
aColorScale->SetRange( aColorScaleMin, aColorScaleMax );
+
+ aColorScale->SetToUpdate();
if ( !isLandCoverColoringOn ) {
foreach( HYDROGUI_Shape* aShape, aBathShapes ) {
aBathShape->UpdateWithColorScale( aColorScale );
}
}
+
+ if ( !aCtx.IsNull() && !aCtx->IsDisplayed( aColorScale ) ) {
+ aCtx->Display( aColorScale );
+ }
}
- if( !aView->ColorScaleIsDisplayed() )
- aView->ColorScaleDisplay();
}
else
{
- if( aView->ColorScaleIsDisplayed() )
- aView->ColorScaleErase();
+ if ( !aCtx.IsNull() && aCtx->IsDisplayed( aColorScale ) ) {
+ aCtx->Erase( aColorScale );
+ }
}
- /* TODO
- foreach( HYDROGUI_Shape* aShape, aLandCoverShapes ) {
- HYDROGUI_ShapeLandCover* aLandCoverShape =
- dynamic_cast<HYDROGUI_ShapeLandCover*>( aShape );
+ foreach( HYDROGUI_Shape* aShape, aLandCoverMapShapes ) {
+ HYDROGUI_ShapeLandCoverMap* aLandCoverMapShape =
+ dynamic_cast<HYDROGUI_ShapeLandCoverMap*>( aShape );
- if ( !aLandCoverShape || !aLandCoverShape->isVisible() ) {
+ if ( !aLandCoverMapShape || !aLandCoverMapShape->isVisible() ) {
continue;
}
- QColor aColor;
- Handle(HYDROData_LandCover) aLandCover =
- Handle(HYDROData_LandCover)::DownCast( aLandCoverShape->getObject() );
+ Handle(HYDROData_LandCoverMap) aLandCoverMap =
+ Handle(HYDROData_LandCoverMap)::DownCast( aLandCoverMapShape->getObject() );
- if ( aLandCover.IsNull() ) {
+ if ( aLandCoverMap.IsNull() ) {
continue;
}
- QColor aUndefinedColor( Qt::gray );
- QColor aColor = isLandCoverColoringOn ? aUndefinedColor : aLandCover->GetFillingColor();
-
- if ( isLandCoverColoringOn && !aTable.IsNull() ) {
- QString aStricklerType =
- aLandCover->GetStricklerType().toLatin1().constData();
-
- if ( aTable->HasType( aStricklerType ) ) {
- double aStricklerCoeff = aTable->Get( aStricklerType, 0 );
- Quantity_Color aShapeColor;
- if ( aColorScale->FindColor( aStricklerCoeff, aShapeColor ) ) {
- aColor = QColor( aShapeColor.Red() * 255,
- aShapeColor.Green() * 255,
- aShapeColor.Blue() * 255 );
- }
- }
- }
-
- aLandCoverShape->setFillingColor( aColor, true, true );
- aLandCoverShape->setScalarMapModeEnabled( isLandCoverColoringOn );
- theViewer->getAISContext()->Redisplay( aLandCoverShape->getAISObject() );
+ bool isScalarMode = aLandCoverMapShape->isScalarMapModeEnabled();
+ if( isScalarMode != isLandCoverColoringOn )
+ {
+ aLandCoverMapShape->setScalarMapModeEnabled( isLandCoverColoringOn );
+ theViewer->getAISContext()->Redisplay( aLandCoverMapShape->getAISObject() );
+ }
}
- */
-
+
myToUpdateColorScale = false;
}
+
+Handle(AIS_ColorScale) HYDROGUI_OCCDisplayer::GetColorScale( const int theViewerId )
+{
+ Handle(AIS_ColorScale) aColorScale;
+
+ aColorScale = myColorScales.value( theViewerId, aColorScale );
+ if ( aColorScale.IsNull() ) {
+ aColorScale = new AIS_ColorScale();
+ myColorScales.insert( theViewerId, aColorScale );
+ }
+
+ return aColorScale;
+}