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 #ifndef INC_GRE_LRSHAPE_H
00064 #define INC_GRE_LRSHAPE_H
00065
00066 #ifndef INC_MI32_GRE_H
00067 #include <mi32/gre.h>
00068 #endif
00069
00070 #ifndef INC_MI32_MGD2_H
00071 #include <mi32/mgd2.h>
00072 #endif
00073
00074 #ifndef GENERATING_DOXYGEN_OUTPUT
00075 namespace RVC {
00076 class SHAPE;
00077 }
00078
00079 namespace GRE {
00080 class LABELPLACEMENT;
00081 class LABELPLACE;
00082 }
00083 #endif // GENERATING_DOXYGEN_OUTPUT
00084
00085
00086
00087
00088
00089 class GRE_LAYER_SHAPE : public GRE_LAYER {
00090 public:
00091
00092
00093 class DISPPARM : public GRE_LAYER::DISPPARM {
00094 public:
00095
00096 class DLG;
00097
00098
00099 class ELEMENTPARMS {
00100 public:
00101 SELECTPARMS Select;
00102 POINTPARMS::POINTSTYLEPARMS m_PointStyle;
00103 LINEPARMS::LINESTYLEPARMS m_LineStyle;
00104 POLYPARMS::POLYSTYLEPARMS m_PolyStyle;
00105 DATATIPPARMS DataTip;
00106
00107 LEGENDPARMS Legend;
00108 RVC::OBJECTNAME LegendElemTableName;
00109
00110 ELEMENTPARMS ();
00111 ELEMENTPARMS (const ELEMENTPARMS& rhs);
00112 ~ELEMENTPARMS ();
00113
00114 ELEMENTPARMS& operator= (const ELEMENTPARMS& rhs);
00115 void Validate ();
00116 AUTOLABELPARMS AutoLabel;
00117 };
00118
00119 RVC::OBJITEM m_ObjItem;
00120 RVC::OBJECTNAME m_GeorefName;
00121 RVC::OBJITEM m_ObjItemStyle;
00122 ELEMENTPARMS m_Element;
00123 bool m_EnablePolyFill3D;
00124 bool m_EnableLabelClipUnder;
00125 bool m_IsEditable;
00126 bool m_HasSaveInfo;
00127 mutable RVC::OBJITEM m_SaveObjItem;
00128 mutable RVC::OBJITEM m_SaveObjItemStyle;
00129 MISTRING m_ConnectionString;
00130
00131 DISPPARM ();
00132 DISPPARM (
00133 const DISPPARM& rhs
00134 ) { Copy(rhs); }
00135
00136 virtual ~DISPPARM (
00137 ) { Free(); }
00138
00139 DISPPARM& operator= (
00140 const DISPPARM& rhs
00141 ) { if (this != &rhs) { Free(); Copy(rhs); } return (*this); }
00142
00143
00144 ERRVALUE SetObject (
00145 const RVCOBJITEM& objitem,
00146 bool keepsettings = false
00147 );
00148
00149 private:
00150 #ifndef GENERATING_DOXYGEN_OUTPUT
00151 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00152 void Copy (const DISPPARM&);
00153 void Free ();
00154 void UpdateSaveInfo () const;
00155
00156
00157 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00158 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00159
00160
00161 virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00162 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00163 virtual ERRVALUE v_Validate ();
00164
00165 friend class GRE_LAYER_SHAPE;
00166 #endif
00167 };
00168
00169
00170 static void RegisterType (
00171 );
00172
00173
00174 static void SMLClassInstall (
00175 SMLCONTEXT *context
00176 );
00177
00178
00179 explicit GRE_LAYER_SHAPE (
00180 GRE_GROUP *group,
00181 CREATEFLAGS createflags = CREATEFLAG_None,
00182 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00183 GRE_LAYER *reflayer = 0
00184 );
00185
00186 virtual ~GRE_LAYER_SHAPE ();
00187
00188
00189 const DISPPARM& GetDispParm (
00190 ) const { return (m_dispparm); }
00191
00192
00193
00194
00195
00196
00197
00198
00199 ERRVALUE SetDispParm (
00200 const DISPPARM& dispparm
00201 );
00202
00203 protected:
00204
00205 DISPPARM m_dispparm;
00206
00207 private:
00208 #ifndef GENERATING_DOXYGEN_OUTPUT
00209
00210 #ifdef X_NATIVE
00211 static void CB_ExtractRegion (Widget, void*, void*);
00212 static void CB_LegendElemListAddRmv (Widget, void*, void*);
00213 ERRVALUE OnLegendElemListAddRmv (Widget dlgparent);
00214 #endif
00215 static void DBCB_D3Point (DBCALLBACKSTRUCT*, GRE_LAYER_SHAPE*);
00216 static void DBCB_D3Poly (DBCALLBACKSTRUCT*, GRE_LAYER_SHAPE*);
00217 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00218
00219 GRE_LEGEND_POINT m_PointLegend;
00220 GRE_LEGEND_LINE m_LineLegend;
00221 GRE_LEGEND_POLY m_PolyLegend;
00222 COMPINFO m_ElementCompInfo;
00223 GRE_SCRIPTCONTEXT_STYLE m_StyleSC;
00224 int m_StyleSegPoint;
00225 int m_StyleSegLine;
00226 int m_StyleSegPoly;
00227 int m_StyleSegPoint3dBase;
00228 int m_StyleSegPoint3dExt;
00229 int m_StyleSegPoly3dExt;
00230 bool m_HaveTempDrapeRasts;
00231 RVC::OBJECT m_TempDrapeFile;
00232 RVC::OBJITEM m_TempDrapeRast;
00233 RVC::OBJITEM m_TempDrapeMask;
00234 #if defined(X_NATIVE) || defined(WIN32_MFC)
00235 DISPPARM::DLG* m_ControlPanelDialog;
00236 #endif
00237 RVC::SHAPE *m_pObjShape;
00238
00239 class PRIVDRAWDATA;
00240 friend class PRIVDRAWDATA;
00241
00242 int CallDrawFilter (GRE_LAYERDC* ldc, INT32 ElemNum, void* data) {
00243 if (m_DrawFilter != 0) return (m_DrawFilter(ldc, ELEMTYPE_All, ElemNum, data));
00244 return (1);
00245 }
00246
00247 int DrawPolyFilled3D (GRE_LAYERDC&);
00248 ERRVALUE OpenPrivateObject ();
00249 void ScalePointsZ (POLYLINE&);
00250 void Setup3D ();
00251 ERRVALUE SetupDrape3D (GRE_LAYERDC&);
00252 ERRVALUE SetupLegend ();
00253 int SetupRegion ();
00254 ERRVALUE SetupScriptContext (GRE_SCRIPTCONTEXT_DRAW& sc);
00255
00256
00257 #ifdef WIN32_MFC
00258 virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00259 virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00260 #endif
00261 #ifdef X_NATIVE
00262 virtual void v_AppendPopupMenuItems (Widget widget, const DPOINT2D *point, MENUITEMARRAY& menuitems);
00263 #endif
00264 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00265 virtual bool v_CanShowDetails () const;
00266 virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE_VIEW*);
00267 #if defined(X_NATIVE) || defined(WIN32_MFC)
00268 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00269 #endif
00270 virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00271 virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00272 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00273 virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00274 virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00275 virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00276 virtual ERRVALUE v_DrawElementSample (const GRE_ELEMSAMPLE_DC& sampledc, const RVC::ELEMENT& element, const LRECT2D& samplerect);
00277 virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00278 virtual int v_GetComponent (ELEMTYPE ElemType) const;
00279 virtual MICON v_GetComponentIcon (int component) const;
00280 virtual COMPINFO* v_GetComponentInfo (int component);
00281 virtual MISTRING v_GetComponentName (int component) const;
00282 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00283 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00284 virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00285 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00286 virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00287 virtual ELEMTYPE v_GetElemType (int component) const;
00288 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00289 virtual bool v_GetLabelColor (GRE_LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00290 virtual const GRE_LEGEND* v_GetLegend (ELEMTYPE ElemType);
00291 virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00292 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00293 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00294 #ifdef X_NATIVE
00295 virtual MENUITEM* v_GetToolMenu () const;
00296 #endif
00297 #ifdef WIN32_MFC
00298 virtual bool v_HasTreeViewLegend () const;
00299 #endif
00300 virtual bool v_IsTableUsableForComponent (int component, const RVCTABLEINFO& table) const;
00301 #if defined(X_NATIVE) || defined(WIN32_MFC)
00302 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00303 #endif
00304 virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00305 virtual const char* v_SerialGetTagName () const;
00306 virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00307 virtual void v_SetDftName (bool ReplaceExisting);
00308 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00309 virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00310 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00311 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00312 virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00313 virtual int v_UpdateExtents (bool forceupdate);
00314
00315 GRE_LAYER_SHAPE (const GRE_LAYER_SHAPE&);
00316 GRE_LAYER_SHAPE& operator= (const GRE_LAYER_SHAPE&);
00317
00318 #endif
00319 };
00320
00321
00322 #endif
00323