00001
00072 #ifndef INC_GRE_LRREGION_H
00073 #define INC_GRE_LRREGION_H
00074
00075 #ifndef INC_GRE_LAYER_H
00076 #include <gre/layer.h>
00077 #endif
00078
00079 #ifndef INC_GRE_LEGEND_H
00080 #include <gre/legend.h>
00081 #endif
00082
00083 namespace GRE {
00084
00085 class LAYER_REGION : public GRE::LAYER {
00086 public:
00087
00088
00089 class DISPPARM : public GRE::LAYER::DISPPARM {
00090 public:
00091
00092 class DLG;
00093
00094 RVC::OBJITEM m_ObjItem;
00095 RVC::OBJITEM m_ObjItemStyle;
00096 POLYSTYLE m_Style;
00097
00098 DISPPARM ();
00099 DISPPARM (
00100 const DISPPARM& rhs
00101 ): GRE::LAYER::DISPPARM(rhs) { Copy(rhs); }
00102 virtual ~DISPPARM (
00103 ) { Free(); }
00104
00105 DISPPARM& operator= (const DISPPARM& rhs) {
00106 if (this != &rhs) {
00107 Free();
00108 Copy(rhs);
00109 }
00110 return (*this);
00111 }
00112
00114 ERRVALUE SetObject (
00115 const RVC::OBJITEM& objitem,
00116 LAYER_REGION* layer,
00117 bool keepsettings = false
00118 );
00119
00120 protected:
00121 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00122
00123 private:
00124 #ifndef GENERATING_DOXYGEN_OUTPUT
00125 void Copy (const DISPPARM&);
00126 void Free ();
00127 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZERITEM *, void *, SERIALIZERITEM::ACTION);
00128
00129 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00130 virtual ERRVALUE v_Validate ();
00131 friend class LAYER_REGION;
00132 #endif
00133 }; // End of LAYER_REGION::DISPPARM
00134
00136 static void RegisterType (
00137 );
00138
00140 explicit LAYER_REGION (
00141 GRE::GROUP *group,
00142 CREATEFLAGS createflags = CREATEFLAG_None,
00143 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00144 GRE::LAYER *reflayer = 0
00145 );
00146
00148 virtual ~LAYER_REGION ();
00149
00151 void ClearRegion (
00152 );
00153
00155 const DISPPARM& GetDispParm (
00156 ) const { return (m_dispparm); }
00157
00165 ERRVALUE SetDispParm (
00166 const DISPPARM& dispparm
00167 );
00168
00169 void SetRegion (
00170 const REGION2D& region
00171 );
00172
00173 protected:
00174
00175 DISPPARM m_dispparm;
00176
00177 private:
00178 #ifndef GENERATING_DOXYGEN_OUTPUT
00179
00180 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00181
00182 #ifdef USE_MGUI
00183 MGUI::DLGSHELL *m_pDlgControls;
00184 #endif
00185 GRE::LEGEND_POLYGON m_Legend;
00186
00187 int DrawSetup (void*, GRE::LAYERDC&);
00188
00190 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00191 #ifdef USE_MGUI
00192 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00193 #endif
00194 virtual GRE::LAYER* v_Copy (GRE::GROUP *group) const;
00195 virtual ERRVALUE v_Draw (GRE::LAYERDC& layerdc);
00196 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE ElemType);
00197 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00198 virtual bool v_HasLegend () const;
00199 #ifdef USE_MGUI
00200 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00201 #endif
00202 virtual const char* v_SerialGetTagName () const;
00203 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00204 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00205 #ifdef USE_MGUI
00206 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00207 #endif
00208 virtual int v_UpdateExtents (bool forceupdate);
00209 virtual bool v_UsesTransparency (const MGD::DEVICE *pDevice = 0) const;
00210
00211 LAYER_REGION (const LAYER_REGION&);
00212 LAYER_REGION& operator= (const LAYER_REGION&);
00213
00214 class PRIVDRAWDATA;
00215 friend class PRIVDRAWDATA;
00216 friend class DISPPARM;
00217
00218 #endif // GENERATING_DOXYGEN_OUTPUT
00219 };
00220
00221 }
00222
00223 #endif // INC_GRE_LRREGION_H