0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / AIS / AIS_MidPointRelation.cdl
1 -- Created on: 2000-10-20
2 -- Created by: Julia DOROVSKIKH
3 -- Copyright (c) 2000-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 class MidPointRelation from AIS inherits Relation from AIS
17
18         ---Purpose: presentation of equal distance to point myMidPoint
19
20 uses
21     ExtendedString        from TCollection,
22     Projector             from Prs3d,
23     Presentation          from Prs3d,
24     PresentationManager3d from PrsMgr,
25     Selection             from SelectMgr,
26     Dir                   from gp,
27     Pnt                   from gp,
28     Lin                   from gp,
29     Circ                  from gp,
30     Elips                 from gp,
31     Plane                 from Geom,
32     Transformation        from Geom,
33     Shape                 from TopoDS
34
35 is
36     Create(aSymmTool   : Shape from TopoDS;
37            FirstShape  : Shape from TopoDS;
38            SecondShape : Shape from TopoDS;
39            aPlane      : Plane from Geom)
40     returns MidPointRelation from AIS;
41
42     IsMovable(me) returns Boolean from Standard 
43     ---C++: inline       
44     is redefined;        
45
46     SetTool(me: mutable; aMidPointTool : Shape from TopoDS);
47     ---C++: inline
48
49     GetTool(me)
50     ---C++: inline
51     ---C++: return const &
52     returns Shape from TopoDS;
53
54 -- Methods from PresentableObject
55     Compute(me: mutable;
56             aPresentationManager: PresentationManager3d from PrsMgr;
57             aPresentation       : Presentation from Prs3d;
58             aMode               : Integer from Standard= 0) 
59     is redefined static private;
60
61     Compute(me: mutable;
62             aProjector   : Projector from Prs3d;
63             aPresentation: Presentation from Prs3d)
64     is redefined static private;     
65
66     Compute(me: mutable;
67             aProjector    : Projector from Prs3d;
68             aTrsf         : Transformation from Geom;
69             aPresentation : Presentation from Prs3d)
70     is redefined;
71     ---Purpose: Computes the presentation according to a point of view
72     --          given by <aProjector>. 
73     --          To be Used when the associated degenerated Presentations 
74     --          have been transformed by <aTrsf> which is not a Pure
75     --          Translation. The HLR Prs can't be deducted automatically
76     --          WARNING :<aTrsf> must be applied
77     --           to the object to display before computation  !!!
78
79 -- Methods from SelectableObject
80     ComputeSelection(me         : mutable;
81                      aSelection : Selection from SelectMgr;
82                      aMode      : Integer from Standard)is private;
83
84 -- Computation private methods
85     ComputeFaceFromPnt(me: mutable; aprs : Presentation from Prs3d; first : Boolean from Standard)
86     is private;
87
88     ComputeEdgeFromPnt(me: mutable; aprs : Presentation from Prs3d; first : Boolean from Standard)
89     is private;
90
91     ComputeVertexFromPnt(me: mutable; aprs : Presentation from Prs3d; first : Boolean from Standard)
92     is private;
93
94    
95     ComputePointsOnLine(me: mutable; aLin : Lin from gp;
96                                      first : Boolean from Standard)
97     is private;
98
99     ComputePointsOnLine(me: mutable; pnt1,pnt2 : Pnt from gp;
100                                      first : Boolean from Standard)
101     is private;
102
103     ComputePointsOnCirc(me: mutable; aCirc : Circ from gp; pnt1,pnt2 : Pnt from gp;
104                                      first : Boolean from Standard)
105     is private;
106
107     ComputePointsOnElips(me: mutable; anEll : Elips from gp; pnt1,pnt2 : Pnt from gp;
108                                       first : Boolean from Standard)
109     is private;
110     ---Purpose: ComputePointsOn... methods set myFAttach, myFirstPnt and myLastPnt
111     -- from the following initial data: curve, end points, myMidPoint.
112     -- End points (pnt1 & pnt2) and curve define the trimmed curve.
113     -- If end points are equal, curve is not trimmed (line - special case).
114     -- 
115     --     .------. pnt2
116     --    /        \
117     --   .  circle  . myLastPnt
118     --   |          |
119     --   . pnt1     . myFAttach
120     --    \   arc  /          . myMidPoint
121     --     .______. myFirstPnt
122 fields
123     myTool     : Shape from TopoDS;
124     myMidPoint : Pnt   from gp; -- point of symmetry
125
126     myFAttach  : Pnt   from gp; -- position on myFShape to be connected with myMidPoint by segment
127     myFirstPnt1 : Pnt   from gp; -- points on myFShape,
128     myFirstPnt2 : Pnt   from gp; -- defining a segment of it to be drawn
129
130     mySAttach  : Pnt   from gp; -- position on mySShape to be connected with myMidPoint by segment
131     mySecondPnt1  : Pnt   from gp; -- points on mySShape,
132     mySecondPnt2  : Pnt   from gp; -- defining a segment of it to be drawn
133
134 end MidPointRelation;