00001 #ifndef _WINC_NIDSFILE
00002 #define _WINC_NIDSFILE
00003
00004 #include <WXP/Buffer.h>
00005 #include <WXP/BZlib.h>
00006 #include <WXP/Date.h>
00007 #include <WXP/DomainVal.h>
00008 #include <WXP/File.h>
00009 #include <WXP/NidsInfo.h>
00010 #include <WXP/NidsRadial.h>
00011 #include <WXP/NidsRun.h>
00012 #include <WXP/NidsText.h>
00013 #include <WXP/NidsVector.h>
00014 #include <WXP/NidsWind.h>
00015 #include <WXP/Zlib.h>
00016
00017 namespace WXP {
00018
00019 class NidsFile {
00020 File file;
00021 bool opened;
00022 DomainVal dom;
00023 Date date;
00024 int file_type;
00025 int comp_test;
00026
00027 Buffer in;
00028 Buffer buf;
00029 Zlib zs;
00030 BZlib bz;
00031
00032
00033 int code;
00034 long mess_date;
00035 int mess_len;
00036 int src;
00037 int mess_blks;
00038
00039
00040 float lat,lon,elev;
00041 int mode;
00042 int vol_scan;
00043 long vol_date;
00044 int vcp;
00045 int seq;
00046 long prod_date;
00047 int param[10];
00048 int ithres[16];
00049 float thres[16];
00050 int nmaps;
00051 int off_symb;
00052 int off_graph;
00053 int off_tab;
00054
00055
00056 int prodsym_len;
00057 int prodsym_lyr;
00058
00059
00060 int prodsym_lyr_len;
00061
00062
00063 int pk_code;
00064
00065
00066 int rad, bin;
00067 int nrad, nbin;
00068 int rad0, bin0;
00069 float ang0, ang1;
00070
00071
00072 int row, col;
00073 int nrow, ncol;
00074 int row0, col0;
00075
00076
00077 int len, num;
00078 int val;
00079 int bytes, nbytes;
00080 int pack;
00081
00082
00083 float res;
00084 float dx,dy;
00085 int nx,ny;
00086 int scan_num;
00087 float scan_elev;
00088 float range;
00089 float max,nmax;
00090 int beg_date;
00091 int end_date;
00092 int num_graph;
00093
00094 public:
00095 NidsFile();
00096 NidsFile( const char *filename );
00097 ~NidsFile();
00098 int init();
00099 int open( const char *filename );
00100 int close();
00101 bool isOpen();
00102 int skipLine();
00103 int readBytes( unsigned char *data, int size );
00104 int dump( int num, int flag );
00105 int readShort( short &val );
00106 short readShort();
00107 int readUshort( unsigned short &val );
00108 int readLong( long &val );
00109 long readLong();
00110 int readUlong( unsigned long &val );
00111 int getHeader( NidsInfo &info );
00112 int messHeader();
00113 int prodDesc();
00114 int prodSymb();
00115 int prodSymbLayer();
00116 int gotoGraphic();
00117 int graphic();
00118 int graphicLayer();
00119 int packet();
00120
00121 int getRastor();
00122 int getRadial( NidsRadial &radial );
00123 int getRun( NidsRun &data );
00124 int getVector( NidsVector &vect );
00125 int skipVector();
00126 int getText( NidsText &text );
00127 int skipText();
00128 int getWind( NidsWind &wind );
00129 int skipWind();
00130
00131 inline int getCode(){ return code; };
00132 bool isBRef();
00133 bool isBSW();
00134 bool isCRef();
00135 bool isVel();
00136 bool isSRVel();
00137 bool isTops();
00138 bool isLRef();
00139 bool isVIL();
00140 bool isVAD();
00141 bool isPrec();
00142 bool isDPA();
00143 bool isDHR();
00144 bool isDSP();
00145 bool isPacketRadial();
00146 bool isPacketRastor();
00147 bool isPacketVector();
00148 bool isPacketWindbarb();
00149 bool isPacketText();
00150 bool isPacketDpa();
00151 int getPacketCode();
00152 int getNbin();
00153 DomainVal getDomainVal();
00154
00155 static const int RADIAL = 0xAF1F;
00156 static const int RASTOR = 0xBA0F;
00157
00158 enum Mode {
00159 OM,
00160 CLEARAIR,
00161 PRECIP
00162 };
00163 enum Type {
00164 REG,
00165 ZCOMP,
00166 ENC,
00167 BCOMP
00168 };
00169 };
00170 }
00171 #endif
00172