1 // File: AIS_GraphicTool.cxx
2 // Created: Mon Feb 10 16:39:03 1997
3 // Author: Robert COUBLANC
4 // <rob@robox.paris1.matra-dtv.fr>
6 #define GER61351 //GG_171199 Enable to get an object RGB color
7 // instead a restricted object NameOfColor.
11 #include <AIS_GraphicTool.ixx>
14 #include <Quantity_Color.hxx>
15 #include <Prs3d_LineAspect.hxx>
16 #include <Aspect_AspectLine.hxx>
17 #include <Graphic3d_AspectLine3d.hxx>
18 #include <Prs3d_AngleAspect.hxx>
19 #include <Prs3d_PlaneAspect.hxx>
20 #include <Prs3d_DatumAspect.hxx>
21 #include <Graphic3d_AspectFillArea3d.hxx>
22 #include <Aspect_InteriorStyle.hxx>
24 #include <Prs3d_ShadingAspect.hxx>
27 static Handle(Prs3d_LineAspect) GetLineAspect(const Handle(Prs3d_Drawer)& Dr,
28 const AIS_TypeOfAttribute Att)
32 return Dr->LineAspect();
35 return Dr->AngleAspect()->LineAspect();
38 return Dr->WireAspect();
41 return Dr->PlaneAspect()->EdgesAspect();
44 return Dr->VectorAspect();
47 return Dr->UIsoAspect();
50 return Dr->VIsoAspect();
53 return Dr->FreeBoundaryAspect();
56 return Dr->UnFreeBoundaryAspect();
59 return Dr->SectionAspect();
62 return Dr->HiddenLineAspect();
65 return Dr->SeenLineAspect();
67 case AIS_TOA_FirstAxis:
68 return Dr->DatumAspect()->FirstAxisAspect();
69 case AIS_TOA_SecondAxis:
70 return Dr->DatumAspect()->SecondAxisAspect();
71 case AIS_TOA_ThirdAxis:
72 return Dr->DatumAspect()->SecondAxisAspect();
74 Handle(Prs3d_LineAspect) bid;
78 Quantity_NameOfColor AIS_GraphicTool::GetLineColor (const Handle(Prs3d_Drawer)& Dr, const AIS_TypeOfAttribute Att)
82 GetLineColor(Dr,Att,color);
86 void AIS_GraphicTool::GetLineColor (const Handle(Prs3d_Drawer)& Dr, const AIS_TypeOfAttribute Att, Quantity_Color &aColor)
90 Aspect_TypeOfLine TYP;
92 Handle(Prs3d_LineAspect) LA = GetLineAspect(Dr,Att);
95 LA->Aspect()->Values(aColor,TYP,W);
98 LA->Aspect()->Values(QCol,TYP,W);
103 Standard_Real AIS_GraphicTool::GetLineWidth (const Handle(Prs3d_Drawer)& Dr,
104 const AIS_TypeOfAttribute Att)
106 // Quantity_NameOfColor Col;
108 Aspect_TypeOfLine TYP;
110 Handle(Prs3d_LineAspect) LA = GetLineAspect(Dr,Att);
113 LA->Aspect()->Values(QCol,TYP,W);
116 Aspect_TypeOfLine AIS_GraphicTool::GetLineType (const Handle(Prs3d_Drawer)& Dr,
117 const AIS_TypeOfAttribute Att)
119 // Quantity_NameOfColor Col;
121 Aspect_TypeOfLine TYP;
123 Handle(Prs3d_LineAspect) LA = GetLineAspect(Dr,Att);
126 LA->Aspect()->Values(QCol,TYP,W);
131 void AIS_GraphicTool::GetLineAtt(const Handle(Prs3d_Drawer)& Dr,
132 const AIS_TypeOfAttribute Att,
133 Quantity_NameOfColor& Col,
135 Aspect_TypeOfLine& TYP)
138 Handle(Prs3d_LineAspect) LA = GetLineAspect(Dr,Att);
141 LA->Aspect()->Values(QCol,TYP,W);
145 Quantity_NameOfColor AIS_GraphicTool::GetInteriorColor(const Handle(Prs3d_Drawer)& Dr)
148 Quantity_Color color;
149 GetInteriorColor(Dr,color);
153 void AIS_GraphicTool::GetInteriorColor(const Handle(Prs3d_Drawer)& Dr, Quantity_Color &aColor)
156 Handle(Graphic3d_AspectFillArea3d) AFA = Dr->ShadingAspect()->Aspect();
157 Aspect_InteriorStyle IS;
162 AFA->Values(IS,aColor,EC,T,W);
164 Quantity_Color IC,EC;
165 AFA->Values(IS,IC,EC,T,W);
170 Graphic3d_MaterialAspect AIS_GraphicTool::GetMaterial(const Handle(Prs3d_Drawer)& Dr)
172 return Dr->ShadingAspect()->Aspect()->BackMaterial();