X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Tool.cxx;h=45e356eba33aecb89808930ffa822a9753b8dbb1;hb=d6e19029f8b41f295db878e9aecf451c2edda4af;hp=5252cb2fb2b45d02ba8b53c3930604cbe5504c3e;hpb=95fae05fbf436c6efd6dcebe37dc8315e9f3147b;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Tool.cxx b/src/HYDROGUI/HYDROGUI_Tool.cxx index 5252cb2f..45e356eb 100644 --- a/src/HYDROGUI/HYDROGUI_Tool.cxx +++ b/src/HYDROGUI/HYDROGUI_Tool.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 EDF-R&D // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -31,6 +27,8 @@ #include #include #include +#include +#include #include @@ -211,7 +209,6 @@ void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule, bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject, const QString& theViewerType ) { - if ( theObject.IsNull() ) return false; @@ -229,7 +226,9 @@ bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& the anObjectKind == KIND_STREAM || anObjectKind == KIND_CHANNEL || anObjectKind == KIND_DIGUE || - anObjectKind == KIND_DUMMY_3D + anObjectKind == KIND_DUMMY_3D || + anObjectKind == KIND_BATHYMETRY || + anObjectKind == KIND_LAND_COVER #ifdef DEB_GROUPS || anObjectKind == KIND_SHAPES_GROUP || anObjectKind == KIND_SPLITTED_GROUP @@ -364,6 +363,23 @@ HYDROData_SequenceOfObjects HYDROGUI_Tool::GetGeometryObjects( return aResSeq; } +HYDROData_SequenceOfObjects HYDROGUI_Tool::GetLandCovers( HYDROGUI_Module* theModule ) +{ + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); + + HYDROData_SequenceOfObjects aResSeq; + + HYDROData_Iterator anIter( aDocument ); + for ( ; anIter.More(); anIter.Next() ) + { + Handle(HYDROData_Entity) anObj = anIter.Current(); + if ( !anObj.IsNull() && anObj->IsKind( STANDARD_TYPE(HYDROData_LandCover) )) + aResSeq.Append( anObj ); + } + + return aResSeq; +} + ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule ) { HYDROGUI_DataModel* aModel = theModule->getDataModel(); @@ -692,25 +708,86 @@ QColor HYDROGUI_Tool::GenerateFillingColor( const Handle(HYDROData_Document)& th } QStringList HYDROGUI_Tool::FindExistingObjectsNames( const Handle(HYDROData_Document)& theDoc, - const ObjectKind theObjectKind ) + const ObjectKind theObjectKind, + bool isCheckValidProfile ) { QStringList aNames; HYDROData_Iterator anIter( theDoc, theObjectKind ); for ( ; anIter.More(); anIter.Next() ) { Handle(HYDROData_Entity) anObject = anIter.Current(); - if( !anObject.IsNull() ) { - aNames.append( anObject->GetName() ); + + bool isOK = !anObject.IsNull(); + + if( isOK && isCheckValidProfile ) + { + Handle_HYDROData_Profile aProfile = Handle_HYDROData_Profile::DownCast( anObject ); + if( !aProfile.IsNull() && !aProfile->IsValid() ) + isOK = false; } + + if( isOK ) + aNames.append( anObject->GetName() ); } return aNames; } -QString HYDROGUI_Tool::GetCoordinateString( const double theNumber ) +QString HYDROGUI_Tool::GetCoordinateString( const double theNumber, bool isInLocale ) { - //return QString::number( theNumber, 'f', 2 ); - static QLocale aLocale( QLocale::English, QLocale::France ); - return aLocale.toString( theNumber, 'f', 2 ); + if( isInLocale ) + { + static QLocale aLocale( QLocale::English, QLocale::France ); + return aLocale.toString( theNumber, 'f', 2 ); + } + else + return QString::number( theNumber, 'f', 2 ); } +Handle(Image_PixMap) HYDROGUI_Tool::Pixmap( const QImage& theImage ) +{ + Handle(Image_PixMap) pix; + if ( theImage.isNull() || theImage.format() == QImage::Format_Invalid ) + return pix; + + Handle(Image_PixMap) tmpPix = new Image_PixMap(); + tmpPix->SetTopDown( false ); + QImage anImage = theImage.mirrored(); + if ( !anImage.hasAlphaChannel() && anImage.allGray() ) + { + tmpPix->InitTrash( Image_PixMap::ImgGray, anImage.width(), anImage.height(), anImage.width() ); + for ( int r = 0; r < anImage.height(); r++ ) + { + Standard_Byte* aRowData = tmpPix->ChangeRow( anImage.height() - r - 1 ); + for ( int p = 0; p < anImage.width(); p++ ) + aRowData[p] = qRed( anImage.pixel( p, r ) ); + } + } + else + { + Image_PixMap::ImgFormat aFormat; + if ( anImage.hasAlphaChannel() ) + { + if ( anImage.format() != QImage::Format_ARGB32 ) + anImage = anImage.convertToFormat( QImage::Format_ARGB32 ); + aFormat = Image_PixMap::ImgRGBA; + } + else + { + if ( anImage.format() != QImage::Format_RGB888 ) + anImage = anImage.convertToFormat( QImage::Format_RGB888 ); + aFormat = Image_PixMap::ImgRGB; + } + + tmpPix->InitWrapper( aFormat, (Standard_Byte*)anImage.bits(), anImage.width(), anImage.height(), anImage.bytesPerLine() ); + } + + if ( !tmpPix.IsNull() ) + { + pix = new Image_PixMap(); + pix->InitCopy( *tmpPix.operator->() ); + pix->SetTopDown( tmpPix->IsTopDown() ); + } + + return pix; +}