LRAUV  revA
EncReader.h
Go to the documentation of this file.
1 /*
2  * EncReader.h
3  *
4  * Created on: Apr 5, 2011
5  * Author: godin
6  */
7 
8 #ifndef ENCREADER_H_
9 #define ENCREADER_H_
10 
11 #include "logger/Logger.h"
12 #include "utils/FlexArray.h"
13 
14 #include "../../Lib/opencpn/src/mygdal/ogr_s57.h"
15 
17 {
18 public:
20  : length_( 0 ),
21  x_( NULL ),
22  y_( NULL ),
23  z_( NULL ),
24  zz_( 0.0f )
25  {}
26  virtual ~EncScanPoints()
27  {
28  if( NULL != x_ ) delete[] x_;
29  if( NULL != y_ ) delete[] y_;
30  if( NULL != z_ ) delete[] z_;
31  }
32  int length_;
33  int* x_;
34  int* y_;
35  int* z_;
36  double zz_;
37 };
38 
40 {
42  SCAN_FEATURES, // First pass through file, rcnm=100
44  SCAN_EDGES, // Second pass through file, rcnm=130
46  SCAN_NODES, // Third pass through file, rcnm=110 & 120
49 };
50 
51 struct EncNode
52 {
53 public:
55  : id_( 0 ),
56  x_( 0 ),
57  y_( 0 )
58  {}
59  unsigned int id_;
60  int x_;
61  int y_;
62 };
63 
64 struct EncEdge
65 {
66 public:
68  : id_( 0 ),
69  startNode_(),
70  endNode_(),
71  length_( 0 ),
72  x_( NULL ),
73  y_( NULL )
74  {}
76  {
77  if( NULL != x_ ) delete[] x_;
78  if( NULL != y_ ) delete[] y_;
79  }
80  unsigned int id_;
83  int length_;
84  int* x_;
85  int* y_;
86 };
87 
88 struct EncContour
89 {
90 public:
92  : depth_( 0.0f ),
93  length_( 0 ),
94  edgeCount_( 0 ),
95  edges_( NULL )
96  {}
98  {
99  if( NULL != edges_ )
100  {
101  for( int i = 0; i < length_; ++i )
102  {
103  delete edges_[i];
104  }
105  delete[] edges_;
106  }
107  }
108  float depth_;
109  int length_;
112 };
113 
114 struct EncArea
115 {
116 public:
118  : length_( 0 ),
119  edgeCount_( 0 ),
120  edges_( NULL ),
121  reverses_( NULL ),
122  segments_( 0 ),
123  x0_( NULL ),
124  y0_( NULL ),
125  x1_( NULL ),
126  y1_( NULL )
127  {}
129  {
130  if( NULL != edges_ )
131  {
132  for( int i = 0 ; i < length_; ++i )
133  {
134  delete edges_[i];
135  }
136  delete[] edges_;
137  }
138  if( NULL != reverses_ )
139  {
140  delete[] reverses_;
141  }
142  if( NULL != x0_ )
143  {
144  delete[] x0_;
145  delete[] y0_;
146  delete[] x1_;
147  delete[] y1_;
148  }
149  }
150  int length_;
153  bool* reverses_;
155  float* x0_;
156  float* y0_;
157  float* x1_;
158  float* y1_;
159 
160 };
161 
163 {
164  unsigned int soundingId_;
165 };
166 
168 {
169 public:
170 
171  EncReader( const char* filename );
172  virtual ~EncReader();
173 
175  bool scan( EncScanPoints& points, Logger& logger );
176 
177  void uninitialize();
178 
179  bool scanDone()
180  {
181  return scanStep_ == SCAN_DONE;
182  }
183 
184  EncArea* popCoverage();
185 
186 private:
187 
188  // Note that the copy constructor below is private and not given a body.
189  // Any attempt to call it will return a compiler error.
190  EncReader( const EncReader& old ); // disallow copy constructor
191 
192  const Str filename_;
193 
194 
198 
200 
201  S57Reader* s57Reader_;
202 
203  DDFModule* ddfModule_;
204 
205  DDFRecord* record_;
206 
208 
209  void populateEdge( EncEdge* edge, DDFRecord* record, const bool& reverse );
210 
211  void populateNode( EncNode& node, DDFRecord* record );
212 
213  void populatePoints( EncScanPoints& points, DDFRecord* record );
214 
215  void reduceNodes( EncContour* contour );
216 
217  void sortNodes( EncArea* area );
218 
219  void simplifyArea( EncArea* area );
220 };
221 
222 #endif /* ENCREADER_H_ */
Client-side interface for injecting log data into the log queue.
Definition: Logger.h:30
void sortNodes(EncArea *area)
Definition: EncReader.cpp:543
int * x_
Definition: EncReader.h:33
virtual ~EncScanPoints()
Definition: EncReader.h:26
S57Reader * s57Reader_
Definition: EncReader.h:201
Definition: EncReader.h:43
EncArea * popCoverage()
Definition: EncReader.cpp:434
FlexArray< EncArea * > coverages_
Definition: EncReader.h:196
EncArea()
Definition: EncReader.h:117
Definition: EncReader.h:88
int segments_
Definition: EncReader.h:154
float * y1_
Definition: EncReader.h:158
EncReader(const char *filename)
Definition: EncReader.cpp:14
FlexArray< EncContour * > contours_
Definition: EncReader.h:195
Definition: EncReader.h:114
bool repeatRecord_
Definition: EncReader.h:207
unsigned int id_
Definition: EncReader.h:59
int * x_
Definition: EncReader.h:84
Definition: EncReader.h:64
Definition: EncReader.h:42
float * y0_
Definition: EncReader.h:156
FlexArray< EncSounding * > soundings_
Definition: EncReader.h:197
int length_
Definition: EncReader.h:109
Contains the FlexArrayBase and FlexArray class declarations.
int y_
Definition: EncReader.h:61
Definition: EncReader.h:46
EncScanPoints()
Definition: EncReader.h:19
EncContour()
Definition: EncReader.h:91
void uninitialize()
Definition: EncReader.cpp:439
double zz_
Definition: EncReader.h:36
DDFRecord * record_
Definition: EncReader.h:205
virtual ~EncReader()
Definition: EncReader.cpp:26
Definition: EncReader.h:41
EncScanStep
Definition: EncReader.h:39
Replacement for standard template class string.
Definition: Str.h:12
bool scanDone()
Definition: EncReader.h:179
Definition: EncReader.h:45
~EncEdge()
Definition: EncReader.h:75
void reduceNodes(EncContour *contour)
Definition: EncReader.cpp:538
int x_
Definition: EncReader.h:60
~EncArea()
Definition: EncReader.h:128
int * z_
Definition: EncReader.h:35
float * x0_
Definition: EncReader.h:155
Definition: EncReader.h:47
int length_
Definition: EncReader.h:83
void populateNode(EncNode &node, DDFRecord *record)
Definition: EncReader.cpp:490
~EncContour()
Definition: EncReader.h:97
Contains the Logger class definition.
bool * reverses_
Definition: EncReader.h:153
void simplifyArea(EncArea *area)
Definition: EncReader.cpp:568
EncNode startNode_
Definition: EncReader.h:81
int * y_
Definition: EncReader.h:85
bool scan(EncScanPoints &points, Logger &logger)
Returns false until scanning done.
Definition: EncReader.cpp:31
Definition: EncReader.h:162
Definition: EncReader.h:48
int * y_
Definition: EncReader.h:34
Definition: EncReader.h:51
EncNode()
Definition: EncReader.h:54
int edgeCount_
Definition: EncReader.h:110
int length_
Definition: EncReader.h:150
unsigned int soundingId_
Definition: EncReader.h:164
float * x1_
Definition: EncReader.h:157
EncScanStep scanStep_
Definition: EncReader.h:199
Definition: EncReader.h:16
DDFModule * ddfModule_
Definition: EncReader.h:203
Definition: EncReader.h:167
void populatePoints(EncScanPoints &points, DDFRecord *record)
Definition: EncReader.cpp:510
Definition: EncReader.h:44
int edgeCount_
Definition: EncReader.h:151
unsigned int id_
Definition: EncReader.h:80
EncEdge ** edges_
Definition: EncReader.h:111
EncEdge()
Definition: EncReader.h:67
EncEdge ** edges_
Definition: EncReader.h:152
const Str filename_
Definition: EncReader.h:192
int length_
Definition: EncReader.h:32
EncNode endNode_
Definition: EncReader.h:82
void populateEdge(EncEdge *edge, DDFRecord *record, const bool &reverse)
Definition: EncReader.cpp:444
float depth_
Definition: EncReader.h:108