QRadioButton* aManualGeodesicBtn = new QRadioButton( tr( "MANUALLY_GEODESIC" ), myTransformGroup );
QRadioButton* aManualCartesianBtn = new QRadioButton( tr( "MANUALLY_LAMBERT93" ), myTransformGroup );
+ QRadioButton* aCartesianFromFileBtn = new QRadioButton( tr( "LAMBERT93_FROM_FILE" ), myTransformGroup );
QRadioButton* aRefImageBtn = new QRadioButton( tr( "BY_REFERENCE_IMAGE" ), myTransformGroup );
myModeGroup = new QButtonGroup( myTransformGroup );
myModeGroup->addButton( aManualGeodesicBtn, HYDROData_Image::ManualGeodesic );
myModeGroup->addButton( aManualCartesianBtn, HYDROData_Image::ManualCartesian );
+ myModeGroup->addButton( aCartesianFromFileBtn, HYDROData_Image::CartesianFromFile );
myModeGroup->addButton( aRefImageBtn, HYDROData_Image::ReferenceImage );
myRefImage = new QComboBox( myTransformGroup );
- QGridLayout* aTransformLayout = new QGridLayout( myTransformGroup );
+ QVBoxLayout* aTransformLayout = new QVBoxLayout( myTransformGroup );
aTransformLayout->setMargin( 5 );
aTransformLayout->setSpacing( 5 );
aModeLayout->setSpacing( 5 );
aModeLayout->addWidget( aManualGeodesicBtn, 0, 0 );
aModeLayout->addWidget( aManualCartesianBtn, 1, 0 );
- aModeLayout->addWidget( aRefImageBtn, 2, 0 );
- aModeLayout->addWidget( myRefImage, 2, 1 );
+ aModeLayout->addWidget( aCartesianFromFileBtn, 2, 0 );
+ aModeLayout->addWidget( aRefImageBtn, 3, 0 );
+ aModeLayout->addWidget( myRefImage, 3, 1 );
aModeLayout->setColumnStretch( 1, 1 );
- aTransformLayout->addLayout( aModeLayout, 0, 0, 1, 9 );
+ aTransformLayout->addLayout( aModeLayout );
- QLabel* aImageCSLabel = new QLabel( tr( "IMAGE_CS" ), myTransformGroup );
- QLabel* aGeodesicLabel = new QLabel( tr( "GEODESIC" ), myTransformGroup );
- QLabel* aLambertLabel = new QLabel( tr( "LAMBERT93" ), myTransformGroup );
- QLabel* aRefImageLabel = new QLabel( tr( "REFERENCE_IMAGE_CS" ), myTransformGroup );
+ // Manual input widget
+ QWidget* aManualInputGroup = new QWidget( myTransformGroup );
+ QGridLayout* aManualInputLayout = new QGridLayout( aManualInputGroup );
+ aManualInputLayout->setMargin( 5 );
+ aManualInputLayout->setSpacing( 5 );
- aTransformLayout->addWidget( aImageCSLabel, 2, 1 );
- aTransformLayout->addWidget( aGeodesicLabel, 2, 3, 1, 6 );
- aTransformLayout->addWidget( aLambertLabel, 2, 3, 1, 6 );
- aTransformLayout->addWidget( aRefImageLabel, 2, 3, 1, 6 );
+ QLabel* aImageCSLabel = new QLabel( tr( "IMAGE_CS" ), aManualInputGroup );
+ QLabel* aGeodesicLabel = new QLabel( tr( "GEODESIC" ), aManualInputGroup );
+ QLabel* aLambertLabel = new QLabel( tr( "LAMBERT93" ), aManualInputGroup );
+ QLabel* aRefImageLabel = new QLabel( tr( "REFERENCE_IMAGE_CS" ), aManualInputGroup );
- connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setVisible ( bool ) ) );
- connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setHidden ( bool ) ) );
- connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setHidden ( bool ) ) );
- connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setVisible ( bool ) ) );
- connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setHidden ( bool ) ) );
- connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setHidden ( bool ) ) );
- connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setVisible ( bool ) ) );
- connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setHidden ( bool ) ) );
- connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setHidden ( bool ) ) );
+ aManualInputLayout->addWidget( aImageCSLabel, 0, 1 );
+ aManualInputLayout->addWidget( aGeodesicLabel, 0, 2, 1, 6 );
+ aManualInputLayout->addWidget( aLambertLabel, 0, 2, 1, 6 );
+ aManualInputLayout->addWidget( aRefImageLabel, 0, 2, 1, 6 );
for( int aPointType = HYDROGUI_PrsImage::PointA;
aPointType <= HYDROGUI_PrsImage::PointC; aPointType++ )
QPushButton* aPointBtn = new QPushButton( aPointStr, myTransformGroup );
aPointBtn->setCheckable( true );
- QLabel* aPointXLabel = new QLabel( "X", myTransformGroup );
- QLabel* aPointYLabel = new QLabel( "Y", myTransformGroup );
+ QLabel* aPointXLabel = new QLabel( "X", aManualInputGroup );
+ QLabel* aPointYLabel = new QLabel( "Y", aManualInputGroup );
- QtxIntSpinBox* aPointX = new QtxIntSpinBox( 0, 0, 1, myTransformGroup ); // max is updated later
- QtxIntSpinBox* aPointY = new QtxIntSpinBox( 0, 0, 1, myTransformGroup ); // max is updated later
+ QtxIntSpinBox* aPointX = new QtxIntSpinBox( 0, 0, 1, aManualInputGroup ); // max is updated later
+ QtxIntSpinBox* aPointY = new QtxIntSpinBox( 0, 0, 1, aManualInputGroup ); // max is updated later
- QLabel* aPointArrowLabel = new QLabel( myTransformGroup );
+ QLabel* aPointArrowLabel = new QLabel( aManualInputGroup );
aPointArrowLabel->setPicture( anArrowPicture );
- QLabel* aPointXDegLabel = new QLabel( QChar( 0x00B0 ), myTransformGroup );
- QLabel* aPointYDegLabel = new QLabel( QChar( 0x00B0 ), myTransformGroup );
- QLabel* aPointXMinLabel = new QLabel( "'", myTransformGroup );
- QLabel* aPointYMinLabel = new QLabel( "'", myTransformGroup );
- QLabel* aPointXSecLabel = new QLabel( "\"", myTransformGroup );
- QLabel* aPointYSecLabel = new QLabel( "\"", myTransformGroup );
- QLabel* aPointLatLabel = new QLabel( tr( "POINT_LATITUDE" ), myTransformGroup );
- QLabel* aPointLonLabel = new QLabel( tr( "POINT_LONGITUDE" ), myTransformGroup );
+ QLabel* aPointXDegLabel = new QLabel( QChar( 0x00B0 ), aManualInputGroup );
+ QLabel* aPointYDegLabel = new QLabel( QChar( 0x00B0 ), aManualInputGroup );
+ QLabel* aPointXMinLabel = new QLabel( "'", aManualInputGroup );
+ QLabel* aPointYMinLabel = new QLabel( "'", aManualInputGroup );
+ QLabel* aPointXSecLabel = new QLabel( "\"", aManualInputGroup );
+ QLabel* aPointYSecLabel = new QLabel( "\"", aManualInputGroup );
+ QLabel* aPointLatLabel = new QLabel( tr( "POINT_LATITUDE" ), aManualInputGroup );
+ QLabel* aPointLonLabel = new QLabel( tr( "POINT_LONGITUDE" ), aManualInputGroup );
myGeodesicLabels << aPointXDegLabel << aPointYDegLabel
<< aPointXMinLabel << aPointYMinLabel
<< aPointXSecLabel << aPointYSecLabel
<< aPointLonLabel << aPointLatLabel;
- QtxIntSpinBox* aPointXDeg = new QtxIntSpinBox( -179, 179, 1, myTransformGroup );
- QtxIntSpinBox* aPointYDeg = new QtxIntSpinBox( 0, 89, 1, myTransformGroup );
- QtxIntSpinBox* aPointXMin = new QtxIntSpinBox( 0, 59, 1, myTransformGroup );
- QtxIntSpinBox* aPointYMin = new QtxIntSpinBox( 0, 59, 1, myTransformGroup );
- QtxDoubleSpinBox* aPointXSec = new QtxDoubleSpinBox( 0, 59.9999, 1, 4, 4, myTransformGroup );
- QtxDoubleSpinBox* aPointYSec = new QtxDoubleSpinBox( 0, 59.9999, 1, 4, 4, myTransformGroup );
+ QtxIntSpinBox* aPointXDeg = new QtxIntSpinBox( -179, 179, 1, aManualInputGroup );
+ QtxIntSpinBox* aPointYDeg = new QtxIntSpinBox( 0, 89, 1, aManualInputGroup );
+ QtxIntSpinBox* aPointXMin = new QtxIntSpinBox( 0, 59, 1, aManualInputGroup );
+ QtxIntSpinBox* aPointYMin = new QtxIntSpinBox( 0, 59, 1, aManualInputGroup );
+ QtxDoubleSpinBox* aPointXSec = new QtxDoubleSpinBox( 0, 59.9999, 1, 4, 4, aManualInputGroup );
+ QtxDoubleSpinBox* aPointYSec = new QtxDoubleSpinBox( 0, 59.9999, 1, 4, 4, aManualInputGroup );
- QtxDoubleSpinBox* aCartPointX = new QtxDoubleSpinBox( 0, 1e8, 1, 2, 2, myTransformGroup );
- QtxDoubleSpinBox* aCartPointY = new QtxDoubleSpinBox( 0, 1e8, 1, 2, 2, myTransformGroup );
+ QtxDoubleSpinBox* aCartPointX = new QtxDoubleSpinBox( 0, 1e8, 1, 2, 2, aManualInputGroup );
+ QtxDoubleSpinBox* aCartPointY = new QtxDoubleSpinBox( 0, 1e8, 1, 2, 2, aManualInputGroup );
- QtxIntSpinBox* aRefPointX = new QtxIntSpinBox( 0, 0, 1, myTransformGroup ); // max is updated later
- QtxIntSpinBox* aRefPointY = new QtxIntSpinBox( 0, 0, 1, myTransformGroup ); // max is updated later
+ QtxIntSpinBox* aRefPointX = new QtxIntSpinBox( 0, 0, 1, aManualInputGroup ); // max is updated later
+ QtxIntSpinBox* aRefPointY = new QtxIntSpinBox( 0, 0, 1, aManualInputGroup ); // max is updated later
- int aRow = 4 * aPointType + 3;
+ int aRow = 4 * aPointType;
if ( aPointType == HYDROGUI_PrsImage::PointC )
{
- myPointCEnabler = new QCheckBox( myTransformGroup );
- aTransformLayout->addWidget( myPointCEnabler, aRow, 0, 1, 2, Qt::AlignHCenter );
- aTransformLayout->addWidget( aPointBtn, aRow, 2, 1, 8 );
+ myPointCEnabler = new QCheckBox( aManualInputGroup );
+ aManualInputLayout->addWidget( myPointCEnabler, aRow, 0, 1, 2, Qt::AlignHCenter );
+ aManualInputLayout->addWidget( aPointBtn, aRow, 2, 1, 8 );
}
else
{
- aTransformLayout->addWidget( aPointBtn, aRow, 0, 1, 10 );
+ aManualInputLayout->addWidget( aPointBtn, aRow, 0, 1, 10 );
}
- aTransformLayout->addWidget( aPointXLabel, aRow + 1, 0 );
- aTransformLayout->addWidget( aPointX, aRow + 1, 1 );
- aTransformLayout->addWidget( aPointArrowLabel, aRow + 1, 2, 2, 1 );
- aTransformLayout->addWidget( aPointXDeg, aRow + 1, 3 );
- aTransformLayout->addWidget( aPointXDegLabel, aRow + 1, 4 );
- aTransformLayout->addWidget( aPointXMin, aRow + 1, 5 );
- aTransformLayout->addWidget( aPointXMinLabel, aRow + 1, 6 );
- aTransformLayout->addWidget( aPointXSec, aRow + 1, 7 );
- aTransformLayout->addWidget( aPointXSecLabel, aRow + 1, 8 );
- aTransformLayout->addWidget( aPointLonLabel, aRow + 1, 9 );
-
- aTransformLayout->addWidget( aCartPointX, aRow + 1, 3, 1, 6 );
- aTransformLayout->addWidget( aRefPointX, aRow + 1, 3, 1, 6 );
-
- aTransformLayout->addWidget( aPointYLabel, aRow + 2, 0 );
- aTransformLayout->addWidget( aPointY, aRow + 2, 1 );
- aTransformLayout->addWidget( aPointYDeg, aRow + 2, 3 );
- aTransformLayout->addWidget( aPointYDegLabel, aRow + 2, 4 );
- aTransformLayout->addWidget( aPointYMin, aRow + 2, 5 );
- aTransformLayout->addWidget( aPointYMinLabel, aRow + 2, 6 );
- aTransformLayout->addWidget( aPointYSec, aRow + 2, 7 );
- aTransformLayout->addWidget( aPointYSecLabel, aRow + 2, 8 );
- aTransformLayout->addWidget( aPointLatLabel, aRow + 2, 9 );
-
- aTransformLayout->addWidget( aCartPointY, aRow + 2, 3, 1, 6 );
- aTransformLayout->addWidget( aRefPointY, aRow + 2, 3, 1, 6 );
+ aManualInputLayout->addWidget( aPointXLabel, aRow + 1, 0 );
+ aManualInputLayout->addWidget( aPointX, aRow + 1, 1 );
+ aManualInputLayout->addWidget( aPointArrowLabel, aRow + 1, 2, 2, 1 );
+ aManualInputLayout->addWidget( aPointXDeg, aRow + 1, 3 );
+ aManualInputLayout->addWidget( aPointXDegLabel, aRow + 1, 4 );
+ aManualInputLayout->addWidget( aPointXMin, aRow + 1, 5 );
+ aManualInputLayout->addWidget( aPointXMinLabel, aRow + 1, 6 );
+ aManualInputLayout->addWidget( aPointXSec, aRow + 1, 7 );
+ aManualInputLayout->addWidget( aPointXSecLabel, aRow + 1, 8 );
+ aManualInputLayout->addWidget( aPointLonLabel, aRow + 1, 9 );
+
+ aManualInputLayout->addWidget( aCartPointX, aRow + 1, 3, 1, 6 );
+ aManualInputLayout->addWidget( aRefPointX, aRow + 1, 3, 1, 6 );
+
+ aManualInputLayout->addWidget( aPointYLabel, aRow + 2, 0 );
+ aManualInputLayout->addWidget( aPointY, aRow + 2, 1 );
+ aManualInputLayout->addWidget( aPointYDeg, aRow + 2, 3 );
+ aManualInputLayout->addWidget( aPointYDegLabel, aRow + 2, 4 );
+ aManualInputLayout->addWidget( aPointYMin, aRow + 2, 5 );
+ aManualInputLayout->addWidget( aPointYMinLabel, aRow + 2, 6 );
+ aManualInputLayout->addWidget( aPointYSec, aRow + 2, 7 );
+ aManualInputLayout->addWidget( aPointYSecLabel, aRow + 2, 8 );
+ aManualInputLayout->addWidget( aPointLatLabel, aRow + 2, 9 );
+
+ aManualInputLayout->addWidget( aCartPointY, aRow + 2, 3, 1, 6 );
+ aManualInputLayout->addWidget( aRefPointY, aRow + 2, 3, 1, 6 );
if( aPointType != HYDROGUI_PrsImage::PointC )
{
- QFrame* aLine = new QFrame( myTransformGroup );
+ QFrame* aLine = new QFrame( aManualInputGroup );
aLine->setFrameShape( QFrame::HLine );
aLine->setFrameShadow( QFrame::Sunken );
- aTransformLayout->addWidget( aLine, aRow + 3, 0, 1, 10 );
+ aManualInputLayout->addWidget( aLine, aRow + 3, 0, 1, 10 );
}
myPointBtnMap[ aPointType ] = aPointBtn;
connect( myPointCEnabler, SIGNAL( toggled( bool ) ), SLOT( onSetCIsUsed( bool ) ) );
- aTransformLayout->setColumnStretch( 1, 1 ); // double
- aTransformLayout->setColumnStretch( 3, 1 ); // degrees
- aTransformLayout->setColumnStretch( 5, 1 ); // minutes
- aTransformLayout->setColumnStretch( 7, 2 ); // seconds (double with 4 digits)
+ aManualInputLayout->setColumnStretch( 1, 1 ); // double
+ aManualInputLayout->setColumnStretch( 3, 1 ); // degrees
+ aManualInputLayout->setColumnStretch( 5, 1 ); // minutes
+ aManualInputLayout->setColumnStretch( 7, 2 ); // seconds (double with 4 digits)
+
+ // Image georeferencement file widget
+ QWidget* aFromFileInputGroup = new QWidget( myTransformGroup );
+ QBoxLayout* aFromFileInputLayout = new QHBoxLayout( aFromFileInputGroup );
+ aFromFileInputLayout->setMargin( 5 );
+ aFromFileInputLayout->setSpacing( 5 );
+
+ QLabel* aGeoFileNameLabel = new QLabel( tr( "FILE_NAME" ), aFromFileInputGroup );
+
+ myGeoFileName = new QLineEdit( aFromFileInputGroup );
+ myGeoFileName->setReadOnly( true );
+
+ QToolButton* aGeoBrowseBtn = new QToolButton( aFromFileInputGroup );
+ aGeoBrowseBtn->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "BROWSE_ICO" ) ) );
+
+ aFromFileInputLayout->addWidget( aGeoFileNameLabel );
+ aFromFileInputLayout->addWidget( myGeoFileName );
+ aFromFileInputLayout->addWidget( aGeoBrowseBtn );
+
+ // Widgets connections
+ connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setVisible ( bool ) ) );
+ connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setHidden ( bool ) ) );
+ connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setHidden ( bool ) ) );
+ connect( aManualCartesianBtn, SIGNAL( toggled( bool ) ), aFromFileInputGroup, SLOT( setHidden ( bool ) ) );
+ connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setVisible ( bool ) ) );
+ connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setHidden ( bool ) ) );
+ connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setHidden ( bool ) ) );
+ connect( aManualGeodesicBtn, SIGNAL( toggled( bool ) ), aFromFileInputGroup, SLOT( setHidden ( bool ) ) );
+ connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aRefImageLabel, SLOT( setVisible ( bool ) ) );
+ connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aGeodesicLabel, SLOT( setHidden ( bool ) ) );
+ connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aLambertLabel, SLOT( setHidden ( bool ) ) );
+ connect( aRefImageBtn, SIGNAL( toggled( bool ) ), aFromFileInputGroup, SLOT( setHidden ( bool ) ) );
+ connect( aCartesianFromFileBtn, SIGNAL( toggled( bool ) ), aFromFileInputGroup, SLOT( setVisible ( bool ) ) );
+ connect( aCartesianFromFileBtn, SIGNAL( toggled( bool ) ), aManualInputGroup, SLOT( setHidden ( bool ) ) );
+
+ // Input widgets
+ aTransformLayout->addWidget( aManualInputGroup );
+ aTransformLayout->addWidget( aFromFileInputGroup );
// Common
addWidget( myFileNameGroup );
connect( myModeGroup, SIGNAL( buttonClicked( int ) ),
this, SLOT( onModeActivated( int ) ) );
+ connect( aGeoBrowseBtn, SIGNAL( clicked() ), this, SLOT( onGeoBrowse() ) );
+
connect( myRefImage, SIGNAL( activated( const QString& ) ),
this, SLOT( onRefImageActivated( const QString& ) ) );
myFileName->clear();
myImageName->clear();
myImageNameGroup->setEnabled( false );
+ myGeoFileName->clear();
for( int aPointType = HYDROGUI_PrsImage::PointA;
aPointType <= HYDROGUI_PrsImage::PointC; aPointType++ )
{
return myFileName->text();
}
+QString HYDROGUI_ImportImageDlg::getGeoreferencementFileName() const
+{
+ return myGeoFileName->text();
+}
+
void HYDROGUI_ImportImageDlg::setImageSize( const QSize& theSize,
const bool theIsRefImage )
{
}
}
+void HYDROGUI_ImportImageDlg::onGeoBrowse()
+{
+ QString aFilter( tr( "IMAGE_GEOREFERENCEMENT_FILTER" ) );
+ QString aGeoFileName = SUIT_FileDlg::getFileName( this, "", aFilter, tr( "IMPORT_GEO_DATA_FROM_FILE" ), true );
+ if( !aGeoFileName.isEmpty() ) {
+ myGeoFileName->setText( aGeoFileName );
+ }
+}
+
void HYDROGUI_ImportImageDlg::onModeActivated( int theMode )
{
bool anIsManualGeodesic = theMode == HYDROData_Image::ManualGeodesic;
}
}
- HYDROGUI_ImportImageDlg::TransformationDataMap aMap;
- if( !aPanel->getTransformationDataMap( aMap ) )
- return false;
-
- bool anIsByTwoPoints = aPanel->isByTwoPoints();
+ HYDROData_Image::TransformationMode aTransformationMode =
+ (HYDROData_Image::TransformationMode)aPanel->getTransformationMode();
+
+ QPoint aPointA, aPointB, aPointC;
+ QPointF aTrsfPointA, aTrsfPointB, aTrsfPointC( INT_MIN, INT_MIN );
+ Handle(HYDROData_Image) aRefImageObj;
- QPoint aPointA = aMap[ HYDROGUI_PrsImage::PointA ].ImagePoint;
- QPoint aPointB = aMap[ HYDROGUI_PrsImage::PointB ].ImagePoint;
- QPoint aPointC = anIsByTwoPoints ? QPoint( INT_MIN, INT_MIN ) :
- aMap[ HYDROGUI_PrsImage::PointC ].ImagePoint;
+ if ( aTransformationMode != HYDROData_Image::CartesianFromFile ) {
+ HYDROGUI_ImportImageDlg::TransformationDataMap aMap;
+ if( !aPanel->getTransformationDataMap( aMap ) )
+ return false;
- // first, we check correctness of image points
- if ( !checkPoints( aPointA, aPointB, aPointC, anIsByTwoPoints,
- tr( "POINTS_A_B_C_BELONG_TO_SINGLE_LINE" ),
- tr( "POINTS_A_B_ARE_IDENTICAL" ),
- theErrorMsg, true ) )
- return false;
+ bool anIsByTwoPoints = aPanel->isByTwoPoints();
- Handle(HYDROData_Image) aRefImageObj;
- QPointF aTrsfPointA, aTrsfPointB, aTrsfPointC( INT_MIN, INT_MIN );
+ aPointA = aMap[ HYDROGUI_PrsImage::PointA ].ImagePoint;
+ aPointB = aMap[ HYDROGUI_PrsImage::PointB ].ImagePoint;
+ aPointC = anIsByTwoPoints ? QPoint( INT_MIN, INT_MIN ) :
+ aMap[ HYDROGUI_PrsImage::PointC ].ImagePoint;
- HYDROData_Image::TransformationMode aTransformationMode =
- (HYDROData_Image::TransformationMode)aPanel->getTransformationMode();
- if ( aTransformationMode == HYDROData_Image::ReferenceImage )
- {
- QString aRefImageName = aPanel->getRefImageName();
- if( aRefImageName.isEmpty() )
- {
- theErrorMsg = tr( "REFERENCE_IMAGE_IS_NOT_SELECTED" );
+ // first, we check correctness of image points
+ if ( !checkPoints( aPointA, aPointB, aPointC, anIsByTwoPoints,
+ tr( "POINTS_A_B_C_BELONG_TO_SINGLE_LINE" ),
+ tr( "POINTS_A_B_ARE_IDENTICAL" ),
+ theErrorMsg, true ) )
return false;
- }
- HYDROGUI_ImportImageDlg::TransformationDataMap aRefMap;
- if( !aPanel->getTransformationDataMap( aRefMap, true ) )
- return false;
+ if ( aTransformationMode == HYDROData_Image::ReferenceImage )
+ {
+ QString aRefImageName = aPanel->getRefImageName();
+ if( aRefImageName.isEmpty() )
+ {
+ theErrorMsg = tr( "REFERENCE_IMAGE_IS_NOT_SELECTED" );
+ return false;
+ }
- aRefImageObj = Handle(HYDROData_Image)::DownCast(
- HYDROGUI_Tool::FindObjectByName( module(), aRefImageName, KIND_IMAGE ) );
- if( aRefImageObj.IsNull() )
- return false;
+ HYDROGUI_ImportImageDlg::TransformationDataMap aRefMap;
+ if( !aPanel->getTransformationDataMap( aRefMap, true ) )
+ return false;
- else if ( !isReferenceCorrect() )
- aRefImageObj->RemoveAllReferences();
+ aRefImageObj = Handle(HYDROData_Image)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aRefImageName, KIND_IMAGE ) );
+ if( aRefImageObj.IsNull() ) {
+ return false;
+ }
+ else if ( !isReferenceCorrect() ) {
+ aRefImageObj->RemoveAllReferences();
+ }
- aTrsfPointA = aRefMap[ HYDROGUI_PrsImage::PointA ].ImagePoint;
- aTrsfPointB = aRefMap[ HYDROGUI_PrsImage::PointB ].ImagePoint;
- if ( !anIsByTwoPoints )
+ aTrsfPointA = aRefMap[ HYDROGUI_PrsImage::PointA ].ImagePoint;
+ aTrsfPointB = aRefMap[ HYDROGUI_PrsImage::PointB ].ImagePoint;
+ if ( !anIsByTwoPoints )
aTrsfPointC = aRefMap[ HYDROGUI_PrsImage::PointC ].ImagePoint;
- // the same check of correctness for the reference points
- if ( !checkPoints( aTrsfPointA, aTrsfPointB, aTrsfPointC, anIsByTwoPoints,
- tr( "REFERENCE_POINTS_A_B_C_BELONG_TO_SINGLE_LINE" ),
- tr( "REFERENCE_POINTS_A_B_ARE_IDENTICAL" ),
- theErrorMsg, false ) )
- return false;
- }
- else
- {
- if ( aTransformationMode == HYDROData_Image::ManualGeodesic )
- {
- aTrsfPointA = aMap[ HYDROGUI_PrsImage::PointA ].GeodesicPoint;
- aTrsfPointB = aMap[ HYDROGUI_PrsImage::PointB ].GeodesicPoint;
- if ( !anIsByTwoPoints )
- aTrsfPointC = aMap[ HYDROGUI_PrsImage::PointC ].GeodesicPoint;
+ // the same check of correctness for the reference points
+ if ( !checkPoints( aTrsfPointA, aTrsfPointB, aTrsfPointC, anIsByTwoPoints,
+ tr( "REFERENCE_POINTS_A_B_C_BELONG_TO_SINGLE_LINE" ),
+ tr( "REFERENCE_POINTS_A_B_ARE_IDENTICAL" ),
+ theErrorMsg, false ) )
+ return false;
}
else
{
- aTrsfPointA = aMap[ HYDROGUI_PrsImage::PointA ].CartesianPoint;
- aTrsfPointB = aMap[ HYDROGUI_PrsImage::PointB ].CartesianPoint;
- if ( !anIsByTwoPoints )
- aTrsfPointC = aMap[ HYDROGUI_PrsImage::PointC ].CartesianPoint;
+ if ( aTransformationMode == HYDROData_Image::ManualGeodesic )
+ {
+ aTrsfPointA = aMap[ HYDROGUI_PrsImage::PointA ].GeodesicPoint;
+ aTrsfPointB = aMap[ HYDROGUI_PrsImage::PointB ].GeodesicPoint;
+ if ( !anIsByTwoPoints )
+ aTrsfPointC = aMap[ HYDROGUI_PrsImage::PointC ].GeodesicPoint;
+ }
+ else
+ {
+ aTrsfPointA = aMap[ HYDROGUI_PrsImage::PointA ].CartesianPoint;
+ aTrsfPointB = aMap[ HYDROGUI_PrsImage::PointB ].CartesianPoint;
+ if ( !anIsByTwoPoints )
+ aTrsfPointC = aMap[ HYDROGUI_PrsImage::PointC ].CartesianPoint;
+ }
}
}
anImageObj->SetName( anImageName );
anImageObj->SetImage( myImage );
- anImageObj->SetLocalPoints( aPointA, aPointB, aPointC, false );
+
+ if ( aTransformationMode == HYDROData_Image::CartesianFromFile ) {
+ QString aGeoreferencementFileName = aPanel->getGeoreferencementFileName();
+ if ( aGeoreferencementFileName.isEmpty() ) {
+ return false;
+ }
- if ( aTransformationMode == HYDROData_Image::ReferenceImage )
- {
- anImageObj->SetReferencePoints( aRefImageObj,
+ QPoint aLocalPointA( 0, 0 ),
+ aLocalPointB( anImageObj->Image().width(), 0 ),
+ aLocalPointC( INT_MIN, INT_MIN );
+ anImageObj->SetLocalPoints( aLocalPointA, aLocalPointB, aLocalPointC, false );
+ if ( !anImageObj->SetGlobalPointsFromFile( aGeoreferencementFileName ) ) {
+ theErrorMsg = tr( "CANT_LOAD_GEOREFERENCEMENT_FILE" );
+ return false;
+ }
+ } else {
+ anImageObj->SetLocalPoints( aPointA, aPointB, aPointC, false );
+
+ if ( aTransformationMode == HYDROData_Image::ReferenceImage )
+ {
+ anImageObj->SetReferencePoints( aRefImageObj,
aTrsfPointA, aTrsfPointB, aTrsfPointC );
- }
- else
- {
- anImageObj->SetGlobalPoints( aTransformationMode,
+ }
+ else
+ {
+ anImageObj->SetGlobalPoints( aTransformationMode,
aTrsfPointA, aTrsfPointB, aTrsfPointC );
+ }
}
if( !myIsEdit )