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 #ifndef INC_RVC_IMAGE_H
00103 #define INC_RVC_IMAGE_H
00104
00105 #ifndef INC_RVC_GEOSPATL_H
00106 #include <rvc/geospatl.h>
00107 #endif
00108
00109 #ifndef INC_MI32_RVCRAST_H
00110 #include <mi32/rvcrast.h>
00111 #endif
00112
00113 #ifndef INC_MI32_COLORSPC_H
00114 #include <mi32/colorspc.h>
00115 #endif
00116
00117 #ifndef INC_MI32_RANGE_H
00118 #include <mi32/range.h>
00119 #endif
00120
00121
00122 namespace RVC {
00123
00124 struct AnyCallbackStruct;
00125
00126 class IMAGE : public RVC::GEOSPATIAL {
00127 public:
00128
00129
00130 enum CONVMODE {
00131 CONVMODE_None = 0,
00132 CONVMODE_ByteSpread,
00133 CONVMODE_INT8,
00134 CONVMODE_INT16,
00135 CONVMODE_INT32,
00136 CONVMODE_Float,
00137 CONVMODE_Double,
00138 CONVMODE_RGB,
00139 CONVMODE_BGR
00140 };
00141
00142
00143 enum DATATYPE {
00144 DATATYPE_Invalid = 0,
00145 DATATYPE_Unsigned,
00146 DATATYPE_Signed,
00147 DATATYPE_Float,
00148 DATATYPE_BGR,
00149 DATATYPE_RGB,
00150 DATATYPE_BGR16,
00151 DATATYPE_RGB16,
00152 DATATYPE_ComplexRI,
00153 DATATYPE_ComplexMP,
00154 DATATYPE_RGBA,
00155 DATATYPE_ARGB,
00156 DATATYPE_CMYK,
00157 DATATYPE_KCMY
00158 };
00159
00160
00161 enum CELLTYPE {
00162 CELLTYPE_Invalid = 0x00000000,
00163 CELLTYPE_Binary = 0x00000001,
00164 CELLTYPE_Unsigned_4 = 0x00000002,
00165 CELLTYPE_Unsigned_8 = 0x00000004,
00166 CELLTYPE_Unsigned_32 = 0x00000008,
00167 CELLTYPE_Unsigned_16 = 0x00000010,
00168 CELLTYPE_Unsigned_64 = 0x00000020,
00169 CELLTYPE_Signed_8 = 0x00000040,
00170 CELLTYPE_Signed_16 = 0x00000080,
00171 CELLTYPE_Signed_32 = 0x00000100,
00172 CELLTYPE_Signed_64 = 0x00000200,
00173 CELLTYPE_Float_32 = 0x00000400,
00174 CELLTYPE_Float_64 = 0x00000800,
00175 CELLTYPE_ComplexRI_64 = 0x00001000,
00176 CELLTYPE_ComplexMP_64 = 0x00002000,
00177 CELLTYPE_ComplexRI_128 = 0x00004000,
00178 CELLTYPE_ComplexMP_128 = 0x00008000,
00179 CELLTYPE_X1R5G5B5_16 = 0x00010000,
00180 CELLTYPE_X1B5G5R5_16 = 0x00020000,
00181 CELLTYPE_RedGreenBlue_24 = 0x00040000,
00182 CELLTYPE_BlueGreenRed_24 = 0x00080000,
00183 CELLTYPE_RedGreenBlueAlpha_32 = 0x00100000,
00184 CELLTYPE_AlphaRedGreenBlue_32 = 0x00200000,
00185 CELLTYPE_CyanMagentaYellowBlack_32 = 0x00400000,
00186 CELLTYPE_BlackCyanMagentaYellow_32 = 0x00800000,
00187
00188
00189
00190 CELLTYPE_None = 0x00000000,
00191 CELLTYPE_Unsigned_Max8 = (CELLTYPE_Binary + CELLTYPE_Unsigned_4 + CELLTYPE_Unsigned_8),
00192 CELLTYPE_Unsigned_Max16 = (CELLTYPE_Unsigned_Max8 + CELLTYPE_Unsigned_16),
00193 CELLTYPE_Unsigned_Max32 = (CELLTYPE_Unsigned_Max16 + CELLTYPE_Unsigned_32),
00194 CELLTYPE_Unsigned_Max64 = (CELLTYPE_Unsigned_Max32 + CELLTYPE_Unsigned_64),
00195 CELLTYPE_Signed_Max32 = (CELLTYPE_Signed_8 + CELLTYPE_Signed_16 + CELLTYPE_Signed_32),
00196 CELLTYPE_Signed_Max64 = (CELLTYPE_Signed_Max32 + CELLTYPE_Signed_64),
00197 CELLTYPE_Integer_Max32 = (CELLTYPE_Unsigned_Max32 + CELLTYPE_Signed_Max32),
00198 CELLTYPE_Integer_Max64 = (CELLTYPE_Unsigned_Max64 + CELLTYPE_Signed_Max64),
00199 CELLTYPE_Float = (CELLTYPE_Float_32 + CELLTYPE_Float_64),
00200 CELLTYPE_Scalar = (CELLTYPE_Integer_Max64 + CELLTYPE_Float),
00201 CELLTYPE_Complex = (CELLTYPE_ComplexRI_64 + CELLTYPE_ComplexMP_64 + CELLTYPE_ComplexRI_128 + CELLTYPE_ComplexMP_128),
00202 CELLTYPE_3Cell_Color = (CELLTYPE_X1R5G5B5_16 + CELLTYPE_X1B5G5R5_16 + CELLTYPE_RedGreenBlue_24 + CELLTYPE_BlueGreenRed_24),
00203 CELLTYPE_4Cell_Color = (CELLTYPE_RedGreenBlueAlpha_32 + CELLTYPE_AlphaRedGreenBlue_32 + CELLTYPE_CyanMagentaYellowBlack_32 + CELLTYPE_BlackCyanMagentaYellow_32),
00204 CELLTYPE_Color = (CELLTYPE_3Cell_Color + CELLTYPE_4Cell_Color),
00205 CELLTYPE_ColorMapValid = (CELLTYPE_Unsigned_4 + CELLTYPE_Unsigned_8 + CELLTYPE_Unsigned_16),
00206 CELLTYPE_All = (CELLTYPE_Scalar + CELLTYPE_Complex + CELLTYPE_Color)
00207 };
00208
00209 enum PACKORDER {
00210 PACKORDER_LeastSigBit = 0,
00211 PACKORDER_MostSigBit
00212 };
00213
00214 enum PYRAMID {
00215 PYRAMID_None = 0x00,
00216 PYRAMID_Rebuild = 0x01,
00217 PYRAMID_Average = 0x02,
00218 PYRAMID_Full = 0x04,
00219 PYRAMID_UseParentTileSize = 0x08,
00220 PYRAMID_UseColorMap = 0x10
00221 };
00222
00223 #ifndef GENERATING_DOXYGEN_OUTPUT
00224 class BANDPARMS;
00225 class NULLVALUE;
00226 class OBSERVER;
00227 #endif // GENERATING_DOXYGEN_OUTPUT
00228
00229
00230 IMAGE (
00231 );
00232
00233
00234 IMAGE (
00235 const IMAGE& rhs
00236 );
00237
00238
00239 virtual ~IMAGE (
00240 ) = 0;
00241
00242
00243 ERRVALUE GetBandParms (
00244 INT32 BandNum,
00245 BANDPARMS& BandParms
00246 ) const { return (v_GetBandParms(BandNum, BandParms)); }
00247
00248
00249
00250 static CELLTYPE GetCellTypeFromColorSpace (
00251 COLORSPACE ColorSpace
00252 );
00253
00254
00255
00256 static CELLTYPE GetCellTypeFromDataTypeAndNumBits (
00257 UINT32 datatype,
00258 UINT16 numbits
00259 );
00260
00261
00262 static void GetCellTypeRange (
00263 CELLTYPE CellType,
00264 DOUBLE_RANGE& Range
00265 );
00266
00267
00268
00269 static MISTRING GetCellTypeString (
00270 CELLTYPE CellType
00271 );
00272
00273
00274
00275 static COLORSPACE GetColorSpaceFromCellType (
00276 CELLTYPE CellType,
00277 bool haspalette = false
00278 );
00279
00280
00281
00282 double GetColumnScale (
00283 ) const { return (v_GetColumnScale()); }
00284
00285
00286
00287
00288 static INT32 GetCompositeBandNum (
00289 ) { return (-1); }
00290
00291
00292 static DATATYPE GetDataTypeFromCellType (
00293 CELLTYPE CellType
00294 );
00295
00296
00297
00298 static RVC::IMAGE* GetImage (
00299 const RVC::OBJECT& object
00300 );
00301
00302
00303
00304 static RVC::IMAGE* GetImage (
00305 const RVC::OBJITEM& ObjItem
00306 );
00307
00308
00309
00310 double GetLineScale (
00311 ) const { return (v_GetLineScale()); }
00312
00313
00314 ERRVALUE GetNullValue (
00315 INT32 BandNum,
00316 NULLVALUE& NullValue
00317 ) const { return (v_GetNullValue(BandNum, NullValue)); }
00318
00319
00320
00321 INT32 GetNumBands (
00322 ) const { return (v_GetNumBands()); }
00323
00324
00325 static UINT16 GetNumBitsFromCellType (
00326 CELLTYPE CellType
00327 );
00328
00329
00330
00331 INT32 GetNumColumns (
00332 ) const { return (v_GetNumColumns()); }
00333
00334
00335
00336 INT32 GetNumLines (
00337 ) const { return (v_GetNumLines()); }
00338
00339
00340
00341 static RVC::OBJTYPESET GetObjTypeSet (
00342 );
00343
00344
00345
00346 bool HasNullValue (
00347 INT32 BandNum
00348 ) const { return (v_HasNullValue(BandNum)); }
00349
00350
00351 static bool IsImage (
00352 RVC::OBJTYPE ObjType
00353 );
00354
00355
00356 ERRVALUE ReadBand (
00357 INT32 Band,
00358 INT32 Line,
00359 INT32 StartColumn,
00360 void *data,
00361 INT32 Length = 1,
00362 CONVMODE Convert = CONVMODE_None
00363 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, Convert)); }
00364
00365
00366 ERRVALUE ReadBand (
00367 INT32 Band,
00368 INT32 Line,
00369 INT32 StartColumn,
00370 INT8 *data,
00371 INT32 Length = 1
00372 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00373
00374
00375 ERRVALUE ReadBand (
00376 INT32 Band,
00377 INT32 Line,
00378 INT32 StartColumn,
00379 UINT8 *data,
00380 INT32 Length = 1
00381 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00382
00383
00384 ERRVALUE ReadBand (
00385 INT32 Band,
00386 INT32 Line,
00387 INT32 StartColumn,
00388 INT16 *data,
00389 INT32 Length = 1
00390 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00391
00392
00393 ERRVALUE ReadBand (
00394 INT32 Band,
00395 INT32 Line,
00396 INT32 StartColumn,
00397 UINT16 *data,
00398 INT32 Length = 1
00399 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00400
00401
00402 ERRVALUE ReadBand (
00403 INT32 Band,
00404 INT32 Line,
00405 INT32 StartColumn,
00406 INT32 *data,
00407 INT32 Length = 1
00408 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00409
00410
00411 ERRVALUE ReadBand (
00412 INT32 Band,
00413 INT32 Line,
00414 INT32 StartColumn,
00415 UINT32 *data,
00416 INT32 Length = 1
00417 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00418
00419
00420 ERRVALUE ReadBand (
00421 INT32 Band,
00422 INT32 Line,
00423 INT32 StartColumn,
00424 float *data,
00425 INT32 Length = 1
00426 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_Float)); }
00427
00428
00429 ERRVALUE ReadBand (
00430 INT32 Band,
00431 INT32 Line,
00432 INT32 StartColumn,
00433 double *data,
00434 INT32 Length = 1
00435 ) const { return (v_ReadBand(Band, Line, StartColumn, data, Length, CONVMODE_Double)); }
00436
00437
00438 ERRVALUE ReadColumnBand (
00439 INT32 Band,
00440 INT32 Line,
00441 INT32 StartColumn,
00442 void *data,
00443 INT32 Length = 1,
00444 CONVMODE Convert = CONVMODE_None
00445 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, Convert)); }
00446
00447
00448 ERRVALUE ReadColumnBand (
00449 INT32 Band,
00450 INT32 Line,
00451 INT32 StartColumn,
00452 INT8 *data,
00453 INT32 Length = 1
00454 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00455
00456
00457 ERRVALUE ReadColumnBand (
00458 INT32 Band,
00459 INT32 Line,
00460 INT32 StartColumn,
00461 UINT8 *data,
00462 INT32 Length = 1
00463 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00464
00465
00466 ERRVALUE ReadColumnBand (
00467 INT32 Band,
00468 INT32 Line,
00469 INT32 StartColumn,
00470 INT16 *data,
00471 INT32 Length = 1
00472 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00473
00474
00475 ERRVALUE ReadColumnBand (
00476 INT32 Band,
00477 INT32 Line,
00478 INT32 StartColumn,
00479 UINT16 *data,
00480 INT32 Length = 1
00481 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00482
00483
00484 ERRVALUE ReadColumnBand (
00485 INT32 Band,
00486 INT32 Line,
00487 INT32 StartColumn,
00488 INT32 *data,
00489 INT32 Length = 1
00490 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00491
00492
00493 ERRVALUE ReadColumnBand (
00494 INT32 Band,
00495 INT32 Line,
00496 INT32 StartColumn,
00497 UINT32 *data,
00498 INT32 Length = 1
00499 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00500
00501
00502 ERRVALUE ReadColumnBand (
00503 INT32 Band,
00504 INT32 Line,
00505 INT32 StartColumn,
00506 float *data,
00507 INT32 Length = 1
00508 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_Float)); }
00509
00510
00511 ERRVALUE ReadColumnBand (
00512 INT32 Band,
00513 INT32 Line,
00514 INT32 StartColumn,
00515 double *data,
00516 INT32 Length = 1
00517 ) const { return (v_ReadColumnBand(Band, Line, StartColumn, data, Length, CONVMODE_Double)); }
00518
00519
00520
00521 ERRVALUE SetNullValue (
00522 INT32 BandNum,
00523 const NULLVALUE* NullValue
00524 ) { return (v_SetNullValue(BandNum, NullValue)); }
00525
00526
00527 ERRVALUE WriteBand (
00528 INT32 Band,
00529 INT32 Line,
00530 INT32 StartColumn,
00531 void *data,
00532 INT32 Length = 1,
00533 CONVMODE Convert = CONVMODE_None
00534 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, Convert)); }
00535
00536
00537 ERRVALUE WriteBand (
00538 INT32 Band,
00539 INT32 Line,
00540 INT32 StartColumn,
00541 INT8 *data,
00542 INT32 Length = 1
00543 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00544
00545
00546 ERRVALUE WriteBand (
00547 INT32 Band,
00548 INT32 Line,
00549 INT32 StartColumn,
00550 UINT8 *data,
00551 INT32 Length = 1
00552 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT8)); }
00553
00554
00555 ERRVALUE WriteBand (
00556 INT32 Band,
00557 INT32 Line,
00558 INT32 StartColumn,
00559 INT16 *data,
00560 INT32 Length = 1
00561 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00562
00563
00564 ERRVALUE WriteBand (
00565 INT32 Band,
00566 INT32 Line,
00567 INT32 StartColumn,
00568 UINT16 *data,
00569 INT32 Length = 1
00570 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT16)); }
00571
00572
00573 ERRVALUE WriteBand (
00574 INT32 Band,
00575 INT32 Line,
00576 INT32 StartColumn,
00577 INT32 *data,
00578 INT32 Length = 1
00579 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00580
00581
00582 ERRVALUE WriteBand (
00583 INT32 Band,
00584 INT32 Line,
00585 INT32 StartColumn,
00586 UINT32 *data,
00587 INT32 Length = 1
00588 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_INT32)); }
00589
00590
00591 ERRVALUE WriteBand (
00592 INT32 Band,
00593 INT32 Line,
00594 INT32 StartColumn,
00595 float *data,
00596 INT32 Length = 1
00597 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_Float)); }
00598
00599
00600 ERRVALUE WriteBand (
00601 INT32 Band,
00602 INT32 Line,
00603 INT32 StartColumn,
00604 double *data,
00605 INT32 Length = 1
00606 ) { return (v_WriteBand(Band, Line, StartColumn, data, Length, CONVMODE_Double)); }
00607
00608 protected:
00609
00610 static DATATYPE ConvToDATATYPE (
00611 int RvcType,
00612 UINT16 NumBits
00613 );
00614
00615 static UINT32 ConvToRastMode (
00616 CONVMODE value
00617 );
00618
00619 #ifndef GENERATING_DOXYGEN_OUTPUT
00620 static void ImageCallbackFunc (RVC::AnyCallbackStruct *cb, void *data);
00621 #endif // GENERATING_DOXYGEN_OUTPUT
00622
00623 private:
00624 #ifndef GENERATING_DOXYGEN_OUTPUT
00625
00626 virtual ERRVALUE v_GetBandParms (INT32 BandNum, BANDPARMS& BandParms) const = 0;
00627 virtual double v_GetColumnScale () const = 0;
00628 virtual double v_GetLineScale () const = 0;
00629 virtual ERRVALUE v_GetNullValue (INT32 BandNum, NULLVALUE& NullValue) const = 0;
00630 virtual INT32 v_GetNumBands () const = 0;
00631 virtual INT32 v_GetNumColumns () const = 0;
00632 virtual INT32 v_GetNumLines () const = 0;
00633 virtual bool v_HasNullValue (INT32 BandNum) const = 0;
00634 virtual ERRVALUE v_ReadBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const = 0;
00635 virtual ERRVALUE v_ReadColumnBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const = 0;
00636 virtual ERRVALUE v_SetNullValue (INT32 BandNum, const NULLVALUE* NullValue) = 0;
00637 virtual ERRVALUE v_WriteBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) = 0;
00638 #endif // GENERATING_DOXYGEN_OUTPUT
00639
00640 public:
00641
00642
00643 static UINT16 ConvToRVCTYPE (
00644 DATATYPE type,
00645 UINT16 NumBits
00646 );
00647
00648 };
00649
00650 DEFINE_ENUM_OP_BITWISE(IMAGE::CELLTYPE)
00651 DEFINE_ENUM_OP_BITWISE(IMAGE::PYRAMID);
00652
00653
00654 class IMAGE::BANDPARMS {
00655 public:
00656
00657
00658 BANDPARMS (
00659 ) :
00660 m_CellType(CELLTYPE_Invalid),
00661 m_PackOrder(PACKORDER_MostSigBit)
00662 {}
00663
00664
00665 ~BANDPARMS (
00666 ) {}
00667
00668
00669
00670 UINT16 GetNumBits (
00671 ) const { return (IMAGE::GetNumBitsFromCellType(m_CellType)); }
00672
00673
00674
00675 CELLTYPE GetCellType (
00676 ) const { return (m_CellType); }
00677
00678
00679
00680 DATATYPE GetDataType (
00681 ) const { return (IMAGE::GetDataTypeFromCellType(m_CellType)); }
00682
00683
00684
00685 PACKORDER GetPackOrder (
00686 ) const { return (m_PackOrder); }
00687
00688
00689 void SetCellType (
00690 CELLTYPE CellType
00691 ) { m_CellType = CellType; }
00692
00693
00694 void SetName (
00695 const RVCOBJECTNAME& name
00696 ) { m_Name = name; }
00697
00698
00699 void SetName (
00700 const char *name
00701 ) { m_Name.Assign(name); }
00702
00703
00704 void SetPackOrder (
00705 PACKORDER PackOrder
00706 ) { m_PackOrder = PackOrder; }
00707
00708 private:
00709 #ifndef GENERATING_DOXYGEN_OUTPUT
00710 OBJECTNAME m_Name;
00711 CELLTYPE m_CellType;
00712 PACKORDER m_PackOrder;
00713 #endif // GENERATING_DOXYGEN_OUTPUT
00714 };
00715
00716
00717
00718 class IMAGE::NULLVALUE {
00719 public:
00720
00721
00722 NULLVALUE (
00723 ): m_CellType(CELLTYPE_Invalid)
00724 {
00725 SetDefault();
00726 }
00727
00728
00729 explicit NULLVALUE (
00730 CELLTYPE CellType
00731 ): m_CellType(CellType)
00732 {
00733 SetDefault();
00734 }
00735
00736
00737 void GetValue (
00738 ANYRASTVALUE& value
00739 ) const;
00740
00741
00742
00743 ERRVALUE GetValue (
00744 INT8& value
00745 ) const;
00746
00747
00748
00749 ERRVALUE GetValue (
00750 UINT8& value
00751 ) const;
00752
00753
00754
00755 ERRVALUE GetValue (
00756 INT16& value
00757 ) const;
00758
00759
00760
00761 ERRVALUE GetValue (
00762 UINT16& value
00763 ) const;
00764
00765
00766
00767 ERRVALUE GetValue (
00768 INT32& value
00769 ) const;
00770
00771
00772
00773 ERRVALUE GetValue (
00774 UINT32& value
00775 ) const;
00776
00777
00778
00779 ERRVALUE GetValue (
00780 float& value
00781 ) const;
00782
00783
00784
00785 ERRVALUE GetValue (
00786 double& value
00787 ) const;
00788
00789
00790
00791 ERRVALUE GetValue (
00792 FCOMPLEXRI& value
00793 ) const;
00794
00795
00796
00797 ERRVALUE GetValue (
00798 FCOMPLEXMP& value
00799 ) const;
00800
00801
00802
00803 ERRVALUE GetValue (
00804 DCOMPLEXRI& value
00805 ) const;
00806
00807
00808
00809 ERRVALUE GetValue (
00810 DCOMPLEXMP& value
00811 ) const;
00812
00813
00814
00815 void SetCellType (
00816 CELLTYPE CellType
00817 ) { m_CellType = CellType; SetDefault(); }
00818
00819
00820 void SetDefault (
00821 );
00822
00823
00824 void SetValue (
00825 CELLTYPE CellType,
00826 const ANYRASTVALUE& value
00827 );
00828
00829
00830
00831 ERRVALUE SetValue (
00832 int value
00833 );
00834
00835
00836
00837 ERRVALUE SetValue (
00838 unsigned int value
00839 );
00840
00841
00842
00843 ERRVALUE SetValue (
00844 double value
00845 );
00846
00847
00848
00849 ERRVALUE SetValue (
00850 const FCOMPLEXRI& value
00851 );
00852
00853
00854
00855 ERRVALUE SetValue (
00856 const FCOMPLEXMP& value
00857 );
00858
00859
00860
00861 ERRVALUE SetValue (
00862 const DCOMPLEXRI& value
00863 );
00864
00865
00866
00867 ERRVALUE SetValue (
00868 const DCOMPLEXMP& value
00869 );
00870
00871 private:
00872 #ifndef GENERATING_DOXYGEN_OUTPUT
00873 double m_ValueD;
00874 double m_ValueD2;
00875 UINT8 m_ValueRGB[4];
00876 CELLTYPE m_CellType;
00877
00878 bool IsColor () const;
00879 bool IsComplex () const;
00880 bool IsInt () const;
00881 #endif // GENERATING_DOXYGEN_OUTPUT
00882
00883 };
00884
00885
00886
00887 class IMAGE::OBSERVER : public RVC::OBJECTOBSERVER {
00888 public:
00889 enum TYPE {
00890 TYPE_NullValueChange = 0x00000111
00891 };
00892
00893 explicit OBSERVER (
00894 RVC::IMAGE& object
00895 ) : OBJECTOBSERVER(object) {}
00896
00897 virtual ~OBSERVER (
00898 ) {}
00899
00900 private:
00901
00902 virtual void v_OnNullValueChanged (
00903 const ANYRASTVALUE& NullValue,
00904 bool IsNullUsed
00905 ) { return; }
00906
00907 #ifndef GENERATING_DOXYGEN_OUTPUT
00908 virtual void OnNotifyRaw (UINT32 reason, void *data);
00909 #endif // GENERATING_DOXYGEN_OUTPUT
00910 };
00911
00912 }
00913
00914 #endif