0023024: Update headers of OCCT files
[occt.git] / src / AIS / AIS_RadiusDimension.cdl
1 -- Created on: 1996-12-03
2 -- Created by: Jean-Pierre COMBE/Odile Olivier
3 -- Copyright (c) 1996-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21 --              modified by  <SZY>  feb-20-98
22
23
24 class RadiusDimension from AIS inherits Relation from AIS
25
26         ---Purpose:  A framework to define display of radii.
27         -- These displays serve as relational references in 3D
28         -- presentations of surfaces, and are particularly useful
29         -- in viewing fillets. The display consists of arrows and
30         -- text giving the length of a radius. This display is
31         -- recalculated if the applicative owner shape changes
32         -- in dimension, and the text gives the modified length.
33         -- The algorithm analyzes a length along a face as an
34         -- arc. It then reconstructs the circle corresponding to
35         -- the arc and calculates the radius of this circle.
36
37 uses Shape                 from TopoDS,
38      Presentation          from Prs3d,
39      PresentationManager3d from PrsMgr,
40      Selection             from SelectMgr,
41      Pnt                   from gp, 
42      Lin                   from gp,
43      Circ                  from gp,
44      Projector             from Prs3d,
45     Transformation        from Geom,
46      PresentationManager2d from PrsMgr,
47      GraphicObject         from Graphic2d,    
48      ExtendedString        from TCollection,
49      ArrowSide             from DsgPrs,
50      KindOfDimension       from AIS      
51
52 is
53     Create (aShape      : Shape          from TopoDS;
54             aVal        : Real           from Standard;
55             aText       : ExtendedString from TCollection)         
56         ---Purpose: Constructs the radius display object defined by the
57         -- shape aShape, the dimension aVal, and the text aText.
58             
59     returns mutable RadiusDimension from AIS;
60  
61     Create (aShape      : Shape          from TopoDS;
62             aVal        : Real           from Standard;
63             aText       : ExtendedString from TCollection;         
64             aPosition   : Pnt            from gp;
65             aSymbolPrs  : ArrowSide      from DsgPrs;    
66             anArrowSize : Real           from Standard = 0.0) 
67         ---Purpose: Constructs radius display object defined by the shape
68         -- aShape, the dimension aVal, the position aPosition,
69         -- the type of arrow aSymbolPrs, the arrow length
70         -- anArrowSize and the text aText.
71     returns mutable RadiusDimension from AIS;
72
73     SetFirstShape( me: mutable; aFShape : Shape from TopoDS )
74     is redefined static; 
75     
76     KindOfDimension(me) 
77         ---Purpose: Indicates that the dimension selected is a radius.
78         ---C++: inline
79     returns KindOfDimension from AIS 
80     is redefined;
81     
82     IsMovable(me) returns Boolean from Standard 
83         ---C++: inline    
84         ---Purpose: Returns true if the radius selected is movable.
85     is redefined;    
86     
87     DrawFromCenter(me) returns Boolean from Standard
88         ---Purpose:
89         -- Draws an arrowhead pointing towards the center of
90         -- the shape aShape defined at construction time if
91         -- false, and away from the center if true.
92         ---C++: inline
93     is static;
94     
95     SetDrawFromCenter(me: mutable;
96                       drawfromcenter : Boolean from Standard)
97        ---C++: inline
98        ---Purpose:
99        -- Sets the Boolean drawfromcenter to true or false.
100        -- If drawfromcenter is false, the arrowhead will point
101        -- towards the center of the shape aShape defined at
102        -- construction time.
103     is static;
104     
105     -- Methods from PresentableObject
106
107     Compute(me            : mutable;
108             aPresentationManager: PresentationManager3d from PrsMgr;
109             aPresentation : mutable Presentation from Prs3d;
110             aMode         : Integer from Standard= 0) 
111     is redefined private;
112     
113     Compute(me:mutable;
114                 aProjector: Projector from Prs3d;
115                 aPresentation: mutable Presentation from Prs3d)
116     is redefined static private;     
117
118     Compute(me:mutable;
119             aPresentationManager: PresentationManager2d from PrsMgr;
120             aPresentation: mutable GraphicObject from Graphic2d;
121             aMode: Integer from Standard = 0)
122     is redefined static private;        
123     
124     Compute(me            : mutable;
125             aProjector    : Projector from Prs3d;
126             aTrsf         : Transformation from Geom;
127             aPresentation : mutable Presentation from Prs3d)
128     is redefined;
129         ---Purpose: computes the presentation according to a point of view
130         --          given by <aProjector>. 
131         --          To be Used when the associated degenerated Presentations 
132         --          have been transformed by <aTrsf> which is not a Pure
133         --          Translation. The HLR Prs can't be deducted automatically
134         --          WARNING :<aTrsf> must be applied
135         --           to the object to display before computation  !!!
136
137 -- Methods from SelectableObject
138
139     ComputeSelection(me         : mutable;
140                      aSelection : mutable Selection from SelectMgr;
141                      aMode      : Integer from Standard)
142     is redefined private;
143
144     
145 --
146 --     Computation private methods
147 --
148
149     ComputeRadius( me: mutable; aPresentation : mutable Presentation from Prs3d )
150     is private;  
151      
152     InitFirstShape( me: mutable) 
153     is  static  private; 
154     
155 fields
156
157     myCircle         : Circ    from gp; 
158     myFirstPar       : Real    from Standard; 
159     myLastPar        : Real    from Standard; 
160     myCenter         : Pnt     from gp; 
161     myEndOfArrow     : Pnt     from gp; 
162     myFirstLine      : Lin     from gp; 
163     myLastLine       : Lin     from gp;
164     mydrawFromCenter : Boolean from Standard;
165     
166 end RadiusDimension;