1 // Copyright (C) 2014-2015 EDF-R&D
2 // This library is free software; you can redistribute it and/or
3 // modify it under the terms of the GNU Lesser General Public
4 // License as published by the Free Software Foundation; either
5 // version 2.1 of the License, or (at your option) any later version.
7 // This library is distributed in the hope that it will be useful,
8 // but WITHOUT ANY WARRANTY; without even the implied warranty of
9 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 // Lesser General Public License for more details.
12 // You should have received a copy of the GNU Lesser General Public
13 // License along with this library; if not, write to the Free Software
14 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #include "HYDROGUI_PrsZone.h"
24 //=======================================================================
25 // name : HYDROGUI_PrsZone
26 // Purpose : Constructor
27 //=======================================================================
28 HYDROGUI_PrsZone::HYDROGUI_PrsZone( const Handle(HYDROData_Entity)& theObject )
29 : HYDROGUI_Prs( theObject ),
31 myFillingColor( Qt::transparent ),
32 myBorderColor( Qt::transparent )
36 //=======================================================================
37 // name : HYDROGUI_PrsZone
38 // Purpose : Destructor
39 //=======================================================================
40 HYDROGUI_PrsZone::~HYDROGUI_PrsZone()
44 //================================================================
47 //================================================================
48 void HYDROGUI_PrsZone::setPath( const QPainterPath& thePath )
53 //================================================================
56 //================================================================
57 QPainterPath HYDROGUI_PrsZone::getPath() const
62 //================================================================
63 // Function : setFillingColor
65 //================================================================
66 void HYDROGUI_PrsZone::setFillingColor( const QColor& theColor )
68 myFillingColor = theColor;
71 //================================================================
72 // Function : getFillingColor
74 //================================================================
75 QColor HYDROGUI_PrsZone::getFillingColor() const
77 return myFillingColor;
80 //================================================================
81 // Function : setBorderColor
83 //================================================================
84 void HYDROGUI_PrsZone::setBorderColor( const QColor& theColor )
86 myBorderColor = theColor;
89 //================================================================
90 // Function : getBorderColor
92 //================================================================
93 QColor HYDROGUI_PrsZone::getBorderColor() const
98 //================================================================
99 // Function : boundingRect
101 //================================================================
102 QRectF HYDROGUI_PrsZone::boundingRect() const
104 return myZoneItem->boundingRect();
107 //================================================================
108 // Function : compute
110 //================================================================
111 void HYDROGUI_PrsZone::compute()
115 myZoneItem = new QGraphicsPathItem( this );
116 addToGroup( myZoneItem );
119 QPainterPath aPath( myPath );
120 //aPath.setFillRule( Qt::WindingFill );
121 aPath.setFillRule( Qt::OddEvenFill ); // ouv: for correct drawing the paths with holes
123 myZoneItem->setPath( aPath );
124 myZoneItem->setBrush( QBrush( myFillingColor ) );
125 myZoneItem->setPen( QPen( myBorderColor ) );
128 //================================================================
129 // Function : checkHighlight
131 //================================================================
132 bool HYDROGUI_PrsZone::checkHighlight( double theX, double theY, QCursor& theCursor ) const
138 //================================================================
141 //================================================================
142 bool HYDROGUI_PrsZone::select( double theX, double theY, const QRectF& theRect )
144 return GraphicsView_Object::select( theX, theY, theRect );
147 //================================================================
148 // Function : unselect
150 //================================================================
151 void HYDROGUI_PrsZone::unselect()
153 GraphicsView_Object::unselect();
156 QPen aPen = myZoneItem->pen();
157 aPen.setColor( Qt::black );
159 myZoneItem->setPen( aPen );
162 //================================================================
163 // Function : setSelected
165 //================================================================
166 void HYDROGUI_PrsZone::setSelected( bool theState )
168 GraphicsView_Object::setSelected( theState );
171 QPen aPen = myZoneItem->pen();
172 aPen.setColor( theState ? Qt::red : Qt::black );
173 aPen.setWidth( theState ? 2 : 1 );
174 myZoneItem->setPen( aPen );