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 #ifndef INC_GRE_LRCAD_H
00042 #define INC_GRE_LRCAD_H
00043
00044 #ifndef INC_MI32_GRE_H
00045 #include <mi32/gre.h>
00046 #endif
00047
00048 #ifndef GENERATING_DOXYGEN_OUTPUT
00049 namespace GRE {
00050 class LABELPLACEMENT;
00051 class LABELPLACE;
00052 }
00053 #endif
00054
00055
00056
00057
00058 class GRE_LAYER_CAD : public GRE_LAYER {
00059 public:
00060
00061
00062 class DISPPARM : public GRE_LAYER::DISPPARM {
00063 public:
00064
00065 class DLG;
00066
00067 RVC::OBJITEM m_ObjItem;
00068 RVC::OBJECTNAME m_GeorefName;
00069 RVC::OBJITEM m_ObjItemStyle;
00070 INT32 BlockNum;
00071 MULTISTYLE AllSame;
00072 MULTISTYLE Hilite;
00073 UINT32 ElemDrawPixel;
00074 UINT32 ElemDrawHilitePixel;
00075 UINT16 SelectMode;
00076 UINT16 StyleMode;
00077 UINT8 CADElemSelect[(CAD_LAST + 7)/8];
00078 INT16 SelectTable;
00079 INT16 StyleTable;
00080 MIUNICODE *SelectQueryStr;
00081 MIUNICODE *StyleQueryStr;
00082 DATATIPPARMS DataTip;
00083 bool m_EnableLabelClipUnder;
00084 bool m_IsEditable;
00085 bool m_HasSaveInfo;
00086 bool m_ShowLabelBase;
00087 LINESTYLE m_LabelBaseStyle;
00088 LABELFRAMEPARMS m_LabelFrame;
00089 mutable RVC::OBJITEM m_SaveObjItem;
00090 mutable RVC::OBJITEM m_SaveObjItemStyle;
00091
00092 DISPPARM ();
00093 DISPPARM (
00094 const DISPPARM& rhs
00095 ): GRE_LAYER::DISPPARM(rhs) { Copy(rhs); }
00096 virtual ~DISPPARM (
00097 ) { Free(); }
00098
00099 DISPPARM& operator= (const DISPPARM& rhs) {
00100 if (this != &rhs) {
00101 Free();
00102 Copy(rhs);
00103 }
00104 return (*this);
00105 }
00106
00107
00108 ERRVALUE SetObject (
00109 const RVCOBJITEM& objitem,
00110 bool keepsettings = false
00111 );
00112
00113 private:
00114 #ifndef GENERATING_DOXYGEN_OUTPUT
00115 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZER::ITEMDEF *, void *, SERIALIZER::ITEMDEF::ACTION);
00116 void Copy (const DISPPARM&);
00117 void Free ();
00118 void UpdateSaveInfo () const;
00119
00120
00121 virtual ERRVALUE SerialRead (SERIALIZER& serializer);
00122 virtual ERRVALUE SerialWrite (SERIALIZER& serializer, const char *tagname = 0) const;
00123
00124
00125 virtual const SERIALIZER::ITEMDEF* SerialGetItemDef (SERIALIZER& serializer) const;
00126 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00127 virtual ERRVALUE v_Validate ();
00128
00129 friend class GRE_LAYER_CAD;
00130 #endif
00131 };
00132
00133
00134 static void RegisterType (
00135 );
00136
00137
00138 static void SMLClassInstall (
00139 SMLCONTEXT *context
00140 );
00141
00142
00143 explicit GRE_LAYER_CAD (
00144 GRE_GROUP *group,
00145 CREATEFLAGS createflags = CREATEFLAG_None,
00146 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00147 GRE_LAYER *reflayer = 0
00148 );
00149
00150 virtual ~GRE_LAYER_CAD ();
00151
00152
00153 INT32 GetDBListIndex (
00154 INT32 ElemNum,
00155 int dbhandle = -1
00156 );
00157
00158
00159 const DISPPARM& GetDispParm (
00160 ) const { return (m_dispparm); }
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170 ERRVALUE SetDispParm (
00171 const DISPPARM& dispparm
00172 );
00173
00174 protected:
00175
00176 DISPPARM m_dispparm;
00177 COMPINFO m_ElemCompInfo;
00178
00179 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00180
00181 private:
00182 #ifndef GENERATING_DOXYGEN_OUTPUT
00183
00184 #if defined(X_NATIVE) || defined(WIN32_MFC)
00185 DISPPARM::DLG* m_ControlPanelDialog;
00186 #endif
00187 RVC::CAD *m_pObjCad;
00188
00189 class PRIVDRAWDATA;
00190 friend class PRIVDRAWDATA;
00191
00192 ERRVALUE OpenPrivateObject ();
00193 int SetupRegion ();
00194
00195
00196 #ifdef WIN32_MFC
00197 virtual void v_AddTreeViewDetails (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00198 virtual void v_AddTreeViewLegend (GRE_MFC_TREEVIEW& TreeView, HTREEITEM hParent, HTREEITEM hInsertAfter);
00199 #endif
00200 virtual bool v_CanShowDetails () const;
00201 virtual GRE::LAYERVIEW* v_ConstructLayerView (GRE_VIEW*);
00202 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00203 #if defined(X_NATIVE) || defined(WIN32_MFC)
00204 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00205 #endif
00206 virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00207 virtual const DATATIPPARMS& v_DataTipGetParms (int component) const;
00208 virtual ERRVALUE v_DataTipSetParms (int component, const DATATIPPARMS& DataTipParms);
00209 virtual INT32 v_DbListIndexToElemNum (int component, INT32 index);
00210 virtual INT32 v_DbListElemNumToIndex (int component, INT32 ElemNum);
00211 virtual ERRVALUE v_Draw (GRE_LAYERDC& layerdc);
00212 virtual ERRVALUE v_DrawElementLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, INT32 ElemNum, const void *style);
00213 virtual ERRVALUE v_DrawElementsLow (GRE_LAYERDC& layerdc, ELEMTYPE ElemType, const UINT8 *ElemSet, const void *style);
00214 virtual INT32 v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UINT8 *SearchSet, GRE_FIND_FLAGS findflags);
00215 virtual int v_GetComponent (ELEMTYPE ElemType) const;
00216 virtual MICON v_GetComponentIcon (int component) const;
00217 virtual COMPINFO* v_GetComponentInfo (int component);
00218 virtual MISTRING v_GetComponentName (int component) const;
00219 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00220 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00221 virtual UINT16 v_GetElemDrawStyleMode (ELEMTYPE ElemType) const;
00222 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents);
00223 virtual ERRVALUE v_GetElemSetByExtent (ELEMTYPE ElemType, const DRECT2D& Extent, BITSET& ElemSet);
00224 virtual ELEMTYPE v_GetElemType (int component) const;
00225 virtual bool v_GetGeorefName (RVC::OBJECTNAME& name, int component = 0) const;
00226 virtual bool v_GetLabelColor (GRE_LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00227 virtual INT32 v_GetNumElements (ELEMTYPE ElemType);
00228 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00229 #ifdef WIN32_MFC
00230 virtual bool v_HasTreeViewLegend () const;
00231 #endif
00232 #if defined(X_NATIVE) || defined(WIN32_MFC)
00233 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00234 #endif
00235 virtual ERRVALUE v_ReportRawElemInfo (MISTRING& infostr, ELEMTYPE ElemType, INT32 ElemNum);
00236 virtual const char* v_SerialGetTagName () const;
00237 virtual void v_SetDftName (bool ReplaceExisting);
00238 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00239 virtual void v_SetElemDrawStyleMode (ELEMTYPE ElemType, UINT16 StyleMode);
00240 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00241 virtual int v_TestElementByRegion (ELEMTYPE ElemType, INT32 ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00242 virtual int v_UpdateExtents (bool forceupdate);
00243
00244 GRE_LAYER_CAD (const GRE_LAYER_CAD&);
00245 GRE_LAYER_CAD& operator= (const GRE_LAYER_CAD&);
00246
00247 #endif
00248 };
00249
00250
00251
00252
00253 class GRE_LAYER_SKETCH : public GRE_LAYER_CAD {
00254 public:
00255
00256 enum WARNOUTSIDE {
00257 WARNOUTSIDE_Always,
00258 WARNOUTSIDE_Once,
00259 WARNOUTSIDE_Never
00260 };
00261
00262
00263 static void RegisterType (
00264 );
00265
00266
00267 explicit GRE_LAYER_SKETCH (
00268 GRE_GROUP *group,
00269 CREATEFLAGS createflags = CREATEFLAG_None,
00270 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00271 GRE_LAYER *reflayer = 0
00272 );
00273
00274 virtual ~GRE_LAYER_SKETCH ();
00275
00276 #if defined(X_NATIVE) || defined(WIN32_MFC)
00277
00278 ERRVALUE AddElement (
00279 MDLGPARENT dlgparent,
00280 RVC::CAD::ELEMENT& Element,
00281 const MULTISTYLE& style,
00282 GRE_VIEW *view
00283 );
00284 #endif
00285
00286 #if defined(X_NATIVE) || defined(WIN32_MFC)
00287
00288 ERRVALUE DeleteLastElement (
00289 );
00290 #endif
00291
00292 #if defined(X_NATIVE) || defined(WIN32_MFC)
00293
00294 ERRVALUE DlgDefineAttribTable (
00295 MDLGPARENT dlgparent
00296 );
00297 #endif
00298
00299 #if defined(X_NATIVE) || defined(WIN32_MFC)
00300
00301 ERRVALUE FindAttribTable (
00302 );
00303 #endif
00304
00305 #if defined(X_NATIVE) || defined(WIN32_MFC)
00306
00307 RVC::STYLE& GetStyleObject (
00308 ) { return (m_StyleObj); }
00309 #endif
00310
00311 #if defined(X_NATIVE) || defined(WIN32_MFC)
00312
00313 bool HasAttribTable (
00314 ) const { return (m_AttribTableNum != TABLE_Invalid); }
00315 #endif
00316
00317 #if defined(X_NATIVE) || defined(WIN32_MFC)
00318
00319 void SetPromptForAttrib (
00320 bool PromptForAttrib
00321 ) { m_PromptForAttrib = PromptForAttrib; }
00322 #endif
00323
00324 #if defined(X_NATIVE) || defined(WIN32_MFC)
00325
00326 ERRVALUE SetupStyleObject (
00327 );
00328 #endif
00329
00330 #if defined(X_NATIVE) || defined(WIN32_MFC)
00331
00332 void SetWarnOutside (
00333 WARNOUTSIDE WarnOutside
00334 ) { m_WarnOutside = WarnOutside; }
00335 #endif
00336
00337 private:
00338 #ifndef GENERATING_DOXYGEN_OUTPUT
00339
00340 #if defined(X_NATIVE) || defined(WIN32_MFC)
00341 WARNOUTSIDE m_WarnOutside;
00342 bool m_WarnOutsideDone;
00343 bool m_PromptForAttrib;
00344 int m_AttribTableNum;
00345 DBEDIT m_DbEdit;
00346 #endif
00347 RVC::STYLE m_StyleObj;
00348 RVC::CAD m_CadSketchObj;
00349
00350 ERRVALUE OpenPrivateObject (RVC::OBJECT::OPENMODE mode);
00351
00352 #if defined(X_NATIVE) || defined(WIN32_MFC)
00353 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00354 #endif
00355 virtual GRE_LAYER* v_Copy (GRE_GROUP *group) const;
00356 virtual const char* v_SerialGetTagName () const;
00357
00358 GRE_LAYER_SKETCH (const GRE_LAYER_SKETCH&);
00359 GRE_LAYER_SKETCH& operator= (const GRE_LAYER_SKETCH&);
00360
00361 #endif
00362 };
00363
00364
00365
00366 #endif