X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Image.cxx;h=4e91edafb18e9e543e5069a31cb8f3f5ca54827b;hb=e744ba34fd38d6744d11b54cd15b6f86350695b2;hp=88e1a3b0bea3c9ca21fe8606582f576ed017aa85;hpb=4fb26469914cfdce427475638c0ed89299036c54;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Image.cxx b/src/HYDROData/HYDROData_Image.cxx index 88e1a3b0..4e91edaf 100644 --- a/src/HYDROData/HYDROData_Image.cxx +++ b/src/HYDROData/HYDROData_Image.cxx @@ -1,3 +1,20 @@ +// 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, 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "HYDROData_Image.h" @@ -13,12 +30,20 @@ #include #include +#ifdef WIN32 + #pragma warning ( disable: 4251 ) +#endif + #include #include #include #include +#ifdef WIN32 + #pragma warning ( default: 4251 ) +#endif + #include static const Standard_GUID GUID_SELF_SPLITTED("997995aa-5c19-40bf-9a60-ab4b70ad04d8"); @@ -29,7 +54,7 @@ IMPLEMENT_STANDARD_HANDLE(HYDROData_Image, HYDROData_Entity) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Image, HYDROData_Entity) HYDROData_Image::HYDROData_Image() -: HYDROData_Entity() +: HYDROData_Entity( Geom_2d ) { } @@ -39,8 +64,8 @@ HYDROData_Image::~HYDROData_Image() QStringList HYDROData_Image::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const { - QStringList aResList = HYDROData_Entity::DumpToPython( theTreatedObjects ); - QString anImageName = GetName(); + QStringList aResList = dumpObjectCreation( theTreatedObjects ); + QString anImageName = GetObjPyName(); QString aFilePath = GetFilePath(); if ( !aFilePath.isEmpty() ) @@ -52,19 +77,27 @@ QStringList HYDROData_Image::DumpToPython( MapOfTreatedObjects& theTreatedObject // Dump transformation points for image - QString aGap = QString().fill( ' ', anImageName.size() + 16 ); - bool anIsByTwoPoints = IsByTwoPoints(); QPoint aLocalPointA, aLocalPointB, aLocalPointC; if ( GetLocalPoints( aLocalPointA, aLocalPointB, aLocalPointC ) ) { + QString aGap = QString().fill( ' ', anImageName.size() + 17 ); + aResList << QString( "%1.SetLocalPoints( QPoint( %2, %3 )," ) .arg( anImageName ).arg( aLocalPointA.x() ).arg( aLocalPointA.y() ); - aResList << QString( aGap + "QPoint( %1, %2 )," ) + aResList << QString( aGap + "QPoint( %1, %2 )" ) .arg( aLocalPointB.x() ).arg( aLocalPointB.y() ); - aResList << QString( aGap + "QPoint( %1, %2 ) );" ) - .arg( aLocalPointC.x() ).arg( aLocalPointC.y() ); + if ( !anIsByTwoPoints ) + { + aResList.last().append( "," ); + aResList << QString( aGap + "QPoint( %1, %2 ) );" ) + .arg( aLocalPointC.x() ).arg( aLocalPointC.y() ); + } + else + { + aResList.last().append( " );" ); + } aResList << QString( "" ); } @@ -72,14 +105,24 @@ QStringList HYDROData_Image::DumpToPython( MapOfTreatedObjects& theTreatedObject QPointF aTrsfPointA, aTrsfPointB, aTrsfPointC; if ( GetGlobalPoints( aTransformationMode, aTrsfPointA, aTrsfPointB, aTrsfPointC ) ) { + QString aGap = QString().fill( ' ', anImageName.size() + 18 ); + aResList << QString( "%1.SetGlobalPoints( %2," ) .arg( anImageName ).arg( aTransformationMode ); aResList << QString( aGap + "QPointF( %1, %2 )," ) .arg( aTrsfPointA.x() ).arg( aTrsfPointA.y() ); - aResList << QString( aGap + "QPointF( %1, %2 )," ) + aResList << QString( aGap + "QPointF( %1, %2 )" ) .arg( aTrsfPointB.x() ).arg( aTrsfPointB.y() ); - aResList << QString( aGap + "QPointF( %1, %2 ) );" ) - .arg( aTrsfPointC.x() ).arg( aTrsfPointC.y() ); + if ( !anIsByTwoPoints ) + { + aResList.last().append( "," ); + aResList << QString( aGap + "QPointF( %1, %2 ) );" ) + .arg( aTrsfPointC.x() ).arg( aTrsfPointC.y() ); + } + else + { + aResList.last().append( " );" ); + } if ( aTransformationMode == ReferenceImage ) { @@ -130,18 +173,17 @@ QStringList HYDROData_Image::DumpToPython( MapOfTreatedObjects& theTreatedObject setPythonReferenceObject( theTreatedObjects, aResList, aRefImg, "AppendReference" ); } } - - // Necessary to update image in case of composed operator - aResList << QString( "" ); - aResList << QString( "%1.Update();" ).arg( anImageName ); } + aResList << QString( "" ); + aResList << QString( "%1.Update();" ).arg( anImageName ); + return aResList; } void HYDROData_Image::Update() { - bool anIsToUpdate = IsMustBeUpdated(); + bool anIsToUpdate = IsMustBeUpdated( Geom_2d ); HYDROData_Entity::Update(); @@ -192,7 +234,12 @@ void HYDROData_Image::Update() UpdateTrsf(); } - SetToUpdate( false ); + ClearChanged(); +} + +bool HYDROData_Image::IsHas2dPrs() const +{ + return true; } QVariant HYDROData_Image::GetDataVariant() @@ -255,13 +302,16 @@ void HYDROData_Image::SetImage(const QImage& theImage) SaveByteArray(0, aData, anImage.byteCount()); } - SetToUpdate( true ); + Changed( Geom_2d ); } bool HYDROData_Image::LoadImage( const QString& theFilePath ) { QImage anImage( theFilePath ); SetImage( anImage ); + + SetFilePath( theFilePath ); + return !anImage.isNull(); } @@ -284,7 +334,7 @@ void HYDROData_Image::SetFilePath( const QString& theFilePath ) TCollection_AsciiString anAsciiStr( theFilePath.toStdString().c_str() ); TDataStd_AsciiString::Set( myLab.FindChild( DataTag_FilePath ), anAsciiStr ); - SetToUpdate( true ); + Changed( Geom_2d ); } QString HYDROData_Image::GetFilePath() const @@ -320,7 +370,7 @@ void HYDROData_Image::SetTrsf(const QTransform& theTrsf) anArray->SetValue(8, theTrsf.m32()); anArray->SetValue(9, theTrsf.m33()); - SetToUpdate( true ); + Changed( Geom_2d ); } QTransform HYDROData_Image::Trsf() const @@ -465,7 +515,7 @@ void HYDROData_Image::RemoveAllReferences() QImage anImage = Image(); if ( anImage.isNull() ) { - SetToUpdate( false ); + ClearChanged(); return; } @@ -486,7 +536,7 @@ void HYDROData_Image::RemoveAllReferences() SetGlobalPoints( ManualCartesian, aTrsfPointA, aTrsfPointB, aTrsfPointC ); - SetToUpdate( false ); + ClearChanged(); } void HYDROData_Image::SetLocalPoints( const QPoint& thePointA, @@ -510,7 +560,7 @@ void HYDROData_Image::SetLocalPoints( const QPoint& thePointA, if ( theIsUpdate ) UpdateTrsf(); - SetToUpdate( true ); + Changed( Geom_2d ); } bool HYDROData_Image::GetLocalPoints( QPoint& thePointA, @@ -565,7 +615,7 @@ void HYDROData_Image::SetGlobalPoints( const TransformationMode& theMode, if ( theIsUpdate ) UpdateTrsf(); - SetToUpdate( true ); + Changed( Geom_2d ); } bool HYDROData_Image::GetGlobalPoints( TransformationMode& theMode, @@ -717,7 +767,7 @@ bool HYDROData_Image::HasReferencePoints() const void HYDROData_Image::SetTrsfMode( const TransformationMode& theMode ) { TDataStd_Integer::Set( myLab.FindChild( DataTag_TrsfMode ), (int)theMode ); - SetToUpdate( true ); + Changed( Geom_2d ); } HYDROData_Image::TransformationMode HYDROData_Image::GetTrsfMode() const @@ -738,7 +788,7 @@ HYDROData_Image::TransformationMode HYDROData_Image::GetTrsfMode() const void HYDROData_Image::SetTrsfReferenceImage( const Handle(HYDROData_Image)& theRefImage ) { SetReferenceObject( theRefImage, DataTag_TrsfImage ); - SetToUpdate( true ); + Changed( Geom_2d ); } Handle(HYDROData_Image) HYDROData_Image::GetTrsfReferenceImage() const @@ -749,13 +799,13 @@ Handle(HYDROData_Image) HYDROData_Image::GetTrsfReferenceImage() const void HYDROData_Image::RemoveTrsfReferenceImage() { RemoveReferenceObject( DataTag_TrsfImage ); - SetToUpdate( true ); + Changed( Geom_2d ); } void HYDROData_Image::AppendReference( const Handle(HYDROData_Entity)& theReferenced ) { AddReferenceObject( theReferenced, 0 ); - SetToUpdate( true ); + Changed( Geom_2d ); } int HYDROData_Image::NbReferences() const @@ -772,26 +822,26 @@ void HYDROData_Image::ChangeReference( const int theIndex, Handle(HYDROData_Entity) theReferenced) { SetReferenceObject( theReferenced, 0, theIndex ); - SetToUpdate( true ); + Changed( Geom_2d ); } void HYDROData_Image::RemoveReference(const int theIndex) { RemoveReferenceObject( 0, theIndex ); - SetToUpdate( true ); + Changed( Geom_2d ); } void HYDROData_Image::ClearReferences() { ClearReferenceObjects( 0 ); - SetToUpdate( true ); + Changed( Geom_2d ); } void HYDROData_Image::SetOperatorName( const QString theOpName ) { TCollection_AsciiString anAsciiStr( theOpName.toStdString().c_str() ); TDataStd_AsciiString::Set( myLab.FindChild( DataTag_Operator ), anAsciiStr ); - SetToUpdate( true ); + Changed( Geom_2d ); } QString HYDROData_Image::OperatorName() const @@ -812,7 +862,7 @@ QString HYDROData_Image::OperatorName() const void HYDROData_Image::SetArgs(const QByteArray& theArgs) { SaveByteArray(DataTag_Operator, theArgs.constData(), theArgs.length()); - SetToUpdate( true ); + Changed( Geom_2d ); } QByteArray HYDROData_Image::Args() const @@ -831,7 +881,7 @@ void HYDROData_Image::SetIsSelfSplitted(bool theFlag) } else { myLab.ForgetAttribute(GUID_SELF_SPLITTED); } - SetToUpdate( true ); + Changed( Geom_2d ); } bool HYDROData_Image::IsSelfSplitted() const