e04b215297c5e0c154a9c7c3e2c6130ae2262c95
[occt.git] / src / AIS / AIS_Drawer.cdl
1 -- Created on: 1992-09-18
2 -- Created by: Odile Olivier
3 -- Copyright (c) 1992-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Drawer from AIS inherits Drawer from Prs3d
18
19         ---Purpose: 
20         -- A framework to manage display attributes of interactive objects.
21         -- An interactive object can have a certain number of
22         -- display attributes specific to it. These include
23         -- visualization mode, color, material
24         -- and so on. To deal with this information, the
25         -- interactive context has a Drawer attribute manager
26         -- which is valid by default for the objects it
27         -- controls.   When an interactive object is visualized, the
28         -- required graphic display attributes are first taken from
29         -- its own Drawer if it has the ones required, or from the
30         -- context drawer for those it does not have them.
31         -- The set of display attributes of an interactive object is
32         -- stocked in an AIS_Drawer, which is, in fact, a
33         -- Prs3d_Drawer with the possibility of a link to another
34         -- display attribute manager. This drawer then manages
35         -- the stocked graphic display attributes by specifying
36         -- how the presentation algorithms compute the
37         -- presentation of a specific kind of object. These
38         -- factors involved include color, width and type of line,
39         -- and maximal chordal deviation. The Drawer includes
40         -- instances of the aspect classes providing the default
41         -- values for them.
42         -- Prs3d_Drawer completes   AIS_Drawer by adding
43         -- functions for setting deviation angle and deviation
44         -- coefficient in presentations using hidden line removal.
45         
46 uses
47     Drawer from Prs3d,
48     DatumAspect from Prs3d,
49     LineAspect from Prs3d,
50     TextAspect from Prs3d,
51     PointAspect from Prs3d,
52     ShadingAspect from Prs3d,
53     IsoAspect from Prs3d,
54     DimensionAspect from Prs3d,
55     PlaneAspect from Prs3d,
56     ArrowAspect from Prs3d,
57     TypeOfDeflection from Aspect,
58     NameOfColor from Quantity,
59     PlaneAngle from Quantity,
60     Length from Quantity,
61     DimensionUnits from Prs3d,
62     AsciiString from TCollection,
63     TypeOfHLR from Prs3d,
64     Ax2 from gp
65
66 is
67     Create returns Drawer from AIS;
68          ---Purpose:
69          -- Constructs an empty attribute management framework.   
70     TypeOfDeflection(me) returns TypeOfDeflection from Aspect
71     is redefined static;
72          --- Purpose:
73          -- Returns the type of chordal deflection: relative to the
74          -- size of the object or absolute.  
75     
76     MaximalChordialDeviation (me) returns Length from Quantity
77          ---Purpose: Returns the maximal chordal deviation. The default
78          -- value is 0.1. Drawings of curves or patches are
79          -- made with respect to an absolute maximal chordal deviation.
80     is redefined static;
81             
82
83 ------------------------------------------------------------                                                               
84     SetDeviationCoefficient(me: mutable) ;
85          ---Purpose: Sets the hasOwnDeviationCoefficient flag to Standard_False 
86          ---C++: inline
87
88     SetHLRDeviationCoefficient(me: mutable) ;
89          ---Purpose: Sets the deviation coefficient aCoefficient for
90          -- removal of hidden lines created by different
91          -- viewpoints in different presentations. The Default value is 0.02.
92          ---C++: inline
93          
94     SetDeviationAngle(me: mutable) ;
95          ---Purpose: Sets the hasOwnDeviationAngle flag to Standard_False 
96          ---C++: inline
97
98     SetHLRAngle(me: mutable) ;
99          ---Purpose: Sets the angle of maximum chordal deviation for
100          -- removal of hidden lines created by different viewpoints 
101          -- in different presentations. The default value is 20*PI/180.
102          ---C++: inline
103                     
104     SetDeviationCoefficient(me: mutable; aCoefficient: Real from Standard )   
105          ---Purpose: Sets the hasOwnDeviationCoefficient flag to Standard_True,
106          --          sets myOwnDeviationCoefficient and  myPreviousDeviationCoefficient
107     is redefined static;
108     
109     SetHLRDeviationCoefficient(me: mutable; aCoefficient: Real from Standard )   
110          ---Purpose: Sets the hasOwnHLRDeviationCoefficient flag to Standard_True,
111          --          sets myOwnHLRDeviationCoefficient and  myPreviousHLRDeviationCoefficient
112     is redefined static;
113         
114     SetDeviationAngle(me: mutable; anAngle: Real from Standard )  is redefined ;
115          ---Purpose: Sets the hasOwnDeviationAngle flag to Standard_True,
116          --          sets myOwnDeviationAngle and  myPreviousDeviationAngle
117         
118     SetHLRAngle(me: mutable; anAngle: Real from Standard )   
119          ---Purpose: Sets the hasOwnHLRDeviationAngle flag to Standard_True,
120          --          sets myOwnHLRDeviationAngle and  myPreviousHLRDeviationAngle
121     is redefined static;
122
123     SetTypeOfHLR(me: mutable; theTypeOfHLR: TypeOfHLR from Prs3d)
124     is redefined;
125     ---Purpose: Sets the type of HLR algorithm
126     --          used by drawer's interactive objects
127     ---C++: inline
128     
129     TypeOfHLR(me) returns TypeOfHLR from Prs3d
130     is redefined;
131     ---Purpose: Returns the type of HLR algorithm currently in use.
132     ---C++: inline
133
134     DeviationCoefficient(me) returns Real from Standard
135          ---Purpose: Drawings of curves or patches are made with respect
136          -- to a maximal chordal deviation. A Deviation coefficient
137          -- is used in the shading display mode. The shape is
138          -- seen decomposed into triangles. These are used to
139          -- calculate reflection of light from the surface of the
140          -- object. The triangles are formed from chords of the
141          -- curves in the shape. The deviation coefficient gives
142          -- the highest value of the angle with which a chord can
143          -- deviate from a tangent to a   curve. If this limit is
144          -- reached, a new triangle is begun.
145          -- This deviation is absolute and is set through the
146          -- method: SetMaximalChordialDeviation. The default value is 0.001.
147          -- In drawing shapes, however, you are allowed to ask
148          -- for a relative deviation. This deviation will be:
149          -- SizeOfObject * DeviationCoefficient.
150     is redefined static;
151     
152     HLRDeviationCoefficient(me) returns Real from Standard
153         ---Purpose: Returns the real number value of the HLR deviation
154         -- coefficient in this framework, if the flag
155         -- hasOwnHLRDeviationCoefficient is true.
156         -- If hasOwnHLRDeviationCoefficient is false, the
157         -- shape's HLR deviation coefficient is used.
158         -- A Deviation coefficient is used in the shading display
159         -- mode. The shape is seen decomposed into triangles.
160         -- These are used to calculate reflection of light from the
161         -- surface of the object.
162         -- The triangles are formed from chords of the curves in
163         -- the shape. The deviation coefficient give the highest
164         -- value of the angle with which a chord can deviate
165         -- from a tangent to a curve. If this limit is reached, a
166         -- new triangle is begun.
167         -- To find the hidden lines, hidden line display mode
168         -- entails recalculation of the view at each different
169         -- projector perspective.
170         -- Since hidden lines entail calculations of more than
171         -- usual complexity to decompose them into these
172         -- triangles, a deviation coefficient allowing greater
173         -- tolerance is used. This increases efficiency in calculation.
174         -- The Default value is 0.02.
175     is redefined static;   
176     
177     
178     DeviationAngle(me) returns Real from Standard
179         ---Purpose: Returns myOwnDeviationAngle if hasOwnDeviationAngle is True
180         --          else gets myDeviationAngle field from Prs3d_Drawer 
181     is redefined;
182                 
183     HLRAngle(me) returns Real from Standard
184         ---Purpose: Returns the real number value of the deviation angle
185         -- in hidden line removal views. The default value is 20*PI/180.
186         is redefined static;              
187     
188     
189     PreviousDeviationCoefficient(me) returns Real from Standard
190         ---Purpose: Saves the previous value used for the chordal
191         -- deviation coefficient. The default value is 0.1.
192         ---C++: inline
193     is static;          
194   
195     PreviousHLRDeviationCoefficient(me) returns Real from Standard
196         ---Purpose: returns myPreviousHLRDeviationCoefficient
197         ---C++: inline
198     is static;
199
200     PreviousDeviationAngle(me) returns Real from Standard
201         ---Purpose: returns myPreviousDeviationAngle
202         ---C++: inline
203     is  static;
204
205     PreviousHLRDeviationAngle(me) returns Real from Standard
206         ---Purpose: returns myPreviousHLRDeviationAngle
207         ---C++: inline 
208     is  static;
209     
210     IsOwnDeviationCoefficient(me) returns Boolean from Standard;
211         ---Purpose: Returns true if the there is a local setting for deviation
212         -- coefficient in this framework for a specific interactive object.
213         ---C++: inline
214              
215     IsOwnHLRDeviationCoefficient(me) returns Boolean from Standard;
216         ---Purpose: Returns true if the there is a setting for HLR deviation
217         -- coefficient in this framework for a specific interactive object.
218         ---C++: inline
219                                                                
220     IsOwnDeviationAngle(me) returns Boolean from Standard;
221         ---Purpose: Returns true if the there is a local setting for deviation
222         -- angle in this framework for a specific interactive object.
223         ---C++: inline
224
225     IsOwnHLRDeviationAngle(me) returns Boolean from Standard;
226         ---Purpose: Returns true if the there is a setting for HLR deviation
227         -- angle in this framework for a specific interactive object.
228         ---C++: inline
229
230     Discretisation(me) returns Integer from Standard
231     is redefined static;
232         ---Purpose: Draws algorithms using discretisation, a default
233         -- number of points has been set to 17. You can use the
234         -- method Prs3d_Drawer_SetDiscretisation to change this value. 
235     
236     MaximalParameterValue(me) returns Real from Standard
237     is redefined static;
238         ---Purpose:
239         -- Sets the maximum value allowed for the first and last
240         -- parameters of an infinite curve. By default, this value is 500000.
241     
242     IsoOnPlane(me) returns Boolean from Standard 
243         ---Purpose: returns True if the drawing of isos on planes is enabled.
244     is redefined static;
245
246
247 -- 
248 -- Attributes for the U Isoparametric lines of patches.
249 --    
250     UIsoAspect (me:mutable) returns IsoAspect from Prs3d
251          ---Purpose: Defines the attributes which are used when drawing an 
252          --          U isoparametric curve of a face. Defines the number
253          --          of U isoparametric curves to be drawn for a single face.
254          --          The LineAspect for U isoparametric lines can be edited
255          --          (methods SetColor, SetTypeOfLine, SetWidth, SetNumber)
256          --          The default values are:
257          --          COLOR       : Quantity_NOC_GRAY75
258          --          TYPE OF LINE: Aspect_TOL_SOLID
259          --          WIDTH       : 0.5
260          -- These attributes are used by the following algorithms:
261          --          Prs3d_WFDeflectionSurface 
262          --          Prs3d_WFDeflectionRestrictedFace
263
264
265     is redefined static;    
266     
267     HasUIsoAspect (me) returns Boolean from Standard 
268          ---Purpose: Returns true if the Drawer has a UIso aspect setting active.
269          ---C++: inline
270    is static;
271
272 -- Attributes for the V Isoparametric line of patches.
273
274
275     VIsoAspect (me:mutable) returns IsoAspect from Prs3d
276          ---Purpose: Defines the attributes which are used when drawing an 
277          --          V isoparametric curve of a face. Defines the number
278          --          of V isoparametric curves to be drawn for a single face.
279          --          The LineAspect for V isoparametric lines can be edited
280          --          (methods SetColor, SetTypeOfLine, SetWidth, SetNumber)
281          --          The default values are:
282          --          COLOR       : Quantity_NOC_GRAY82
283          --          TYPE OF LINE: Aspect_TOL_SOLID
284          --          WIDTH       : 0.5
285          --          These attributes are used by the following algorithms:
286          --          Prs3d_WFDeflectionSurface 
287          --          Prs3d_WFDeflectionRestrictedFace
288     is redefined static;    
289
290     HasVIsoAspect (me) returns Boolean from Standard 
291          ---Purpose: Returns true if the Drawer has a VIso aspect setting active.
292          ---C++: inline
293    is static;    
294
295 -- Attributes for the free boundaries
296
297     FreeBoundaryAspect (me:mutable) returns LineAspect from Prs3d
298          ---Purpose: Returns a link with
299          -- Prs3d_Drawer_FreeBoundaryAspect. Stores the
300          -- values for presentation of free boundaries, in other
301          -- words, boundaries which are not shared . The
302          -- LineAspect for the free boundaries can be edited. The
303          -- default values are: Color: Quantity_NOC_GREEN
304          -- Type of line: Aspect_TOL_SOLID Width: 1.
305          -- These attributes are used by Prs3d_WFShape.
306     is redefined static;
307
308     HasFreeBoundaryAspect (me) returns Boolean from Standard
309     ---Purpose: Returns true if the Drawer has a free boundary aspect setting active.
310     ---C++: inline
311     is static;
312
313     FreeBoundaryDraw(me) returns Boolean from Standard 
314          ---Purpose: returns True if the drawing of the free boundaries is enabled.
315     is redefined static;
316     
317
318 -- Attributes for the wires
319
320     WireAspect (me:mutable) returns LineAspect from Prs3d
321          ---Purpose: Returns a link with Prs3d_Drawer_WireAspect.
322          -- This method provides wire aspect settings.
323          -- The LineAspect for wires can be edited. The default values are:
324          --          Color: Quantity_NOC_RED
325          --          Type of line: Aspect_TOL_SOLID
326          --          Width: 1.
327          --          These attributes are used by the following algorithms:
328          --          Prs3d_WFShape
329     is redefined static;    
330
331     HasLineAspect (me) returns Boolean from Standard 
332          ---Purpose: Returns true if the Interactive Object has a line
333          -- visualization aspect.
334          ---C++: inline 
335   is static;      
336
337     HasWireAspect (me) returns Boolean from Standard 
338          ---Purpose: Returns true if the Drawer has a wire aspect setting active.
339          ---C++: inline 
340     is static;      
341
342     WireDraw(me) returns Boolean from Standard 
343          ---Purpose: Returns a link   with Prs3d_Drawer_WireDraw. This
344          -- method returns true if drawing of wires is enabled.
345          -- The default setting is true.
346     is redefined static;
347     
348
349 -- Attributes for the unfree boundaries
350
351     UnFreeBoundaryAspect (me:mutable) returns LineAspect from Prs3d
352          ---Purpose: Returns a link with
353          -- Prs3d_Drawer_UnFreeBoundaryAspect, which
354          -- provides settings for shared boundary line aspects.
355          -- The LineAspect for shared boundaries can be edited.
356          -- The default values are:
357          --          Color: Quantity_NOC_YELLOW
358          --          Type of line: Aspect_TOL_SOLID
359          --          Width: 1.
360          --          These attributes are used by the following algorithms:
361          --          Prs3d_WFShape
362     is redefined static;
363
364     HasUnFreeBoundaryAspect (me) returns Boolean from Standard
365     ---Purpose: Returns true if the Drawer has an unfree boundary aspect setting active.
366     ---C++: inline
367     is static;
368
369     UnFreeBoundaryDraw(me) returns Boolean from Standard 
370          ---Purpose: Returns True if the drawing of the shared boundaries
371          -- is enabled. True is the default setting.
372     is redefined static;
373     
374
375 -- 
376 --  Attributes for the lines.
377 -- 
378
379     LineAspect(me:mutable) returns LineAspect from Prs3d
380         ---Purpose:  Returns a link with Prs3d_Drawer_LineAspect,
381         -- which provides settings for line aspects. These
382         -- settings can be edited. The default values are:         
383         --          Color: Quantity_NOC_YELLOW
384         --          Type of line: Aspect_TOL_SOLID
385         --          Width: 1.
386         -- These attributes are used by the following algorithms:
387         --          Prs3d_Curve
388         --          Prs3d_Line
389         --          Prs3d_HLRShape
390
391     is redefined static;
392     
393   
394
395     HasTextAspect(me) returns Boolean from Standard
396     is static;      
397         ---C++: inline     
398     TextAspect(me:mutable) returns TextAspect from Prs3d
399     --          
400     --          Color: Quantity_NOC_YELLOW
401     is redefined static;                            
402
403     LineArrowDraw(me) returns Boolean from Standard 
404         ---Purpose: Returns True if the drawing of an arrow at the end of
405         -- each line is enabled. The default setting is False.
406     is redefined static;
407     
408     ArrowAspect(me:mutable) returns ArrowAspect from Prs3d 
409     is redefined static;
410     
411     
412 -- -- 
413 --  Attributes for the points
414 -- 
415     PointAspect(me:mutable) returns PointAspect from Prs3d
416         ---Purpose:  Returns the point aspect setting. The default values
417         -- are:        Color: Quantity_NOC_YELLOW
418         --          Type of marker: Aspect_TOM_PLUS
419         --          Scale: 1.
420         --          These attributes are used by the following algorithms:
421         --          Prs3d_Point
422     is redefined static;
423
424     HasPointAspect (me) returns Boolean from Standard 
425         ---Purpose: Returns true if the Drawer has a point aspect setting active. 
426     is static;      
427         ---C++: inline 
428     
429     
430 --  Attributes for the faces:
431 --  
432     ShadingAspect (me:mutable) returns ShadingAspect from Prs3d
433         ---Purpose:
434         -- Returns a link with Prs3d_Drawer_ShadingAspect,
435         -- which provides settings for shading aspects.
436         -- These settings can be edited. The default values are:
437         --    Color: Quantity_NOC_YELLOW
438         --          Material: Graphic3d_NOM_BRASS
439         -- hading aspect is obtained through decomposition of
440         -- 3D faces into triangles, each side of each triangle
441         -- being a chord of the corresponding curved edge in
442         -- the face. Reflection of light in each projector
443         -- perspective is then calculated for each of the
444         -- resultant triangular planes.
445     is redefined static;
446
447     HasShadingAspect (me) returns Boolean from Standard 
448         ---C++: inline 
449         ---Purpose: Returns True if the   Drawer has shading aspect active.
450     is static;      
451         
452     ShadingAspectGlobal(me) returns Boolean from Standard
453     is redefined static;  
454         ---Purpose: Provides the attributes for hidden line removal.
455
456
457     DrawHiddenLine(me) returns Boolean from Standard 
458         ---Purpose: Returns Standard_True if the hidden lines are to be drawn.
459         --          By default the hidden lines are not drawn.
460     is redefined static;
461     
462     HiddenLineAspect(me:mutable) returns LineAspect from Prs3d
463         ---Purpose: Returns a link with
464         -- Prs3d_Drawer_HiddenLineAspect, which provides
465         -- settings for hidden line aspects.
466         -- These settings can be edited. The default values are:
467         --          Color: Quantity_NOC_YELLOW
468         --          Type of line: Aspect_TOL_DASH
469         --          Width: 1.
470     is redefined static;
471
472     
473     SeenLineAspect(me:mutable) returns LineAspect from Prs3d
474         ---Purpose: Returns a link with
475         -- Prs3d_Drawer_SeenLineAspect, which provides
476         -- settings for seen line aspects.
477         -- These settings can be edited. The default values are:
478         --          Color: Quantity_NOC_YELLOW
479         --          Type of line: Aspect_TOL_SOLID
480         --          Width: 1.
481     is redefined static;
482     
483   
484     HasPlaneAspect(me) returns Boolean from Standard;
485         ---C++: inline
486
487     PlaneAspect(me:mutable) returns PlaneAspect from Prs3d
488     is redefined static;
489         ---Purpose:
490         -- Returns a link with Prs3d_Drawer_PlaneAspect.
491         -- This method provides settings for the appearance of planes.
492
493
494     VectorAspect(me:mutable) returns LineAspect from Prs3d
495         ---Purpose: Returns a link with Prs3d_Drawer_VectorAspect,
496         -- which provides settings for the appearance of vectors.
497         -- These settings can be edited. The default values are:
498         --          Color: Quantity_NOC_SKYBLUE
499         --          Type of line: Aspect_TOL_SOLID Width: 1.
500     is redefined static;
501     
502     SetFaceBoundaryDraw (me           : mutable;
503                          theIsEnabled : Boolean from Standard)
504     is redefined static;
505         ---Purpose: Enables or disables drawing of face boundaries for shading presentations.
506         -- The method sets drawing flag owned by the drawer that will be used during
507         -- visualization instead of the one set in link.
508         -- theIsEnabled is a boolean flag indicating whether the face boundaries should be
509         -- drawn or not.
510
511     IsFaceBoundaryDraw (me) returns Boolean from Standard
512     is redefined static;
513         ---Purpose: Checks whether the drawing of face boundaries is enabled or not.
514
515     SetFaceBoundaryAspect (me        : mutable;
516                            theAspect : LineAspect from Prs3d)
517     is redefined static;
518         ---Purpose: Sets line aspect for face boundaries.
519         -- The method sets line aspect owned by the drawer that will be used during
520         -- visualization instead of the one set in link.
521         -- theAspect is the line aspect that determines the look of the face boundaries.
522
523     FaceBoundaryAspect (me : mutable) returns LineAspect from Prs3d
524     is redefined static;
525         ---Purpose: Returns line aspect of face boundaries.
526
527     IsOwnFaceBoundaryDraw (me) returns Boolean from Standard
528     is static;
529         ---Purpose: Returns true if the drawer has its own attribute for 
530         -- "draw face boundaries" flag that overrides the one in the link.
531         ---C++: inline
532
533     IsOwnFaceBoundaryAspect (me) returns Boolean from Standard
534     is static;
535         ---Purpose: Returns true if the drawer has its own attribute for 
536         -- face boundaries aspect that overrides the one in the link.
537         ---C++: inline
538 --
539 --  Attributes for the presentation of a Datum.
540 --  
541
542     HasDatumAspect(me) returns Boolean from Standard;
543         ---C++: inline 
544
545     DatumAspect(me:mutable) returns DatumAspect from Prs3d
546         ---Purpose: Returns a link with Prs3d_Drawer_DatumAspect,
547         -- which provides settings for the appearance of datums.
548         -- These settings can be edited. The default values for
549         -- the three axes are:
550         --          Color: Quantity_NOC_PEACHPUFF
551         --          Type of line: Aspect_TOL_SOLID Width: 1.
552     is redefined static;
553
554 --
555 --  Attributes for the presentation of a dimensions.
556 --  
557
558     DimensionAspect (me : mutable) returns DimensionAspect from Prs3d is redefined static;
559     ---Purpose: Returns a link with Prs3d_Drawer_DimensionAspect,
560     -- which provides settings for the appearance of dimensions.
561
562     HasDimensionAspect (me) returns Boolean from Standard is static;
563     ---C++: inline
564     -- Purpose: Returns true if the Drawer has a dimension aspect setting active.
565
566     SetDimLengthModelUnits (me: mutable; theUnits : AsciiString from TCollection) is redefined static;
567     ---Purpose: Sets dimension length model units for computing of dimension presentation.
568
569     SetDimAngleModelUnits (me: mutable; theUnits : AsciiString from TCollection) is redefined static;
570     ---Purpose: Sets dimension angle model units for computing of dimension presentation.
571
572     DimAngleModelUnits (me) returns AsciiString from TCollection is redefined static;
573     ---Purpose: Returns angle model units for the dimension presentation.
574     ---C++: return const &
575
576     DimLengthModelUnits (me) returns AsciiString from TCollection is redefined static;
577     ---Purpose: Returns length model units for the dimension presentation.
578     ---C++: return const &
579
580     SetDimLengthDisplayUnits (me: mutable; theUnits : AsciiString from TCollection) is redefined static;
581     ---Purpose: Sets length units in which value for dimension presentation is displayed.
582
583     SetDimAngleDisplayUnits (me: mutable; theUnits : AsciiString from TCollection) is redefined static;
584     ---Purpose: Sets angle units in which value for dimension presentation is displayed.
585
586     DimLengthDisplayUnits (me) returns AsciiString from TCollection is redefined static;
587     ---Purpose: Returns length units in which dimension presentation is displayed.
588     ---C++: return const &
589
590     DimAngleDisplayUnits (me) returns AsciiString from TCollection is redefined static;
591     ---Purpose: Returns angle units in which dimension presentation is displayed.
592     ---C++: return const &
593
594 -- Attributes for the sections
595
596     SectionAspect (me:mutable) returns LineAspect from Prs3d
597         ---Purpose: Returns a link with Prs3d_Drawer_SectionAspect,
598         -- which provides settings for wires which highlight sections.
599         -- The LineAspect for the wire can be edited.
600         -- The default values are:
601         -- Color: Quantity_NOC_ORANGE
602         -- Type of line: Aspect_TOL_SOLID
603         -- Width: 1.
604         -- These attributes are used by the following algorithms:
605         -- Prs3d_WFShape
606     is redefined static;    
607
608     Link(me:mutable) returns any Drawer from Prs3d
609     is static;
610         ---C++: return const&
611
612     HasLink(me) returns Boolean from Standard
613     is static;
614         ---C++: inline
615
616     Link (me:mutable; aDrawer: Drawer from Prs3d)     
617     is static;
618         ---C++: inline
619
620     
621     ClearLocalAttributes(me:mutable) is virtual;    
622         ---Purpose: Removes attributes stored in a Local Context.    
623     
624     WasLastLocal(me) returns Boolean from Standard;
625         ---C++: inline
626         ---Purpose: Returns true if the last called attribute was local; false if it was global.
627     
628     HasLocalAttributes(me) returns Boolean from Standard;
629         ---C++: inline
630         ---Purpose:
631         -- Returns true if a Local Context has stored attributes
632         -- for Interactive Objects.
633
634 fields
635
636     myLink                           : Drawer from Prs3d;
637     hasLocalAttributes               : Boolean from Standard;           
638
639     myhasOwnDeviationCoefficient     : Boolean from Standard;
640     myOwnDeviationCoefficient        : Real from Standard;
641     myPreviousDeviationCoefficient   : Real from Standard;
642
643     myhasOwnHLRDeviationCoefficient  : Boolean from Standard;
644     myOwnHLRDeviationCoefficient     : Real from Standard;
645     myPreviousHLRDeviationCoefficient: Real from Standard;
646
647     myhasOwnDeviationAngle           : Boolean from Standard;
648     myOwnDeviationAngle              : Real from Standard;
649     myPreviousDeviationAngle         : Real from Standard;
650
651     myhasOwnHLRDeviationAngle        : Boolean from Standard;
652     myOwnHLRDeviationAngle           : Real from Standard; 
653     myPreviousHLRDeviationAngle      : Real from Standard;
654     myHasOwnFaceBoundaryDraw         : Boolean from Standard;
655
656     myHasOwnDimLengthModelUnits      : Boolean from Standard;
657     myHasOwnDimLengthDisplayUnits    : Boolean from Standard;
658     myHasOwnDimAngleModelUnits      : Boolean from Standard;
659     myHasOwnDimAngleDisplayUnits    : Boolean from Standard;
660
661 end Drawer;
662  
663