Salome HOME
refs #525: autocolor of zones in a calculation case.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_PrsImage.h
index 651c787cf08df9a6e85e2434fa97b215068b17e6..674c64d3203b07290e36cf799eb5eb92bfd4ff5f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // 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.
+// 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
@@ -37,30 +37,42 @@ public:
   enum TransformationPointType { None = 0, PointA, PointB, PointC };
   struct TransformationPoint
   {
-    QPoint                   Point;
-    QString                  Caption;
-    QGraphicsEllipseItem*    PointItem;
-    QGraphicsSimpleTextItem* CaptionItem;
+    TransformationPoint() : Point( 0, 0 ), Caption( "" ), GroupItem( 0 ) {}
+
+    QPoint              Point;
+    QString             Caption;
+    QGraphicsItemGroup* GroupItem;
   };
   typedef QMap        < int, TransformationPoint > TransformationPointMap;
   typedef QMapIterator< int, TransformationPoint > TransformationPointMapIterator;
 
 public:
-  HYDROGUI_PrsImage( const Handle(HYDROData_Object)& theObject );
+  HYDROGUI_PrsImage( const Handle(HYDROData_Entity)& theObject );
   virtual ~HYDROGUI_PrsImage();
 
 public:
-  void                            setImage( const QImage& theImage );
+  void                            setImage( const QImage& theImage,
+                                            const bool theCompute = false );
   QImage                          getImage() const;
 
+  void                            setCaption( const QString& theCaption );
+  QString                         getCaption() const;
+
   void                            setIsTransformationPointPreview( const bool theState );
   bool                            getIsTransformationPointPreview() const;
 
-  void                            setTransformationPointMode( const int theMode );
+  void                            setIsByTwoPoints( const bool theIsByTwoPoints );
+  bool                            getIsByTwoPoints() const;
+
+  void                            setTransformationPointType( const int thePointType );
 
   void                            setTransformationPointMap( const TransformationPointMap& theMap );
   const TransformationPointMap&   getTransformationPointMap() const { return myTransformationPointMap; }
 
+  void                            updateTransformationPoint( const int thePointType,
+                                                             const bool theIsY,
+                                                             const int theValue );
+
 public:
   // from QGraphicsItem
   virtual QRectF                  boundingRect() const;
@@ -80,24 +92,37 @@ public:
   virtual void                    setSelected( bool theState );
 
 protected:
-  void                            computeTransformationPoints();
+  void                            computeTransformationPoints( const bool theObligatoryInit = false );
+
+  QGraphicsItemGroup*             createPointItem( const QString& theCaption,
+                                                   const QColor& theColor );
+
+  /**
+   * Create presentations for transformation points A, B and C or update the presentation
+   * parameters if it is already created
+   */
+  void                            initTrsfPoints( const int thePointType );
+  /**
+   * Show/hide a transformation point if necessary.
+   */
+  void                            updateTrsfPoint( const int thePointType );
 
 protected:
-  QCursor*                        getHighlightCursor() const { return myHighlightCursor; }
   QCursor*                        getTransformationPointCursor() const { return myTransformationPointCursor; }
 
 protected:
   QImage                          myImage;
 
   QGraphicsPixmapItem*            myPixmapItem;
+  QGraphicsSimpleTextItem*        myCaptionItem;
   HYDROGUI_PrsImageFrame*         myPrsImageFrame;
 
   bool                            myIsTransformationPointPreview;
-  int                             myTransformationPointMode;
+  bool                            myIsByTwoPoints;
+  int                             myTransformationPointType;
   TransformationPointMap          myTransformationPointMap;
 
 private:
-  QCursor*                        myHighlightCursor;
   QCursor*                        myTransformationPointCursor;
 };