00001
00020 #ifndef INC_RVC_SPECTRALLIBRARY_H
00021 #define INC_RVC_SPECTRALLIBRARY_H
00022
00023 #ifndef INC_RVC_OBJECT_H
00024 #include <rvc/object.h>
00025 #endif
00026
00027
00028 namespace RVC {
00029 #ifndef GENERATING_DOXYGEN_OUTPUT
00030 class SPECTRALLIBRARYHANDLE;
00031 #endif // GENERATING_DOXYGEN_OUTPUT
00032
00050 class SPECTRALLIBRARY : public RVC::OBJECT {
00051 public:
00052 #ifndef GENERATING_DOXYGEN_OUTPUT
00053 struct RECORD;
00054 struct CHANNEL;
00055 #endif // GENERATING_DOXYGEN_OUTPUT
00056
00058 SPECTRALLIBRARY (
00059 );
00060
00062 SPECTRALLIBRARY (
00063 const RVC::SPECTRALLIBRARY& obj
00064 );
00065
00067 virtual ~SPECTRALLIBRARY (
00068 );
00069
00071 RVC::SPECTRALLIBRARY& operator= (
00072 const RVC::SPECTRALLIBRARY& rhs
00073 );
00074
00078 INT32 AddRecord (
00079 const RECORD& record
00080 );
00081
00086 ERRVALUE DeleteRecord (
00087 INT32 RecordNum
00088 );
00089
00090 INT32 GetMaxNumChannels (
00091 );
00092
00093 double GetMaxWavelength (
00094 );
00095
00096 INT32 GetMinNumChannels (
00097 );
00098
00099 double GetMinWavelength (
00100 );
00101
00104 INT32 GetNumRecords (
00105 );
00106
00108 ERRVALUE Make (
00109 const RVC::OBJECT& parent,
00110 const RVC::DESCRIPTOR& Descriptor,
00111 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00112 );
00113
00115 ERRVALUE Make (
00116 RVC::OBJITEM& ObjItem,
00117 #ifdef RVC_CREDENTIALS_MANDATORY
00118 const char* Source,
00119 const CREDENTIALS* Credentials
00120 #else
00121 const char* Source = 0,
00122 const CREDENTIALS* Credentials = 0
00123 #endif
00124 );
00125
00127 ERRVALUE ReadRecord (
00128 INT32 RecordNum,
00129 RECORD& record
00130 );
00131
00133 ERRVALUE ReadRecordChannels (
00134 INT32 RecordNum,
00135 SIMPLE_ARRAY<CHANNEL>& Channels
00136 );
00137
00139 ERRVALUE WriteRecord (
00140 INT32 RecordNum,
00141 RECORD& record
00142 );
00143
00145 ERRVALUE WriteRecordChannels (
00146 INT32 RecordNum,
00147 const SIMPLE_ARRAY<CHANNEL>& Channels
00148 );
00149
00150 private:
00151 #ifndef GENERATING_DOXYGEN_OUTPUT
00152
00154 virtual ERRVALUE v_CloseObject ();
00155 virtual OBJTYPE v_GetDftObjectType () const;
00156 virtual bool v_IsObjectOpen () const;
00157 virtual ERRVALUE v_OpenObject (OPENMODE OpenFlags, MDLGPARENT parent, const CREDENTIALS* Credentials);
00158
00159 SPECTRALLIBRARYHANDLE* m_SpectralLibraryHandle;
00160 #endif // GENERATING_DOXYGEN_OUTPUT
00161 };
00162
00163
00165 struct SPECTRALLIBRARY::CHANNEL {
00166 FLOAT wavelength;
00167 FLOAT bandwidth;
00168 FLOAT error;
00169 FLOAT value;
00170 };
00171
00173 #define SPECTRUM_TITLE_SIZE 66
00174 #define SPECTRUM_HISTORY_SIZE 66
00175 #define SPECTRUM_USERNAME_SIZE 16
00176
00178 struct SPECTRALLIBRARY::RECORD {
00179 FIXEDSTRING<SPECTRUM_TITLE_SIZE> Title;
00180 FIXEDSTRING<SPECTRUM_HISTORY_SIZE> History;
00181 FIXEDSTRING<SPECTRUM_USERNAME_SIZE> Username;
00182 RVCDATETIME ProcDate;
00183 RVCDATETIME ProcDataTime;
00184 RVCDATETIME StartDataTime;
00185 DOUBLE RightAscention;
00186 DOUBLE DeclinationCoord;
00187 DOUBLE IncidentAngle;
00188 DOUBLE EmissionAngle;
00189 DOUBLE PhaseAngle;
00190 DOUBLE SampleBeam;
00191 DOUBLE OneScanTime;
00192 DOUBLE IntegrationTime;
00193 DOUBLE Temperature;
00194 DOUBLE AthmosphericThickness;
00195 DOUBLE MinWavelength;
00196 DOUBLE MaxWavelength;
00197 INT32 IndepSpectRuns;
00198 INT32 WeightNumRuns;
00199 INT32 NormChannels[2];
00200
00201 RECORD (
00202 ) { memset(this, 0, sizeof(*this)); }
00203
00204 };
00205
00206 }
00207
00208 #endif // INC_RVC_SPECTRALLIBRARY_H