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 #ifndef INC_GRE_HYPERMGR_H
00036 #define INC_GRE_HYPERMGR_H
00037
00038 #ifndef INC_MI32_GRE_H
00039 #include <mi32/gre.h>
00040 #endif
00041
00042 #ifndef INC_MI32_RVCHYPER_H
00043 #include <mi32/rvchyper.h>
00044 #endif
00045
00046
00047
00048 namespace GRE {
00049
00050 class HYPERIDXMGR {
00051 public:
00052 enum FINDFLAGS {
00053 FINDFLAG_Default = 0x00,
00054 FINDFLAG_SearchAllElem = 0x01,
00055 FINDFLAG_FirstOnly = 0x02
00056 };
00057 };
00058 DEFINE_ENUM_OP_BITWISE(HYPERIDXMGR::FINDFLAGS);
00059
00060 }
00061
00062
00063
00064
00065 #define HYPERDRAWFLAG_Highlight 0x01
00066 #define HYPERDRAWFLAG_Unhighlight 0x02
00067 #define HYPERDRAWFLAG_ShowTransparent 0x04
00068 #define HYPERDRAWFLAG_NoDraw 0x08
00069
00070 struct MDISPHYPERSHAPE {
00071 DPOINT2D min;
00072 DPOINT2D max;
00073 COLOR color;
00074 INT32 elem;
00075 UINT32 NumPoints;
00076 INT32 NumLinks;
00077 INT16 ShapeType;
00078 UINT8 Highlighted;
00079 DPOINT2D *points;
00080 HYPERLINK *Links;
00081 };
00082
00083 struct MDISPHYPERSHAPELIST {
00084 int NumShapes;
00085 int NumAllocated;
00086 MDISPHYPERSHAPE *Shapes;
00087 };
00088
00089 struct MDISPHYPERLINKLIST {
00090 int NumLinks;
00091 int NumAllocated;
00092 HYPERLINK *Links;
00093 MDISPHYPERLINKLIST ()
00094 { memset(this,0,sizeof(*this)); }
00095 };
00096
00097
00098
00099
00100
00101 #ifndef GENERATING_DOXYGEN_OUTPUT
00102 #if defined(WIN32_MFC)
00103
00104 class GRE_MFC_TOOL_HYPERNAV : public GRE_TOOL {
00105 public:
00106
00107
00108 explicit GRE_MFC_TOOL_HYPERNAV (
00109 GRE_MFC_VIEW *view
00110 );
00111
00112
00113 virtual ~GRE_MFC_TOOL_HYPERNAV ();
00114
00115
00116 bool GetVerifySelection (
00117 ) const { return (m_VerifySelection); }
00118
00119
00120 ERRVALUE GoBack ();
00121
00122
00123 ERRVALUE GoHome ();
00124
00125
00126 void SetVerifySelection (
00127 bool VerifySelection
00128 ) { m_VerifySelection = VerifySelection; }
00129
00130 private:
00131
00132 struct ARROWSHAPE {
00133 INT32 num;
00134 double dist;
00135 };
00136
00137 struct ARROWLIST {
00138 int NumShapes;
00139 int NumAllocated;
00140 ARROWSHAPE *Shapes;
00141 void *ToolTip;
00142 };
00143
00144 struct HYPERSTACK {
00145 MIUNICODE filename[FILENAME_MAX];
00146 INT32 inode;
00147 HYPERLINK link;
00148 MDISPHYPERSHAPELIST SiblingList;
00149 INT32 CurrentSiblingNum;
00150 MIUNICODE layoutfname[FILENAME_MAX];
00151 INT32 layoutinode;
00152 HYPERSTACK *prev;
00153 };
00154
00155 class GTOOL;
00156
00157 GRE_MFC_VIEW *m_mfcview;
00158 GTOOL *m_pgtool;
00159 HYPERSTACK *m_Stack;
00160 MDISPHYPERLINKLIST m_LinkList;
00161
00162 DPOINT2D m_MapPoint;
00163 SPATREF::COORDREFSYS m_MapCoordRefSys;
00164
00165 bool m_ShowLinks;
00166 bool m_ShowHiddenLinks;
00167 bool m_VerifySelection;
00168
00169 void Apply ();
00170 int CreateSiblingList (GRE_GROUP*);
00171 virtual bool DoActivate ();
00172 virtual void DoDeactivate ();
00173 virtual void DoResume ();
00174 virtual void DoSuspend ();
00175 void FindNeighbors ();
00176 void FreeList ();
00177 void FreeStackTop ();
00178 void ReplaceLevel (const HYPERLINK& link, bool push = true);
00179 void SelectLink ();
00180 void UpdatePosition ();
00181
00182 friend class GRE_MFC_TOOL_HYPERNAV::GTOOL;
00183 };
00184 #endif
00185 #endif
00186
00187
00188
00189
00190 ERRVALUE MdispHyperDrawShape (
00191 GRE_VIEW *view,
00192 GRE_LAYER *layer,
00193 int obj,
00194 const TRANS2D_MAPGEN& LayerToDisp,
00195 INT32 shapenum,
00196 UINT32 drawflags
00197 );
00198
00199
00200 ERRVALUE MdispHyperDrawShape (
00201 GRE_VIEW *view,
00202 GRE_LAYER *layer,
00203 int obj,
00204 INT32 shapenum,
00205 UINT32 drawflags
00206 );
00207
00208
00209 int MdispHyperDrawShapes (
00210 GRE_VIEW *view,
00211 UINT32 drawflags
00212 );
00213
00214
00215 void MdispHyperEllipseToRect (
00216 DPOINT2D *pt,
00217 double rx,
00218 double ry,
00219 double theta,
00220 DPOINT2D *c
00221 );
00222
00223
00224
00225
00226 int MdispHyperFindLayerElemShape (
00227 GRE_LAYER *layer,
00228 int ShapeType,
00229 INT32 ElemNum
00230 );
00231
00232
00233
00234
00235 int MdispHyperFindLayerObjShapes (
00236 GRE_VIEW *view,
00237 GRE_LAYER *layer,
00238 int obj,
00239 const DPOINT2D& lpoint,
00240 INT32 **ShapeList,
00241 GRE::HYPERIDXMGR::FINDFLAGS flags = GRE::HYPERIDXMGR::FINDFLAG_Default
00242 );
00243
00244
00245 int MdispHyperFindLinks (
00246 GRE_VIEW *view,
00247 const DPOINT2D *spoint,
00248 MDISPHYPERLINKLIST *linklist,
00249 GRE::HYPERIDXMGR::FINDFLAGS flags = GRE::HYPERIDXMGR::FINDFLAG_Default
00250 );
00251
00252
00253 int MdispHyperFindLinksView (
00254 GRE_VIEW *view,
00255 const DPOINT2D *lpoint,
00256 MDISPHYPERLINKLIST *linklist,
00257 GRE::HYPERIDXMGR::FINDFLAGS flags = GRE::HYPERIDXMGR::FINDFLAG_Default
00258 );
00259
00260
00261 void MdispHyperFreeLinkList (
00262 MDISPHYPERLINKLIST *linkedlist
00263 );
00264
00265
00266 int MdispHyperFindNeighbors (
00267 GRE_LAYOUT *layout,
00268 GRE_LAYOUT *playout,
00269 const DPOINT2D& point,
00270 const FILEPATH& parentfilename,
00271 const MIUNICODE *parentobjname,
00272 const FILEPATH& curfilename,
00273 const MIUNICODE *curobjname,
00274 HYPERLINK neighbors[8]
00275 );
00276
00277
00278 void MdispHyperFreeShapeList (
00279 MDISPHYPERSHAPELIST *shapelist
00280 );
00281
00282
00283 int MdispHyperGetLayerObjShapeList (
00284 GRE_LAYER *layer,
00285 int obj,
00286 MDISPHYPERSHAPE **pShapes,
00287 INT32 *pNumShapes
00288 );
00289
00290
00291 int MdispHyperGetLinkObjType (
00292 int linktype
00293 );
00294
00295
00296 bool MdispHyperHasLinks (
00297 GRE_VIEWABLE *viewable
00298 );
00299
00300
00301 bool MdispHyperHasLinks (
00302 GRE_VIEW *view,
00303 const DPOINT2D& spoint,
00304 GRE::HYPERIDXMGR::FINDFLAGS flags = GRE::HYPERIDXMGR::FINDFLAG_Default
00305 );
00306
00307
00308 void MdispHyperInit (void);
00309
00310
00311 int MdispHyperObjectClose (
00312 GRE_LAYER *layer,
00313 int obj,
00314 int CloseFile
00315 );
00316
00317
00318 int MdispHyperObjectGetHandle (
00319 GRE_LAYER *layer,
00320 int obj
00321 );
00322
00323
00324
00325
00326 int MdispHyperObjectOpen (
00327 GRE_LAYER *layer,
00328 int obj,
00329 RVCHYPERINFO *hyperinfo,
00330 int writemode
00331 );
00332
00333
00334 void MdispHyperRectToEllipse (
00335 DPOINT2D *pt,
00336 double *rx,
00337 double *ry,
00338 double *theta,
00339 DPOINT2D *c
00340 );
00341
00342
00343 int MdispHyperShapeAddToLayer (
00344 GRE_LAYER *layer,
00345 int obj,
00346 INT32 shapenum
00347 );
00348
00349
00350 int MdispHyperShapeDelete (
00351 GRE_LAYER *layer,
00352 int obj,
00353 INT32 shapenum
00354 );
00355
00356
00357
00358 ELEMTYPE MdispHyperShapeTypeToElemType (
00359 GRE_LAYER *layer,
00360 INT16 ShapeType
00361 );
00362
00363
00364 int MdispHyperShapeUpdate (
00365 GRE_LAYER *layer,
00366 int obj,
00367 INT32 shapenum
00368 );
00369
00370
00371
00372 #endif