Salome HOME
SIP: HYDROData_Digue is included.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_PrsImage.h
1 // Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 #ifndef HYDROGUI_PRSIMAGE_H
24 #define HYDROGUI_PRSIMAGE_H
25
26 #include "HYDROGUI_Prs.h"
27
28 class HYDROGUI_PrsImageFrame;
29
30 /*
31   Class       : HYDROGUI_PrsImage
32   Description : Presentation for image object
33 */
34 class HYDROGUI_PrsImage : public HYDROGUI_Prs
35 {
36 public:
37   enum TransformationPointType { None = 0, PointA, PointB, PointC };
38   struct TransformationPoint
39   {
40     QPoint              Point;
41     QString             Caption;
42     QGraphicsItemGroup* GroupItem;
43   };
44   typedef QMap        < int, TransformationPoint > TransformationPointMap;
45   typedef QMapIterator< int, TransformationPoint > TransformationPointMapIterator;
46
47 public:
48   HYDROGUI_PrsImage( const Handle(HYDROData_Entity)& theObject );
49   virtual ~HYDROGUI_PrsImage();
50
51 public:
52   void                            setImage( const QImage& theImage );
53   QImage                          getImage() const;
54
55   void                            setCaption( const QString& theCaption );
56   QString                         getCaption() const;
57
58   void                            setIsTransformationPointPreview( const bool theState );
59   bool                            getIsTransformationPointPreview() const;
60
61   void                            setIsByTwoPoints( const bool theIsByTwoPoints );
62   bool                            getIsByTwoPoints() const;
63
64   void                            setTransformationPointType( const int thePointType );
65
66   void                            setTransformationPointMap( const TransformationPointMap& theMap );
67   const TransformationPointMap&   getTransformationPointMap() const { return myTransformationPointMap; }
68
69   void                            updateTransformationPoint( const int thePointType,
70                                                              const bool theIsY,
71                                                              const int theValue );
72
73 public:
74   // from QGraphicsItem
75   virtual QRectF                  boundingRect() const;
76
77   // from GraphicsView_Object
78   virtual void                    compute();
79
80   virtual void                    addTo( GraphicsView_ViewPort* theViewPort );
81   virtual void                    removeFrom( GraphicsView_ViewPort* theViewPort );
82
83   virtual bool                    isMovable() const { return false; }
84
85   virtual bool                    checkHighlight( double theX, double theY, QCursor& theCursor ) const;
86
87   virtual bool                    select( double theX, double theY, const QRectF& theRect );
88   virtual void                    unselect();
89   virtual void                    setSelected( bool theState );
90
91 protected:
92   void                            computeTransformationPoints();
93   /**
94    * Show/hide a transformation point if necessary.
95    */
96   void                            updateTrsfPoint( const int thePointType );
97
98 protected:
99   QCursor*                        getTransformationPointCursor() const { return myTransformationPointCursor; }
100
101 protected:
102   QImage                          myImage;
103
104   QGraphicsPixmapItem*            myPixmapItem;
105   QGraphicsSimpleTextItem*        myCaptionItem;
106   HYDROGUI_PrsImageFrame*         myPrsImageFrame;
107
108   bool                            myIsTransformationPointPreview;
109   bool                            myIsByTwoPoints;
110   int                             myTransformationPointType;
111   TransformationPointMap          myTransformationPointMap;
112
113 private:
114   QCursor*                        myTransformationPointCursor;
115 };
116
117 #endif