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