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