00001
00103 #ifndef INC_GRE_LRPINMAP_H
00104 #define INC_GRE_LRPINMAP_H
00105
00106 #ifndef INC_GRE_LAYER_H
00107 #include <gre/layer.h>
00108 #endif
00109
00110 #ifndef INC_GRE_LEGEND_H
00111 #include <gre/legend.h>
00112 #endif
00113
00114 #ifndef INC_GRE_DATATIP_H
00115 #include <gre/datatip.h>
00116 #endif
00117
00118 #ifndef INC_MI32_DATETIME_H
00119 #include <mi32/datetime.h>
00120 #endif
00121
00122 #ifndef INC_MI32_LATLONFM_H
00123 #include <mi32/latlonfm.h>
00124 #endif
00125
00126
00127 class QUADTREE;
00128 namespace RVC {
00129 class DBTABLE;
00130 }
00131 namespace MGUI {
00132 class DLG_SPATMOD_IMAGE_VIEW;
00133 class FORM_SPATMOD_IMAGE_VIEW;
00134 }
00135
00136 namespace GRE {
00137
00138
00139 class LAYER_PINMAP : public GRE::LAYER {
00140 public:
00141
00142 class DISPPARM : public GRE::LAYER::DISPPARM {
00143 public:
00144
00145 class DLG;
00146
00147 static ERRVALUE SerializerCB_StyleFileName (SERIALIZER&, const SERIALIZERITEM *, void *, SERIALIZERITEM::ACTION);
00148
00149 RVC::OBJITEM StyleObjItem;
00150 INT16 xfield;
00151 INT16 yfield;
00152 INT16 zfield;
00153 INT16 labelfield;
00154 INT16 ThumbnailSymbolField;
00155 UINT8 LabelPosn;
00156 POINTSTYLE PointStyle;
00157 UINT16 SelectMode;
00158 UINT16 StyleMode;
00159 MIUNICODE *QueryString;
00160 TEXTSTYLE LabelStyle;
00161 DMSTYPE LatLonFormat;
00162 UINT8 XYUnitCode;
00163 UINT8 ZUnitCode;
00164 GRE::DATATIPPARMS DataTip;
00165 SPATREF::COORDREFSYS PointCRS;
00166
00167 DISPPARM ();
00168 DISPPARM (
00169 const DISPPARM& rhs
00170 ): GRE::LAYER::DISPPARM(rhs) { Copy(rhs); }
00171 virtual ~DISPPARM (
00172 ) { Free(); }
00173
00174 DISPPARM& operator= (const DISPPARM& rhs) {
00175 if (this != &rhs) {
00176 Free();
00177 Copy(rhs);
00178 }
00179 return (*this);
00180 }
00181
00183 const RVC::OBJITEM& GetObjItemTable (
00184 ) const { return (m_ObjItemTable); }
00185
00186 ERRVALUE SetObjItemTable (
00187 const RVC::OBJITEM& ObjItem
00188 );
00189
00190 protected:
00191 virtual const SERIALIZERITEM* SerialGetItemDef (SERIALIZER& serializer) const;
00192
00193 private:
00194 #ifndef GENERATING_DOXYGEN_OUTPUT
00195
00196 RVC::OBJITEM m_ObjItemTable;
00197 INT16 m_TableNumOld;
00198
00199 void Copy (const DISPPARM&);
00200 void Free ();
00201
00202 virtual ERRVALUE v_SetObjItem (const RVC::OBJITEM& objitem, bool replace);
00203 virtual ERRVALUE v_Validate ();
00204
00205 friend class LAYER_PINMAP;
00206 #endif // GENERATING_DOXYGEN_OUTPUT
00207 };
00208
00210 static void RegisterType (
00211 );
00212
00214 static void SMLClassInstall (
00215 SML::CONTEXT *context
00216 );
00217
00218 static const SML::CLASSMEMBER* GetSMLClassMembers (
00219 );
00220
00222 explicit LAYER_PINMAP (
00223 GRE::GROUP *group,
00224 CREATEFLAGS createflags = CREATEFLAG_None,
00225 GRE::LISTPOS listpos = GRE::LISTPOS_Last,
00226 GRE::LAYER *reflayer = 0
00227 );
00228
00229 virtual ~LAYER_PINMAP ();
00230
00232 const DISPPARM& GetDispParm (
00233 ) const {
00234 return (m_dispparm);
00235 }
00236
00238 ERRVALUE GetPoint (
00239 INT32 ElemNum,
00240 DPOINT3D& point
00241 );
00242
00244 ERRVALUE GetPoints (
00245 const SIMPLE_ARRAY<INT32>& ElemNums,
00246 POLYLINE& points
00247 );
00248
00249 ERRVALUE Search (
00250 const DRECT2D& SearchExtents,
00251 SIMPLE_ARRAY<INT32>& ItemList
00252 );
00253
00262 ERRVALUE SetDispParm (
00263 const DISPPARM& dispparm
00264 );
00265
00266 #ifndef GENERATING_DOXYGEN_OUTPUT
00267 class PRIVDLGDATA;
00268 class PRIVDRAWDATA;
00269 #endif
00270
00271 protected:
00272
00273 DISPPARM m_dispparm;
00274
00275 private:
00276 #ifndef GENERATING_DOXYGEN_OUTPUT
00277
00278 class DBOBSERVER;
00279 typedef LAYER_PINMAP THISCLASS;
00280
00281 friend class PRIVDRAWDATA;
00282 friend class PRIVDLGDATA;
00283 friend class DBOBSERVER;
00284
00285 GRE::LEGEND_POINT m_Legend;
00286 COMPINFO m_RecCompInfo;
00287 QUADTREE *m_SearchTree;
00288 INT32 m_LastNumRecords;
00289 INT32 m_SearchNumAdded;
00290 DBOBSERVER *m_pDBObserver;
00291 RVC::DBTABLE *m_pObjTable;
00292 DATETIME m_LastMod;
00293 bool m_DidValidateDb;
00294 #ifdef USE_MGUI
00295 INT32 m_RMBMenuRecordNum;
00296 INT32 m_RMBMenuFieldNum;
00297 MGUI::DLG_SPATMOD_IMAGE_VIEW* m_pDlgImageView;
00298 #endif
00299 GRE::GEOMETRIC3D *m_pGeometric3D;
00300
00301 #ifdef X_NATIVE
00302 static void CB_ImageMenu(Widget, void*, void*);
00303 #endif
00304 static void LegendMsgHandler (GRAPHICTREEITEM_MSG *msg);
00305 static void SMLSET_CRS (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SML::ARG*);
00306 static void SMLGET_StyleByScript (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SMLARG*);
00307 static void SMLSET_Field (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SMLARG*);
00308 static void SMLSET_StyleByScript (SML::CONTEXT*, SML::CLASSMEMBER*, void*, SMLARG*);
00309
00310 void ExtendRegion (const DPOINT3D& point);
00311 void OnRecordChangeBegin (INT32 RecNum);
00312 void OnRecordChangeEnd (INT32 RecNum);
00313 #ifdef USE_MGUI
00314 void OnMenuPopupImage (MGUI::ID id, bool ToggleOn);
00315 void OnPrevPhoto (MGUI::FORM_SPATMOD_IMAGE_VIEW*);
00316 void OnNextPhoto (MGUI::FORM_SPATMOD_IMAGE_VIEW*);
00317 void PopupPhoto ();
00318 #endif
00319 ERRVALUE OpenPrivateObject ();
00320 ERRVALUE SetupObserver ();
00321
00322
00323 bool NewFeaturesFilter (LAYERDC& layerdc);
00324 bool IsModeWireFrame (LAYERDC& layerdc);
00325 bool IsSurfaceFlat (LAYERDC& layerdc);
00326
00327
00328 ERRVALUE Draw2D (LAYERDC& layerdc);
00329 ERRVALUE Draw3D (LAYERDC& layerdc);
00330
00332 #ifdef X_NATIVE
00333 virtual void v_AppendPopupMenuItems (Widget, const DPOINT2D*, MENUITEMARRAY&);
00334 #endif
00335 virtual ERRVALUE v_AssignObject (const RVC::OBJITEM& objitem, MDLGPARENT dlgparent);
00336 virtual bool v_CanShowDetails () const;
00337 virtual GRE::LAYERSECTION* v_ConstructLayerSection (GRE::VIEW* view);
00338 #ifdef USE_MGUI
00339 virtual int v_ControlPanel (MDLGPARENT dlgparent,UINT32 flags = 0);
00340 #endif
00341 virtual GRE::LAYER* v_Copy (GRE::GROUP *group) const;
00342 virtual const GRE::DATATIPPARMS* v_DataTipGetParms (int component) const;
00343 virtual int v_DataTipGetString (ELEMTYPE ElemType, ELEMNUM ElemNum, MISTRING& string, SPATMOD::IMAGE::STAGE_ARRAY& images);
00344 virtual ERRVALUE v_DataTipSetParms (int component, const GRE::DATATIPPARMS& DataTipParms);
00345 virtual ERRVALUE v_Draw (GRE::LAYERDC& layerdc);
00346 virtual ERRVALUE v_DrawElementLow (GRE::LAYERDC& layerdc, ELEMTYPE ElemType, ELEMNUM ElemNum, const void *style);
00347 virtual ERRVALUE v_DrawElementsLow (LAYERDC& layerdc, ELEMTYPE ElemType, const UNSIGNEDSET *pElemSet, const void *style);
00348 virtual ELEMNUM v_FindClosestElement (const DPOINT2D& point, double searchdist, double *distret, int component, const UNSIGNEDSET *pSearchSet, GRE::FINDFLAGS findflags);
00349 virtual int v_GetComponent (ELEMTYPE ElemType) const;
00350 virtual MICONSTRUCT* v_GetComponentIcon (int component) const;
00351 virtual COMPINFO* v_GetComponentInfo (int component);
00352 virtual MISTRING v_GetComponentName (int component) const;
00353 virtual const void* v_GetElemDefaultStyle (ELEMTYPE ElemType) const;
00354 virtual UINT16 v_GetElemDrawSelectionMode (ELEMTYPE ElemType) const;
00355 virtual ERRVALUE v_GetElemExtents (ELEMTYPE ElemType, ELEMNUM ElemNum, DRECT3D& Extents);
00356 virtual ELEMTYPE v_GetElemType (int component) const;
00357 virtual bool v_GetLabelColor(GRE::LAYERDC&, const GRE::LABELPLACE&, COLOR&);
00358 virtual const GRE::LEGEND* v_GetLegend (ELEMTYPE ElemType);
00359 virtual INT64 v_GetNumElements (ELEMTYPE ElemType);
00360 virtual INT64 v_GetNumElementsDeleted (ELEMTYPE ElemType);
00361 virtual const RVC::OBJITEM& v_GetObjItem (int component) const;
00362 virtual ERRVALUE v_GetStyleInfo (ELEMTYPE ElemType, RVC::OBJITEM& ObjItem, RVC::OBJECTNAME& TableName);
00363 virtual bool v_HasLegend () const;
00364 virtual int v_HighlightElementsByRegion (ELEMTYPE ElemType, const REGION2D& Region, TESTCRITERIA RegionTest, GRE::VIEW *firstview, GRE::DRAWFLAGS drawflags);
00365 #ifdef USE_MGUI
00366 virtual void v_MenuAddViewPopupItems (MGUI::MENU& menu, const DPOINT2D *point, GRE::VIEW *view);
00367 virtual ERRVALUE v_PromptObject (bool OpenCtrlPanel, MDLGPARENT dlgparent);
00368 #endif
00369 virtual const char* v_SerialGetTagName () const;
00370 virtual ERRVALUE v_SerialRead (SERIALIZER& serializer);
00371 virtual void v_SetElemDrawSelectionMode (ELEMTYPE ElemType, UINT16 SelectMode);
00372 virtual void v_SetLegendSampleFlags (MGD::STYLESAMPLEFLAGS SampleFlags);
00373 virtual ERRVALUE v_SetStyleObjItem (const RVC::OBJITEM& ObjItem);
00374 virtual int v_TestElementByRegion (ELEMTYPE ElemType, ELEMNUM ElemNum, const REGION2D& Region, TESTCRITERIA TestMode);
00375 #ifdef USE_MGUI
00376 virtual MGUI::CTRL_TREE::ITEMHND v_TreeViewAddUpdateLegend (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00377 virtual void v_TreeViewAddUpdateDetails (GRE::CTRL_TREEVIEW& TreeView, MGUI::CTRL_TREE::ITEMHND hndParent, MGUI::CTRL_TREE::ITEMHND hndInsertAfter);
00378 #endif
00379 virtual int v_UpdateExtents (bool forceupdate);
00380
00381 LAYER_PINMAP (const LAYER_PINMAP&);
00382 LAYER_PINMAP& operator= (const LAYER_PINMAP&);
00383
00384 #endif // GENERATING_DOXYGEN_OUTPUT
00385 };
00386
00387
00388 }
00389
00390
00391
00392 #endif // INC_GRE_LRPINMAP_H
00393