]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Refs #311: point A size is indepenedent on size of image
authornds <nds@opencascade.com>
Thu, 9 Jan 2014 09:12:41 +0000 (09:12 +0000)
committernds <nds@opencascade.com>
Thu, 9 Jan 2014 09:12:41 +0000 (09:12 +0000)
TODO: use one graphic item for ellipse and text label to avoid the distance increasing between them during zooming.

src/HYDROGUI/HYDROGUI_PrsImage.cxx

index 172f5f72b41b7b4a2edb7eac4b3f10631d03cef4..34307fda02c8afb371f07f5a74f501470c39d6cf 100644 (file)
@@ -27,6 +27,7 @@
 #include <GraphicsView_ViewPort.h>
 
 #include <QCursor>
+#include <QApplication>
 
 //=======================================================================
 // name    : HYDROGUI_PrsImage
@@ -324,7 +325,7 @@ void HYDROGUI_PrsImage::computeTransformationPoints()
           aColor = Qt::darkBlue;
           break;
       }
-
+      
       aTransformationPoint.Point = aPoint;
       aTransformationPoint.Caption = aCaption;
 
@@ -333,10 +334,20 @@ void HYDROGUI_PrsImage::computeTransformationPoints()
       aTransformationPoint.PointItem->setPen( QPen( aColor ) );
       aTransformationPoint.PointItem->setBrush( QBrush( aColor ) );
 
+      double aRadius = 3;
+      QRectF aRect( -QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
+      aTransformationPoint.PointItem->setRect( aRect );
+      aTransformationPoint.PointItem->setFlag( QGraphicsItem::ItemIgnoresTransformations );
+      aTransformationPoint.PointItem->setPos( aPoint );
+
       aTransformationPoint.CaptionItem = new QGraphicsSimpleTextItem( aCaption, this );
       aTransformationPoint.CaptionItem->setVisible( false );
       aTransformationPoint.CaptionItem->setPen( QPen( aColor ) );
       aTransformationPoint.CaptionItem->setBrush( QBrush( aColor ) );
+      QFont aFont = aTransformationPoint.CaptionItem->font();
+      aFont.setPointSize( qApp->font().pointSize() );
+      aTransformationPoint.CaptionItem->setFont( aFont );
+      aTransformationPoint.CaptionItem->setFlag( QGraphicsItem::ItemIgnoresTransformations );
 
       myTransformationPointMap[ aPointType ] = aTransformationPoint;
     }
@@ -358,12 +369,12 @@ 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;
+  double aRadius = 3;
   const QPointF& aPoint = aTransformationPoint.Point;
-  QRectF aRect( aPoint - QPointF( aRadius, aRadius ), QSizeF( aRadius * 2 + 1, aRadius * 2 + 1 ) );
-  aTransformationPoint.PointItem->setRect( aRect );
+  aTransformationPoint.PointItem->setPos( aPoint );
   aTransformationPoint.PointItem->setVisible( anIsPointVisible );
 
   QPointF aCaptionShift( -aRadius * 2, aRadius * 2 );