00001
00135 #ifndef INC_MIE_SETTINGS_H
00136 #define INC_MIE_SETTINGS_H
00137
00138 #ifndef INC_MIE_MIE2_H
00139 #include <mie/mie2.h>
00140 #endif
00141
00142 #ifndef INC_RVC_RASTER_H
00143 #include <rvc/raster.h>
00144 #endif
00145
00146 #ifndef INC_RVC_VECTOR_H
00147 #include <rvc/vector.h>
00148 #endif
00149
00150 #ifndef INC_MI32_TRANS2DMAPGEN_H
00151 #include <mi32/trans2dmapgen.h>
00152 #endif
00153
00154
00155 #ifndef GENERATING_DOXYGEN_OUTPUT
00156 class XMLNODE;
00157 class XMLDOC;
00158 namespace SML {
00159 class CLASSMEMBER;
00160 }
00161 namespace MIE {
00162 class FORMAT;
00163 }
00164 #endif
00165
00166
00167 namespace MIE {
00168
00169
00179 class SETTINGS {
00180 public:
00181 enum NULLCELLMODE {
00182 NULLCELL_FromSource,
00183 NULLCELL_Zero,
00184 NULLCELL_Min,
00185 NULLCELL_Max,
00186 NULLCELL_UserDefined
00187 };
00188
00189 SETTINGS (
00190 const FORMAT& format,
00191 MODE mode,
00192 OBJTYPEFLAG ObjType = OBJTYPEFLAG_ALL
00193 );
00194
00195 virtual ~SETTINGS();
00196
00197 void ClearLinColRange (
00198 ) {
00199 m_bHasInitLin = m_bHasInitCol = m_bHasLastLin = m_bHasLastCol = false;
00200 }
00201
00203 bool GetAssignLabelsToPolys (
00204 ) const { return m_bAssignLabelsToPolys; }
00205
00207 bool GetByteOrderMSBFirst (
00208 ) const { return m_bByteOrderMSBFirst; }
00209
00212 bool GetCanLink (
00213 ) const { return m_bCanLink; }
00214
00218 bool GetCanChangeMultiSingle (
00219 ) const { return m_bCanChangeMultiSingle;}
00220
00221 bool GetCanDoMultiLink (
00222 ) const { return m_bCanDoMultiLink; }
00223
00225 RVC::IMAGE::CELLTYPE GetCellType (
00226 ) const { return m_CellType; }
00227
00228 CHAR_ENCODING GetCharEncoding (
00229 ) const { return m_CharEncoding; }
00230
00231 double GetColScale (
00232 ) const { return m_ColScale; }
00233
00235 const SPATREF::COORDREFSYS& GetCoordRefSys (
00236 ) const {
00237 return (m_crs);
00238 }
00239
00242 bool GetCreateElementIDTables (
00243 ) const { return m_bCreateElementIDTables; }
00244
00246 bool GetCreateStdAttribTables (
00247 ) const { return m_bCreateElementIDTables; }
00248
00249 int GetCompressionLevel (
00250 ) const { return m_CompressionLevel; }
00251
00253 RVC::RASTER::COMPTYPE GetCompressionType (
00254 ) const { return m_CompressionType; }
00255
00256 RVC::IMAGE::CELLTYPE GetCellTypesAllowed (
00257 ) const { return m_CellTypesAllowed; }
00258
00259 bool GetDoContrast (
00260 ) const { return m_bDoContrast; }
00261
00262 bool GetDoHistogram (
00263 ) const { return m_bDoHistogram; }
00264
00268 bool GetDoHypercube (
00269 ) const { return m_bDoHypercube; }
00270
00272 bool GetDoMultiLink (
00273 ) const { return m_bDoMultiLink; }
00274
00276 bool GetDoLink (
00277 ) const { return m_bDoLink; }
00278
00280 bool GetLinkTables (
00281 ) const { return m_bLinkTables; }
00282
00285 bool GetDoOptimize (
00286 ) const { return m_bDoOptimize; }
00287
00289 bool GetDoSingleFile (
00290 ) const { return m_bDoSingleFile; }
00291
00293 bool GetDoSurfaceProperties (
00294 ) const { return m_bDoSurfaceProperties; }
00295
00297 const SPATREF::COORDREFSYS& GetExtentsCoordRefSys (
00298 ) const { return m_ExtentsCRS; }
00299
00302 const TRANS2D_MAPGEN& GetExtentsTrans (
00303 ) const { return m_ExtentsTMG; }
00304
00306 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT GetExtractRegionTest (
00307 ) const { return m_ExtractRegionTest; }
00308
00310 bool GetFlipHorz (
00311 ) const { return m_bFlipHoriz; }
00312
00314 bool GetFlipVert (
00315 ) const { return m_bFlipVert; }
00316
00317 const FORMAT& GetFormat (
00318 ) const { return m_format; }
00319
00320 INT32 GetInitCol (
00321 ) const { return m_InitCol; }
00322
00323 INT32 GetInitLin (
00324 ) const { return m_InitLin; }
00325
00327 bool GetInvertBW (
00328 ) const { return m_bInvertBW; }
00329
00330 INT32 GetLastCol (
00331 ) const { return m_LastCol; }
00332
00333 INT32 GetLastLin (
00334 ) const { return m_LastLin; }
00335
00336 double GetLinScale (
00337 ) const { return m_LinScale; }
00338
00340 MODE GetMode (
00341 ) const { return (m_mode); }
00342
00343 double GetNullValue (
00344 ) const { return m_NullValue; }
00345
00346 NULLCELLMODE GetNullExportMode (
00347 ) const { return m_NullMode; }
00348
00350 int GetNumBands (
00351 ) const { return m_NumBands; }
00352
00353 UINT32 GetNumCols (
00354 ) const { return m_NumCols; }
00355
00356 UINT32 GetNumLins (
00357 ) const { return m_NumLins; }
00358
00360 OBJTYPEFLAG GetObjTypeFlag (
00361 ) const;
00362
00364 RVC::OBJTYPE GetObjType (
00365 ) const;
00366
00368 bool GetOverrideCRS (
00369 ) const { return m_bOverrideCRS; }
00370
00372 bool GetSaveProj (
00373 ) const { return m_bSaveProj; }
00374
00376 GEOREFTYPE GetGeorefTypes (
00377 ) const { return m_GeorefTypes; }
00378
00380 GEOREFTYPE GetGeorefTypeSelected (
00381 ) const { return m_GeorefTypeSelected; }
00382
00384 RVC::IMAGE::PYRAMID GetPyramidFlags (
00385 ) const { return m_PyramidFlags; }
00386
00389 ERRVALUE GetSchema (
00390 XMLNODE* ParentNode
00391 ) const { return v_GetSchema(ParentNode); }
00392
00394 bool GetSeparateBands (
00395 ) const { return m_bSeperateBands; }
00396
00398 RVC::VECTOR::TOPOLOGYTYPE GetTopologyType (
00399 ) const { return m_topologylevel; }
00400
00402 bool GetUseNullValue (
00403 ) const { return m_bUseNullValue; }
00404
00406 const DRECT3D& GetUserExtents (
00407 ) const { return m_UserExtents; }
00408
00419 ERRVALUE GetValues (
00420 XMLNODE* ParentNode
00421 ) const { return v_GetValues(ParentNode); }
00422
00423 double GetXShift (
00424 ) const { return (m_xshift); }
00425
00426 double GetYShift (
00427 ) const { return (m_yshift); }
00428
00430 int GetZUnits (
00431 ) const { return (m_zunits); }
00432
00433
00435 bool HasByteOrder (
00436 ) const { return m_bHasByteOrder; }
00437
00439 bool HasCellSize (
00440 ) const { return m_bHasCellSize; }
00441
00442 bool HasCRS (
00443 ) const {
00444 return (m_crs.IsDefined());
00445 }
00446
00448 bool HasCellType (
00449 ) const { return m_bHasCellType; }
00450
00451 bool HasInitCol (
00452 ) const { return m_bHasInitCol; }
00453
00454 bool HasInitLin (
00455 ) const { return m_bHasInitLin; }
00456
00457 bool HasLastCol (
00458 ) const { return m_bHasLastCol; }
00459
00460 bool HasLastLin (
00461 ) const { return m_bHasLastLin; }
00462
00463
00465 bool HasLinCol (
00466 ) const { return m_bHasLinCol; }
00467
00470 bool HasNonRandomAccessTables (
00471 ) const { return m_bHadNonRandomAccessTables; }
00472
00474 bool HasNullValue (
00475 ) const { return m_bHasNullValue; }
00476
00478 bool HasNumBands (
00479 ) const { return m_bHasNumBands; }
00480
00483 bool HasValidExtents (
00484 ) const { return m_bHasValidExtents; }
00485
00487 bool Is3D (
00488 ) const { return m_bIs3D; }
00489
00490 bool IsSafeToExport (
00491 ) const;
00492
00493 bool IsSafeToImport (
00494 ) const;
00495
00497 ERRVALUE ReadParmsIni (
00498 );
00499
00501 void SetAssignLabelsToPolys (
00502 bool AssignLabelsToPolys
00503 ) { m_bAssignLabelsToPolys = AssignLabelsToPolys; }
00504
00506 void SetByteOrderMSBFirst (
00507 bool value,
00508 bool bHasValue = true
00509 ) {
00510 m_bByteOrderMSBFirst = value;
00511 m_bHasByteOrder = bHasValue;
00512 }
00513
00517 void SetCanChangeMultiSingle (
00518 bool value = true
00519 ) { m_bCanChangeMultiSingle = value;}
00520
00521 void SetCanDoMultiLink (
00522 bool value = true
00523 ) { m_bCanDoMultiLink = value; }
00524
00527 void SetCanLink (
00528 bool value = true
00529 ) { m_bCanLink = value; }
00530
00531 void SetCellSize (
00532 double linscale,
00533 double colscale,
00534 bool bHasValue = true
00535 ) {
00536 m_LinScale = linscale;
00537 m_ColScale = colscale;
00538 m_bHasCellSize = bHasValue;
00539 }
00540
00541 void SetCellType (
00542 RVC::IMAGE::CELLTYPE celltype,
00543 bool bHasValue = true
00544 ) {
00545 m_CellType = celltype;
00546 m_bHasCellType = bHasValue;
00547 }
00548
00549 void SetCharEncoding (
00550 CHAR_ENCODING value
00551 ) { m_CharEncoding = value; }
00552
00553 void SetCompressionLevel (
00554 int value
00555 ) { m_CompressionLevel = value; }
00556
00558 void SetCompressionType (
00559 RVC::RASTER::COMPTYPE type
00560 ) { m_CompressionType = type; }
00561
00568 void SetCoordRefSys (
00569 const SPATREF::COORDREFSYS& crs
00570 );
00571
00574 void SetCreateElementIDTables (
00575 bool val = true
00576 ) { m_bCreateElementIDTables = val; }
00577
00579 void SetCreateStdAttribTables (
00580 bool val = true
00581 ) { m_bCreateElementIDTables = val; }
00582
00583
00585 void SetCellTypesAllowed (
00586 RVC::IMAGE::CELLTYPE value
00587 ) {
00588 m_CellTypesAllowed = value;
00589 }
00590
00592 void SetDoContrast (
00593 bool val = false
00594 ) { m_bDoContrast = val; }
00595
00597 void SetDoHistogram (
00598 bool val = true
00599 ) { m_bDoHistogram = val; }
00600
00602 void SetDoHypercube (
00603 bool val = true
00604 ) { m_bDoHypercube = val; }
00605
00607 void SetDoMultiLink (
00608 bool val = true
00609 ) { m_bDoMultiLink = val; }
00610
00612 void SetDoLink (
00613 bool val = true
00614 ) { m_bDoLink = val; }
00615
00617 void SetLinkTables (
00618 bool val = true
00619 ) { m_bLinkTables = val; }
00620
00623 void SetDoOptimize (
00624 bool val = true
00625 ) { m_bDoOptimize = val; }
00626
00628 void SetDoSingleFile (
00629 bool val = true
00630 ) { m_bDoSingleFile = val;}
00631
00633 void SetDoSurfaceProperties (
00634 bool DoSurface = true
00635 ) { m_bDoSurfaceProperties = DoSurface; }
00636
00638 void SetExtentsCoordRefSys (
00639 const SPATREF::COORDREFSYS& crs
00640 );
00641
00643 void SetExtractRegionTest (
00644 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT val
00645 ) { m_ExtractRegionTest = val; }
00646
00648 void SetFlipHorz (
00649 bool value
00650 ) { m_bFlipHoriz = value; }
00651
00653 void SetFlipVert (
00654 bool value
00655 ) { m_bFlipVert = value; }
00656
00657 void SetHasLinCol (
00658 bool value = true
00659 ) { m_bHasLinCol = value; }
00660
00663 void SetHasNonRandomAccessTables (
00664 bool value = true
00665 ) { m_bHadNonRandomAccessTables = value; }
00666
00667 void SetInitCol (
00668 INT32 value,
00669 bool bHasValue = true
00670 ) {
00671 m_InitCol = value;
00672 m_bHasInitCol = bHasValue;
00673 }
00674
00675 void SetInitLin (
00676 INT32 value,
00677 bool bHasValue = true
00678 ) {
00679 m_InitLin = value;
00680 m_bHasInitLin = bHasValue;
00681 }
00682
00684 void SetInvertBW (
00685 bool value
00686 ) { m_bInvertBW = value; }
00687
00689 void SetIs3D (
00690 bool val
00691 ) { m_bIs3D = val; }
00692
00693 void SetLastCol (
00694 INT32 value,
00695 bool bHasValue = true
00696 ) {
00697 m_LastCol = value;
00698 m_bHasLastCol = bHasValue;
00699 }
00700
00701 void SetLastLin (
00702 INT32 value,
00703 bool bHasValue = true
00704 ) {
00705 m_LastLin = value;
00706 m_bHasLastLin = bHasValue;
00707 }
00708
00709 void SetNullExportMode (
00710 NULLCELLMODE mode
00711 );
00712
00713 void SetMode (
00714 MODE mode
00715 ) { m_mode = mode; }
00716
00717 void SetNullValue (
00718 double value,
00719 bool bHasValue = true
00720 ) {
00721 m_NullValue = value;
00722 m_bHasNullValue = bHasValue;
00723 }
00724
00726 void SetNumBands (
00727 int value,
00728 bool bHasValue = true
00729 ) {
00730 m_bHasNumBands = bHasValue;
00731 m_NumBands = value;
00732 }
00733
00734 void SetNumCols (
00735 UINT32 value
00736 ) { m_NumCols = value; }
00737
00738 void SetNumLins (
00739 UINT32 value
00740 ) { m_NumLins = value; }
00741
00742 void SetOverrideCRS (
00743 bool value
00744 ) { m_bOverrideCRS = value; }
00745
00746 void SetObjTypeSelected (
00747 OBJTYPEFLAG types
00748 );
00749
00750 void SetObjTypeSelected (
00751 RVC::OBJTYPE type
00752 );
00753
00754 void SetPyramidFlags (
00755 RVC::IMAGE::PYRAMID PyramidFlags
00756 ) { m_PyramidFlags = PyramidFlags; }
00757
00759 void SetSaveProj (
00760 bool value = true
00761 ) { m_bSaveProj = value; }
00762
00764 void SetGeorefTypes (
00765 GEOREFTYPE types
00766 ) { m_GeorefTypes = types; }
00767
00769 void SetGeorefTypeSelected (
00770 GEOREFTYPE type
00771 ) { m_GeorefTypeSelected = type; }
00772
00773 void SetSeparateBands (
00774 bool value
00775 ) { m_bSeperateBands = value; }
00776
00778 void SetTopologyType (
00779 RVC::VECTOR::TOPOLOGYTYPE type
00780 ) { m_topologylevel = type; }
00781
00783 void SetUseNullValue (
00784 bool value
00785 ) { m_bUseNullValue = value; }
00786
00787 void SetUserExtents (
00788 const DRECT3D& rect,
00789 bool bValid
00790 );
00791
00802 ERRVALUE SetValues (
00803 const XMLNODE* ParentNode
00804 ) { return v_SetValues(ParentNode); }
00805
00806 void SetXShift (
00807 double val
00808 ) { m_xshift = val; }
00809
00810 void SetYShift (
00811 double val
00812 ) { m_yshift = val; }
00813
00814 void SetZUnits (
00815 int val
00816 ) { m_zunits = val; }
00817
00818 ERRVALUE SMLValidateExportSettings (
00819 const RVC::OBJITEM& ObjItem
00820 ) { return v_SMLValidateExportSettings(ObjItem); }
00821
00824 ERRVALUE SMLValidateImportSettings (
00825 ) { return v_SMLValidateImportSettings(); }
00826
00828 ERRVALUE WriteParmsIni (
00829 ) const;
00830
00831
00832 private:
00833 const FORMAT& m_format;
00834 MODE m_mode;
00835 OBJTYPEFLAG m_ObjTypeSelected;
00836 RVC::OBJTYPE m_objtype;
00837 double m_xshift;
00838 double m_yshift;
00839 int m_zunits;
00840 bool m_bSaveProj;
00841 bool m_bHasValidExtents;
00842 DRECT3D m_UserExtents;
00843 bool m_bCanLink;
00844 bool m_bDoContrast;
00845 bool m_bDoHistogram;
00846 bool m_bDoLink;
00847 bool m_bDoMultiLink;
00848 bool m_bDoHypercube;
00849 bool m_bLinkTables;
00850 RVC::IMAGE::PYRAMID m_PyramidFlags;
00851 GEOREFTYPE m_GeorefTypeSelected;
00852 GEOREFTYPE m_GeorefTypes;
00853 bool m_bIs3D;
00854 TRANS2D_MAPGEN m_ExtentsTMG;
00855 RVC::GEOMETRIC::ELEMSELECTPARMS::EXTRACT m_ExtractRegionTest;
00856 SPATREF::COORDREFSYS m_ExtentsCRS;
00857
00858 RVC::VECTOR::TOPOLOGYTYPE m_topologylevel;
00859 bool m_bDoOptimize;
00860 bool m_bCreateElementIDTables;
00861 bool m_bCreateStdAttribTables;
00862
00863 bool m_bSeperateBands;
00864 int m_NumBands;
00865 bool m_bByteOrderMSBFirst;
00866 bool m_bFlipVert;
00867 bool m_bFlipHoriz;
00868 bool m_bInvertBW;
00869 bool m_bOverrideCRS;
00870
00871 RVC::RASTER::COMPTYPE m_CompressionType;
00872 int m_CompressionLevel;
00873 bool m_bUseNullValue;
00874 RVC::IMAGE::CELLTYPE m_CellTypesAllowed;
00875 INT32 m_InitCol;
00876 INT32 m_InitLin;
00877 INT32 m_LastCol;
00878 INT32 m_LastLin;
00879 double m_NullValue;
00880 UINT32 m_NumLins;
00881 UINT32 m_NumCols;
00882 double m_LinScale;
00883 double m_ColScale;
00884 bool m_bHasInitLin;
00885 bool m_bHasInitCol;
00886 bool m_bHasLastLin;
00887 bool m_bHasLastCol;
00888
00889 bool m_bHasNumBands;
00890 bool m_bHasLinCol;
00891 bool m_bHasCellType;
00892 bool m_bHasCellSize;
00893 bool m_bHasNullValue;
00894 bool m_bHasByteOrder;
00895 RVC::IMAGE::CELLTYPE m_CellType;
00896 CHAR_ENCODING m_CharEncoding;
00897 SPATREF::COORDREFSYS m_crs;
00898 bool m_bDoSingleFile;
00899 bool m_bCanChangeMultiSingle;
00900 bool m_bCanDoMultiLink;
00901 bool m_bHadNonRandomAccessTables;
00902 bool m_bAssignLabelsToPolys;
00903 NULLCELLMODE m_NullMode;
00904 bool m_bDoSurfaceProperties;
00905
00906 protected:
00907
00909 static XMLNODE* AddValueNode (
00910 XMLNODE *ParentNode,
00911 const char *name,
00912 const MISTRING& value
00913 );
00914
00917 static bool FindValueNode (
00918 const XMLNODE *ParentNode,
00919 const char *name,
00920 MISTRING &value
00921 );
00922
00925 static bool FindValueNode (
00926 const XMLNODE *ParentNode,
00927 const char *name,
00928 bool &value
00929 );
00930
00933 static bool FindValueNode (
00934 const XMLNODE *ParentNode,
00935 const char *name,
00936 INT32 &value
00937 );
00938
00941 static bool FindValueNode (
00942 const XMLNODE *ParentNode,
00943 const char *name,
00944 UINT32 &value
00945 );
00946
00949 static bool FindValueNode (
00950 const XMLNODE *ParentNode,
00951 const char *name,
00952 double &value
00953 );
00954
00959 virtual ERRVALUE v_GetSchema (
00960 XMLNODE* ParentNode
00961 ) const;
00962
00966 virtual ERRVALUE v_GetValues (
00967 XMLNODE* ParentNode
00968 ) const;
00969
00973 virtual ERRVALUE v_SetValues (
00974 const XMLNODE* ParentNode
00975 );
00976
00977 private:
00978
00979 static const XMLNODE* SETTINGS::FindChildValueNode (
00980 const XMLNODE *ParentNode,
00981 const char *name
00982 );
00983
00987 virtual ERRVALUE v_AnalyzeObjects (
00988 const RVC::OBJITEMLIST& objects
00989 );
00990
00996 virtual ERRVALUE v_AnalyzeSource (
00997 const MISTRING& source
00998 );
00999
01004 virtual ERRVALUE v_AnalyzeFile (
01005 const FILEPATH& source
01006 );
01007
01009 virtual void v_OnChangeCRS (
01010 ) {}
01011
01012
01015 virtual bool v_IsSafeToExport (
01016 ) const;
01017
01018
01021 virtual bool v_IsSafeToImport (
01022 ) const;
01023
01030 virtual ERRVALUE v_ReadParmsIni();
01031
01035 virtual ERRVALUE v_WriteParmsIni() const;
01036
01046 virtual ERRVALUE v_SMLValidateExportSettings (
01047 const RVC::OBJITEM& ObjItem
01048 );
01049
01052 virtual ERRVALUE v_SMLValidateImportSettings (
01053 );
01054
01055 ERRVALUE IniReadLow (
01056 SML::CLASSMEMBER*,
01057 const char* key
01058 );
01059
01060 ERRVALUE IniWriteLow (
01061 SML::CLASSMEMBER*,
01062 const char* key
01063 ) const;
01064
01065 friend class FORMAT;
01066
01067 friend class SML_MIEHANDLE;
01068 friend class SML_MIERASTER;
01069 friend class SML_MIEVECTOR;
01070 friend class SML_MIECAD;
01071 friend class SML_MIETIN;
01072 friend class SML_MIEDATABASE;
01073 };
01074
01075 }
01076
01077 #endif