00001
00027 #ifndef INC_GRE_LRGENERIC_H
00028 #define INC_GRE_LRGENERIC_H
00029
00030 #ifndef INC_GRE_LAYER_H
00031 #include <gre/layer.h>
00032 #endif
00033
00034 #ifndef INC_RVC_DELEGATE_H
00035 #include <mi32/delegate.h>
00036 #endif
00037
00038 namespace GRE {
00039
00040
00042 class LAYER_GENERIC : public GRE::LAYER {
00043 public:
00044
00045 typedef FastDelegate<int(MDLGPARENT)> DELEGATE_CONTROLPANEL;
00046 typedef FastDelegate<int(const DPOINT2D& point, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY& images, GRE::VIEW* view)> DELEGATE_DATATIPGETCONTENT;
00047 typedef FastDelegate<int(GRE::LAYERDC&)> DELEGATE_DRAW;
00048
00050 explicit LAYER_GENERIC (
00051 GRE::GROUP *group,
00052 CREATEFLAGS createflags = CREATEFLAG_None,
00053 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00054 GRE::LAYER *reflayer = 0
00055 );
00056
00058 virtual ~LAYER_GENERIC ();
00059
00060 void SetDelegateOnControlPanel (
00061 DELEGATE_CONTROLPANEL delegate
00062 ) { m_DelegateControlPanel = delegate; }
00063
00064 void SetDelegateOnDataTipGetContent (
00065 DELEGATE_DATATIPGETCONTENT delegate
00066 ) { m_DelegateDataTipGetContent = delegate; }
00067
00068 DEPRECATED_MSG("Use SetDelegateOnDraw2D") void SetDelegateOnDraw (
00069 DELEGATE_DRAW delegate
00070 ) { SetDelegateOnDraw2D(delegate); }
00071
00072 void SetDelegateOnDraw2D (
00073 DELEGATE_DRAW delegate
00074 ) { m_DelegateDraw2D = delegate; SetCanViewIn2D(!!delegate); }
00075
00076 void SetDelegateOnDraw3D (
00077 DELEGATE_DRAW delegate
00078 ) { m_DelegateDraw3D = delegate; SetCanViewIn3D(!!delegate); }
00079
00080 void SetDelegateOnUpdateExtents (
00081 DELEGATE_ERRVALUE_NOPARMS delegate
00082 ) { m_DelegateUpdateExtents = delegate; }
00083
00084 void SetExtents (
00085 const REGION2D& region
00086 );
00087
00088 private:
00089 #ifndef GENERATING_DOXYGEN_OUTPUT
00090
00091 class DISPPARM : public LAYER::DISPPARM {
00092 public:
00093 DISPPARM ();
00094 virtual ~DISPPARM ();
00095 private:
00096 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00097 };
00098
00099 DISPPARM m_dispparm;
00100 DELEGATE_CONTROLPANEL m_DelegateControlPanel;
00101 DELEGATE_DATATIPGETCONTENT m_DelegateDataTipGetContent;
00102 DELEGATE_DRAW m_DelegateDraw2D;
00103 DELEGATE_DRAW m_DelegateDraw3D;
00104 DELEGATE_ERRVALUE_NOPARMS m_DelegateUpdateExtents;
00105
00106
00107 #ifdef USE_MGUI
00108 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00109 #endif
00110 virtual LAYER* v_Copy (GRE::GROUP *NewGroup) const;
00111 virtual int v_DataTipGetString (const DPOINT2D& point, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY& images, GRE::VIEW* view);
00112 virtual bool v_DataTipHasAvailable () const;
00113 virtual bool v_DataTipHasEnabled () const;
00114 virtual ERRVALUE v_Draw (GRE::LAYERDC& layerdc);
00115 virtual const char* v_SerialGetTagName () const;
00116 virtual int v_UpdateExtents (bool forceupdate);
00117
00118 LAYER_GENERIC (const LAYER_GENERIC&);
00119 LAYER_GENERIC& operator= (const LAYER_GENERIC&);
00120
00121 #endif // GENERATING_DOXYGEN_OUTPUT
00122 };
00123
00124
00125 }
00126
00127 #endif // INC_GRE_LRGENERIC_H
00128