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
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071 #ifndef INC_GRE_LAYOUT_H
00072 #define INC_GRE_LAYOUT_H
00073
00074 #ifndef INC_GRE_GROUP_H
00075 #include <gre/group.h>
00076 #endif
00077
00078 #ifndef INC_GRE_LAYER_H
00079 #include <gre/layer.h>
00080 #endif
00081
00082 #ifndef INC_MI32_MPLAYOUT_H
00083 #include <mi32/mplayout.h>
00084 #endif
00085
00086 #ifndef INC_MI32_MATTE_H
00087 #include <mi32/matte.h>
00088 #endif
00089
00090
00091 #define POSNMODE_Tiled 0
00092 #define POSNMODE_Overlapped 1
00093 #define POSNMODE_MapLayout 2
00094
00095 #define GRE_WorldRangeFP 1000000.0
00096
00097
00098
00099 class GRE_LAYOUT : public GRE_VIEWABLE, public SERIALIZABLE {
00100
00101 public:
00102
00103
00104 enum CREATEFLAGS {
00105 CREATEFLAG_None = 0x0000,
00106 CREATEFLAG_Hardcopy = 0x0010,
00107 CREATEFLAG_DeferCreate = 0x0020
00108 };
00109
00110 GRE_GROUP* firstgroup;
00111 GRE_GROUP* lastgroup;
00112 UINT8 PosnMode;
00113 LAYOUTPARMS HardcopyLayout;
00114 double PosnScale;
00115 DRECT2D FullExtents;
00116
00117 #ifdef X_NATIVE
00118
00119 static GRE_LAYOUT* GetFromWidget (
00120 Widget w
00121 );
00122 #endif
00123
00124
00125 static void SMLClassInstall (
00126 SMLCONTEXT *context
00127 );
00128
00129
00130 explicit GRE_LAYOUT (
00131 CREATEFLAGS flags = CREATEFLAG_None
00132 );
00133
00134
00135 virtual ~GRE_LAYOUT ();
00136
00137
00138
00139 ERRVALUE AddGroupLayer (
00140 MDLGPARENT dlgparent,
00141 GRE_LAYER::TYPE layertype,
00142 GRE_LAYER **player = 0
00143 );
00144
00145
00146 ERRVALUE AddGroupMulti (
00147 MDLGPARENT dlgparent
00148 );
00149
00150
00151 int AddGroupSaved (
00152 MDLGPARENT dlgparent,
00153 bool fromtext
00154 );
00155
00156
00157 void Create (
00158 CREATEFLAGS createflags = CREATEFLAG_None
00159 );
00160
00161
00162 ERRVALUE CreateGroup (
00163 GRE_GROUP **retgroup = 0,
00164 GRE_GROUP::CREATEFLAGS createflags = GRE_GROUP::CREATEFLAG_None,
00165 GRE::LISTPOS listpos = GRE::LISTPOS_After,
00166 GRE_GROUP *refgroup = 0
00167 );
00168
00169
00170
00171 void DestroyAllGroups (
00172 );
00173
00174
00175 virtual GRE_LAYER *FindLayerByID (
00176 UINT32 LayerID
00177 ) const;
00178
00179
00180 GRE_GROUP* FindPointGroup (
00181 const DPOINT2D& point,
00182 GRE_FIND_FLAGS findflags,
00183 const SPATREF::COORDREFSYS *pPointCRS = NULL
00184 ) const;
00185
00186
00187 GRE_GROUP* GetActiveGroup (
00188 ) const { return (m_ActiveGroup); }
00189
00190
00191 GRE_GROUP* GetFirstGroup (
00192 ) const { return (firstgroup); }
00193
00194
00195 virtual void GetFullName (
00196 MISTRING& name
00197 ) const;
00198
00199
00200 DRECT2D GetHardcopyMarginRect (
00201 ) const {
00202 DRECT2D MarginRect;
00203 MarginRect.xinit = HardcopyLayout.LeftMargin;
00204 MarginRect.xlast = MarginRect.xinit + HardcopyLayout.FullPrintableWidth;
00205 MarginRect.ylast = HardcopyLayout.FullHeight - HardcopyLayout.TopMargin;
00206 MarginRect.yinit = MarginRect.ylast - HardcopyLayout.FullPrintableHeight;
00207 return (MarginRect);
00208 }
00209
00210
00211 DRECT2D GetHardcopyPageRect (
00212 ) const {
00213 DRECT2D PageRect;
00214 PageRect.xinit = PageRect.yinit = 0.0;
00215 PageRect.xlast = HardcopyLayout.FullWidth;
00216 PageRect.ylast = HardcopyLayout.FullHeight;
00217 return (PageRect);
00218 }
00219
00220
00221 DRECT2D GetHardcopyPrintableRect (
00222 ) const {
00223 DRECT2D PrintableRect;
00224 PrintableRect.xinit = PrintableRect.yinit = 0.0;
00225 PrintableRect.xlast = HardcopyLayout.FullPrintableWidth;
00226 PrintableRect.ylast = HardcopyLayout.FullPrintableHeight;
00227 return (PrintableRect);
00228 }
00229
00230
00231 double GetHardcopyScale (
00232 ) const { return (HardcopyLayout.Scale); }
00233
00234
00235 double GetHardcopyZoom (
00236 ) const { return (HardcopyLayout.Zoom); }
00237
00238
00239 GRE_GROUP* GetLastGroup (
00240 ) const { return (lastgroup); }
00241
00242
00243 MATTE& GetMatte (
00244 ) { return (m_Matte); }
00245
00246
00247 GRE_LAYOUT* GetNext (
00248 ) const { return (m_NextLayout); }
00249
00250
00251 virtual UINT32 GetNextLayerID (
00252 ) const;
00253
00254
00255 UINT8 GetPosnMode (
00256 ) const { return (PosnMode); }
00257
00258
00259 virtual ERRVALUE GetSizeMeters (
00260 DPOINT2D& sizemeters
00261 );
00262
00263
00264 bool GroupControlsGetAutoRedraw (
00265 ) const;
00266
00267
00268 int GroupControlsGetLayoutUnits (
00269 ) const;
00270
00271
00272 bool GroupControlsIsOpen (
00273 ) const;
00274
00275
00276
00277
00278 void GroupControlsOpen (
00279 MDLGPARENT dlgparent = 0,
00280 GRE_GROUP* group = 0,
00281 UINT32 flags = 0
00282 );
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293 void GroupControlsSetPrompts (
00294 double hoffset,
00295 double hsize,
00296 double voffset,
00297 double vsize,
00298 double relscale
00299 );
00300
00301
00302 void GroupControlsSetTabLayout (
00303 );
00304
00305
00306 virtual bool HasLayers (
00307 ) const;
00308
00309
00310 bool HasTempLayers (
00311 ) const;
00312
00313
00314 void InvalidateAllViews (
00315 );
00316
00317
00318 bool IsBeingLoaded (
00319 ) const { return (m_pSerializer != 0); }
00320
00321
00322
00323 bool IsCreated (
00324 ) const { return (m_IsCreated); }
00325
00326
00327 bool IsHardcopy (
00328 ) const { return (PosnMode == POSNMODE_MapLayout); }
00329
00330
00331 bool IsValid (
00332 ) const;
00333
00334
00335 bool KeepInTNTserverCache (
00336 ) const { return (m_KeepInTNTserverCache); }
00337
00338
00339 virtual ERRVALUE SerialRead (
00340 SERIALIZER& serializer
00341 );
00342
00343
00344 virtual ERRVALUE SerialWrite (
00345 SERIALIZER& serializer,
00346 const char *tagname = 0
00347 ) const;
00348
00349
00350 void SetActiveGroup (
00351 GRE_GROUP *group
00352 );
00353
00354
00355 void SetKeepInTNTserverCache (
00356 bool keepInTNTserverCache
00357 ) {
00358 if (m_KeepInTNTserverCache != keepInTNTserverCache) m_IsModified = true;
00359 m_KeepInTNTserverCache = keepInTNTserverCache;
00360 }
00361
00362
00363 void SetModified (
00364 bool notify = true,
00365 bool ViewsNeedRedraw = true
00366 );
00367
00368
00369 int SetName (
00370 const MIUNICODE *newname
00371 );
00372
00373
00374 void SetNeedUpdatePositions (
00375 ) { m_NeedUpdatePositions = 1; }
00376
00377
00378 void SetPosnMode (
00379 UINT8 posnmode
00380 );
00381
00382
00383 int SetZoomToFitPage (
00384 );
00385
00386
00387 ERRVALUE TemplateRead (
00388 SERIALIZER& serializer
00389 );
00390
00391
00392 ERRVALUE TemplateWrite (
00393 SERIALIZER& serializer
00394 );
00395
00396
00397 int UpdatePositions (
00398 bool ForceUpdate = true
00399 );
00400
00401
00402 void ValidateGroupAttachments (
00403 );
00404
00405 protected:
00406
00407 #ifdef X_NATIVE
00408
00409 virtual void ObjMgrInitItems (
00410 );
00411 #endif
00412
00413 private:
00414 #ifndef GENERATING_DOXYGEN_OUTPUT
00415
00416 static const SERIALIZER::ITEMDEF* SerialGetItemDef (
00417 SERIALIZER& serializer
00418 );
00419
00420 static const SERIALIZER::ITEMDEF* TemplateGetItemDef (
00421 );
00422
00423 GRE_GROUP* m_ActiveGroup;
00424 GRE_LAYOUT *m_PrevLayout;
00425 GRE_LAYOUT *m_NextLayout;
00426 bool m_IsCreated;
00427 bool m_NeedUpdatePositions;
00428 bool m_KeepInTNTserverCache;
00429 SERIALIZER *m_pSerializer;
00430 INT32 m_tilecols;
00431 INT32 m_tilerows;
00432 MIUNICODE m_name[16];
00433 mutable MIUNICODE m_activegroupname[GRE_GROUP_NAMELEN];
00434 MATTE m_Matte;
00435
00436 #ifdef X_NATIVE
00437 MXDHANDLE m_pDlgObjMgr;
00438 #endif
00439
00440 #ifdef X_NATIVE
00441 virtual void OnNotifyGreObjMgr (const GRE_CALLBACK_MSG& msg);
00442 #endif
00443
00444
00445 #ifdef X_NATIVE
00446 virtual void v_DlgObjMgrClose ();
00447 virtual ERRVALUE v_DlgObjMgrCreate (MDLGPARENT dlgparent, const MISTRING& title);
00448 virtual void v_DlgObjMgrDestroy ();
00449 virtual bool v_DlgObjMgrIsOpen () const;
00450 virtual void v_DlgObjMgrOpen ();
00451 #endif
00452 virtual bool v_Destroy (bool NotifyParent);
00453 virtual MICON v_GetIcon () const;
00454 virtual const char* v_GetTypeName () const;
00455
00456
00457 virtual ERRVALUE v_DrawAllViews (GRE::DRAWCONDITION condition);
00458 virtual double v_GetDesignScale () const;
00459 virtual const DRECT2D& v_GetExtents () const;
00460 virtual void v_SetDesignScale (double DesignScale, bool notify);
00461
00462 GRE_LAYOUT (const GRE_LAYOUT&);
00463 GRE_LAYOUT& operator= (const GRE_LAYOUT&);
00464
00465 #endif
00466 };
00467
00468 DEFINE_ENUM_OPERATORS(GRE_LAYOUT::CREATEFLAGS);
00469
00470
00471
00472
00473 #ifdef WIN32_MFC
00474
00475 class GRE_MFC_LAYOUT : public GRE_MFC_VIEWABLE {
00476 protected:
00477 GRE_MFC_LAYOUT();
00478 DECLARE_DYNCREATE(GRE_MFC_LAYOUT)
00479
00480 public:
00481
00482 GRE_LAYOUT* GetLayout (
00483 ) const {
00484 return (m_layout);
00485 }
00486
00487 public:
00488 virtual ~GRE_MFC_LAYOUT();
00489
00490 protected:
00491 GRE_LAYOUT *m_layout;
00492
00493 protected:
00494
00495
00496
00497 DECLARE_MESSAGE_MAP()
00498 };
00499
00500 #endif
00501
00502
00503
00504 #endif // INC_GRE_LAYOUT_H