0022048: Visualization, AIS_InteractiveContext - single object selection should alway...
[occt.git] / src / AIS / AIS_MaxRadiusDimension.cxx
old mode 100755 (executable)
new mode 100644 (file)
index c203538..0b8aebd
@@ -1,63 +1,69 @@
-// File:       AIS_MaxRadiusDimension.cxx
-// Created:    Fri Jan 23 12:46:52 1998
-// Author:     Sergey ZARITCHNY
-//             <szy@androx.nnov.matra-dtv.fr>
+// Created on: 1998-01-23
+// Created by: Sergey ZARITCHNY
+// Copyright (c) 1998-1999 Matra Datavision
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
+//
+// This file is part of Open CASCADE Technology software library.
+//
+// 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.
+//
+// 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_MaxRadiusDimension.ixx>
+#include <AIS.hxx>
 #include <AIS_EllipseRadiusDimension.hxx>
-#include <TCollection_ExtendedString.hxx>
-
-#include <Prs3d_LengthAspect.hxx>
-#include <Prs3d_ArrowAspect.hxx>
-#include <Prs3d_Drawer.hxx>
-#include <Prs3d_TextAspect.hxx>
-#include <Prs3d_Text.hxx> 
-
-#include <Select3D_SensitiveSegment.hxx>
-#include <Select3D_SensitiveCurve.hxx>
-#include <Select3D_SensitiveBox.hxx>
-#include <SelectMgr_EntityOwner.hxx>
-
+#include <AIS_MaxRadiusDimension.hxx>
+#include <BRepAdaptor_Curve.hxx>
+#include <BRepAdaptor_Surface.hxx>
+#include <DsgPrs_EllipseRadiusPresentation.hxx>
 #include <ElCLib.hxx>
 #include <ElSLib.hxx>
-
-#include <TopoDS.hxx>
-
-#include <BRepAdaptor_Surface.hxx>
-#include <BRepAdaptor_Curve.hxx>
-
+#include <Geom_CylindricalSurface.hxx>
 #include <Geom_Ellipse.hxx>
-#include <Geom_TrimmedCurve.hxx>
+#include <Geom_OffsetCurve.hxx>
 #include <Geom_Plane.hxx>
 #include <Geom_Surface.hxx>
-#include <Geom_CylindricalSurface.hxx>
-#include <Geom_SurfaceOfRevolution.hxx>
-#include <Geom_CylindricalSurface.hxx>
 #include <Geom_SurfaceOfLinearExtrusion.hxx>
-
-#include <gp_Pln.hxx>
-#include <gp_Pnt.hxx>
-#include <gp_Lin.hxx>
+#include <Geom_SurfaceOfRevolution.hxx>
+#include <Geom_Transformation.hxx>
+#include <Geom_TrimmedCurve.hxx>
 #include <gp_Ax1.hxx>
 #include <gp_Dir.hxx>
+#include <gp_Lin.hxx>
+#include <gp_Pln.hxx>
+#include <gp_Pnt.hxx>
 #include <gp_Vec.hxx>
-
-#include <AIS.hxx>
-#include <AIS_Drawer.hxx>
-
 #include <Precision.hxx>
-#include <DsgPrs_EllipseRadiusPresentation.hxx>
+#include <Prs3d_ArrowAspect.hxx>
+#include <Prs3d_DimensionAspect.hxx>
+#include <Prs3d_Drawer.hxx>
+#include <Prs3d_Presentation.hxx>
+#include <Prs3d_Projector.hxx>
+#include <Prs3d_Text.hxx>
+#include <Prs3d_TextAspect.hxx>
+#include <Select3D_SensitiveBox.hxx>
+#include <Select3D_SensitiveCurve.hxx>
+#include <Select3D_SensitiveSegment.hxx>
+#include <SelectMgr_EntityOwner.hxx>
+#include <SelectMgr_Selection.hxx>
+#include <Standard_ConstructionError.hxx>
+#include <Standard_NotImplemented.hxx>
+#include <Standard_Type.hxx>
+#include <TCollection_ExtendedString.hxx>
+#include <TopoDS.hxx>
+#include <TopoDS_Shape.hxx>
+
+IMPLEMENT_STANDARD_RTTIEXT(AIS_MaxRadiusDimension,AIS_EllipseRadiusDimension)
 
 //=======================================================================
 //function : AIS_MaxRadiusDimension
 //purpose  : 
 //=======================================================================
-
 AIS_MaxRadiusDimension::AIS_MaxRadiusDimension(const TopoDS_Shape& aShape, 
                                               const Standard_Real aVal, 
                                               const TCollection_ExtendedString& aText)
@@ -86,11 +92,7 @@ AIS_MaxRadiusDimension::AIS_MaxRadiusDimension(const TopoDS_Shape& aShape,
   mySymbolPrs = aSymbolPrs;
   myPosition = aPosition;
   myAutomaticPosition = Standard_False;
-#ifdef BUC60915
   SetArrowSize( anArrowSize );
-#else
-  myArrowSize = anArrowSize;
-#endif
 }
 
 //=======================================================================
@@ -102,8 +104,6 @@ void AIS_MaxRadiusDimension::Compute(const Handle(PrsMgr_PresentationManager3d)&
                                     const Handle(Prs3d_Presentation)& aPresentation, 
                                     const Standard_Integer /*aMode*/)
 {
-  aPresentation->Clear();
-
 //  if( myAutomaticPosition )
     {//ota : recompute in any case 
       ComputeGeometry();
@@ -126,33 +126,20 @@ void AIS_MaxRadiusDimension::Compute(const Handle(PrsMgr_PresentationManager3d)&
 void  AIS_MaxRadiusDimension::Compute(const Handle(Prs3d_Projector)& aProjector,
                                       const Handle(Prs3d_Presentation)& aPresentation)
 {
-// Standard_NotImplemented::Raise("AIS_MaxRadiusDimension::Compute(const Handle(Prs3d_Projector)& aProjector, const Handle(Prs3d_Presentation)& aPresentation)");
+// throw Standard_NotImplemented("AIS_MaxRadiusDimension::Compute(const Handle(Prs3d_Projector)& aProjector, const Handle(Prs3d_Presentation)& aPresentation)");
  PrsMgr_PresentableObject::Compute( aProjector , aPresentation ) ;
 }
 
-//=======================================================================
-//function : Compute
-//purpose  : to avoid warning
-//=======================================================================
-
-void  AIS_MaxRadiusDimension::Compute(const Handle(PrsMgr_PresentationManager2d)& aPresentationManager,
-                                      const Handle(Graphic2d_GraphicObject)& aPresentation,
-                                      const Standard_Integer aMode)
-{
-// Standard_NotImplemented::Raise("AIS_MaxRadiusDimension::Compute(const Handle(PrsMgr_PresentationManager2d)& aPresentationManager, const Handle(Graphic2d_GraphicObject)& aPresentation, const Standard_Integer aMode)");
- PrsMgr_PresentableObject::Compute( aPresentationManager ,aPresentation,aMode) ;
-}
-
 //=======================================================================
 //function : Compute
 //purpose  : 
 //=======================================================================
 
-void AIS_MaxRadiusDimension::Compute(const Handle_Prs3d_Projector& aProjector,
-                                     const Handle_Geom_Transformation& aTransformation,
-                                     const Handle_Prs3d_Presentation& aPresentation)
+void AIS_MaxRadiusDimension::Compute(const Handle(Prs3d_Projector)& aProjector,
+                                     const Handle(Geom_Transformation)& aTransformation,
+                                     const Handle(Prs3d_Presentation)& aPresentation)
 {
-// Standard_NotImplemented::Raise("AIS_MaxRadiusDimension::Compute(const Handle_Prs3d_Projector&, const Handle_Geom_Transformation&, const Handle_Prs3d_Presentation&)");
+// throw Standard_NotImplemented("AIS_MaxRadiusDimension::Compute(const Handle(Prs3d_Projector)&, const Handle(Geom_Transformation)&, const Handle(Prs3d_Presentation)&)");
  PrsMgr_PresentableObject::Compute( aProjector , aTransformation , aPresentation ) ;
 }
 
@@ -165,23 +152,14 @@ void AIS_MaxRadiusDimension::Compute(const Handle_Prs3d_Projector& aProjector,
 void AIS_MaxRadiusDimension::ComputeEllipse(const Handle(Prs3d_Presentation)& aPresentation)
 {
 
-  Handle(Prs3d_LengthAspect) la = myDrawer->LengthAspect();
-  Handle(Prs3d_ArrowAspect) arr = la->Arrow1Aspect();
+  Handle(Prs3d_DimensionAspect) la = myDrawer->DimensionAspect();
+  Handle(Prs3d_ArrowAspect) arr = la->ArrowAspect();
   
   // size
-#ifdef BUC60915
   if( !myArrowSizeIsDefined ) {
     myArrowSize = Min(myArrowSize,myVal / 5.);
   }
   arr->SetLength(myArrowSize);
-#else
-  if (myVal / 5. > myArrowSize) {
-    arr->SetLength(myArrowSize);
-  }
-  else {
-    arr->SetLength(myVal / 5.);
-  }
-#endif
 
   Standard_Real U;//,V;
   gp_Pnt curPos, Center;
@@ -223,23 +201,14 @@ void AIS_MaxRadiusDimension::ComputeEllipse(const Handle(Prs3d_Presentation)& aP
 void AIS_MaxRadiusDimension::ComputeArcOfEllipse(const Handle(Prs3d_Presentation)& aPresentation)
 {
 
-  Handle(Prs3d_LengthAspect) la = myDrawer->LengthAspect();
-  Handle(Prs3d_ArrowAspect) arr = la->Arrow1Aspect();
+  Handle(Prs3d_DimensionAspect) la = myDrawer->DimensionAspect();
+  Handle(Prs3d_ArrowAspect) arr = la->ArrowAspect();
   
   // size
-#ifdef BUC60915
   if( !myArrowSizeIsDefined ) {
     myArrowSize = Min(myArrowSize,myVal / 5.);
   }
   arr->SetLength(myArrowSize);
-#else
-  if (myVal / 5. > myArrowSize) {
-    arr->SetLength(myArrowSize);
-  }
-  else {
-    arr->SetLength(myVal / 5.);
-  }
-#endif
   
   Standard_Real par;
   gp_Pnt curPos, Center;
@@ -350,7 +319,7 @@ void AIS_MaxRadiusDimension::ComputeSelection(const Handle(SelectMgr_Selection)&
            else 
              parStart = par;
 
-           Handle(Geom_TrimmedCurve)TrimCurve;
+           Handle(Geom_Curve)TrimCurve;
            if(myIsOffset)
              {
                Handle(Geom_Curve) aCurve = myOffsetCurve;