]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Presentation for polyline object.
authorouv <ouv@opencascade.com>
Thu, 15 Aug 2013 07:27:51 +0000 (07:27 +0000)
committerouv <ouv@opencascade.com>
Thu, 15 Aug 2013 07:27:51 +0000 (07:27 +0000)
src/HYDROGUI/CMakeLists.txt
src/HYDROGUI/HYDROGUI_Displayer.cxx
src/HYDROGUI/HYDROGUI_Prs.cxx
src/HYDROGUI/HYDROGUI_Prs.h
src/HYDROGUI/HYDROGUI_PrsImage.cxx
src/HYDROGUI/HYDROGUI_PrsImage.h
src/HYDROGUI/HYDROGUI_PrsPolyline.cxx [new file with mode: 0644]
src/HYDROGUI/HYDROGUI_PrsPolyline.h [new file with mode: 0644]
src/HYDROGUI/HYDROGUI_PrsPolylineDriver.cxx [new file with mode: 0644]
src/HYDROGUI/HYDROGUI_PrsPolylineDriver.h [new file with mode: 0644]

index c4cd4f0262473cee0f8f542f56f38d8549852737..f5f3459aabdeefe08fefb0f4476aaa5131246b03 100644 (file)
@@ -23,6 +23,8 @@ set(PROJECT_HEADERS
     HYDROGUI_PrsImage.h
     HYDROGUI_PrsImageDriver.h
     HYDROGUI_PrsImageFrame.h
+    HYDROGUI_PrsPolyline.h
+    HYDROGUI_PrsPolylineDriver.h
     HYDROGUI_ShowHideOp.h
     HYDROGUI_Tool.h
     HYDROGUI_TwoImagesDlg.h
@@ -53,6 +55,8 @@ set(PROJECT_SOURCES
     HYDROGUI_PrsImage.cxx
     HYDROGUI_PrsImageDriver.cxx
     HYDROGUI_PrsImageFrame.cxx
+    HYDROGUI_PrsPolyline.cxx
+    HYDROGUI_PrsPolylineDriver.cxx
     HYDROGUI_ShowHideOp.cxx
     HYDROGUI_Tool.cxx
     HYDROGUI_TwoImagesDlg.cxx
index 2947e10a268274091462ab55cef8b7cbed827839..a99292ae0a714423475286734f15a47418d14626 100644 (file)
@@ -26,6 +26,7 @@
 #include "HYDROGUI_Module.h"
 #include "HYDROGUI_Prs.h"
 #include "HYDROGUI_PrsImageDriver.h"
+#include "HYDROGUI_PrsPolylineDriver.h"
 #include "HYDROGUI_Tool.h"
 
 #include <GraphicsView_Viewer.h>
@@ -240,6 +241,10 @@ HYDROGUI_PrsDriver* HYDROGUI_Displayer::getDriver( const Handle(HYDROData_Object
         aDriver = new HYDROGUI_PrsImageDriver();
         myPrsDriversMap[ aKind ] = aDriver;
         break;
+      case KIND_POLYLINE:
+        aDriver = new HYDROGUI_PrsPolylineDriver();
+        myPrsDriversMap[ aKind ] = aDriver;
+        break;
       default:
         break;
     }
index f0a9f554418737cfbf01046029f6790055cbd70c..1ed451e396862313757ae2473dd21b5b6f8a558a 100644 (file)
 
 #include "HYDROGUI_Prs.h"
 
+#include <GraphicsView_ViewPort.h>
+
+#include <QCursor>
+
 //=======================================================================
 // name    : HYDROGUI_Prs
 // Purpose : Constructor
@@ -31,6 +35,7 @@ HYDROGUI_Prs::HYDROGUI_Prs( const Handle(HYDROData_Object)& theObject )
   myObject( theObject ),
   myIsToUpdate( false )
 {
+  myHighlightCursor = new QCursor( Qt::PointingHandCursor );
 }
 
 //=======================================================================
@@ -39,4 +44,30 @@ HYDROGUI_Prs::HYDROGUI_Prs( const Handle(HYDROData_Object)& theObject )
 //=======================================================================
 HYDROGUI_Prs::~HYDROGUI_Prs()
 {
+  if( myHighlightCursor )
+  {
+    delete myHighlightCursor;
+    myHighlightCursor = 0;
+  }
+}
+
+//================================================================
+// Function : addTo
+// Purpose  : 
+//================================================================
+void HYDROGUI_Prs::addTo( GraphicsView_ViewPort* theViewPort )
+{
+  GraphicsView_Object::addTo( theViewPort );
+
+  double aZValue = 0;
+  GraphicsView_ObjectListIterator anIter( theViewPort->getObjects() );
+  while( anIter.hasNext() )
+  {
+    if( HYDROGUI_Prs* aPrs = dynamic_cast<HYDROGUI_Prs*>( anIter.next() ) )
+    {
+      double aZValueRef = aPrs->zValue();
+      aZValue = qMax( aZValue, aZValueRef );
+    }
+  }
+  setZValue( aZValue + 1 );
 }
index 8c39308d17b24292e1aa23935ae8b4d4b72a545f..6219f48b14d2dc2c57b149c9f5f86ed796577e00 100644 (file)
@@ -43,9 +43,19 @@ public:
   bool                            getIsToUpdate() const { return myIsToUpdate; }
   void                            setIsToUpdate( bool theState ) { myIsToUpdate = theState; }
 
+public:
+  // from GraphicsView_Object
+  virtual void                    addTo( GraphicsView_ViewPort* theViewPort );
+
+protected:
+  QCursor*                        getHighlightCursor() const { return myHighlightCursor; }
+
 private:
   Handle(HYDROData_Object)        myObject;
   bool                            myIsToUpdate;
+
+private:
+  QCursor*                        myHighlightCursor;
 };
 
 #endif
index d92d0e373e7d91633aab28534b6b2e3a2c099f69..4e8471e129b59eb97c172e05427742576a711f86 100644 (file)
@@ -39,7 +39,6 @@ HYDROGUI_PrsImage::HYDROGUI_PrsImage( const Handle(HYDROData_Object)& theObject
   myIsTransformationPointPreview( false ),
   myTransformationPointMode( None )
 {
-  myHighlightCursor = new QCursor( Qt::PointingHandCursor );
   myTransformationPointCursor = new QCursor( Qt::CrossCursor );
 }
 
@@ -49,12 +48,6 @@ HYDROGUI_PrsImage::HYDROGUI_PrsImage( const Handle(HYDROData_Object)& theObject
 //=======================================================================
 HYDROGUI_PrsImage::~HYDROGUI_PrsImage()
 {
-  if( myHighlightCursor )
-  {
-    delete myHighlightCursor;
-    myHighlightCursor = 0;
-  }
-
   if( myTransformationPointCursor )
   {
     delete myTransformationPointCursor;
@@ -155,20 +148,8 @@ void HYDROGUI_PrsImage::compute()
 //================================================================
 void HYDROGUI_PrsImage::addTo( GraphicsView_ViewPort* theViewPort )
 {
-  GraphicsView_Object::addTo( theViewPort );
+  HYDROGUI_Prs::addTo( theViewPort );
   theViewPort->addItem( myPrsImageFrame );
-
-  double aZValue = 0;
-  GraphicsView_ObjectListIterator anIter( theViewPort->getObjects() );
-  while( anIter.hasNext() )
-  {
-    if( HYDROGUI_PrsImage* aPrs = dynamic_cast<HYDROGUI_PrsImage*>( anIter.next() ) )
-    {
-      double aZValueRef = aPrs->zValue();
-      aZValue = qMax( aZValue, aZValueRef );
-    }
-  }
-  setZValue( aZValue + 1 );
 }
 
 //================================================================
@@ -177,7 +158,7 @@ void HYDROGUI_PrsImage::addTo( GraphicsView_ViewPort* theViewPort )
 //================================================================
 void HYDROGUI_PrsImage::removeFrom( GraphicsView_ViewPort* theViewPort )
 {
-  GraphicsView_Object::removeFrom( theViewPort );
+  HYDROGUI_Prs::removeFrom( theViewPort );
   theViewPort->removeItem( myPrsImageFrame );
 }
 
@@ -220,7 +201,7 @@ bool HYDROGUI_PrsImage::select( double theX, double theY, const QRectF& theRect
     return true;
   }
 
-  bool anIsSelected = GraphicsView_Object::select( theX, theY, theRect );
+  bool anIsSelected = HYDROGUI_Prs::select( theX, theY, theRect );
   myPrsImageFrame->updateVisibility();
   return anIsSelected;
 }
@@ -231,7 +212,7 @@ bool HYDROGUI_PrsImage::select( double theX, double theY, const QRectF& theRect
 //================================================================
 void HYDROGUI_PrsImage::unselect()
 {
-  GraphicsView_Object::unselect();
+  HYDROGUI_Prs::unselect();
   myPrsImageFrame->updateVisibility();
 }
 
@@ -241,7 +222,7 @@ void HYDROGUI_PrsImage::unselect()
 //================================================================
 void HYDROGUI_PrsImage::setSelected( bool theState )
 {
-  GraphicsView_Object::setSelected( theState );
+  HYDROGUI_Prs::setSelected( theState );
   myPrsImageFrame->updateVisibility();
 }
 
index 651c787cf08df9a6e85e2434fa97b215068b17e6..c09ad6927dd5abcac30ccea783433b6b95efac9d 100644 (file)
@@ -83,7 +83,6 @@ protected:
   void                            computeTransformationPoints();
 
 protected:
-  QCursor*                        getHighlightCursor() const { return myHighlightCursor; }
   QCursor*                        getTransformationPointCursor() const { return myTransformationPointCursor; }
 
 protected:
@@ -97,7 +96,6 @@ protected:
   TransformationPointMap          myTransformationPointMap;
 
 private:
-  QCursor*                        myHighlightCursor;
   QCursor*                        myTransformationPointCursor;
 };
 
diff --git a/src/HYDROGUI/HYDROGUI_PrsPolyline.cxx b/src/HYDROGUI/HYDROGUI_PrsPolyline.cxx
new file mode 100644 (file)
index 0000000..6600557
--- /dev/null
@@ -0,0 +1,119 @@
+// Copyright (C) 2007-2013  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
+//
+// 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.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "HYDROGUI_PrsPolyline.h"
+
+//=======================================================================
+// name    : HYDROGUI_PrsPolyline
+// Purpose : Constructor
+//=======================================================================
+HYDROGUI_PrsPolyline::HYDROGUI_PrsPolyline( const Handle(HYDROData_Object)& theObject )
+: HYDROGUI_Prs( theObject ),
+  myPolylineItem( 0 )
+{
+}
+
+//=======================================================================
+// name    : HYDROGUI_PrsPolyline
+// Purpose : Destructor
+//=======================================================================
+HYDROGUI_PrsPolyline::~HYDROGUI_PrsPolyline()
+{
+}
+
+//================================================================
+// Function : setPath
+// Purpose  : 
+//================================================================
+void HYDROGUI_PrsPolyline::setPath( const QPainterPath& thePath )
+{
+  myPath = thePath;
+}
+
+//================================================================
+// Function : getPath
+// Purpose  : 
+//================================================================
+QPainterPath HYDROGUI_PrsPolyline::getPath() const
+{
+  return myPath;
+}
+
+//================================================================
+// Function : boundingRect
+// Purpose  : 
+//================================================================
+QRectF HYDROGUI_PrsPolyline::boundingRect() const
+{
+  return myPolylineItem->boundingRect();
+}
+
+//================================================================
+// Function : compute
+// Purpose  : 
+//================================================================
+void HYDROGUI_PrsPolyline::compute()
+{
+  if( !myPolylineItem )
+  {
+    myPolylineItem = new QGraphicsPathItem( this );
+    addToGroup( myPolylineItem );
+  }
+  myPolylineItem->setPath( myPath );
+}
+
+//================================================================
+// Function : checkHighlight
+// Purpose  : 
+//================================================================
+bool HYDROGUI_PrsPolyline::checkHighlight( double theX, double theY, QCursor& theCursor ) const
+{
+  // to do
+  return false;
+}
+
+//================================================================
+// Function : select
+// Purpose  : 
+//================================================================
+bool HYDROGUI_PrsPolyline::select( double theX, double theY, const QRectF& theRect )
+{
+  return GraphicsView_Object::select( theX, theY, theRect );
+}
+
+//================================================================
+// Function : unselect
+// Purpose  : 
+//================================================================
+void HYDROGUI_PrsPolyline::unselect()
+{
+  GraphicsView_Object::unselect();
+}
+
+//================================================================
+// Function : setSelected
+// Purpose  : 
+//================================================================
+void HYDROGUI_PrsPolyline::setSelected( bool theState )
+{
+  GraphicsView_Object::setSelected( theState );
+}
diff --git a/src/HYDROGUI/HYDROGUI_PrsPolyline.h b/src/HYDROGUI/HYDROGUI_PrsPolyline.h
new file mode 100644 (file)
index 0000000..47dc3b2
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2007-2013  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
+//
+// 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.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef HYDROGUI_PRSPOLYLINE_H
+#define HYDROGUI_PRSPOLYLINE_H
+
+#include "HYDROGUI_Prs.h"
+
+/*
+  Class       : HYDROGUI_PrsPolyline
+  Description : Presentation for polyline object
+*/
+class HYDROGUI_PrsPolyline : public HYDROGUI_Prs
+{
+public:
+  HYDROGUI_PrsPolyline( const Handle(HYDROData_Object)& theObject );
+  virtual ~HYDROGUI_PrsPolyline();
+
+public:
+  void                            setPath( const QPainterPath& thePath );
+  QPainterPath                    getPath() const;
+
+public:
+  // from QGraphicsItem
+  virtual QRectF                  boundingRect() const;
+
+  // from GraphicsView_Object
+  virtual void                    compute();
+
+  virtual bool                    isMovable() const { return false; }
+
+  virtual bool                    checkHighlight( double theX, double theY, QCursor& theCursor ) const;
+
+  virtual bool                    select( double theX, double theY, const QRectF& theRect );
+  virtual void                    unselect();
+  virtual void                    setSelected( bool theState );
+
+protected:
+  QGraphicsPathItem*              myPolylineItem;
+
+  QPainterPath                    myPath;
+};
+
+#endif
diff --git a/src/HYDROGUI/HYDROGUI_PrsPolylineDriver.cxx b/src/HYDROGUI/HYDROGUI_PrsPolylineDriver.cxx
new file mode 100644 (file)
index 0000000..da1481e
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2007-2013  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
+//
+// 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.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "HYDROGUI_PrsPolylineDriver.h"
+
+#include "HYDROGUI_PrsPolyline.h"
+
+#include <HYDROData_Polyline.h>
+
+HYDROGUI_PrsPolylineDriver::HYDROGUI_PrsPolylineDriver()
+:HYDROGUI_PrsDriver()
+{
+}
+
+HYDROGUI_PrsPolylineDriver::~HYDROGUI_PrsPolylineDriver()
+{
+}
+
+bool HYDROGUI_PrsPolylineDriver::Update( const Handle(HYDROData_Object)& theObj,
+                                         HYDROGUI_Prs*& thePrs )
+{
+  HYDROGUI_PrsDriver::Update( theObj, thePrs );
+
+  if( theObj.IsNull() )
+    return false;
+
+  Handle(HYDROData_Polyline) aPolyline = Handle(HYDROData_Polyline)::DownCast( theObj );
+  if( aPolyline.IsNull() )
+    return false;
+
+  if( !thePrs )
+    thePrs = new HYDROGUI_PrsPolyline( theObj );
+
+  HYDROGUI_PrsPolyline* aPrsPolyline = (HYDROGUI_PrsPolyline*)thePrs;
+
+  aPrsPolyline->setName( aPolyline->GetName() );
+  aPrsPolyline->setPath( aPolyline->painterPathLinear() );
+
+  aPrsPolyline->compute();
+
+  return true;
+}
diff --git a/src/HYDROGUI/HYDROGUI_PrsPolylineDriver.h b/src/HYDROGUI/HYDROGUI_PrsPolylineDriver.h
new file mode 100644 (file)
index 0000000..de6dde1
--- /dev/null
@@ -0,0 +1,56 @@
+// Copyright (C) 2007-2013  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
+//
+// 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.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef HYDROGUI_PRSPOLYLINEDRIVER_H
+#define HYDROGUI_PRSPOLYLINEDRIVER_H
+
+#include <HYDROGUI_PrsDriver.h>
+
+/**
+ * \class HYDROGUI_PrsPolylineDriver
+ * \brief Presentation driver for polyline objects.
+ */
+class HYDROGUI_PrsPolylineDriver : public HYDROGUI_PrsDriver
+{
+public:
+  /**
+   * \brief Constructor.
+   */
+  HYDROGUI_PrsPolylineDriver();
+
+  /**
+   * \brief Destructor.
+   */
+  virtual ~HYDROGUI_PrsPolylineDriver();
+
+public:
+  /**
+   * \brief Update or create the polyline presentation on a basis of data object.
+   * \param theObj data object
+   * \param thePrs presentation
+   * \return status of the operation
+   */
+  virtual bool Update( const Handle(HYDROData_Object)& theObj,
+                       HYDROGUI_Prs*& thePrs );
+};
+
+#endif