root/cgm/trunk/geom/virtual/CompositeCoEdge.hpp

Revision 1040, 4.0 KB (checked in by tautges, 2 years ago)

Version 10.2 of cgm.

Line 
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
21class CompositeCurve;
22class CompositeLoop;
23class CompositePoint;
24
25class CompositeCoEdge : public CoEdgeSM, public TBOwner
26{
27friend class CompositeLoop;
28friend class CompositeCurve;
29
30public:
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  int layer() const { return COMPOSITE_LAYER; }
82
83  void append_simple_attribute_virt( CubitSimpleAttrib* simple_attrib_ptr );
84  void remove_simple_attribute_virt( 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 
101private:
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
117inline int CompositeCoEdge::num_coedges() const
118  { return coedgeSet.size(); }
119
120inline CoEdgeSM* CompositeCoEdge::get_coedge( int index ) const
121  { return coedgeSet[index]; }
122
123inline int CompositeCoEdge::index_of( CoEdgeSM* coedge ) const
124  { return coedgeSet.find( coedge ); }
125
126inline void CompositeCoEdge::sense( CubitSense sense )
127  { assert( sense != CUBIT_UNKNOWN ); mySense = sense; }
128
129inline CubitSense CompositeCoEdge::sense()
130  { return mySense; }
131
132inline CompositeCoEdge* CompositeCoEdge::next() const
133  { return nextCoedge; }
134
135inline CompositeLoop* CompositeCoEdge::get_loop() const
136  { return myLoop; }
137
138inline CompositeCurve* CompositeCoEdge::get_curve() const
139  { return myCurve; }
140#endif
Note: See TracBrowser for help on using the browser.