00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176 #ifndef INC_RVC_RASTER_H
00177 #define INC_RVC_RASTER_H
00178
00179 #ifndef INC_RVC_IMAGE_H
00180 #include <rvc/image.h>
00181 #endif
00182
00183 #ifndef INC_MI32_ANYRASTV_H
00184 #include <mi32/anyrastv.h>
00185 #endif
00186
00187 #ifndef INC_MI32_SIMPLEAR_H
00188 #include <mi32/simplear.h>
00189 #endif
00190
00191 #ifndef GENERATING_DOXYGEN_OUTPUT
00192 struct RVCRASTINFO;
00193 struct SMLCONTEXT;
00194 #endif // GENERATING_DOXYGEN_OUTPUT
00195
00196 namespace RVC {
00197
00198 #ifndef GENERATING_DOXYGEN_OUTPUT
00199 class RASTERHANDLE;
00200 struct RASTERLINKPARMS;
00201 struct RASTERLINKDATAGEN;
00202 #endif // GENERATING_DOXYGEN_OUTPUT
00203
00204 class RASTER : public RVC::IMAGE {
00205 public:
00206
00207 enum LINKTYPE {
00208 LINKTYPE_NoLink = 0,
00209 LINKTYPE_TIFF = 2,
00210 LINKTYPE_Generic = 3,
00211 LINKTYPE_MrSID = 4,
00212 LINKTYPE_ECW = 5,
00213 LINKTYPE_JP2 = 6,
00214 LINKTYPE_SocetSetDT = 7,
00215 LINKTYPE_PNG = 8,
00216 LINKTYPE_JPEG = 9
00217 };
00218
00219 enum COMPONENT {
00220 COMPONENT_Default = 0,
00221 COMPONENT_Red,
00222 COMPONENT_Green,
00223 COMPONENT_Blue,
00224 COMPONENT_Real,
00225 COMPONENT_Imaginary,
00226 COMPONENT_Magnitude,
00227 COMPONENT_Phase,
00228 COMPONENT_Alpha,
00229 COMPONENT_Cyan,
00230 COMPONENT_Magenta,
00231 COMPONENT_Yellow,
00232 COMPONENT_Black
00233 };
00234
00235 enum USAGE {
00236 USAGE_Default = 0,
00237 USAGE_HyspcBand,
00238 USAGE_HyspcClass,
00239 USAGE_HyspcAverage,
00240 USAGE_Pyramid,
00241 USAGE_PrinComp,
00242 USAGE_NullBand,
00243 USAGE_Opacity
00244 };
00245
00246 enum COMPTYPE {
00247 COMPTYPE_None = 0,
00248 COMPTYPE_RLE,
00249 COMPTYPE_JPEG,
00250 COMPTYPE_Huffman,
00251 COMPTYPE_DPCM,
00252 COMPTYPE_JP2
00253 };
00254
00255 #ifndef GENERATING_DOXYGEN_OUTPUT
00256
00257 class GETOBJFILTER_ISSELECTABLE;
00258 class GETOBJFILTER_ISOVERLAPPING;
00259 #endif // GENERATING_DOXYGEN_OUTPUT
00260
00261
00262 class IMAGESCALE {
00263 public:
00264
00265
00266 IMAGESCALE (
00267 ) :
00268 m_LineScale(1.0),
00269 m_ColumnScale(1.0),
00270 m_DataScale(1.0),
00271 m_DataOffset(0.0)
00272 {}
00273
00274
00275
00276 double GetColumnScale (
00277 ) const {return (m_ColumnScale); }
00278
00279
00280
00281 double GetDataOffset (
00282 ) const {return (m_DataOffset);}
00283
00284
00285
00286 double GetDataScale (
00287 ) const {return (m_DataScale);}
00288
00289
00290
00291 double GetLineScale (
00292 ) const {return (m_LineScale);}
00293
00294
00295 void SetColumnScale (
00296 double ColumnScale
00297 ) {
00298 m_ColumnScale = ColumnScale;
00299 if (m_ColumnScale == 0.0) m_ColumnScale = 1.0;
00300 return;
00301 }
00302
00303
00304 void SetDataOffset (
00305 double DataOffset
00306 ) {m_DataOffset = DataOffset; }
00307
00308
00309 void SetDataScale (
00310 double DataScale
00311 ) {
00312 m_DataScale = DataScale;
00313 if (m_DataScale == 0.0) m_DataScale = 1.0;
00314 return;
00315 }
00316
00317
00318 void SetLineScale (
00319 double LineScale
00320 ) {
00321 m_LineScale = LineScale;
00322 if (m_LineScale == 0.0) m_LineScale = 1.0;
00323 return;
00324 }
00325
00326 private:
00327 #ifndef GENERATING_DOXYGEN_OUTPUT
00328
00329 double m_LineScale;
00330 double m_ColumnScale;
00331 double m_DataScale;
00332 double m_DataOffset;
00333 #endif // GENERATING_DOXYGEN_OUTPUT
00334 };
00335
00336 #ifndef GENERATING_DOXYGEN_OUTPUT
00337
00338 class LINKPARMS;
00339 class LINKPARMS_ECW;
00340 class LINKPARMS_GENERIC;
00341 class LINKPARMS_JP2;
00342 class LINKPARMS_JPEG;
00343 class LINKPARMS_MRSID;
00344 class LINKPARMS_PNG;
00345 class LINKPARMS_SOCETSETDT;
00346 class LINKPARMS_TIFF;
00347 #endif // GENERATING_DOXYGEN_OUTPUT
00348
00349
00350 class MAKEPARMS {
00351 public:
00352
00353
00354 MAKEPARMS (
00355 INT32 NumLines,
00356 INT32 NumColumns,
00357 IMAGE::CELLTYPE CellType
00358 ) :
00359 m_NumLines(NumLines),
00360 m_NumColumns(NumColumns),
00361 m_CellType(CellType),
00362 m_TileLines(0),
00363 m_TileColumns(0),
00364 m_Usage(USAGE_Default),
00365 m_Inverted(false),
00366 m_PackOrder(PACKORDER_MostSigBit),
00367 m_CompType(COMPTYPE_None),
00368 m_CompQuality(75),
00369 m_UsedBits(0),
00370 m_IsCompressed(false),
00371 m_IsLossyCompressed(false),
00372 m_Fill(false),
00373 m_NoEmbeddedPyramidTiers(false)
00374 { }
00375
00376
00377 MAKEPARMS (
00378 const RASTER& Template,
00379 IMAGE::CELLTYPE CellType = CELLTYPE_Invalid
00380 ) :
00381 m_NumLines(Template.GetNumLines()),
00382 m_NumColumns(Template.GetNumColumns()),
00383 m_CellType((CellType!=CELLTYPE_Invalid)?CellType:Template.GetCellType()),
00384 m_TileLines(Template.GetNumTileLines()),
00385 m_TileColumns(Template.GetNumTileColumns()),
00386 m_Usage(Template.GetUsage()),
00387 m_Inverted(false),
00388 m_PackOrder(PACKORDER_MostSigBit),
00389 m_CompType(COMPTYPE_None),
00390 m_CompQuality(75),
00391 m_UsedBits(Template.GetNumUsedBits()),
00392 m_IsCompressed(false),
00393 m_IsLossyCompressed(false),
00394 m_Fill(false),
00395 m_NoEmbeddedPyramidTiers(false)
00396 {
00397 Template.GetImageScale(m_ImageScale);
00398 }
00399
00400
00401
00402 IMAGE::CELLTYPE GetCellType (
00403 ) const {return (m_CellType);}
00404
00405
00406
00407 UINT16 GetCompressionQuality (
00408 ) const {return (m_CompQuality);}
00409
00410
00411
00412 COMPTYPE GetCompressionType (
00413 ) const {return (m_CompType);}
00414
00415
00416
00417 IMAGE::DATATYPE GetDataType (
00418 ) const {return (IMAGE::GetDataTypeFromCellType(m_CellType));}
00419
00420
00421
00422 INT32 GetDftTileSize (
00423 ) const;
00424
00425
00426
00427 const IMAGESCALE& GetImageScale (
00428 ) const {return (m_ImageScale);}
00429
00430
00431 bool GetInitialValue (
00432 ANYRASTVALUE& value
00433 ) const {
00434 value = m_InitValue;
00435 return (m_Fill);
00436 }
00437
00438
00439
00440 UINT16 GetNumBits (
00441 ) const {return (IMAGE::GetNumBitsFromCellType(m_CellType));}
00442
00443
00444
00445 INT32 GetNumColumns (
00446 ) const {return (m_NumColumns);}
00447
00448
00449
00450 INT32 GetNumLines (
00451 ) const {return (m_NumLines);}
00452
00453
00454
00455
00456 UINT16 GetNumUsedBits (
00457 ) const { return (m_UsedBits); }
00458
00459
00460 void GetTileSize (
00461 INT32& TileLines,
00462 INT32& TileColumns
00463 ) const;
00464
00465
00466 void GetValueMinMax (
00467 ANYRASTVALUE& min,
00468 ANYRASTVALUE& max
00469 ) const;
00470
00471
00472
00473 bool IsLossyCompressed (
00474 ) const {return (m_IsLossyCompressed);}
00475
00476
00477
00478 bool IsValidCompression (
00479 COMPTYPE CompType
00480 ) const;
00481
00482
00483 void SetCellType (
00484 CELLTYPE CellType
00485 ) {m_CellType = CellType;}
00486
00487
00488 void SetCompression (
00489 COMPTYPE CompType,
00490 UINT16 CompQuality
00491 );
00492
00493
00494
00495
00496 void SetIncludeEmbeddedPyramidTiers (
00497 bool IncludeTiers
00498 ) { m_NoEmbeddedPyramidTiers = !IncludeTiers; }
00499
00500
00501 void SetImageScale (
00502 const IMAGESCALE& ImageScale
00503 ) {m_ImageScale = ImageScale; }
00504
00505
00506 void SetInitialValue (
00507 const ANYRASTVALUE& value
00508 ) {
00509 m_InitValue = value;
00510 m_Fill = true;
00511 return;
00512 }
00513
00514
00515 void SetInverted (
00516 ) {m_Inverted = true;}
00517
00518
00519 void SetNumColumns (
00520 INT32 NumColumns
00521 ) {m_NumColumns = NumColumns;}
00522
00523
00524 void SetNumLines (
00525 INT32 NumLines
00526 ) {m_NumLines = NumLines;}
00527
00528
00529
00530
00531 void SetNumUsedBits (
00532 const RASTER& SrcRastObj
00533 );
00534
00535
00536
00537
00538 void SetNumUsedBits (
00539 UINT16 UsedBits
00540 ) { m_UsedBits = UsedBits; }
00541
00542
00543 void SetPackOrder (
00544 PACKORDER PackOrder
00545 ) {m_PackOrder = PackOrder;}
00546
00547
00548 void SetTileSize (
00549 INT32 TileLines,
00550 INT32 TileColumns
00551 ) {
00552 m_TileLines = TileLines;
00553 m_TileColumns = TileColumns;
00554 return;
00555 }
00556
00557
00558 void SetUsage (
00559 USAGE usage
00560 ) {m_Usage = usage;}
00561
00562 private:
00563 #ifndef GENERATING_DOXYGEN_OUTPUT
00564
00565 INT32 m_NumLines;
00566 INT32 m_NumColumns;
00567 CELLTYPE m_CellType;
00568 PACKORDER m_PackOrder;
00569 USAGE m_Usage;
00570 INT32 m_TileLines;
00571 INT32 m_TileColumns;
00572 COMPTYPE m_CompType;
00573 UINT16 m_CompQuality;
00574 UINT16 m_UsedBits;
00575 bool m_Inverted;
00576 bool m_IsCompressed;
00577 bool m_IsLossyCompressed;
00578 bool m_Fill;
00579 bool m_NoEmbeddedPyramidTiers;
00580 ANYRASTVALUE m_InitValue;
00581 IMAGESCALE m_ImageScale;
00582
00583 friend class RASTER;
00584 #endif // GENERATING_DOXYGEN_OUTPUT
00585 };
00586
00587
00588
00589 RASTER (
00590 );
00591
00592
00593 RASTER (
00594 const RVC::RASTER& rhs
00595 );
00596
00597
00598 virtual ~RASTER (
00599 );
00600
00601
00602 RVC::RASTER& operator= (
00603 const RVC::RASTER& rhs
00604 );
00605
00606 static ERRVALUE AutoLinkTIFF (
00607 RVC::OBJECT& ParentObj,
00608 const FILEPATH& LinkFile,
00609 RVC::GEOSPATIAL::MAKELINKFLAGS LinkFlags
00610 );
00611
00612
00613
00614 static bool ComputeNextPyramidSize (
00615 INT32& NumColumns,
00616 INT32& NumLines
00617 );
00618
00619
00620
00621 ERRVALUE CopyAverageTo (
00622 RASTER& DestRaster,
00623 INT32 ColumnSample,
00624 INT32 LineSample,
00625 SIMPLE_ARRAY<COLOR>* ColorMap = 0
00626 );
00627
00628
00629
00630 ERRVALUE CopySampledTo (
00631 RASTER& DestRaster,
00632 INT32 ColumnSample,
00633 INT32 LineSample
00634 );
00635
00636
00637 ERRVALUE CreateSMLContext (
00638 SMLCONTEXT **pcontext
00639 );
00640
00641
00642
00643 IMAGE::CELLTYPE GetCellType (
00644 ) const {return (m_MakeParms.GetCellType());}
00645
00646
00647 ERRVALUE GetComponents (
00648 SIMPLE_ARRAY<COMPONENT>& Components
00649 ) const;
00650
00651
00652
00653 COMPTYPE GetCompressionType (
00654 ) const {return (m_MakeParms.m_CompType);}
00655
00656
00657
00658 IMAGE::DATATYPE GetDataType (
00659 ) const {return (m_MakeParms.GetDataType());}
00660
00661
00662
00663 const MAKEPARMS& GetMakeParms (
00664 ) const {return (m_MakeParms);}
00665
00666
00667 ERRVALUE GetImageScale (
00668 IMAGESCALE& scale
00669 ) const;
00670
00671
00672
00673 LINKTYPE GetLinkType (
00674 ) const {return (m_LinkType);}
00675
00676
00677 ERRVALUE GetNullValue (
00678 NULLVALUE& NullValue
00679 ) const;
00680
00681
00682
00683 UINT16 GetNumBits (
00684 ) const {return (m_MakeParms.GetNumBits());}
00685
00686
00687
00688 INT32 GetNumTileColumns (
00689 ) const {return (m_MakeParms.m_TileColumns);}
00690
00691
00692
00693 INT32 GetNumTileLines (
00694 ) const {return (m_MakeParms.m_TileLines);}
00695
00696
00697
00698
00699 UINT16 GetNumUsedBits (
00700 ) const { return (m_MakeParms.m_UsedBits); }
00701
00702
00703
00704 INT32 GetNumXTiles (
00705 ) const {return (m_XTiles);}
00706
00707
00708
00709 INT32 GetNumYTiles (
00710 ) const {return (m_YTiles);}
00711
00712
00713
00714 PACKORDER GetPackOrder (
00715 ) const {return (m_MakeParms.m_PackOrder);}
00716
00717
00718
00719 ERRVALUE GetPyramidList (
00720 SIMPLE_ARRAY<INT32>& SampleList,
00721 RVC::OBJITEMLIST& PyramidList
00722 );
00723
00724
00725
00726 INT32 GetTileSizeBytes (
00727 ) const {return (m_TileSize);}
00728
00729
00730
00731 USAGE GetUsage (
00732 ) const {return (m_MakeParms.m_Usage);}
00733
00734
00735 bool HasNullValue (
00736 ) const;
00737
00738
00739
00740 bool IsCompressed (
00741 ) const {return (m_MakeParms.m_IsCompressed);}
00742
00743
00744
00745 bool IsLossyCompressed (
00746 ) const {return (m_MakeParms.m_IsLossyCompressed);}
00747
00748
00749
00750 bool IsInverted (
00751 ) const {return (m_MakeParms.m_Inverted);}
00752
00753
00754 ERRVALUE Link (
00755 const RVC::OBJECT& parent,
00756 const RVC::OBJECTNAME& name,
00757 const RVC::OBJECTDESC& desc,
00758 const LINKPARMS& LinkParms,
00759 const char* Source = 0
00760 );
00761
00762
00763 ERRVALUE Make (
00764 const RVC::OBJECT& parent,
00765 const RVC::OBJECTNAME& name,
00766 const RVC::OBJECTDESC& desc,
00767 MAKEPARMS& MakeParms,
00768 const char* Source = 0
00769 );
00770
00771
00772 ERRVALUE Make (
00773 const RVC::OBJITEM& ObjItem,
00774 MAKEPARMS& MakeParms,
00775 const char* Source = 0
00776 );
00777
00778
00779
00780 ERRVALUE MakePyramidSet (
00781 IMAGE::PYRAMID flags = IMAGE::PYRAMID_None
00782 );
00783
00784
00785 ERRVALUE Read (
00786 INT32 Line,
00787 INT32 StartColumn,
00788 void *data,
00789 INT32 Length = 1,
00790 CONVMODE Convert = CONVMODE_None,
00791 COMPONENT Component = COMPONENT_Default
00792 ) const;
00793
00794
00795 ERRVALUE Read (
00796 INT32 Line,
00797 INT32 StartColumn,
00798 INT8 *data,
00799 INT32 Length = 1,
00800 COMPONENT Component = COMPONENT_Default
00801 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00802
00803
00804 ERRVALUE Read (
00805 INT32 Line,
00806 INT32 StartColumn,
00807 UINT8 *data,
00808 INT32 Length = 1,
00809 COMPONENT Component = COMPONENT_Default
00810 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00811
00812
00813 ERRVALUE Read (
00814 INT32 Line,
00815 INT32 StartColumn,
00816 INT16 *data,
00817 INT32 Length = 1,
00818 COMPONENT Component = COMPONENT_Default
00819 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
00820
00821
00822 ERRVALUE Read (
00823 INT32 Line,
00824 INT32 StartColumn,
00825 UINT16 *data,
00826 INT32 Length = 1,
00827 COMPONENT Component = COMPONENT_Default
00828 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
00829
00830
00831 ERRVALUE Read (
00832 INT32 Line,
00833 INT32 StartColumn,
00834 INT32 *data,
00835 INT32 Length = 1,
00836 COMPONENT Component = COMPONENT_Default
00837 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
00838
00839
00840 ERRVALUE Read (
00841 INT32 Line,
00842 INT32 StartColumn,
00843 UINT32 *data,
00844 INT32 Length = 1,
00845 COMPONENT Component = COMPONENT_Default
00846 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
00847
00848
00849 ERRVALUE Read (
00850 INT32 Line,
00851 INT32 StartColumn,
00852 float *data,
00853 INT32 Length = 1,
00854 COMPONENT Component = COMPONENT_Default
00855 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_Float, Component)); }
00856
00857
00858 ERRVALUE Read (
00859 INT32 Line,
00860 INT32 StartColumn,
00861 double *data,
00862 INT32 Length = 1,
00863 COMPONENT Component = COMPONENT_Default
00864 ) const { return (Read(Line, StartColumn, data, Length, CONVMODE_Double, Component)); }
00865
00866
00867 ERRVALUE ReadColumn (
00868 INT32 Line,
00869 INT32 StartColumn,
00870 void *data,
00871 INT32 Length = 1,
00872 CONVMODE Convert = CONVMODE_None,
00873 COMPONENT Component = COMPONENT_Default
00874 ) const;
00875
00876
00877 ERRVALUE ReadColumn (
00878 INT32 Line,
00879 INT32 StartColumn,
00880 INT8 *data,
00881 INT32 Length = 1,
00882 COMPONENT Component = COMPONENT_Default
00883 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00884
00885
00886 ERRVALUE ReadColumn (
00887 INT32 Line,
00888 INT32 StartColumn,
00889 UINT8 *data,
00890 INT32 Length = 1,
00891 COMPONENT Component = COMPONENT_Default
00892 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00893
00894
00895 ERRVALUE ReadColumn (
00896 INT32 Line,
00897 INT32 StartColumn,
00898 INT16 *data,
00899 INT32 Length = 1,
00900 COMPONENT Component = COMPONENT_Default
00901 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
00902
00903
00904 ERRVALUE ReadColumn (
00905 INT32 Line,
00906 INT32 StartColumn,
00907 UINT16 *data,
00908 INT32 Length = 1,
00909 COMPONENT Component = COMPONENT_Default
00910 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
00911
00912
00913 ERRVALUE ReadColumn (
00914 INT32 Line,
00915 INT32 StartColumn,
00916 INT32 *data,
00917 INT32 Length = 1,
00918 COMPONENT Component = COMPONENT_Default
00919 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
00920
00921
00922 ERRVALUE ReadColumn (
00923 INT32 Line,
00924 INT32 StartColumn,
00925 UINT32 *data,
00926 INT32 Length = 1,
00927 COMPONENT Component = COMPONENT_Default
00928 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
00929
00930
00931 ERRVALUE ReadColumn (
00932 INT32 Line,
00933 INT32 StartColumn,
00934 float *data,
00935 INT32 Length = 1,
00936 COMPONENT Component = COMPONENT_Default
00937 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_Float, Component)); }
00938
00939
00940 ERRVALUE ReadColumn (
00941 INT32 Line,
00942 INT32 StartColumn,
00943 double *data,
00944 INT32 Length = 1,
00945 COMPONENT Component = COMPONENT_Default
00946 ) const { return (ReadColumn(Line, StartColumn, data, Length, CONVMODE_Double, Component)); }
00947
00948
00949 ERRVALUE SetImageScale (
00950 const IMAGESCALE& scale
00951 );
00952
00953
00954 ERRVALUE SetNullValue (
00955 const NULLVALUE& NullValue,
00956 bool NullUsed = true
00957 );
00958
00959
00960 ERRVALUE Write (
00961 INT32 Line,
00962 INT32 StartColumn,
00963 void *data,
00964 INT32 Length = 1,
00965 CONVMODE Convert = CONVMODE_None,
00966 COMPONENT Component = COMPONENT_Default
00967 );
00968
00969
00970 ERRVALUE Write (
00971 INT32 Line,
00972 INT32 StartColumn,
00973 INT8 *data,
00974 INT32 Length = 1,
00975 COMPONENT Component = COMPONENT_Default
00976 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00977
00978
00979 ERRVALUE Write (
00980 INT32 Line,
00981 INT32 StartColumn,
00982 UINT8 *data,
00983 INT32 Length = 1,
00984 COMPONENT Component = COMPONENT_Default
00985 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT8, Component)); }
00986
00987
00988 ERRVALUE Write (
00989 INT32 Line,
00990 INT32 StartColumn,
00991 INT16 *data,
00992 INT32 Length = 1,
00993 COMPONENT Component = COMPONENT_Default
00994 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
00995
00996
00997 ERRVALUE Write (
00998 INT32 Line,
00999 INT32 StartColumn,
01000 UINT16 *data,
01001 INT32 Length = 1,
01002 COMPONENT Component = COMPONENT_Default
01003 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT16, Component)); }
01004
01005
01006 ERRVALUE Write (
01007 INT32 Line,
01008 INT32 StartColumn,
01009 INT32 *data,
01010 INT32 Length = 1,
01011 COMPONENT Component = COMPONENT_Default
01012 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
01013
01014
01015 ERRVALUE Write (
01016 INT32 Line,
01017 INT32 StartColumn,
01018 UINT32 *data,
01019 INT32 Length = 1,
01020 COMPONENT Component = COMPONENT_Default
01021 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_INT32, Component)); }
01022
01023
01024 ERRVALUE Write (
01025 INT32 Line,
01026 INT32 StartColumn,
01027 float *data,
01028 INT32 Length = 1,
01029 COMPONENT Component = COMPONENT_Default
01030 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_Float, Component)); }
01031
01032
01033 ERRVALUE Write (
01034 INT32 Line,
01035 INT32 StartColumn,
01036 double *data,
01037 INT32 Length = 1,
01038 COMPONENT Component = COMPONENT_Default
01039 ) { return (Write(Line, StartColumn, data, Length, CONVMODE_Double, Component)); }
01040
01041 private:
01042 #ifndef GENERATING_DOXYGEN_OUTPUT
01043
01044
01045 virtual ERRVALUE v_CloseObject ();
01046 virtual RVC::OBJTYPE v_GetDftObjectType () const;
01047 virtual bool v_IsObjectOpen () const;
01048 virtual ERRVALUE v_OpenObject (OPENMODE OpenFlags, MDLGPARENT parent = 0);
01049
01050
01051 virtual void v_GetExtents (DRECT3D &extents) const;
01052 virtual void v_GetScale (double& xscale, double& yscale) const;
01053 virtual double v_GetZScale () const;
01054 virtual double v_GetZOffset () const;
01055 virtual bool v_HasCapability (int Capability) const;
01056 virtual void v_SetScale (double xscale, double yscale);
01057 virtual void v_SetZOffset (double zoffset);
01058 virtual void v_SetZScale (double zscale);
01059
01060
01061 virtual ERRVALUE v_GetBandParms (INT32 BandNum, BANDPARMS& BandParms) const;
01062 virtual double v_GetColumnScale () const;
01063 virtual double v_GetLineScale () const;
01064 virtual ERRVALUE v_GetNullValue (INT32 BandNum, NULLVALUE& NullValue) const;
01065 virtual INT32 v_GetNumBands () const;
01066 virtual INT32 v_GetNumColumns () const { return (m_MakeParms.GetNumColumns()); }
01067 virtual INT32 v_GetNumLines () const { return (m_MakeParms.GetNumLines()); }
01068 virtual bool v_HasNullValue (INT32 BandNum) const;
01069 virtual ERRVALUE v_ReadBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
01070 virtual ERRVALUE v_ReadColumnBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
01071 virtual ERRVALUE v_SetCacheSize (INT32 NumTiles);
01072 virtual ERRVALUE v_SetCacheSize (CACHEMODE CacheFlags);
01073 virtual ERRVALUE v_SetNullValue (INT32 BandNum, const NULLVALUE* NullValue);
01074 virtual ERRVALUE v_WriteBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert);
01075
01076 void AssignValues (const RVCRASTINFO& rinfo);
01077 int ComputeNumPyramidLevels (PYRAMID flags);
01078 PYRAMID ValidatePyramidFlags (PYRAMID flags) const;
01079
01080
01081 RASTERHANDLE* m_RasterHandle;
01082
01083
01084 MAKEPARMS m_MakeParms;
01085 LINKTYPE m_LinkType;
01086 INT32 m_XTiles;
01087 INT32 m_YTiles;
01088 INT32 m_TileSize;
01089
01090 friend class MAKEPARMS;
01091 #endif // GENERATING_DOXYGEN_OUTPUT
01092 };
01093
01094
01095
01096
01097
01098
01099 class RASTER::GETOBJFILTER_ISSELECTABLE : public GETOBJFILTER {
01100 public:
01101
01102
01103 GETOBJFILTER_ISSELECTABLE (
01104 RVC::IMAGE::CELLTYPE CellTypes,
01105 bool DenyTypes = false,
01106 bool NeedSameSize = false
01107 );
01108
01109 virtual ~GETOBJFILTER_ISSELECTABLE () {}
01110 private:
01111 #ifndef GENERATING_DOXYGEN_OUTPUT
01112 IMAGE::CELLTYPE m_CellTypes;
01113 bool m_NeedSameSize;
01114
01115 virtual bool v_IsSelectable (const RVC::OBJITEM& objitem, int position = -1);
01116 virtual bool v_IsValidList (const RVC::OBJITEMLIST& objlist);
01117 #endif // GENERATING_DOXYGEN_OUTPUT
01118 };
01119
01120
01121
01122
01123
01124 class RASTER::GETOBJFILTER_ISOVERLAPPING : public GETOBJFILTER {
01125 public:
01126
01127
01128 GETOBJFILTER_ISOVERLAPPING (
01129 const RVC::OBJITEM& SrcObjItem,
01130 RVC::IMAGE::CELLTYPE CellTypes,
01131 bool DenyTypes = false,
01132 bool NeedSameSize = false
01133 );
01134
01135 virtual ~GETOBJFILTER_ISOVERLAPPING () {}
01136 private:
01137 #ifndef GENERATING_DOXYGEN_OUTPUT
01138 RASTER::GETOBJFILTER_ISSELECTABLE m_IsSelectable;
01139 GEOSPATIAL::GETOBJFILTER_ISOVERLAPPING m_IsOverlapping;
01140
01141 virtual bool v_IsSelectable (const RVC::OBJITEM& objitem, int position = -1);
01142 virtual bool v_IsValidList (const RVC::OBJITEMLIST& objlist);
01143 #endif // GENERATING_DOXYGEN_OUTPUT
01144 };
01145
01146
01147
01148 class RASTER::LINKPARMS {
01149 protected:
01150
01151
01152 LINKPARMS (
01153 const FILEPATH& filename,
01154 RASTER::LINKTYPE LinkType,