0024413: Visualization - get rid of projection shift from orthographic camera definition
[occt.git] / src / Graphic3d / Graphic3d_AspectFillArea3d.cxx
1 // Created by: NW,JPB,CAL
2 // Copyright (c) 1991-1999 Matra Datavision
3 // Copyright (c) 1999-2014 OPEN CASCADE SAS
4 //
5 // This file is part of Open CASCADE Technology software library.
6 //
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
12 //
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
15
16 //-Design       Declaration of variables specific to the context
17 //              of tracing of facets 3D
18
19 //-Warning      Ccontext of tracing of facets 3d inherits the context
20 //              defined by :
21 //              - the style of the interior of the facet
22 //              - the style of the facet border
23 //              - the color
24 //              Additionally, it has more than one definition of material
25 //              for internal and external faces.
26
27 // for the class
28 #include <Graphic3d_AspectFillArea3d.ixx>
29
30 #include <Aspect_PolygonOffsetMode.hxx>
31 #include <Standard_Boolean.hxx>
32
33 Graphic3d_AspectFillArea3d::Graphic3d_AspectFillArea3d ():
34 DistinguishModeActive (Standard_False), EdgeModeActive (Standard_False), BackFaceRemovalActive (Standard_False),  MyTextureMapState(Standard_False), MyFrontMaterial (), MyBackMaterial ()
35 {
36   // By default, aspect do not change current polygon offset parameters
37   MyPolygonOffsetMode   = Aspect_POM_Fill;
38   MyPolygonOffsetFactor = 1.;
39   MyPolygonOffsetUnits  = 0.;
40 }
41
42 // (InteriorStyle, InteriorColor, EdgeColor, EdgeLineType, EdgeLineWidth)
43 // because AspectFillArea3d inherits AspectFillArea and it is necessary to call
44 // initialisation of AspectFillArea with InteriorStyle, InteriorColor,
45 // EdgeColor, EdgeLineType and EdgeLineWidth.
46
47 Graphic3d_AspectFillArea3d::Graphic3d_AspectFillArea3d (const Aspect_InteriorStyle InteriorStyle, const Quantity_Color& InteriorColor, const Quantity_Color& EdgeColor, const Aspect_TypeOfLine EdgeLineType, const Standard_Real EdgeLineWidth, const Graphic3d_MaterialAspect& FrontMaterial, const Graphic3d_MaterialAspect& BackMaterial):
48 Aspect_AspectFillArea (InteriorStyle, InteriorColor, EdgeColor, EdgeLineType, EdgeLineWidth), DistinguishModeActive (Standard_False), EdgeModeActive (Standard_False), BackFaceRemovalActive (Standard_False), MyTextureMap(), MyTextureMapState(Standard_False), MyFrontMaterial (FrontMaterial), MyBackMaterial (BackMaterial) {
49   // By default, aspect do not change current polygon offset parameters
50   MyPolygonOffsetMode   = Aspect_POM_Fill;
51   MyPolygonOffsetFactor = 1.;
52   MyPolygonOffsetUnits  = 0.;
53 }
54
55 void Graphic3d_AspectFillArea3d::SetBackMaterial (const Graphic3d_MaterialAspect& AMaterial) {
56
57         MyBackMaterial  = AMaterial;
58
59 }
60
61 void Graphic3d_AspectFillArea3d::SetFrontMaterial (const Graphic3d_MaterialAspect& AMaterial) {
62
63         MyFrontMaterial = AMaterial;
64
65 }
66
67 Graphic3d_MaterialAspect Graphic3d_AspectFillArea3d::BackMaterial () const {
68
69         return (MyBackMaterial);
70
71 }
72
73 Graphic3d_MaterialAspect Graphic3d_AspectFillArea3d::FrontMaterial () const {
74
75         return (MyFrontMaterial);
76
77 }
78
79 void Graphic3d_AspectFillArea3d::AllowBackFace () {
80
81         BackFaceRemovalActive   = Standard_False;
82
83 }
84
85 void Graphic3d_AspectFillArea3d::SuppressBackFace () {
86
87         BackFaceRemovalActive   = Standard_True;
88
89 }
90
91 Standard_Boolean Graphic3d_AspectFillArea3d::BackFace () const {
92
93         return (BackFaceRemovalActive);
94
95 }
96
97 void Graphic3d_AspectFillArea3d::SetDistinguishOn () {
98
99         DistinguishModeActive   = Standard_True;
100
101 }
102
103 void Graphic3d_AspectFillArea3d::SetDistinguishOff () {
104
105         DistinguishModeActive   = Standard_False;
106
107 }
108
109 Standard_Boolean Graphic3d_AspectFillArea3d::Distinguish () const {
110
111         return (DistinguishModeActive);
112
113 }
114
115 void Graphic3d_AspectFillArea3d::SetEdgeOn () {
116
117         EdgeModeActive  = Standard_True;
118
119 }
120
121 void Graphic3d_AspectFillArea3d::SetEdgeOff () {
122
123         EdgeModeActive  = Standard_False;
124
125 }
126
127
128 void Graphic3d_AspectFillArea3d::SetTextureMap(const Handle(Graphic3d_TextureMap)& ATexture)
129 {
130   MyTextureMap = ATexture;
131 }
132
133
134 void Graphic3d_AspectFillArea3d::SetTextureMapOn()
135 {
136   MyTextureMapState = Standard_True;
137 }
138
139
140 void Graphic3d_AspectFillArea3d::SetTextureMapOff()
141 {
142   MyTextureMapState = Standard_False;
143 }
144
145
146 Standard_Boolean Graphic3d_AspectFillArea3d::Edge () const {
147
148         return (EdgeModeActive);
149
150 }
151
152
153 Handle(Graphic3d_TextureMap) Graphic3d_AspectFillArea3d::TextureMap() const
154 {
155   return MyTextureMap;
156 }
157
158
159 Standard_Boolean Graphic3d_AspectFillArea3d::TextureMapState() const
160 {
161   return MyTextureMapState;
162 }
163
164 void Graphic3d_AspectFillArea3d::SetPolygonOffsets(const Standard_Integer    aMode,
165                                                    const Standard_ShortReal  aFactor,
166                                                    const Standard_ShortReal  aUnits) {
167   MyPolygonOffsetMode   = ( aMode & Aspect_POM_Mask );
168   MyPolygonOffsetFactor = aFactor;
169   MyPolygonOffsetUnits  = aUnits;
170 }
171
172 void Graphic3d_AspectFillArea3d::PolygonOffsets(Standard_Integer&    aMode,
173                                                 Standard_ShortReal&  aFactor,
174                                                 Standard_ShortReal&  aUnits) const {
175   aMode   = MyPolygonOffsetMode;
176   aFactor = MyPolygonOffsetFactor;
177   aUnits  = MyPolygonOffsetUnits;
178 }
179
180 void Graphic3d_AspectFillArea3d::SetShaderProgram (const Handle(Graphic3d_ShaderProgram)& theProgram)
181 {
182   MyShaderProgram = theProgram;
183 }
184
185 const Handle(Graphic3d_ShaderProgram)& Graphic3d_AspectFillArea3d::ShaderProgram() const
186 {
187   return MyShaderProgram;
188 }