#include <stdio.h>
-#include <Bucket/bucketutils.h>
-#include <zlib/zlib.h>
+#include <Bucket/newbucket.hxx>
+#include <Misc/fgstream.hxx>
#define DEM_SIZE 1200
class fgDEM {
+
+private:
+
// file pointer for input
- gzFile fd;
+ // gzFile fd;
+ fg_gzifstream *in;
// coordinates (in arc seconds) of south west corner
double originx, originy;
int do_data;
int cur_col, cur_row;
+ // return next token from input stream
+ string next_token();
+
+ // return next integer from input stream
+ int next_int();
+
+ // return next double from input stream
+ double next_double();
+
+ // return next exponential num from input stream
+ double next_exp();
+
public:
// Constructor
fgDEM( void );
+ fgDEM( const string& file );
+
+ // Destructor
+ ~fgDEM( void );
// open a DEM file (use "-" if input is coming from stdin)
- int open ( char *file );
+ int open ( const string& file );
// close a DEM file
- int close ( void );
+ int close();
// parse a DEM file
- int parse( void );
+ int parse();
// read and parse DEM "A" record
- int read_a_record( void );
+ int read_a_record();
// read and parse DEM "B" record
- void read_b_record( void );
-
- // Informational methods
- double info_originx( void ) { return(originx); }
- double info_originy( void ) { return(originy); }
+ void read_b_record();
// return the current altitude based on mesh data. We should
// rewrite this to interpolate exact values, but for now this is
double interpolate_altitude( double lon, double lat );
// Use least squares to fit a simpler data set to dem data
- void fit( double error, fgBUCKET *p );
+ void fit( double error, const FGBucket& p );
// Initialize output mesh structure
void outputmesh_init( void );
void outputmesh_set_pt( int i, int j, double value );
// Write out a node file that can be used by the "triangle" program
- void outputmesh_output_nodes( char *fg_root, fgBUCKET *p );
+ void outputmesh_output_nodes( const string& fg_root, const FGBucket& p );
- // Destructor
- ~fgDEM( void );
+ // Informational methods
+ inline double get_originx() const { return originx; }
+ inline double get_originy() const { return originy; }
+ inline int get_cols() const { return cols; }
+ inline int get_rows() const { return rows; }
+ inline double get_col_step() const { return col_step; }
+ inline double get_row_step() const { return row_step; }
};
// $Log$
+// Revision 1.11 1999/03/11 23:31:57 curt
+// Tweaks to use newbucket.hxx
+//
+// Revision 1.10 1999/03/10 01:09:13 curt
+// Tweaks to go along with scenery tools overhaul.
+// Added a new constructor that accepts the file name.
+//
+// Revision 1.9 1998/10/16 19:08:14 curt
+// Portability updates from Bernie Bright.
+//
+// Revision 1.8 1998/09/19 17:59:46 curt
+// Use c++ streams (fg_gzifstream). Also converted many character arrays to
+// the string class.
+//
// Revision 1.7 1998/07/04 00:47:19 curt
// typedef'd struct fgBUCKET.
//