0024002: Overall code and build procedure refactoring -- automatic
[occt.git] / src / AIS / AIS_SymmetricRelation.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 8929246..fc48372
@@ -1,62 +1,54 @@
 // Created on: 1997-03-03
 // Created by: Jean-Pierre COMBE
 // Copyright (c) 1997-1999 Matra Datavision
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
 
-#define BUC60915        //GG 05/06/01 Enable to compute the requested arrow size
-//                      if any in all dimensions.
-
-#include <Standard_NotImplemented.hxx>
-
-#include <AIS_SymmetricRelation.ixx>
 #include <AIS.hxx>
-#include <AIS_Drawer.hxx>
-
-#include <gce_MakeLin.hxx>
-#include <SelectMgr_EntityOwner.hxx>
-#include <Select3D_SensitiveSegment.hxx>
-#include <Select3D_SensitiveBox.hxx>
-#include <Precision.hxx>
-#include <TopoDS.hxx>
+#include <AIS_SymmetricRelation.hxx>
 #include <BRep_Tool.hxx>
-#include <BRepAdaptor_Surface.hxx>
 #include <BRepAdaptor_Curve.hxx>
-#include <gp_Lin.hxx>
-#include <gp_Circ.hxx>
-#include <gp_Pnt.hxx>
+#include <BRepAdaptor_Surface.hxx>
+#include <DsgPrs_SymmetricPresentation.hxx>
 #include <ElCLib.hxx>
-#include <gp_Pln.hxx>
-#include <gp_Dir.hxx>
+#include <gce_MakeLin.hxx>
+#include <Geom_Circle.hxx>
+#include <Geom_Line.hxx>
+#include <Geom_Plane.hxx>
+#include <Geom_Transformation.hxx>
 #include <gp_Ax1.hxx>
 #include <gp_Ax2.hxx>
-
-#include <Geom_Plane.hxx>
-#include <Geom_Line.hxx>
-#include <Geom_Circle.hxx>
-#include <TopExp_Explorer.hxx>
-
+#include <gp_Circ.hxx>
+#include <gp_Dir.hxx>
+#include <gp_Lin.hxx>
+#include <gp_Pln.hxx>
+#include <gp_Pnt.hxx>
 #include <Precision.hxx>
-#include <Prs3d_Drawer.hxx>
 #include <Prs3d_ArrowAspect.hxx>
-#include <Prs3d_LengthAspect.hxx>
-
-#include <DsgPrs_SymmetricPresentation.hxx>
+#include <Prs3d_DimensionAspect.hxx>
+#include <Prs3d_Drawer.hxx>
+#include <Prs3d_Presentation.hxx>
+#include <Prs3d_Projector.hxx>
+#include <Select3D_SensitiveBox.hxx>
+#include <Select3D_SensitiveSegment.hxx>
+#include <SelectMgr_EntityOwner.hxx>
+#include <SelectMgr_Selection.hxx>
+#include <Standard_NotImplemented.hxx>
+#include <Standard_Type.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Shape.hxx>
 
 //=======================================================================
 //function : AIS_SymmetricRelation
@@ -141,24 +133,11 @@ void AIS_SymmetricRelation::Compute(const Handle(Prs3d_Projector)& /*aProjector*
 // PrsMgr_PresentableObject::Compute( aProjector , aPresentation ) ;
 }
 
-//=======================================================================
-//function : Compute
-//purpose  : to avoid warning at compilation (SUN)
-//=======================================================================
-void AIS_SymmetricRelation::Compute
-  (const Handle(PrsMgr_PresentationManager2d)& /*aPresentationManager2d*/,
-   const Handle(Graphic2d_GraphicObject)& /*aGraphicObject*/,
-   const Standard_Integer /*anInteger*/)
-{
-// Standard_NotImplemented::Raise("AIS_SymmetricRelation::Compute(const Handle(PrsMgr_PresentationManager2d)&,const Handle(Graphic2d_GraphicObject)&,const Standard_Integer)");
-// PrsMgr_PresentableObject::Compute( aPresentationManager2d ,aGraphicObject,anInteger) ;
-}
-
-void AIS_SymmetricRelation::Compute(const Handle_Prs3d_Projector& aProjector,
-                                    const Handle_Geom_Transformation& aTransformation,
-                                    const Handle_Prs3d_Presentation& aPresentation)
+void AIS_SymmetricRelation::Compute(const Handle(Prs3d_Projector)& aProjector,
+                                    const Handle(Geom_Transformation)& aTransformation,
+                                    const Handle(Prs3d_Presentation)& aPresentation)
 {
- Standard_NotImplemented::Raise("AIS_SymmetricRelation::Compute(const Handle_Prs3d_Projector&, const Handle_Geom_Transformation&, const Handle_Prs3d_Presentation&)");
+ Standard_NotImplemented::Raise("AIS_SymmetricRelation::Compute(const Handle(Prs3d_Projector)&, const Handle(Geom_Transformation)&, const Handle(Prs3d_Presentation)&)");
  PrsMgr_PresentableObject::Compute( aProjector , aTransformation , aPresentation ) ;
 }
 
@@ -258,11 +237,8 @@ void AIS_SymmetricRelation::ComputeSelection(const Handle(SelectMgr_Selection)&
     
     //=======================Pour les arcs======================    
   if(cu1.GetType() == GeomAbs_Circle) { 
-    BRep_Tool::Curve(TopoDS::Edge(myFShape),F,L);
-//    Handle(Geom_Circle) geom_circ1 = (Handle(Geom_Circle)&) BRep_Tool::Curve(TopoDS::Edge(myFShape),F,L);
-//JR/Hp
     Handle(Geom_Curve) aGeomCurve = BRep_Tool::Curve(TopoDS::Edge(myFShape),F,L);
-    Handle(Geom_Circle) geom_circ1 = (Handle(Geom_Circle)&) aGeomCurve ;
+    Handle(Geom_Circle) geom_circ1 = Handle(Geom_Circle)::DownCast (aGeomCurve) ;
 //    Handle(Geom_Circle) geom_circ1 = (const Handle(Geom_Circle)&) BRep_Tool::Curve(TopoDS::Edge(myFShape),F,L);
     gp_Circ circ1(geom_circ1->Circ());
     gp_Pnt OffsetPnt(myPosition.X(),myPosition.Y(),myPosition.Z());
@@ -438,13 +414,13 @@ void AIS_SymmetricRelation::ComputeTwoEdgesSymmetric(const Handle(Prs3d_Presenta
   myAxisDirAttach = laxis.Direction();
 
   if(cu1.GetType() == GeomAbs_Line){
-    const Handle(Geom_Line)& geom_lin1 = (Handle(Geom_Line)&) geom1;
+    Handle(Geom_Line) geom_lin1 (Handle(Geom_Line)::DownCast (geom1));
     gp_Lin l1(geom_lin1->Lin());
     myFDirAttach = l1.Direction();
   }
   gp_Circ circ;
   if(cu1.GetType() == GeomAbs_Circle){
-    const Handle(Geom_Circle)& geom_cir1 = (Handle(Geom_Circle)&) geom1;
+    Handle(Geom_Circle) geom_cir1 (Handle(Geom_Circle)::DownCast (geom1));
     gp_Circ c(geom_cir1->Circ());
     circ = c;
   }
@@ -465,13 +441,13 @@ void AIS_SymmetricRelation::ComputeTwoEdgesSymmetric(const Handle(Prs3d_Presenta
 */
   Standard_Boolean idem = Standard_False;
   if (isInfinite1 && isInfinite2) { // geom1 et geom2 sont des lignes
-    const gp_Lin& line2 = ((Handle(Geom_Line)&) geom2)->Lin();
+    const gp_Lin& line2 = Handle(Geom_Line)::DownCast (geom2)->Lin();
     if (myAutomaticPosition) {
-      myFAttach = ((Handle(Geom_Line)&) geom1)->Lin().Location();      
+      myFAttach = Handle(Geom_Line)::DownCast (geom1)->Lin().Location();      
       mySAttach = ElCLib::Value(ElCLib::Parameter(line2,myFAttach),line2);
     }
     else {
-      const gp_Lin& line1 = ((Handle(Geom_Line)&) geom1)->Lin();
+      const gp_Lin& line1 = Handle(Geom_Line)::DownCast (geom1)->Lin();
       myFAttach = ElCLib::Value(ElCLib::Parameter(line1,myPosition),line1);
       mySAttach = ElCLib::Value(ElCLib::Parameter(line2,myFAttach),line2);
     }
@@ -507,18 +483,16 @@ void AIS_SymmetricRelation::ComputeTwoEdgesSymmetric(const Handle(Prs3d_Presenta
   }
   else if (isInfinite1) {// geom1 et geom2 sont des lignes
     mySAttach = ptat21;
-    const gp_Lin& line1 = ((Handle(Geom_Line)&) geom1)->Lin();
+    const gp_Lin& line1 = Handle(Geom_Line)::DownCast (geom1)->Lin();
     myFAttach = ElCLib::Value(ElCLib::Parameter(line1,mySAttach),line1);
   }
   else if (isInfinite2) {// geom1 et geom2 sont des lignes
     myFAttach = ptat11;
-    const gp_Lin& line2 = ((Handle(Geom_Line)&) geom2)->Lin();
+    const gp_Lin& line2 = Handle(Geom_Line)::DownCast (geom2)->Lin();
     mySAttach = ElCLib::Value(ElCLib::Parameter(line2,myFAttach),line2);
   }
 
-#ifdef BUC60915
   if( !myArrowSizeIsDefined )
-#endif
     myArrowSize = myFAttach.Distance(mySAttach)/50.;
   //----------------------------------------------------
  
@@ -528,7 +502,7 @@ void AIS_SymmetricRelation::ComputeTwoEdgesSymmetric(const Handle(Prs3d_Presenta
   gp_Pnt PjFAttach = ElCLib::Value(ElCLib::Parameter(laxis,myFAttach),laxis); 
  
   if (PjFAttach.IsEqual(myFAttach,Precision::Confusion())){
-    const Handle(Geom_Line)& geom_lin2 = (Handle(Geom_Line)&) geom2;
+    Handle(Geom_Line) geom_lin2 (Handle(Geom_Line)::DownCast (geom2));
     gp_Lin l2(geom_lin2->Lin());
     myFDirAttach = l2.Direction();
     gp_Pnt PntTempo;
@@ -554,10 +528,10 @@ void AIS_SymmetricRelation::ComputeTwoEdgesSymmetric(const Handle(Prs3d_Presenta
   gp_Pnt Pj1 = ElCLib::Value(ElCLib::Parameter(laxis,myFAttach),laxis);
   gp_Pnt Pj2 = ElCLib::Value(ElCLib::Parameter(laxis,mySAttach),laxis);
   if ((myFAttach.SquareDistance(Pj1)+mySAttach.SquareDistance(Pj2)) <= Precision::Confusion())  myArrowSize = 0.;
-  Handle(Prs3d_LengthAspect) la = myDrawer->LengthAspect();
-  Handle(Prs3d_ArrowAspect) arr = la->Arrow1Aspect();
+  Handle(Prs3d_DimensionAspect) la = myDrawer->DimensionAspect();
+  Handle(Prs3d_ArrowAspect) arr = la->ArrowAspect();
   arr->SetLength(myArrowSize);
-  arr = la->Arrow2Aspect();
+  arr = la->ArrowAspect();
   arr->SetLength(myArrowSize);
   if(cu1.GetType() == GeomAbs_Line)
     DsgPrs_SymmetricPresentation::Add(aprs,
@@ -617,9 +591,7 @@ void AIS_SymmetricRelation::ComputeTwoVerticesSymmetric(const Handle(Prs3d_Prese
   AIS::ComputeGeometry(TopoDS::Vertex(myFShape), myFAttach, myPlane, isOnPlane1);
   AIS::ComputeGeometry(TopoDS::Vertex(mySShape), mySAttach, myPlane, isOnPlane2);
 
-#ifdef BUC60915
   if( !myArrowSizeIsDefined )
-#endif
     myArrowSize = myFAttach.Distance(mySAttach)/50.;
   
   if (isOnPlane1 && isOnPlane2)
@@ -645,10 +617,10 @@ void AIS_SymmetricRelation::ComputeTwoVerticesSymmetric(const Handle(Prs3d_Prese
     myPosition = curpos;
   }
   if (2*(myFAttach.Distance(mySAttach)) <= Precision::Confusion()) myArrowSize = 0.;
-  Handle(Prs3d_LengthAspect) la = myDrawer->LengthAspect();
-  Handle(Prs3d_ArrowAspect) arr = la->Arrow1Aspect();
+  Handle(Prs3d_DimensionAspect) la = myDrawer->DimensionAspect();
+  Handle(Prs3d_ArrowAspect) arr = la->ArrowAspect();
   arr->SetLength(myArrowSize);
-  arr = la->Arrow2Aspect();
+  arr = la->ArrowAspect();
   arr->SetLength(myArrowSize);
   DsgPrs_SymmetricPresentation::Add(aprs,
                                    myDrawer,