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