// name : HYDROGUI_PrsImage
// Purpose : Constructor
//=======================================================================
-HYDROGUI_PrsImage::HYDROGUI_PrsImage( const Handle(HYDROData_Object)& theObject )
+HYDROGUI_PrsImage::HYDROGUI_PrsImage( const Handle(HYDROData_Entity)& theObject )
: HYDROGUI_Prs( theObject ),
myPixmapItem( 0 ),
myCaptionItem( 0 ),
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;
for( int aPointType = PointA; aPointType <= PointC; aPointType++ )
{
- TransformationPoint& aTransformationPoint = myTransformationPointMap[ aPointType ];
+ // Show/hide the point if necessary
+ updateTrsfPoint( 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( anIsVisible );
+//================================================================
+// 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
+{
+ return myIsByTwoPoints;
+}
- QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );
- aTransformationPoint.CaptionItem->setPos( aPoint + aCaptionShift );
- aTransformationPoint.CaptionItem->setVisible( anIsVisible );
+//================================================================
+// Function : setIsByTwoPoints
+// Purpose :
+//================================================================
+void HYDROGUI_PrsImage::setIsByTwoPoints( const bool theIsByTwoPoints )
+{
+ myIsByTwoPoints = theIsByTwoPoints;
+ if ( myTransformationPointMap.contains( PointC ) )
+ {
+ // Show/hide the point C if necessary
+ updateTrsfPoint( PointC );
}
}