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