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