00001
00021 #ifndef INC_MI32_LIDARCLASSDESC_H
00022 #define INC_MI32_LIDARCLASSDESC_H
00023
00024 #ifndef INC_MI32_MISTRING_H
00025 #include <mi32/mistring.h>
00026 #endif
00027
00028 #ifndef INC_MI32_CODESPACE_H
00029 #include <mi32/codespace.h>
00030 #endif
00031
00032 #ifndef INC_MI32_BOOL3_H
00033 #include <mi32/bool3.h>
00034 #endif
00035
00036
00037 #ifdef RVCSYSDLL
00038 #define CLASSLIBEXPORT MI_DLLCLASSEXPORT
00039 #else
00040 #define CLASSLIBEXPORT MI_DLLCLASSIMPORT
00041 #endif
00042
00043 #ifndef GENERATING_DOXYGEN_OUTPUT
00044 class CLASSDESCARRAY;
00045 class FILEPATH;
00046 class FILEPATHLIST;
00047 class XMLNODE;
00048 #endif
00049
00050 namespace LIDAR {
00051
00052
00053
00055 class CLASSLIBEXPORT CLASSDESC {
00056 public:
00057
00059 enum USAGE {
00060 USAGE_Unspecified = 0,
00061 USAGE_NeverClassified = 1,
00062 USAGE_Unclassified = 2,
00063 USAGE_Ground = 3,
00064 USAGE_LowVegetation = 4,
00065 USAGE_MediumVegetation = 5,
00066 USAGE_HighVegetation = 6,
00067 USAGE_Building = 7,
00068 USAGE_Noise = 8,
00069 USAGE_ModelKeyPoint = 9,
00070 USAGE_Water = 10,
00071 USAGE_NonGround = 11,
00072 USAGE_Tower = 12,
00073 USAGE_Cable = 13,
00074 USAGE_Bridge = 14,
00075 USAGE_Roadway = 15,
00076 USAGE_Vehicle = 16,
00077 USAGE_Animal = 17,
00078 USAGE_Object = 18,
00079 USAGE_Fence = 19,
00080
00081 USAGE_Predefined_Count,
00082 USAGE_Excluded = 254,
00083 USAGE_Other = 255,
00084 };
00085
00087 static TEXTID GetUsageTextID (
00088 USAGE usage
00089 );
00090
00092 CLASSDESC ();
00093
00095 ~CLASSDESC ();
00096
00098 UINT32 GetColorRef () const
00099 { return (m_ColorRef); }
00100
00102 bool GetIncludeAlways () const
00103 { return (m_IncludeAlways); }
00104
00106 const MISTRING& GetName () const
00107 { return (m_Name); }
00108
00110 USAGE GetUsage () const
00111 { return (m_Usage); }
00112
00114 bool IsDefault () const
00115 { return (m_IsDefault); }
00116
00118 BOOL3 IsUsed () const
00119 { return (m_IsUsed); }
00120
00122 void Set (
00123 USAGE usage,
00124 const MISTRING& name,
00125 UINT32 ColorRef,
00126 bool IncludeAlways,
00127 bool IsDefault = false
00128 );
00129
00131 void SetColorRef (
00132 UINT32 ColorRef
00133 ) { m_ColorRef = ColorRef; m_IsDefault = false; }
00134
00136 void SetIncludeAlways (
00137 bool IncludeAlways
00138 ) { m_IncludeAlways = IncludeAlways; m_IsDefault = false; }
00139
00141 void SetName (
00142 const MISTRING& name
00143 ) { m_Name = name; m_IsDefault = false; }
00144
00146 void SetUsage (
00147 USAGE Usage
00148 ) { m_Usage = Usage; m_IsDefault = false; }
00149
00151 void SetUsed (
00152 BOOL3 used
00153 ) { m_IsUsed = used; }
00154
00155 private:
00156 #ifndef GENERATING_DOXYGEN_OUTPUT
00157 USAGE m_Usage;
00158 bool m_IncludeAlways;
00159 bool m_IsDefault;
00160 BOOL3 m_IsUsed;
00161 MISTRING m_Name;
00162 UINT32 m_ColorRef;
00163 #endif // GENERATING_DOXYGEN_OUTPUT
00164 };
00165
00166
00167
00169 class CLASSLIBEXPORT CLASSDESCSET {
00170 public:
00171
00173 static void GetSavedPathList (
00174 FILEPATHLIST& FilePathList
00175 );
00176
00178 static const CLASSDESCSET& GetShared ()
00179 { return (GetSharedLow()); }
00180
00182 static ERRVALUE ReadShared ();
00183
00185 CLASSDESCSET ();
00186
00188 CLASSDESCSET (const CLASSDESCSET& rhs);
00189
00191 ~CLASSDESCSET ();
00192
00194 CLASSDESCSET& operator= (const CLASSDESCSET& rhs);
00195
00197 void CopyToShared (
00198 bool UpdateIniDefault
00199 ) const;
00200
00203 int FindUsageClass (
00204 CLASSDESC::USAGE usage
00205 ) const;
00206
00208 UINT16 GetClassCount () const;
00209
00211 const FILEPATH& GetFilePath () const;
00212
00214 const CLASSDESC& GetItem (
00215 UINT16 ClassNumber
00216 ) const;
00217
00219 CLASSDESC& GetItem (
00220 UINT16 ClassNumber
00221 );
00222
00224 XMLNODE* GetXML (
00225 XMLNODE *parentnode,
00226 const char *nodename = "LidarClasses",
00227 bool IncludeAll = false
00228 ) const;
00229
00231 ERRVALUE Read (
00232 const FILEPATH& filepath
00233 );
00234
00236 void Reset (
00237 CODESPACE codespace = CODESPACE_ASPRS_LAS
00238 );
00239
00241 void SetItem (
00242 UINT16 ClassNumber,
00243 const CLASSDESC& classdesc
00244 );
00245
00248 ERRVALUE SetFromXML (
00249 const XMLNODE *xmlnode
00250 );
00251
00254 ERRVALUE Write (
00255 const FILEPATH& filepath
00256 );
00257
00258 private:
00259 #ifndef GENERATING_DOXYGEN_OUTPUT
00260 class PRIV;
00261 PRIV *m_pPriv;
00262
00263 static CLASSDESCSET& GetSharedLow ();
00264
00265 #endif
00266 };
00267
00268
00269
00270 }
00271
00272 #undef CLASSLIBEXPORT
00273
00274 #endif // INC_MI32_LIDARCLASSDESC_H