]> SALOME platform Git repositories - modules/geom.git/blob - src/OBJECT/GEOM_AISShape.cxx
Salome HOME
NRI : First integration.
[modules/geom.git] / src / OBJECT / GEOM_AISShape.cxx
1 using namespace std;
2 //  File      : GEOM_AISShape.cxx
3 //  Created   : Wed Feb 20 17:24:59 2002
4 //  Author    : Nicolas REJNERI
5 //  Project   : SALOME
6 //  Module    : GEOM
7 //  Copyright : Open CASCADE 2002
8 //  $Header$
9
10 /*!
11   \class GEOM_AISShape GEOM_AISShape.hxx
12   \brief ....
13 */
14
15 #include "GEOM_AISShape.ixx"
16 #include "SALOME_InteractiveObject.hxx"
17
18 #include "utilities.h"
19
20 // Open CASCADE Includes
21 #include <AIS_Drawer.hxx>
22 #include <Prs3d_Drawer.hxx>
23 #include <Prs3d_IsoAspect.hxx>
24 #include <Prs3d_LineAspect.hxx>
25 #include <Prs3d_ShadingAspect.hxx>
26 #include <StdSelect_DisplayMode.hxx>
27 #include <StdPrs_WFShape.hxx>
28 #include <StdPrs_ShadedShape.hxx>
29
30 #include <Graphic3d_AspectFillArea3d.hxx>
31
32 GEOM_AISShape::GEOM_AISShape(const TopoDS_Shape& shape,
33                              const Standard_CString aName): SALOME_AISShape(shape)
34 {
35   myIO = NULL;
36   myName = new char [strlen(aName)+1];
37   strcpy( myName, aName);
38
39   myShadingColor = Quantity_Color( Quantity_NOC_GOLDENROD );
40 }
41
42 void GEOM_AISShape::setIO(const Handle(SALOME_InteractiveObject)& io){
43   myIO = io;
44 }
45
46 Handle(SALOME_InteractiveObject) GEOM_AISShape::getIO(){
47   return myIO;
48 }
49
50 Standard_Boolean GEOM_AISShape::hasIO(){
51   return !( myIO == NULL ) ;
52 }
53
54 void GEOM_AISShape::setName(const Standard_CString aName)
55 {
56   myName = new char [strlen(aName)+1];
57   strcpy( myName, aName);
58
59   if ( hasIO() )
60     myIO->setName(aName);
61 }
62
63 Standard_CString GEOM_AISShape::getName(){
64   return myName;
65 }
66
67 void GEOM_AISShape::Compute(const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,
68                             const Handle(Prs3d_Presentation)& aPrs,
69                             const Standard_Integer aMode)
70 {  
71   if (IsInfinite()) aPrs->SetInfiniteState(Standard_True); //pas de prise en compte lors du FITALL
72   
73   StdSelect_DisplayMode d = (StdSelect_DisplayMode) aMode;
74
75   switch (d) {
76   case StdSelect_DM_Wireframe: 
77     {
78       StdPrs_WFShape::Add(aPrs,myshape,myDrawer);
79       break;
80     }
81   case StdSelect_DM_Shading:
82     {
83       myDrawer->ShadingAspect()->Aspect()->SetDistinguishOn();
84       myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(Graphic3d_NOM_BRASS);
85       myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(Graphic3d_NOM_JADE);
86
87       Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial();
88       Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial();
89       FMat.SetTransparency(myTransparency); BMat.SetTransparency(myTransparency);
90       myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat);
91       myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat);
92
93       //Handle(Graphic3d_AspectFillArea3d) a4bis = myDrawer->ShadingAspect()->Aspect();
94       //       P->SetPrimitivesAspect(a4bis);
95       //        G->SetGroupPrimitivesAspect(a4bis);
96       //a4bis->SetInteriorColor(myShadingColor);
97       myDrawer->ShadingAspect()->SetColor(myShadingColor);
98
99       StdPrs_ShadedShape::Add(aPrs,myshape,myDrawer);
100       break;
101     }
102   }
103   //  aPrs->ReCompute(); // for hidden line recomputation if necessary...
104 }
105
106 void GEOM_AISShape::SetTransparency(const Standard_Real aValue)
107 {
108   if(aValue<0.0 || aValue>1.0) return;
109   
110   if(aValue<=0.05) 
111     {
112       UnsetTransparency();
113       return;
114     }
115
116   Graphic3d_MaterialAspect FMat = myDrawer->ShadingAspect()->Aspect()->FrontMaterial();
117   Graphic3d_MaterialAspect BMat = myDrawer->ShadingAspect()->Aspect()->BackMaterial();
118   FMat.SetTransparency(aValue); BMat.SetTransparency(aValue);
119   myDrawer->ShadingAspect()->Aspect()->SetFrontMaterial(FMat);
120   myDrawer->ShadingAspect()->Aspect()->SetBackMaterial(BMat);
121   myTransparency = aValue;
122 }
123
124 void GEOM_AISShape::SetShadingColor(const Quantity_Color &aCol)
125 {
126   myShadingColor = aCol;
127 }