00001
00214 #ifndef INC_GRE_LRRASTER_H
00215 #define INC_GRE_LRRASTER_H
00216
00217 #ifndef INC_GRE_LRIMAGE_H
00218 #include <gre/lrimage.h>
00219 #endif
00220
00221 #ifndef INC_GRE_LEGENDPARMS_H
00222 #include <gre/legendparms.h>
00223 #endif
00224
00225 #ifndef INC_GRE_DATATIP_H
00226 #include <gre/datatip.h>
00227 #endif
00228
00229 #ifndef INC_GRE_3DBOUND_H
00230 #include <gre/3dbound.h>
00231 #endif
00232
00233 #ifndef INC_MI32_CONTRASTPARM_H
00234 #include <mi32/contrastparm.h>
00235 #endif
00236
00237 #ifndef INC_MI32_COLORBAL_H
00238 #include <mi32/colorbal.h>
00239 #endif
00240
00241 #ifndef INC_MI32_COLORARRAY_H
00242 #include <mi32/colorarray.h>
00243 #endif
00244
00245 #ifndef INC_RVC_RASTERTHEMEPARM_H
00246 #include <rvc/rasterthemeparm.h>
00247 #endif
00248
00249 #ifndef INC_MI32_STATUNIVAR_H
00250 #include <mi32/statunivar.h>
00251 #endif
00252
00253 #ifndef INC_MI32_RASTERFILTERPARMS_H
00254 #include <mi32/rasterfilterparms.h>
00255 #endif
00256
00257 #ifndef GENERATING_DOXYGEN_OUTPUT
00258 struct MxdAnyCallbackStruct;
00259 namespace MGD {
00260 class DEVICE_MEM24;
00261 }
00262 namespace RVC {
00263 class RASTER;
00264 class NULLMASK;
00265 }
00266
00267 namespace SPATMOD {
00268 class GEOREFERENCE;
00269 namespace IMAGE{
00270 class SAMPLEITERATOR;
00271 }
00272 }
00273 #endif
00274
00275
00276 namespace GRE {
00277
00278
00279 #define RASTGRADMIN -127
00280 #define RASTGRADMAX 127
00281 #define RASTGRADOFFSET 128
00282 #define RASTGRADRANGE 256
00283
00285 class LAYER_RASTER : public GRE::LAYER_IMAGE {
00286 public:
00287
00288 enum SUBTYPE {
00289 SUBTYPE_Single = 0,
00290 SUBTYPE_Hyperspectral = 1,
00291 SUBTYPE_MultiCI = 2,
00292 SUBTYPE_MultiRGB = 3,
00293 SUBTYPE_MultiHIS = 4,
00294 SUBTYPE_MultiHBS = 5,
00295 SUBTYPE_MultiRGBI = 6,
00296 SUBTYPE_MultiCMY = 7,
00297 SUBTYPE_MultiCMYK = 8,
00298 SUBTYPE_External = 9
00299 };
00300
00301 enum COLORBLEND {
00302 COLORBLEND_RGBI_HIS = 1,
00303 COLORBLEND_RGBI_HBS = 2,
00304 COLORBLEND_RGBI_Ratio = 3,
00305 COLORBLEND_RGBI_Brovey = 4,
00306 COLORBLEND_RGBI_LAST = 4
00307 };
00308
00310 struct SHADEPARM {
00311 double AzimAngle;
00312 double ElevAngle;
00313 double ZScaling;
00314 UINT8 m_ShadeMethod;
00315 UINT8 m_SurfaceFitMethod;
00316 UINT8 spare[6];
00317
00318 SHADEPARM ()
00319 : AzimAngle(45*DEGTORAD), ElevAngle(45*DEGTORAD), ZScaling(1.0), m_ShadeMethod(1), m_SurfaceFitMethod(0) { }
00320 };
00321
00322
00323 class COMMONPARM : public LAYER::COMMONPARM {
00324 public:
00325
00327 explicit COMMONPARM (
00328 GRE::GROUP *group
00329 );
00330
00331 ~COMMONPARM ();
00332
00335 bool CanUseContrastParm (
00336 ) const { return (m_CanUseContrastParm); }
00337
00340 bool CanUseShadingParm (
00341 ) const { return (m_CanUseShadingParm); }
00342
00344 const CONTRASTPARM& GetContrastParm (
00345 int component
00346 ) const { return (m_ContrastParm[component]); }
00347
00349 STATE GetRenderBlackTransparent (
00350 ) const { return (m_RenderBlackTransparent); }
00351
00353 STATE GetRenderNullTransparent (
00354 ) const { return (m_RenderNullTransparent); }
00355
00357 STATE GetRenderWhiteTransparent (
00358 ) const { return (m_RenderWhiteTransparent); }
00359
00361 const SHADEPARM& GetShadingParm (
00362 ) const { return (m_ShadingParm); }
00363
00365 bool GetUseContrastParm (
00366 ) const { return (m_CanUseContrastParm && m_UseContrastParm); }
00367
00369 bool GetUseShadingParm (
00370 ) const { return (m_CanUseShadingParm && m_UseShadingParm); }
00371
00373 void SetContrastParm (
00374 int component,
00375 const CONTRASTPARM& ContrastParm
00376 );
00377
00379 void SetRenderBlackTransparent (
00380 STATE RenderBlackTransparent
00381 ) { m_RenderBlackTransparent = RenderBlackTransparent; }
00382
00384 void SetRenderNullTransparent (
00385 STATE RenderNullTransparent
00386 ) { m_RenderNullTransparent = RenderNullTransparent; }
00387
00389 void SetRenderWhiteTransparent (
00390 STATE RenderWhiteTransparent
00391 ) { m_RenderWhiteTransparent = RenderWhiteTransparent; }
00392
00394 void SetShadingParm (
00395 const SHADEPARM& ShadingParm
00396 ) { m_ShadingParm = ShadingParm; }
00397
00399 void SetUseContrastParm (
00400 bool UseContrastParm
00401 ) { m_UseContrastParm = UseContrastParm; }
00402
00404 void SetUseShadingParm (
00405 bool UseShadingParm
00406 ) { m_UseShadingParm = UseShadingParm; }
00407
00408 private:
00409 #ifndef GENERATING_DOXYGEN_OUTPUT
00410
00411 typedef LAYER_RASTER::COMMONPARM THISCLASS;
00412
00413 CONTRASTPARM m_ContrastParm[4];
00414 SHADEPARM m_ShadingParm;
00415 bool m_CanUseContrastParm;
00416 bool m_CanUseShadingParm;
00417 bool m_IsContrastAuto;
00418 bool m_UseContrastParm;
00419 bool m_UseShadingParm;
00420 STATE m_RenderNullTransparent;
00421 STATE m_RenderBlackTransparent;
00422 STATE m_RenderWhiteTransparent;
00423 bool m_HasChangedLayers;
00424
00425 static void GRECB_Group (const GRE::MSG *msg, void *vpCommonParm);
00426 void OnGreMsg (const GRE::MSG& msg);
00427
00428
00429 #ifdef USE_MGUI
00430 virtual FORM* v_ConstructForm () const;
00431 #endif
00432 virtual const SERIALIZERITEM* v_SerialGetItemDef () const;
00433 virtual const char* v_SerialGetTagName () const;
00434
00435
00436 COMMONPARM (const COMMONPARM& rhs);
00437 COMMONPARM& operator= (const COMMONPARM& rhs);
00438
00439 #endif // GENERATING_DOXYGEN_OUTPUT
00440 };
00441
00442
00443 class DISPPARM : public LAYER::DISPPARM {
00444 public:
00445
00446 class DLG;
00447
00448
00449 struct IOPARM {
00450 public:
00451 RVC::OBJECTNAME m_ObjNameGeoref;
00452 SHADEPARM shadeparm;
00453 DATATIPPARMS DataTip;
00454 bool DoContrast;
00455 bool DoShading;
00456 INT32 Band;
00457
00458 static const SERIALIZERITEM* SerialGetItemDef ();
00459 static const SERIALIZERITEM* SerialGetItemDefMask ();
00460 static ERRVALUE SerializerCB (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
00461
00462 IOPARM ();
00463
00464 IOPARM (
00465 const IOPARM& rhs
00466 ) { Copy(rhs); }
00467
00468 ~IOPARM ();
00469
00471 IOPARM& operator= (
00472 const IOPARM& rhs
00473 ) { if (this != &rhs) { Copy(rhs); } return (*this); }
00474
00475 INT32 GetBand (
00476 ) const { return (this->Band); }
00477
00479 bool CanContrast () const;
00480
00482 void ClearContrast ();
00483
00485 void ClearGeoreference (
00486 ) { m_ObjNameGeoref.Clear(); }
00487
00489 UINT32 GetCellType (
00490 ) const { return (m_CellType); }
00491
00493 UINT8 GetComponentComplex (
00494 ) const { return (m_ComponentComplex); }
00495
00497 const CONTRASTPARM& GetContrastParm (
00498 ) const { return (m_ContrastParm); }
00499
00502 CONTRASTPARM& GetContrastParmInternal (
00503 ) { return (m_ContrastParm); }
00504
00506 const RVC::OBJECTNAME& GetObjNameContrast (
00507 ) const { return (m_ObjNameContrast); }
00508
00510 RVC::OBJECTNAME& GetObjNameContrast (
00511 ) { return (m_ObjNameContrast); }
00512
00514 const RVC::OBJECTNAME& GetObjNameGeoreference (
00515 ) const { return (m_ObjNameGeoref); }
00516
00518 UINT16 GetNumBits (
00519 ) const;
00520
00522 INT32 GetNumColumns (
00523 ) const { return (m_NumColumns); }
00524
00526 INT32 GetNumRows (
00527 ) const { return (m_NumRows); }
00528
00529 NUMTYPE GetNumType (
00530 ) const;
00531
00533 const RVC::OBJITEM& GetObjItem (
00534 ) const { return (m_ObjItem); }
00535
00537 RVC::OBJITEM& GetObjItem (
00538 ) { return (m_ObjItem); }
00539
00541 ERRVALUE GetRange (
00542 DOUBLE_RANGE& range
00543 ) const;
00544
00546 const STAT_UNIVARIATE& GetStats (
00547 ) const { return (m_Stats); }
00548
00550 bool IsConstant (
00551 ) const { return (m_IsConstant); }
00552
00554 bool NeedContrast (
00555 UINT8 dispmode
00556 ) const;
00557
00558 void OnSerialRead();
00559
00560 void SetBand (
00561 INT32 band
00562 ) { this->Band = band; }
00563
00565 void SetComponentComplex (
00566 UINT8 ComponentComplex
00567 ) { m_ComponentComplex = ComponentComplex; }
00568
00570 void SetComponentNum (
00571 INT8 ComponentNum
00572 ) { m_ComponentNum = ComponentNum; }
00573
00575 void SetContrast (
00576 const RVC::OBJECTNAME& ObjNameContrast
00577 );
00578
00580 void SetContrastDefault (
00581 UINT8 dispmode
00582 );
00583
00585 void SetContrastParm (
00586 const CONTRASTPARM& ContrastParm
00587 );
00588
00590 void SetDataTipDefault (
00591 bool force
00592 );
00593
00596 void SetDimensions (
00597 INT32 NumColumns,
00598 INT32 NumRows
00599 ) { if (m_IsConstant) { m_NumColumns = NumColumns; m_NumRows = NumRows; } }
00600
00601 void SetGeoreference (
00602 const RVC::OBJECTNAME& ObjNameGeoref
00603 ) { m_ObjNameGeoref = ObjNameGeoref; }
00604
00608 ERRVALUE SetObjItem (
00609 const RVC::OBJITEM& ObjItem,
00610 bool UpdateSaved
00611 );
00612
00616 void SetSaveObjItem (
00617 const RVC::OBJITEM& ObjItem
00618 );
00619
00620 ERRVALUE SetupImageStage (
00621 SPATMOD::IMAGE::STAGE_AUTOPTR& StagePtr,
00622 const SPATMOD::GEOREFERENCE *pGeoreference,
00623 const GRE::LAYER_RASTER::COMMONPARM *pCommonParm,
00624 int component,
00625 bool UseValidity = true
00626 ) const;
00627
00628 void UpdateSaveInfo() const;
00629
00633 ERRVALUE Validate (UINT8 dispmode);
00634
00637 ERRVALUE ValidateContrast (UINT8 dispmode);
00638
00641 ERRVALUE ValidateDataTip ();
00642
00644 ERRVALUE ValidateObjItem ();
00645
00646 private:
00647 #ifndef GENERATING_DOXYGEN_OUTPUT
00648 RVC::OBJITEM m_ObjItem;
00649 mutable RVC::OBJITEM m_SaveObjItem;
00650 RVC::OBJECTNAME m_ObjNameContrast;
00651 CONTRASTPARM m_ContrastParm;
00652 mutable DOUBLE_RANGE m_Range;
00653 INT32 m_NumColumns;
00654 INT32 m_NumRows;
00655 UINT32 m_CellType;
00656 bool m_IsConstant;
00657 bool m_HasSaveInfo;
00658 UINT8 m_ComponentComplex;
00659 INT8 m_ComponentNum;
00660 mutable STAT_UNIVARIATE m_Stats;
00661
00662 ERRVALUE ComputeStats () const;
00663 void Copy (const IOPARM&);
00664 UINT32 GetRasterComponent () const;
00665 void InitContrast (UINT8 dispmode);
00666 static ERRVALUE SerializerCB_OldContParmType (SERIALIZER&, const SERIALIZERITEM*, void *vgroup, SERIALIZERITEM::ACTION);
00667 #endif // GENERATING_DOXYGEN_OUTPUT
00668 };
00669
00670
00671 class COLORSCALELABEL {
00672 public:
00673 double CellValue;
00674 MISTRING Label;
00675
00677 COLORSCALELABEL (
00678 ) :
00679 CellValue(0.0)
00680 { }
00681
00683 COLORSCALELABEL (
00684 const COLORSCALELABEL& rhs
00685 ) :
00686 CellValue(rhs.CellValue),
00687 Label(rhs.Label)
00688 { }
00689
00691 ~COLORSCALELABEL() {
00692 }
00693
00695 COLORSCALELABEL& operator= (
00696 const COLORSCALELABEL& rhs
00697 ) { if (this != &rhs) { CellValue = rhs.CellValue; Label = rhs.Label; } return (*this); }
00698 };
00699
00700 IOPARM ioparm[4];
00701 IOPARM maskioparm;
00702 UINT8 dispmode;
00703 UINT8 ColorBlendMode;
00704 UINT8 ColorBlendFactor;
00705 UINT8 Transparency;
00706 UINT8 UseMask;
00707 UINT8 PreferredZoom1X;
00708 bool LoadColMap;
00709 bool UseColMap;
00710 COLOR_ARRAY colmap;
00711 RVC::OBJECTNAME m_ColorPaletteName;
00712 bool m_UseThemeMap;
00713 RVC::RASTERTHEMEPARM m_themeparm;
00714 RVC::OBJECTNAME m_themeparmname;
00715 INT32 OutTileCols;
00716 INT32 OutTileLins;
00717 INT32 NumBands;
00718 CBPARMS ColorBalance;
00719 UINT8 LegendType;
00720 UINT8 LegendSampleArea;
00721 UINT8 LegendScaleMinAtTop;
00722 UINT16 LegendScaleRangeCount;
00723 LEGENDPARMS ColorSampleLegend;
00724 double xscale, yscale;
00725 MILIST<COLORSCALELABEL> ScaleLabels;
00726 double ScaleMin;
00727 double ScaleMax;
00728 double ScaleScale;
00729 double ScaleOffset;
00730 double ScaleInterval;
00731 bool ScaleMinOnTop;
00732 bool ScaleIsAuto;
00733 UINT8 ScalePlaces;
00734 UINT8 m_CellLabelPlaces;
00735 UINT8 m_EnlargeMethod;
00736 UINT8 m_ReduceMethod;
00737 UINT8 TextureFilterMode;
00738 UINT8 AnisotropicLimit;
00739 UINT8 MipMapSharpness;
00740 GRE::BOUNDPARM m_Pedestal;
00741 GRE::BOUNDPARM m_Fence;
00742 RASTER_FILTER_PARMS RasterFilterParms;
00743
00744 DISPPARM ();
00745 DISPPARM (
00746 const DISPPARM& rhs
00747 ): LAYER::DISPPARM(rhs) { Copy(rhs); }
00748 virtual ~DISPPARM ();
00749
00750 DISPPARM& operator= (
00751 const DISPPARM& rhs
00752 ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00753
00754 bool CanAutoColorMap (
00755 ) const;
00756
00757 bool CanColorBalance (
00758 ) const;
00759
00760 bool CanContrast (
00761 ) const;
00762
00763 bool CanThemeMap (
00764 ) const;
00765
00766 bool CanUseColorPalette (
00767 ) const;
00768
00769 INT32 FindClosestBand (
00770 double wavelength
00771 ) const;
00772
00773 const RVC::OBJECTNAME& GetObjNameColorPalette (
00774 ) const { return (m_ColorPaletteName); }
00775
00778 int GetShadeComponent (
00779 ) const;
00780
00781 bool LegendCanDoColorScale () const;
00782 bool LegendCanDoColorSample () const;
00783 bool LegendCanDoColorThemeScale() const;
00784
00786 ERRVALUE LoadColorPalette ();
00787
00789 ERRVALUE SetObject (
00790 const RVC::OBJITEM& objitem,
00791 bool keepsettings = false
00792 );
00793
00795 ERRVALUE SetObjects (
00796 const RVC::OBJITEMLIST& objitems,
00797 bool keepsettings = false
00798 );
00799
00800 bool TestUsesTransparency ();
00801
00804 bool ValidateMask ();
00805
00806 #ifndef GENERATING_DOXYGEN_OUTPUT
00807 static int SerializerCB_ColorPalette (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
00808 static int SerializerCB_ThemeMap (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
00809 static int SerializerCB_ColorScaleLabels (SERIALIZER&, const SERIALIZERITEM*, void*, SERIALIZERITEM::ACTION);
00810 #endif // GENERATING_DOXYGEN_OUTPUT
00811
00812 protected:
00813 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00814 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00815 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00816
00817 private:
00818 #ifndef GENERATING_DOXYGEN_OUTPUT
00819
00820 DOUBLE_ARRAY<double> m_BandWavelengths;
00821
00822 void Copy (const DISPPARM&);
00823 void Free ();
00824 void UpdateSaveInfo () const;
00825
00826 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00827 virtual ERRVALUE v_Validate ();
00828
00829 #endif // GENERATING_DOXYGEN_OUTPUT
00830 };
00831
00832 #ifdef USE_MGUI
00833 static ERRVALUE DlgGetObjects (
00834 MDLGPARENT dlgparent,
00835 UINT8 dispmode,
00836 RVC::OBJITEMLIST& ObjItemList
00837 );
00838 #endif
00839
00841 static LAYER_RASTER::COMMONPARM* GetCommonParm (
00842 GROUP *group
00843 );
00844
00846 static const SML::CLASSMEMBER* GetSMLClassMembers (
00847 );
00848
00850 static void RegisterType (
00851 );
00852
00854 static void SMLClassInstall (
00855 SML::CONTEXT *context
00856 );
00857
00859 explicit LAYER_RASTER (
00860 GRE::GROUP *group,
00861 CREATEFLAGS createflags = CREATEFLAG_None,
00862 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00863 LAYER *reflayer = 0
00864 );
00865
00866 virtual ~LAYER_RASTER ();
00867
00869 ERRVALUE AssignObjects (
00870 SUBTYPE subtype,
00871 const RVC::OBJITEMLIST& objitems
00872 );
00873
00874 bool CanDoShading (
00875 ) const;
00876
00877 void ClearPedestal (
00878 );
00879
00881 LAYER_RASTER::COMMONPARM* GetCommonParm (
00882 ) const { return (GetCommonParm(GetGroup())); }
00883
00886 const DISPPARM& GetDispParm (
00887 ) const {
00888 return (m_dispparm);
00889 }
00890
00892 GRE::LEGEND_COLORSAMPLE& GetColorSampleLegend (
00893 ) {
00894 return (m_ColorSampleLegend);
00895 }
00896
00897 #ifdef USE_MGUI
00899 int PromptObjects (
00900 SUBTYPE subtype,
00901 bool OpenCtrlPanel = false,
00902 MDLGPARENT dlgparent = 0
00903 );
00904 #endif
00905
00907 int SetColorMap (
00908 const COLOR_ARRAY& colmap,
00909 const RVC::OBJECTNAME& ColorPaletteName
00910 );
00911
00920 ERRVALUE SetDispParm (
00921 const DISPPARM& dispparm
00922 );
00923
00925 ERRVALUE SetMask (
00926 const RVC::OBJITEM& objitem
00927 );
00928
00930 void SetMaskNone ();
00931
00933 ERRVALUE SetupInitialPipelineStages (
00934 SPATMOD::IMAGE::STAGE_AUTOPTR& StagePtr,
00935 const SPATMOD::GEOREFERENCE *pGeoreference
00936 );
00937
00939 int UpdateContrastFromRegion (
00940 const REGION2D& region
00941 );
00942
00944 int UpdateContrastFullArea (
00945 );
00946
00947 protected:
00948
00949 DISPPARM m_dispparm;
00950
00951 private:
00952 #ifndef GENERATING_DOXYGEN_OUTPUT
00953
00954 typedef LAYER_IMAGE BASECLASS;
00955
00956 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00957 #ifdef X_NATIVE
00958 static void MCB_AutoColorMapApply (MxdAnyCallbackStruct*, LAYER_RASTER*);
00959 static void MCB_ColorBalance (MICALLBACKLIST::ANYCALLBACKSTRUCT*, LAYER_RASTER*);
00960 static void MCB_EditColorMap (MxdAnyCallbackStruct*, LAYER_RASTER*);
00961 #endif
00962
00963 #ifdef X_NATIVE
00964 MXDHANDLE m_DlgHndEditContrast;
00965 MXDHANDLE m_DlgHndEditColorMap;
00966 MXDHANDLE m_DlgHndAutoColorMap;
00967 MXDHANDLE m_DlgHndColorBalance;
00968 #endif
00969 GRE::TEXTURE *m_pTexture;
00970 GRE::LEGEND_COLORSAMPLE m_ColorSampleLegend;
00971 GRE::LEGEND_COLORSCALE m_ColorScaleLegend;
00972 COMPINFO m_CompInfo[4];
00973 #ifdef USE_MGUI
00974 DISPPARM::DLG *m_pDlgControlPanel;
00975 #endif
00976 mutable RVC::RASTER *m_pObjRaster[4];
00977 mutable RVC::NULLMASK *m_pObjRasterNull[4];
00978 mutable RVC::RASTER *m_pObjMask;
00979 mutable RVC::NULLMASK *m_pObjMaskNull;
00980
00981 void ClosePrivateObjects () const;
00982 #ifdef X_NATIVE
00983 void DestroyToolDialogs ();
00984 #endif
00985 ERRVALUE Draw2D (LAYERDC& layerdc);
00986 ERRVALUE Draw3D (LAYERDC& layerdc);
00987 ERRVALUE OpenPrivateObjects () const;
00988 #ifdef USE_MGUI
00989 void OnMenuTool (MGUI::ID, bool);
00990 #endif
00991 bool CB_ThemeFilter (const SPATMOD::IMAGE::SAMPLEITERATOR *it,const SPATMOD::IMAGE::SAMPLEITERATOR *itsrc, bool valid) const;
00992
00993 ERRVALUE InsertSpatialFilter (
00994 SPATMOD::IMAGE::STAGE_AUTOPTR& StagePtr
00995 );
00996
00997 void SetupLegend ();
00998
00999 ERRVALUE SetupPyramid (
01000 const TRANS2D_MAPGEN& tmg,
01001 const LRECT2D& DispUsedRect,
01002 bool &needpyramid
01003 );
01004
01005
01006 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
01007 virtual bool v_CanShowDetails () const;
01008 #ifdef USE_MGUI
01009 virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0);
01010 #endif
01011 virtual LAYER* v_Copy (GRE::GROUP *group) const;
01012 virtual void v_DataTipGetDefaultPrefix (int component, DATATIPPARMS& DataTipParms) const;
01013 virtual const DATATIPPARMS* v_DataTipGetParms (int component) const;
01014 virtual int v_DataTipGetString (const DPOINT2D& point, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY&, GRE::VIEW *view);
01015 virtual void v_DataTipSetDefault (int component, bool force);
01016 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
01017 virtual ERRVALUE v_Draw (LAYERDC& layerdc);
01018 virtual ELEMNUM v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UNSIGNEDSET *pSearchSet, GRE::FINDFLAGS findflags);
01019 virtual int v_GetComponent (ELEMTYPE ElemType) const;
01020 virtual MICONSTRUCT* v_GetComponentIcon (int component) const;
01021 virtual COMPINFO* v_GetComponentInfo (int component);
01022 virtual MISTRING v_GetComponentName (int component) const;
01023 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
01024 virtual ELEMTYPE v_GetElemType (int component) const;
01025 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
01026 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE ElemType);
01027 virtual INT64 v_GetNumElements (ELEMTYPE ElemType);
01028 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
01029 virtual double v_GetScaleMaxDetail (const DPOINT2D& point, const SPATREF::COORDREFSYS& crs, double DisplayPixelSizeMM) const;
01030 virtual bool v_HasLegend () const;
01031 virtual bool v_HasNullImageCells () const;
01032 #ifdef USE_MGUI
01033 virtual void v_MenuAddLayerItems (MGUI::MENU& menu);
01034 virtual void v_MenuAddRegionGenItems (MGUI::MENU& menu, ELEMTYPE ElemType);
01035 #endif
01036 #ifdef USE_MGUI
01037 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
01038 #endif
01039 virtual const char* v_SerialGetTagName () const;
01040 virtual void v_SetDftName (bool ReplaceExisting);
01041 virtual void v_SetObjectDescriptor (int component, const RVC::DESCRIPTOR& descriptor);
01042 #ifdef USE_MGUI
01043 virtual void v_TreeViewAddUpdateDetails (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
01044 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
01045 #endif
01046 virtual ERRVALUE v_UpdateExtents (bool forceupdate);
01047
01048 LAYER_RASTER (const LAYER_RASTER&);
01049 LAYER_RASTER& operator= (const LAYER_RASTER&);
01050
01051 #endif // GENERATING_DOXYGEN_OUTPUT
01052 };
01053
01054
01055 #define RASTERLEGENDTYPE_SampleArea 0
01056 #define RASTERLEGENDTYPE_ColorScaleContinuous 1
01057 #define RASTERLEGENDTYPE_ColorSample 2
01058 #define RASTERLEGENDTYPE_None 3
01059 #define RASTERLEGENDTYPE_ColorScaleRanges 4
01060 #define RASTERLEGENDTYPE_Thumbnail 5
01061 #define RASTERLEGENDTYPE_ColorScaleThemeRanges 6
01062
01063
01064
01065 }
01066
01067 #endif // INC_GRE_LRRASTER_H