connect( myPointCEnabler, SIGNAL( toggled( bool ) ), myRefPointXMap[ HYDROGUI_PrsImage::PointC ], SLOT( setEnabled( bool ) ) );
connect( myPointCEnabler, SIGNAL( toggled( bool ) ), myRefPointYMap[ HYDROGUI_PrsImage::PointC ], SLOT( setEnabled( bool ) ) );
- connect( myPointCEnabler, SIGNAL( toggled( bool ) ), SIGNAL( setIsByTwoPoints( bool ) ) );
+ connect( myPointCEnabler, SIGNAL( toggled( bool ) ), SLOT( onSetCIsUsed( bool ) ) );
aTransformLayout->setColumnStretch( 1, 1 ); // double
aTransformLayout->setColumnStretch( 3, 1 ); // degrees
{
}
+void HYDROGUI_ImportImageDlg::onSetCIsUsed( bool theCIsUsed )
+{
+ if ( !theCIsUsed && myPointBtnMap[ HYDROGUI_PrsImage::PointC ]->isChecked() )
+ {
+ // Turn on point A selection if point C selection has been activated and we disable point C.
+ myPointBtnMap[ HYDROGUI_PrsImage::PointA ]->toggle();
+ }
+ emit setCIsUsed( theCIsUsed );
+}
+
void HYDROGUI_ImportImageDlg::setIsEdit( const bool theIsEdit )
{
myFileNameGroup->setVisible( !theIsEdit );
connect( aPanel, SIGNAL( modeActivated( int ) ), SLOT( onModeActivated( int ) ) );
connect( aPanel, SIGNAL( refImageActivated( const QString& ) ),
SLOT( onRefImageActivated( const QString& ) ) );
- connect( aPanel, SIGNAL( setIsByTwoPoints( bool ) ), SLOT( onSetIsByTwoPoints( bool ) ) );
+ connect( aPanel, SIGNAL( setCIsUsed( bool ) ), SLOT( onSetCIsUsed( bool ) ) );
return aPanel;
}
-void HYDROGUI_ImportImageOp::onSetIsByTwoPoints( bool theIsSetByTwoPoints )
+void HYDROGUI_ImportImageOp::onSetCIsUsed( bool theCIsUsed )
{
if ( myPreviewPrs )
{
- myPreviewPrs->setIsByTwoPoints( theIsSetByTwoPoints );
+ myPreviewPrs->setIsByTwoPoints( !theCIsUsed );
}
if ( myRefPreviewPrs )
{
- myRefPreviewPrs->setIsByTwoPoints( theIsSetByTwoPoints );
+ myRefPreviewPrs->setIsByTwoPoints( !theCIsUsed );
}
}
const HYDROGUI_PrsImage::TransformationPointMap& aPointMap =
aPrs->getTransformationPointMap();
+
HYDROGUI_PrsImage::TransformationPointMapIterator anIter( aPointMap );
while( anIter.hasNext() )
{
int aWidth = myImage.width();
int aHeight = myImage.height();
+ // Create presentations for transformation points A, B and C
for( int aPointType = PointA; aPointType <= PointC; aPointType++ )
{
TransformationPoint aTransformationPoint;
}
}
- bool anIsVisible = myIsTransformationPointPreview;
- bool anIsPointVisible;
for( int aPointType = PointA; aPointType <= PointC; aPointType++ )
{
- // If image is transformed only by two points then the point C is invisible
- anIsPointVisible = anIsVisible && (
- ( !myIsByTwoPoints ) || ( myIsByTwoPoints && ( aPointType != PointC ) ) );
- TransformationPoint& aTransformationPoint = myTransformationPointMap[ aPointType ];
-
- double aRadius = 5;
- const QPointF& aPoint = aTransformationPoint.Point;
- QRectF aRect( aPoint - QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
- aTransformationPoint.PointItem->setRect( aRect );
- aTransformationPoint.PointItem->setVisible( anIsPointVisible );
-
- QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );
- aTransformationPoint.CaptionItem->setPos( aPoint + aCaptionShift );
- aTransformationPoint.CaptionItem->setVisible( anIsPointVisible );
+ // Show/hide the point if necessary
+ updateTrsfPoint( aPointType );
}
}
//================================================================
-// Function : IsByTwoPoints
+// Function : updateTrsfPoint
+// Purpose :
+//================================================================
+void HYDROGUI_PrsImage::updateTrsfPoint( const int thePointType )
+{
+ // If image is transformed only by two points then the point C is invisible
+ bool anIsPointVisible = myIsTransformationPointPreview && (
+ ( !myIsByTwoPoints ) || ( myIsByTwoPoints && ( thePointType != PointC ) ) );
+ TransformationPoint& aTransformationPoint = myTransformationPointMap[ thePointType ];
+
+ double aRadius = 5;
+ const QPointF& aPoint = aTransformationPoint.Point;
+ QRectF aRect( aPoint - QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
+ aTransformationPoint.PointItem->setRect( aRect );
+ aTransformationPoint.PointItem->setVisible( anIsPointVisible );
+
+ QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );
+ aTransformationPoint.CaptionItem->setPos( aPoint + aCaptionShift );
+ aTransformationPoint.CaptionItem->setVisible( anIsPointVisible );
+}
+
+//================================================================
+// Function : getIsByTwoPoints
// Purpose :
//================================================================
bool HYDROGUI_PrsImage::getIsByTwoPoints() const
}
//================================================================
-// Function : SetIsByTwoPoints
+// Function : setIsByTwoPoints
// Purpose :
//================================================================
void HYDROGUI_PrsImage::setIsByTwoPoints( const bool theIsByTwoPoints )
myIsByTwoPoints = theIsByTwoPoints;
if ( myTransformationPointMap.contains( PointC ) )
{
- TransformationPoint& aTransformationPoint = myTransformationPointMap[ PointC ];
- aTransformationPoint.PointItem->setVisible( myIsTransformationPointPreview && theIsByTwoPoints );
- aTransformationPoint.CaptionItem->setVisible( myIsTransformationPointPreview && theIsByTwoPoints );
+ // Show/hide the point C if necessary
+ updateTrsfPoint( PointC );
}
}