Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : CompositeCoEdge.hpp
3 : : //
4 : : // Purpose : Combined set of CoEdgeSMs
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jason Kraftcheck
9 : : //
10 : : // Creation Date : 01/11/02
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef COMPOSITE_COEDGE_HPP
14 : : #define COMPOSITE_COEDGE_HPP
15 : :
16 : : #include "VGDefines.h"
17 : : #include "CoEdgeSM.hpp"
18 : : #include "TBOwner.hpp"
19 : : #include "VGArray.hpp"
20 : :
21 : : class CompositeCurve;
22 : : class CompositeLoop;
23 : : class CompositePoint;
24 : :
25 : : class CompositeCoEdge : public CoEdgeSM, public TBOwner
26 : : {
27 : : friend class CompositeLoop;
28 : : friend class CompositeCurve;
29 : :
30 : : public:
31 : :
32 : : CompositeCoEdge( CoEdgeSM* coedge_ptr );
33 : : CompositeCoEdge( CompositeCurve* point_curve );
34 : :
35 : : ~CompositeCoEdge();
36 : :
37 : : int num_coedges() const;
38 : :
39 : : int index_of( CoEdgeSM* coedge_ptr ) const;
40 : : int index_of( Curve* curve_ptr ) const;
41 : :
42 : : CubitSense get_sense( int index ) const;
43 : : CoEdgeSM* get_coedge( int index ) const;
44 : :
45 : : CompositeCoEdge* next() const;
46 : : CompositeCoEdge* prev() const;
47 : : // Return next or previous coedge in a CompositeLoop.
48 : : // If there is not a parent CompositeSurface, then
49 : : // there is not a parent CompositeLoop and these will
50 : : // return NULL.
51 : :
52 : : CubitStatus combine( CompositeCoEdge* dead_coedge, bool prepend );
53 : : CubitStatus insert_coedge( int index, CoEdgeSM* coedge );
54 : : CubitStatus remove_coedge( int index );
55 : : CompositeCoEdge* split( int index );
56 : :
57 : : CompositePoint* start_point();
58 : : CompositePoint* end_point();
59 : : /*
60 : : CoEdgeSM* remove_first();
61 : : CoEdgeSM* remove_last();
62 : : */
63 : : virtual CubitSense sense();
64 : :
65 : : void sense( CubitSense sense );
66 : :
67 : : CompositeLoop* get_loop() const;
68 : : // void loop( CompositeLoop* );
69 : :
70 : : CompositeCurve* get_curve() const;
71 : : // void curve( CompositeCurve* );
72 : :
73 : : LoopSM* get_parent_loop();
74 : : //- Get the parent loop at the composite level of
75 : : //- the topo bridge graph. I.E. Get parent CompositeLoop
76 : : //- if there is one. Otherwise get the SM-level loop.
77 : :
78 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
79 : : void get_children_virt( DLIList<TopologyBridge*>& children );
80 : : GeometryQueryEngine* get_geometry_query_engine() const;
81 : 0 : int layer() const { return COMPOSITE_LAYER; }
82 : :
83 : : void append_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
84 : : void remove_simple_attribute_virt( const CubitSimpleAttrib& simple_attrib_ptr );
85 : : void remove_all_simple_attribute_virt();
86 : : CubitStatus get_simple_attribute( DLIList<CubitSimpleAttrib>& attrib_list );
87 : : CubitStatus get_simple_attribute( const CubitString& name,
88 : : DLIList<CubitSimpleAttrib>& attrib_list );
89 : :
90 : : CubitStatus remove_bridge( TopologyBridge* bridge );
91 : : CubitStatus swap_bridge( TopologyBridge* old_tb,
92 : : TopologyBridge* new_tb,
93 : : bool reversed );
94 : : CubitBoolean contains_bridge( TopologyBridge* bridge ) const;
95 : : void notify_reversed( TopologyBridge* bridge );
96 : :
97 : : void reverse();
98 : :
99 : : void print_debug_info( const char* line_prefix = 0, bool brief = false );
100 : :
101 : : private:
102 : :
103 : : CompositeCoEdge();
104 : :
105 : : VGArray<CoEdgeSM*> coedgeSet;
106 : :
107 : : CubitSense mySense;
108 : :
109 : : CompositeLoop* myLoop;
110 : : CompositeCoEdge* nextCoedge;
111 : : CompositeCoEdge* prevCoedge;
112 : :
113 : : CompositeCurve* myCurve;
114 : : CompositeCoEdge* nextOnCurve;
115 : : };
116 : :
117 : 0 : inline int CompositeCoEdge::num_coedges() const
118 : 0 : { return coedgeSet.size(); }
119 : :
120 : 0 : inline CoEdgeSM* CompositeCoEdge::get_coedge( int index ) const
121 : 0 : { return coedgeSet[index]; }
122 : :
123 : 0 : inline int CompositeCoEdge::index_of( CoEdgeSM* coedge ) const
124 : 0 : { return coedgeSet.find( coedge ); }
125 : :
126 : : inline void CompositeCoEdge::sense( CubitSense sense )
127 : : { assert( sense != CUBIT_UNKNOWN ); mySense = sense; }
128 : :
129 : 0 : inline CubitSense CompositeCoEdge::sense()
130 : 0 : { return mySense; }
131 : :
132 : 0 : inline CompositeCoEdge* CompositeCoEdge::next() const
133 : 0 : { return nextCoedge; }
134 : :
135 : 0 : inline CompositeLoop* CompositeCoEdge::get_loop() const
136 : 0 : { return myLoop; }
137 : :
138 : 0 : inline CompositeCurve* CompositeCoEdge::get_curve() const
139 : 0 : { return myCurve; }
140 : : #endif
|