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