0022962: Invalid realization of reading and writing material in STEP.
[occt.git] / src / QAOCC / QAOCC_OCC749Prs.cxx
1 // File:        QAOCC_OCC749Prs.cxx
2 // Created:     Fri Sep 20 16:33:40 2002
3 // Author:      Michael KUZMITCHEV
4 //              <mkv@russox>
5
6
7 #include <QAOCC_OCC749Prs.ixx>
8
9 #include <Prs3d_Root.hxx>
10 #include <Graphic3d_Group.hxx>
11 #include <Graphic3d_Vertex.hxx>
12 #include <Aspect_Array1OfEdge.hxx>
13 #include <Graphic3d_AspectFillArea3d.hxx>
14 #include <Graphic3d_MaterialAspect.hxx>
15 #include <Quantity_Color.hxx>
16 #include <Graphic3d_Array1OfVertexC.hxx>
17 #include <Aspect_Edge.hxx>
18
19 QAOCC_OCC749Prs::QAOCC_OCC749Prs( const Standard_Boolean reflection, 
20                     const Quantity_Color& color,
21                     const Quantity_Color& color1 ) : 
22 myReflection( reflection ), myColor1( color ), myColor2( color1 )
23 {
24 }
25
26 void QAOCC_OCC749Prs::Compute(const Handle(PrsMgr_PresentationManager3d)& aPrsMgr,
27                        const Handle(Prs3d_Presentation)& aPrs,
28                        const Standard_Integer aMode )
29 {
30   aPrs->Clear();
31   Handle(Graphic3d_Group) group = Prs3d_Root::NewGroup( aPrs );
32
33   Handle_Graphic3d_AspectFillArea3d CTX=new Graphic3d_AspectFillArea3d();
34   CTX->SetInteriorStyle(Aspect_IS_SOLID);
35   group->SetGroupPrimitivesAspect(CTX);
36
37   Graphic3d_MaterialAspect material = CTX->FrontMaterial();
38   if ( !myReflection ) {
39     material.SetReflectionModeOff(Graphic3d_TOR_AMBIENT);
40     material.SetReflectionModeOff(Graphic3d_TOR_DIFFUSE);
41     material.SetReflectionModeOff(Graphic3d_TOR_SPECULAR);
42     material.SetReflectionModeOff(Graphic3d_TOR_EMISSION);
43   }
44   CTX->SetFrontMaterial(material);
45   group->SetPrimitivesAspect(CTX);
46
47   Graphic3d_Array1OfVertexC anArray( 1,4 );
48   anArray(1).SetCoord( 0.,0.,0 );
49   anArray(1).SetColor( myColor1 );
50   anArray(2).SetCoord( 50., 0., 0 );
51   anArray(2).SetColor( myColor1 );
52   anArray(3).SetCoord( 50., 50, 0 );
53   anArray(3).SetColor( myColor2 );
54   anArray(4).SetCoord( 0., 50., 0 );
55   anArray(4).SetColor( myColor2 );
56   Aspect_Edge aE1(1,2,Aspect_TOE_VISIBLE);
57   Aspect_Edge aE2(2,3,Aspect_TOE_VISIBLE);
58   Aspect_Edge aE3(3,4,Aspect_TOE_VISIBLE);
59   Aspect_Edge aE4(4,1,Aspect_TOE_VISIBLE);
60   Aspect_Array1OfEdge anEdges(1,4);
61   anEdges.SetValue(1,aE1);
62   anEdges.SetValue(2,aE2);
63   anEdges.SetValue(3,aE3);
64   anEdges.SetValue(4,aE4);
65   group->QuadrangleSet(anArray,anEdges);
66 }
67
68 void QAOCC_OCC749Prs::ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
69                                 const Standard_Integer aMode)
70 {
71 }
72
73 void QAOCC_OCC749Prs::SetReflection( const Standard_Boolean reflection )
74 {
75   myReflection = reflection;
76 }
77     
78 void QAOCC_OCC749Prs::SetColor( const Quantity_Color& color,
79                          const Quantity_Color& color1 )
80 {
81   myColor1 = color;
82   myColor2 = color1;
83 }