lrraster.h

Go to the documentation of this file.
00001 /**
00002  * \file gre/lrraster.h
00003  * \brief GRE Raster Layer definitions
00004  *
00005  * \if NODOC
00006  * $Id: lrraster.h_v 1.14 2005/03/31 16:57:06 fileserver!dwilliss Exp $
00007  *
00008  * $Log: lrraster.h_v $
00009  * Revision 1.14  2005/03/31 16:57:06  fileserver!dwilliss
00010  * Rename one of our types to MIUNICODE because it conflicted with a Microsoft #define
00011  *
00012  * Revision 1.13  2005/03/23 22:04:48  mju
00013  * Add v_closeObject.
00014  *
00015  * Revision 1.12  2005/03/01 14:22:14  mju
00016  * Add v_copy.
00017  *
00018  * Revision 1.11  2005/02/15 17:50:29  scowan
00019  * No real changes.
00020  *
00021  * Revision 1.10  2005/01/20 16:57:05  mju
00022  * Redesign layer type registration.
00023  *
00024  * Revision 1.9  2004/10/11 17:17:08  mju
00025  * Add nullmask instance to ioparm.
00026  *
00027  * Revision 1.8  2004/10/01 17:20:01  mju
00028  * Add dlgparent to assignObject.
00029  *
00030  * Revision 1.7  2004/09/20 17:38:17  vdronov
00031  * added fence and pedestal bound structures
00032  *
00033  * Revision 1.6  2004/09/16 22:25:31  vdronov
00034  * added BOUNDPARM
00035  *
00036  * Revision 1.5  2004/08/12 19:37:57  vdronov
00037  * added ClearPedestal method
00038  *
00039  * Revision 1.4  2004/06/30 13:29:12  mju
00040  * Add setobjregion.
00041  *
00042  * Revision 1.3  2004/06/28 17:53:52  mju
00043  * Convert to spatref system.
00044  *
00045  * Revision 1.2  2004/03/05 15:12:50  mju
00046  * Use virtual dtor for dispparm.
00047  *
00048  * Revision 1.1  2004/03/04 18:57:31  mju
00049  * Initial revision
00050  *
00051  * \endif
00052 **/
00053 
00054 #ifndef  INC_GRE_LRRASTER_H
00055 #define  INC_GRE_LRRASTER_H
00056 
00057 #ifndef  INC_GRE_LAYER_H
00058    #include <gre/layer.h>
00059 #endif
00060 
00061 #ifndef  INC_GRE_LEGEND_H
00062    #include <gre/legend.h>
00063 #endif
00064 
00065 #ifndef INC_MI32_RELSHADE_H
00066    #include <mi32/relshade.h>
00067 #endif
00068 
00069 #ifndef  INC_GRE_3DFILTER_H
00070    #include <gre/3dfilter.h>
00071 #endif
00072 
00073 #ifndef  INC_GRE_3DBOUND_H
00074    #include <gre/3dbound.h>
00075 #endif
00076 
00077 #ifndef GENERATING_DOXYGEN_OUTPUT
00078 namespace MGD {
00079    class DEVICE_MEM24;
00080    }
00081 namespace RVC {
00082    class NULLMASK;
00083    }
00084 #endif
00085 
00086 
00087 //===================================================================================================================
00088 
00089 #define  RASTGRADMIN      -127
00090 #define  RASTGRADMAX       127
00091 #define  RASTGRADOFFSET    128
00092 #define  RASTGRADRANGE     256
00093 
00094 //! Raster Layer class
00095 class GRE_LAYER_RASTER : public GRE_LAYER {
00096    public:
00097 
00098       enum SUBTYPE {
00099          SUBTYPE_Single =           0,
00100          SUBTYPE_Hyperspectral =    1,
00101          SUBTYPE_MultiCI =          2,
00102          SUBTYPE_MultiRGB =         3,
00103          SUBTYPE_MultiHIS =         4,
00104          SUBTYPE_MultiHBS =         5,
00105          SUBTYPE_MultiRGBI =        6,
00106          SUBTYPE_MultiCMY =         7,
00107          SUBTYPE_MultiCMYK =        8,
00108          SUBTYPE_External =         9
00109          };
00110 
00111       // GRE_LAYER_RASTER::DISPPARM
00112       class DISPPARM : public GRE_LAYER::DISPPARM {
00113          public:
00114 
00115             class DLG;
00116 
00117             // GRE_LAYER_RASTER::DISPPARM::IOPARM
00118             struct IOPARM {
00119                public:
00120                   MIUNICODE filename[FILENAME_MAX];   //!< Filename of the object
00121                   RVC::OBJECTNAME m_GeorefName;    //!< Name of georeference object
00122                   int fhandle;                     //!< RVC file handle
00123                   int ohandle;                     //!< RVC object handle
00124                   RVCRASTINFO objinfo;             //!< Raster object header
00125                   CONTPARM contparm;               //!< Contrast parameters for this raster
00126                   RASTSHADEPARM shadeparm;         //!< Relief shading parameters for this raster
00127                   DATATIPPARMS DataTip;            //!< DataTip parameters
00128                   double minvalue;                 //!< Minimum raster value from histogram
00129                   double maxvalue;                 //!< Maximum raster value from histogram
00130                   bool DoContrast;                 //!< Perform contrasting on this raster, set by OpenRast
00131                   bool ReadWrite;                  //!< Set if open for read/write
00132                   bool HasNull;                    //!< Set if has null value
00133                   bool DiagonalBuffer;             //!< Use RASTMODE_DiagonalBuffer
00134                   bool IsSubRast;                  //!< Set if this raster is a pyramid sub-raster.  Use rastinfo.parentinode to get actual inode
00135                   UINT8 IsConstant;                //!< Treat raster as "constant", output value in contparm.outconstant
00136                   UINT8 DoShading;                 //!< Perform relief shading on this raster
00137                   INT32 Band;                      //!< Band number for hyperspectral set
00138                   int (*OpenRast) (IOPARM *);      //! Open raster, read/compute contrast table if needed
00139                   int (*ReadRast) (IOPARM*, INT32 lin, INT32 col, INT32 numcols, void *rastbuf, UINT8* nullbuf);
00140                   int (*CloseRast) (IOPARM *);     //! Close the raster
00141                   int (*SetCacheRect) (IOPARM*, const LRECT2D&);
00142                   RVC::NULLMASK *m_pObjNull;
00143                   DISPPARM *dp;                    //!< Point back to DISPPARM
00144                   void *privptr;                   //!< For use by application, will be copied
00145                   bool m_HasSaveInfo;
00146                   mutable FILEPATH m_savefilepath;
00147                   mutable RVCINODENUM m_saveobjinode;
00148                   mutable RVCINODENUM m_savecontinode;
00149 
00150                   IOPARM ();
00151                   IOPARM (
00152                      const IOPARM& rhs
00153                      ) { Copy(rhs); }
00154                   ~IOPARM (
00155                      ) { Free(); }
00156 
00157                   static ERRVALUE SerializerCB (SERIALIZER&, const SERIALIZER::ITEMDEF*, void*, SERIALIZER::ITEMDEF::ACTION);
00158                   //! Assignment
00159                   IOPARM& operator= (
00160                      const IOPARM& rhs
00161                      ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00162                   //! Close object.
00163                   void Close ();
00164                private:
00165                   #ifndef GENERATING_DOXYGEN_OUTPUT
00166                   void Copy (const IOPARM&);
00167                   void Free ();
00168                   void OnSerialRead();
00169                   void UpdateSaveInfo() const;
00170                   friend class DISPPARM;
00171                   #endif // GENERATING_DOXYGEN_OUTPUT
00172                }; // End of GRE_LAYER_RASTER::DISPPARM::IOPARM
00173 
00174             // GRE_LAYER_RASTER::DISPPARM::SHADEBUF
00175             struct SHADEBUF {
00176                public:
00177 
00178                   UINT8 gradgray[RASTGRADRANGE*RASTGRADRANGE];
00179                   UINT16 *linebuf;
00180                   INT32 linebufcols;
00181                   double *idata0;
00182                   double *idata1;
00183                   double nullvalD;
00184 
00185                   SHADEBUF (
00186                      ) {
00187                      memset(this,0,sizeof(*this));
00188                      }
00189                   ~SHADEBUF (
00190                      );
00191 
00192                private:
00193                   #ifndef GENERATING_DOXYGEN_OUTPUT
00194                   SHADEBUF (const SHADEBUF&);
00195                   SHADEBUF& operator= (const SHADEBUF&);
00196                   #endif // GENERATING_DOXYGEN_OUTPUT
00197                }; // End of GRE_LAYER_RASTER::DISPPARM::SHADEBUF
00198 
00199             // GRE_LAYER_RASTER::DISPPARM::COLORSCALELABEL
00200             class COLORSCALELABEL {
00201                public:
00202                   double CellValue;             //!< Cell value to label
00203                   MISTRING Label;               //!< Label string
00204 
00205                   //! Default constructor.
00206                   COLORSCALELABEL (
00207                      ) :
00208                      CellValue(0.0)
00209                      { }
00210 
00211                   //! Copy constructor.
00212                   COLORSCALELABEL (
00213                      const COLORSCALELABEL& rhs
00214                      ) :
00215                      CellValue(rhs.CellValue),
00216                      Label(rhs.Label)
00217                      { }
00218 
00219                   //! Destructor.
00220                   ~COLORSCALELABEL() {
00221                      }
00222 
00223                   //! Assignment
00224                   COLORSCALELABEL& operator= (
00225                      const COLORSCALELABEL& rhs
00226                      ) { if (this != &rhs) { CellValue = rhs.CellValue; Label = rhs.Label; } return (*this); }
00227                }; // End of GRE_LAYER_RASTER::DISPPARM::COLORSCALELABEL class.
00228 
00229             IOPARM ioparm[4];
00230             IOPARM maskioparm;
00231             UINT8 dispmode;                  //!< Type of "display" being performed (RASTDISPMODE_xxxx)
00232             UINT8 ColorBlendMode;            //!< Color blending mode (for RGBI modes)
00233             UINT8 ColorBlendFactor;          //!< Color blending factor for ratio mode
00234             UINT8 Transparency;              //!< Layer transparency factor, 0=opaque
00235             UINT8 UseMask;                   //!< Flag: Set if mask should be used
00236             UINT8 PreferredZoom1X;           //!< Set if layer preferred for 1X zoom
00237             bool LoadColMap;                 //!< Load color palette using specified color palette name
00238             bool UseColMap;                  //!< Set if color palette should be used
00239             SIMPLE_ARRAY<COLOR> colmap;      //!< Color palette
00240             RVC::OBJECTNAME m_ColorPaletteName; //!< Name of color palette object to use / load
00241             INT32 OutTileCols;               //!< Output "raster" tile size, 0 if not needed
00242             INT32 OutTileLins;
00243             INT32 NumBands;                  //!< Number of bands in hyperspectral mode
00244             CBPARMS ColorBalance;            //!< For adjusting color
00245             UINT8 LegendType;                //!< Type of legend
00246             UINT8 LegendSampleArea;          //!< Sample area
00247             UINT8 LegendScaleMinAtTop;       //!< Put minimum value at top
00248             UINT16 LegendScaleRangeCount;    //!< Number of range boxes for ColorScaleRanges
00249             LEGENDPARMS ColorSampleLegend;
00250             double xscale, yscale;           //!< Scale from object coords to meters if no georef info available
00251             SHADEBUF *shadebuf;              //!< Buffers used in relief shading
00252             MILIST<COLORSCALELABEL> ScaleLabels;
00253             double ScaleMin;                 //!< Minimum cell value for color scale legend
00254             double ScaleMax;                 //!< Maximum cell value for color scale legend
00255             double ScaleScale;               //!< Default label will be CellValue * ScaleScale + ScaleOffset
00256             double ScaleOffset;
00257             double ScaleInterval;            //!< CellValue interval for auto label generation
00258             bool ScaleMinOnTop;              //!< Flips the legend upside down
00259             bool ScaleIsAuto;                //!< True if scale is auto-generated, false if manually edited
00260             UINT8 ScalePlaces;               //!< Number of decimal places for scale
00261             GRE::TEXTUREFILTER::MODE TextureFilterMode;
00262             UINT8 AnisotropicLimit;          //!< 2 - 64
00263             UINT8 MipMapSharpness;           //!< 0 - 100
00264             GRE::BOUNDPARM m_Pedestal;
00265             GRE::BOUNDPARM m_Fence;
00266 
00267             DISPPARM ();
00268             DISPPARM (
00269                const DISPPARM& rhs
00270                ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00271             virtual ~DISPPARM (
00272                ) { Free(); }
00273 
00274             DISPPARM& operator= (
00275                const DISPPARM& rhs
00276                ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00277 
00278             #ifndef GENERATING_DOXYGEN_OUTPUT
00279             static int SerializerCB_ColorPalette (SERIALIZER&, const SERIALIZER::ITEMDEF*, void*, SERIALIZER::ITEMDEF::ACTION);
00280             static int SerializerCB_ColorScaleLabels (SERIALIZER&, const SERIALIZER::ITEMDEF*, void*, SERIALIZER::ITEMDEF::ACTION);
00281             #endif // GENERATING_DOXYGEN_OUTPUT
00282 
00283          protected:
00284             virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00285             virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00286             virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00287 
00288          private:
00289             #ifndef GENERATING_DOXYGEN_OUTPUT
00290             void Close ();
00291             void Copy (const DISPPARM&);
00292             void Free ();
00293             void UpdateSaveInfo () const;
00294 
00295             virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00296             virtual ERRVALUE v_Validate ();
00297 
00298             friend class GRE_LAYER_RASTER;
00299             #endif // GENERATING_DOXYGEN_OUTPUT
00300          }; // End of GRE_LAYER_RASTER::DISPPARM
00301 
00302       //! Image Sample legend subclass.
00303       // GRE_LAYER_RASTER::LEGEND_IMAGESAMPLE
00304       class LEGEND_IMAGESAMPLE : public GRE_LEGEND {
00305          public:
00306             //! Individual item in legend.
00307             // GRE_LAYER_RASTER::LEGEND_IMAGESAMPLE::ITEM
00308             class ITEM : public GRE_LEGEND::ITEMBASE {
00309                public:
00310                   //! Constructor.
00311                   ITEM (
00312                      MGD::DEVICE_MEM24 *& SampleMem,
00313                      const MISTRING& label
00314                      );
00315 
00316                   //! Destructor.
00317                   virtual ~ITEM (
00318                      );
00319 
00320                   //! Draw item.
00321                   virtual void Draw (
00322                      const DRAWCONTEXT& dc,           //!< Legend drawing context
00323                      const LRECT2D& samplerect        //!< Rectangle for sample symbol, not including label
00324                      ) const;
00325 
00326                #ifdef WIN32_MFC
00327                   //! Draw item with label in TreeView (WIN32_MFC).
00328                   virtual void DrawTreeView (
00329                      void *hdc,                       //!< Windows device context
00330                      const GRE_ELEMSAMPLE_DC& dc,     //!< Legend drawing context
00331                      const CRect& rect,               //!< Bounding rectangle including label
00332                      bool HasFocus                    //!< 'true' if item has "focus"
00333                      );
00334                #endif
00335 
00336                private:
00337                   #ifndef GENERATING_DOXYGEN_OUTPUT
00338                   MGD::DEVICE_MEM24 *m_pSampleMem;
00339 
00340                   ITEM (const ITEM&);
00341                   ITEM& operator= (const ITEM&);
00342                   #endif // GENERATING_DOXYGEN_OUTPUT
00343                }; // End of GRE_LAYER_RASTER::LEGEND_IMAGESAMPLE::ITEM
00344 
00345             //! Construct legend for layer.
00346             explicit LEGEND_IMAGESAMPLE (
00347                GRE_LAYER_RASTER *layer
00348                );
00349 
00350             //! Add item to legend.
00351             //! @return TRUE if item added, FALSE if all cells NULL in specified area, < 0 if error.
00352             int AddItem (
00353                const LPOINT2D& center,
00354                const MISTRING& label
00355                );                               
00356 
00357             //! Get "preferred" item size in pixels.
00358             //! This is used for rendering legend in user interface (ie. LegendView).
00359             virtual void GetItemSizePixels (
00360                LPOINT2D& size                      //!< Size in pixels returned, not including labels
00361                ) const;
00362 
00363             //! Set item size.
00364             void SetItemSize (
00365                INT32 xsize,
00366                INT32 ysize
00367                ) {
00368                if (m_ItemSize.x != xsize || m_ItemSize.y != ysize) {
00369                   DeleteAllItems();
00370                   m_ItemSize.x = xsize;
00371                   m_ItemSize.y = ysize;
00372                   }
00373                return;
00374                }
00375 
00376          private:
00377             #ifndef GENERATING_DOXYGEN_OUTPUT
00378             LPOINT2D m_ItemSize;
00379 
00380             LEGEND_IMAGESAMPLE (const LEGEND_IMAGESAMPLE&);
00381             LEGEND_IMAGESAMPLE& operator= (const LEGEND_IMAGESAMPLE&);
00382             #endif // GENERATING_DOXYGEN_OUTPUT
00383          }; // End of GRE_LAYER_RASTER::LEGEND_IMAGESAMPLE class.
00384 
00385       //! Register this layer type
00386       static void RegisterType (
00387          );
00388 
00389       //! Method to install SML class, called by internal SML function.
00390       static void SMLClassInstall (
00391          SMLCONTEXT *context                    //!< SML context
00392          );
00393 
00394       //! Construct layer and insert into list
00395       explicit GRE_LAYER_RASTER (
00396          GRE_GROUP *group,                            //!< Group to contain layer
00397          CREATEFLAGS createflags = CREATEFLAG_None,   //!< Creation flags
00398          GRE::LISTPOS listpos = GRE::LISTPOS_Last,    //!< Position in list
00399          GRE_LAYER *reflayer = 0                      //!< Reference layer for insertion
00400          );
00401 
00402       virtual ~GRE_LAYER_RASTER ();
00403 
00404       //! Open object(s) for this layer
00405       //! @return TRUE if was opened, FALSE if open already, < 0 if error
00406       virtual int OpenObject (
00407          UINT32 filemode = RVCFILE_ReadLock,    //!< RVC file access mode
00408          MDLGPARENT dlgparent = 0               //!< Parent for dialog
00409          );
00410 
00411       //! Assign layer to use specified object(s)
00412       ERRVALUE AssignObjects (
00413          SUBTYPE subtype,                       //!< Raster layer subtype
00414          const RVC::OBJITEMLIST& objitems       //!< Object item list
00415          );
00416 
00417       bool CanDoShading (
00418          ) const;
00419 
00420       //! Retrieve layer-specific display parameters.
00421       //! @return current parameters
00422       const DISPPARM& GetDispParm (
00423          ) const {
00424          return (m_dispparm);
00425          }
00426 
00427       //! Retrieve color-sample legend.
00428       GRE_LEGEND_COLORSAMPLE& GetColorSampleLegend (
00429          ) {
00430          return (m_ColorSampleLegend);
00431          }
00432 
00433    #if defined(X_NATIVE) || defined(WIN32_MFC)
00434       //! Prompt user to select object(s) for raster layer.
00435       int PromptObjects (
00436          SUBTYPE subtype,                       //!< Raster layer subtype
00437          bool OpenCtrlPanel = false,            //!< Whether or not to show control panel after selection
00438          MDLGPARENT dlgparent = 0               //!< Parent for dialogs
00439          );
00440    #endif
00441 
00442       //! Set color palette to use
00443       int SetColorMap (
00444          const SIMPLE_ARRAY<COLOR>& colmap,
00445          const RVC::OBJECTNAME& ColorPaletteName
00446          );
00447 
00448       //! Set layer-specific display parameters.
00449       //!
00450       //! This is the recommended method for changing how an existing layer is to be
00451       //! rendered.  Validation will be performed on the specified parameters and
00452       //! adjustments made to the layer's copy if necessary.  Use of this method
00453       //! usually result in a ChangeBegin / ChangeEnd message pair, and will also
00454       //! generate a ChangeObject message if the spatial object used in the layer
00455       //! is changed.
00456       ERRVALUE SetDispParm (
00457          const DISPPARM& dispparm               //!< Parameters to set
00458          );
00459 
00460       //! Set mask to use.
00461       ERRVALUE SetMask (
00462          const RVC::OBJITEM& objitem
00463          );
00464 
00465       void SetObjRegion (
00466          const REGION2D& ObjRegion
00467          ) { m_ObjRegion = ObjRegion; }
00468 
00469       //! Set azimuth and elevation angles for relief shading.
00470       void SetShadeAngles (
00471          double AzimAngle,                      //!< Azimuth angle in RADIANS -PI to PI
00472          double ElevAngle                       //!< Elevation angle in RADIANS 0 to PI/2
00473          );
00474 
00475       //! Set portion of raster to draw
00476       void SetVisibleExtents (
00477          const LRECT2D& rect                    //!< Extents in columns/lines
00478          );
00479 
00480       //! Update constrast to compute within specified region
00481       int UpdateContrastFromRegion (
00482          const REGION2D& region                       //!< Region
00483          );
00484 
00485       void ClearPedestal (
00486          ) {if (m_Texture != 0) m_Texture->ClearPedestal(); return; };
00487 
00488    protected:
00489 
00490       DISPPARM m_dispparm;                      //!< Layer-specific display parameters
00491 
00492    private:
00493       #ifndef GENERATING_DOXYGEN_OUTPUT
00494 
00495       GRE::TEXTURE *m_Texture;
00496 
00497       static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00498    #ifdef X_NATIVE
00499       static void CB_ActionTool (Widget, void*, void*);
00500       static void MCB_AdjustShading (MxdAnyCallbackStruct*, GRE_LAYER_RASTER*);
00501       static void MCB_AutoColorMapApply (MxdAnyCallbackStruct*, GRE_LAYER_RASTER*);
00502       static void MCB_ColorBalance (MxdAnyCallbackStruct*, GRE_LAYER_RASTER*);
00503       static void MCB_EditColorMap (MxdAnyCallbackStruct*, GRE_LAYER_RASTER*);
00504    #endif
00505 
00506       GRE_LEGEND_COLORSAMPLE m_ColorSampleLegend;
00507       GRE_LEGEND_COLORSCALE m_ColorScaleLegend;
00508       LEGEND_IMAGESAMPLE m_ImageSampleLegend;
00509       COMPINFO m_CompInfo[4];
00510       mutable RVC::OBJITEM m_TempObjItem[4];
00511 
00512       ERRVALUE CreateRasterLink (MDLGPARENT dlgparent);
00513       ERRVALUE Draw2D (GRE_LAYERDC *layerdc);
00514       ERRVALUE Draw3D (GRE_LAYERDC *layerdc);
00515       void LegendReadSample (GRAPHICTREEITEM_MSG *msg);
00516       void OnActionTool (int);
00517       void SetupLegend ();
00518 
00519       ERRVALUE SetupPyramid (
00520          const TRANS2D_MAPGEN& tmg,
00521          LRECT2D *DispUsedRect,
00522          INT32 *psampleret,
00523          int *needpyramid
00524          );
00525 
00526       int SetupShading ();
00527 
00528       //! Overrides from GRE_LAYER.
00529    #ifdef WIN32_MFC
00530       virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00531       virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00532    #endif
00533       virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00534       virtual bool v_CanShowDetails () const;
00535       virtual void v_CloseObject ();
00536    #if defined(X_NATIVE) || defined(WIN32_MFC)
00537       virtual int v_ControlPanel (MDLGPARENT dlgparent, UINT32 flags = 0);
00538    #endif
00539       virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00540       virtual void v_DataTipGetDefaultPrefix (int component, DATATIPPARMS& DataTipParms) const;
00541       virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00542       virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00543       virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00544       virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00545       virtual int v_GetComponent (ELEMTYPE ElemType) const;
00546       virtual MICON v_GetComponentIcon (int component) const;
00547       virtual COMPINFO* v_GetComponentInfo (int component);
00548       virtual MISTRING v_GetComponentName (int component) const;
00549       virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00550       virtual ELEMTYPE v_GetElemType (int component) const;
00551       virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00552       virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00553       virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00554       virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00555    #ifdef X_NATIVE
00556       virtual MENUITEM* v_GetToolMenu () const;
00557    #endif
00558    #ifdef WIN32_MFC
00559       virtual bool v_HasTreeViewLegend () const;
00560    #endif
00561       virtual bool v_HasNullImageCells () const;
00562    #if defined(X_NATIVE) || defined(WIN32_MFC)
00563       virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00564    #endif
00565       virtual const char* v_SerialGetTagName () const;
00566       virtual void v_SetDftName (bool ReplaceExisting);
00567       virtual int v_UpdateExtents (bool forceupdate);
00568 
00569       friend class LEGEND_IMAGESAMPLE;
00570 
00571       GRE_LAYER_RASTER (const GRE_LAYER_RASTER&);
00572       GRE_LAYER_RASTER& operator= (const GRE_LAYER_RASTER&);
00573 
00574       #endif // GENERATING_DOXYGEN_OUTPUT
00575    }; // End of GRE_LAYER_RASTER
00576 
00577 
00578 #define  RASTERLEGENDTYPE_SampleArea            0  //!< Piece of the raster
00579 #define  RASTERLEGENDTYPE_ColorScaleContinuous  1  //!< Color scale
00580 #define  RASTERLEGENDTYPE_ColorSample           2  //!< Sample of each color, possibly with labels
00581 #define  RASTERLEGENDTYPE_None                  3  //!< No legend
00582 #define  RASTERLEGENDTYPE_ColorScaleRanges      4  //!< Ranged color scale
00583 
00584 
00585 //===================================================================================================================
00586 
00587 #endif   // INC_GRE_LRRASTER_H

Generated on Wed May 31 15:26:41 2006 for TNTsdk by  doxygen 1.3.8-20040913