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
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 #ifndef INC_GRE_BASE_H
00136 #define INC_GRE_BASE_H
00137
00138 #ifndef INC_MI32_STDDEFNS_H
00139 #include <mi32/stddefns.h>
00140 #endif
00141
00142 #ifndef INC_RVC_STYLE_H
00143 #include <rvc/style.h>
00144 #endif
00145
00146 #ifndef INC_MI32_GREMODE_H
00147 #include <mi32/gremode.h>
00148 #endif
00149
00150 #ifndef INC_MI32_LABLSTYL_H
00151 #include <mi32/lablstyl.h>
00152 #endif
00153
00154
00155 #ifndef GENERATING_DOXYGEN_OUTPUT
00156
00157
00158 namespace GRE {
00159 class CTRL_TREEVIEW;
00160 class ELEMSAMPLE_DC;
00161 class GROUP;
00162 class GROUPVIEW;
00163 class LABELPLACE;
00164 class LABELPLACEMENT;
00165 class LAYER;
00166 class LAYER_CAD;
00167 class LAYER_FORMULA;
00168 class LAYER_LEGEND;
00169 class LAYER_LEGEND2;
00170 class LAYER_MAPGRID;
00171 class LAYER_PINMAP;
00172 class LAYER_RASTER;
00173 class LAYER_REGION;
00174 class LAYER_SCALEBAR;
00175 class LAYER_SCRIPT;
00176 class LAYER_SHAPE;
00177 class LAYER_SKETCH;
00178 class LAYER_SURFACE;
00179 class LAYER_TEXT;
00180 class LAYER_TIN;
00181 class LAYER_VECTOR;
00182 class LAYERDC;
00183 class LAYERVIEW;
00184 class LAYOUT;
00185 class LEGEND;
00186 class MSG;
00187 class OBJECT;
00188 class TOOL;
00189 class VIEW;
00190 class VIEWABLE;
00191 class VIEWPOINT3D;
00192 }
00193
00194 namespace RVC {
00195 class DBASE;
00196 }
00197 #endif // GENERATING_DOXYGEN_OUTPUT
00198
00199
00200 #define GRE_SERIAL_VERSION 3
00201
00202 namespace GRE {
00203
00204
00205 enum LISTPOS {
00206 LISTPOS_First = 0,
00207 LISTPOS_After = 1,
00208 LISTPOS_Before = 2,
00209 LISTPOS_Last = 3
00210 };
00211
00212
00213 enum DRAWCONDITION {
00214 DRAWCONDITION_Always,
00215 DRAWCONDITION_IfNeeded,
00216 DRAWCONDITION_IfAutoUpdate
00217 };
00218
00219
00220 enum DRAWFLAGS {
00221 DRAWFLAG_None = 0x00000000,
00222 DRAWFLAG_ViewInView = 0x00000001,
00223 DRAWFLAG_OnlyHighlighted = 0x00000002,
00224 DRAWFLAG_Erase = 0x00000010,
00225 DRAWFLAG_ForceDraw = 0x00000020,
00226 DRAWFLAG_UpdateSearchTree = 0x00000040,
00227 DRAWFLAG_UpdateScreen = 0x00000080,
00228 DRAWFLAG_NoUpdateScreen = 0x00000100,
00229 DRAWFLAG_NoHighlighting = 0x00000200,
00230 DRAWFLAG_UpdateBuffers = 0x00000400,
00231 DRAWFLAG_SelectChanged = DRAWFLAG_UpdateBuffers,
00232 DRAWFLAG_AllNonLocViews = 0x00001000,
00233 DRAWFLAG_NoMessage = 0x00004000,
00234 DRAWFLAG_Wireframe = 0x00008000,
00235 DRAWFLAG_NoResumeTool = 0x00010000,
00236 DRAWFLAG_NoBlankScreen = 0x00040000,
00237 DRAWFLAG_NoCallbacks = 0x00400000,
00238 DRAWFLAG_CheckDrawnSet = 0x00800000,
00239 DRAWFLAG_ReduceSpeckle3D = 0x01000000,
00240 DRAWFLAG_UseDataTipColor = 0x02000000,
00241 DRAWFLAG_UseHighlightColor = 0x04000000,
00242 DRAWFLAG_UseActiveColor = 0x08000000,
00243 DRAWFLAG_NoCheckVisible = 0x10000000,
00244 DRAWFLAG_LabelPlacementPass = 0x20000000,
00245 };
00246 DEFINE_ENUM_OP_BITWISE(DRAWFLAGS)
00247
00248
00249 enum FINDFLAGS {
00250 FINDFLAG_ViewCoords = 0x0000,
00251 FINDFLAG_DisplayCoords = 0x0001,
00252 FINDFLAG_LayerCoords = 0x0002,
00253 FINDFLAG_UseClosest = 0x0004,
00254 FINDFLAG_NoSingleLayer = 0x0008,
00255 FINDFLAG_No3D = 0x0010,
00256 FINDFLAG_SearchDrawnSet = 0x0020,
00257 FINDFLAG_MapCoords = 0x0040
00258 };
00259 DEFINE_ENUM_OP_BITWISE(FINDFLAGS)
00260
00261
00262 enum RENDERTARGET {
00263 RENDERTARGET_None = 0x0000,
00264 RENDERTARGET_LayerNormal = 0x0001,
00265 RENDERTARGET_LayerHighlight = 0x0002,
00266 RENDERTARGET_LayerLabel = 0x0004,
00267 RENDERTARGET_LayerAll = 0x0007,
00268 RENDERTARGET_Group = 0x0010,
00269 RENDERTARGET_GroupActiveElems = 0x0020,
00270 RENDERTARGET_GroupMatte = 0x0040,
00271 RENDERTARGET_GroupOverlay = 0x0080,
00272 RENDERTARGET_GroupAll = 0x00F0,
00273 RENDERTARGET_ViewMemory = 0x1000,
00274 RENDERTARGET_ViewScreen = 0x8000
00275 };
00276 DEFINE_ENUM_OP_BITWISE(RENDERTARGET)
00277
00278
00279 enum HIGHLIGHTMODE {
00280 HIGHLIGHTMODE_NotSet = 0,
00281 HIGHLIGHTMODE_Replace = 1,
00282 HIGHLIGHTMODE_Add = 2,
00283 HIGHLIGHTMODE_Subtract = 3,
00284 HIGHLIGHTMODE_Toggle = 4,
00285 };
00286
00287
00288 const UINT32 UICOLOR_TextNormal = 0x00000000;
00289 const UINT32 UICOLOR_TextDim = 0x00505050;
00290 const UINT32 UICOLOR_TextNotVisibleAtScale = 0x00208020;
00291 const UINT32 UICOLOR_TextNotInExtent = 0x00800000;
00292 const UINT32 UICOLOR_TextNotYetRendered = 0x000000A0;
00293 const UINT32 UICOLOR_TextEditable = 0x00800080;
00294
00295
00296 #define MDISPSELECT_ViewCoords 0x0000
00297 #define MDISPSELECT_DisplayCoords 0x0001
00298 #define MDISPSELECT_AutoOpenDefaultLayer 0x0002
00299 #define MDISPSELECT_AutoOpenActiveLayer 0x0004
00300 #define MDISPSELECT_AutoOpenTable 0x0008
00301
00302 #define MDISPVISIBLE_AllViews 0xFFFFFFFF
00303 #define MDISPVISIBLE_Locator 0x00000001
00304 #define MDISPVISIBLE_Hardcopy 0x80000000
00305
00306
00307
00308 #define LABELSELECT_None 0x0000
00309 #define LABELSELECT_AllDrawnElem 0x0001
00310 #define LABELSELECT_IfFit 0x0002
00311
00312 #define LABELTEXT_None 0x0000
00313 #define LABELTEXT_ByAttribute 0x0001
00314 #define LABELTEXT_ByField LABELTEXT_ByAttribute
00315 #define LABELTEXT_ByScript 0x0002
00316 #define LABELTEXT_ByQuery LABELTEXT_ByScript
00317
00318 #define LABELPOSN_Default 0
00319
00320 #define LABELPOSN_PointAboveLeft 1
00321 #define LABELPOSN_PointAboveCenter 2
00322 #define LABELPOSN_PointAboveRight 3
00323 #define LABELPOSN_PointCenterLeft 4
00324 #define LABELPOSN_PointCenter 5
00325 #define LABELPOSN_PointCenterRight 6
00326 #define LABELPOSN_PointBelowLeft 7
00327 #define LABELPOSN_PointBelowCenter 8
00328 #define LABELPOSN_PointBelowRight 9
00329
00330 #define AUTOLABELOPTM_None 0x00
00331 #define AUTOLABELOPTM_Fast 0x01
00332 #define AUTOLABELOPTM_Full 0x02
00333 #define AUTOLABELOPTM_HideOverlap 0x04
00334
00335 #define AUTOLABELPRIORITY_AllSame 0
00336 #define AUTOLABELPRIORITY_ByField 1
00337 #define AUTOLABELPRIORITY_ByScript 2
00338
00339
00340
00341
00342
00343
00344 struct SELECTPARMS {
00345 public:
00346 UINT16 Mode;
00347 INT16 Table;
00348 MIUNICODE *QueryStr;
00349 RVC::OBJECTNAME TableName;
00350
00351 SELECTPARMS (
00352 );
00353 SELECTPARMS (
00354 const SELECTPARMS& rhs
00355 );
00356 ~SELECTPARMS ();
00357
00358 SELECTPARMS& operator= (
00359 const SELECTPARMS& rhs
00360 );
00361
00362
00363 void CheckTable (
00364 const RVC::DBASE& db,
00365 bool fixmode
00366 );
00367
00368
00369 bool NeedTable (
00370 ) const { return ((Mode & SELECTMODE_NeedsTable) != 0); }
00371
00372
00373 void Validate ();
00374 };
00375
00376
00377 struct STYLEPARMS {
00378 public:
00379 UINT16 Mode;
00380 INT16 Table;
00381 MIUNICODE *QueryStr;
00382 RVC::OBJECTNAME TableName;
00383
00384 STYLEPARMS (
00385 );
00386 STYLEPARMS (
00387 const STYLEPARMS& rhs
00388 );
00389 ~STYLEPARMS ();
00390
00391 STYLEPARMS& operator= (
00392 const STYLEPARMS& rhs
00393 );
00394
00395
00396 void CheckTable (
00397 const RVC::DBASE& db,
00398 bool fixmode,
00399 const RVC::STYLE::TYPE styletype = RVC::STYLE::TYPE_NumTypes
00400 );
00401
00402
00403 bool NeedTable (
00404 ) const { return ((Mode & STYLEMODE_NeedsTable) != 0); }
00405
00406
00407 void Validate ();
00408 };
00409
00410
00411 struct DATATIPPARMS {
00412 public:
00413 #ifndef GENERATING_DOXYGEN_OUTPUT
00414 class FORM;
00415 #endif // GENERATING_DOXYGEN_OUTPUT
00416
00417
00418
00419 enum PREDEFINED {
00420 PREDEFINED_None = 0x00,
00421 PREDEFINED_ImageCellValue = 0x01,
00422 PREDEFINED_LinkTileName = 0x02,
00423 };
00424
00425 RVC::OBJECTNAME TableName;
00426 RVC::OBJECTNAME FieldName;
00427 INT32 TableNum;
00428 INT32 FieldNum;
00429 UINT8 Visible;
00430 UINT8 IsNumeric;
00431 UINT8 UnitType;
00432 UINT8 m_Predefined;
00433 UINT8 UnitShown;
00434 UINT8 DecPlaces;
00435 UINT8 NoChgField;
00436 UINT8 HighlightElem;
00437 MISTRING Prefix;
00438 MISTRING Suffix;
00439
00440
00441 static const SERIALIZER::ITEMDEF *GetSerialItemDef();
00442
00443
00444 DATATIPPARMS (
00445 );
00446
00447 DATATIPPARMS (
00448 const DATATIPPARMS& rhs
00449 );
00450
00451 DATATIPPARMS& operator= (
00452 const DATATIPPARMS& rhs
00453 );
00454
00455
00456 void SetDefaultSuffix (
00457 );
00458
00459 };
00460
00461
00462 struct AUTOLABELPARMS {
00463 public:
00464 static const SERIALIZER::ITEMDEF *GetSerialItemDef();
00465 UINT8 SelectMode;
00466 UINT8 TextMode;
00467 UINT8 Posn;
00468 UINT8 Optm;
00469 UINT8 Priority;
00470 RVC::OBJECTNAME TableName;
00471 RVC::OBJECTNAME FieldName;
00472 MIUNICODE *QueryStr;
00473 TEXTSTYLE Style;
00474 LABELFRAMEPARMS FrameParms;
00475 RVC::OBJECTNAME PriorityTableName;
00476 RVC::OBJECTNAME PriorityFieldName;
00477 double m_MinScaleVisible;
00478 double m_MaxScaleVisible;
00479
00480
00481 AUTOLABELPARMS (
00482 );
00483
00484
00485 AUTOLABELPARMS (
00486 const AUTOLABELPARMS& rhs
00487 );
00488
00489
00490 ~AUTOLABELPARMS (
00491 );
00492
00493
00494 AUTOLABELPARMS& operator= (
00495 const AUTOLABELPARMS& rhs
00496 );
00497
00498
00499 void CheckTable (
00500 const RVC::DBASE& db,
00501 bool fixmode
00502 );
00503
00504
00505 bool IsSelected (
00506 double scale
00507 ) const { return (SelectMode != LABELSELECT_None && scale >= m_MinScaleVisible && (m_MaxScaleVisible <= 0.0 || scale <= m_MaxScaleVisible)); }
00508
00509 void Validate ();
00510
00511 private:
00512 #ifndef GENERATING_DOXYGEN_OUTPUT
00513 void Copy (const AUTOLABELPARMS& rhs);
00514 #endif // GENERATING_DOXYGEN_OUTPUT
00515 };
00516
00517
00518 struct LEGENDPARMS {
00519 public:
00520
00521 RVC::OBJECTNAME TableName;
00522 RVC::OBJECTNAME FieldName;
00523 MGD::STYLESAMPLEFLAGS SampleFlags;
00524
00525 LEGENDPARMS (
00526 ): SampleFlags(MGD::STYLESAMPLE_Default) { }
00527
00528 };
00529
00530
00531 struct POINTPARMS {
00532 public:
00533
00534 struct POINTSTYLEPARMS : public STYLEPARMS {
00535 POINTSTYLE Normal;
00536 };
00537
00538 SELECTPARMS Select;
00539 POINTSTYLEPARMS Style;
00540 DATATIPPARMS DataTip;
00541 AUTOLABELPARMS AutoLabel;
00542 LEGENDPARMS Legend;
00543 RVC::OBJECTNAME LegendElemTableName;
00544
00545 POINTPARMS ();
00546 POINTPARMS (const POINTPARMS& rhs);
00547 ~POINTPARMS ();
00548
00549 POINTPARMS& operator= (const POINTPARMS& rhs);
00550 void Validate ();
00551 };
00552
00553
00554 struct LINEPARMS {
00555 public:
00556
00557 struct LINESTYLEPARMS : public STYLEPARMS {
00558 LINESTYLE Normal;
00559 };
00560
00561 SELECTPARMS Select;
00562 LINESTYLEPARMS Style;
00563 DATATIPPARMS DataTip;
00564 AUTOLABELPARMS AutoLabel;
00565 LEGENDPARMS Legend;
00566 RVC::OBJECTNAME LegendElemTableName;
00567
00568 LINEPARMS ();
00569 LINEPARMS (const LINEPARMS& rhs);
00570 ~LINEPARMS ();
00571
00572 LINEPARMS& operator= (const LINEPARMS& rhs);
00573 void Validate ();
00574 };
00575
00576
00577 struct POLYPARMS {
00578 public:
00579
00580 struct POLYSTYLEPARMS : public STYLEPARMS {
00581 POLYSTYLE Normal;
00582 };
00583
00584 SELECTPARMS Select;
00585 POLYSTYLEPARMS Style;
00586 DATATIPPARMS DataTip;
00587 AUTOLABELPARMS AutoLabel;
00588 LEGENDPARMS Legend;
00589 LEGENDPARMS LegendInt;
00590 RVC::OBJECTNAME LegendElemTableName;
00591 bool ShowInteriorLabel;
00592 bool ShowLabel;
00593
00594 POLYPARMS ();
00595 POLYPARMS (const POLYPARMS& rhs);
00596 ~POLYPARMS ();
00597
00598 POLYPARMS& operator= (const POLYPARMS& rhs);
00599 void Validate ();
00600 };
00601
00602
00603 struct LABELPARMS {
00604 public:
00605
00606 struct LABELSTYLEPARMS : public STYLEPARMS {
00607 TEXTSTYLE Normal;
00608 LABELFRAMEPARMS FrameParms;
00609
00610 LABELSTYLEPARMS ();
00611 };
00612
00613 SELECTPARMS Select;
00614 LABELSTYLEPARMS Style;
00615 DATATIPPARMS DataTip;
00616 double MinScaleVisible;
00617 double MaxScaleVisible;
00618
00619 LABELPARMS ();
00620 LABELPARMS (const LABELPARMS& rhs);
00621 ~LABELPARMS ();
00622
00623 LABELPARMS& operator= (const LABELPARMS& rhs);
00624
00625
00626 bool IsVisibleAtScale (
00627 double scale
00628 ) const { return (scale >= MinScaleVisible && (MaxScaleVisible <= 0.0 || scale <= MaxScaleVisible)); }
00629 void Validate ();
00630 };
00631
00632
00633 struct D3POINTPARMS {
00634 public:
00635
00636 enum MODE {
00637 MODE_None = 0,
00638 MODE_Height = 1,
00639 MODE_Elevation = 2
00640 };
00641
00642 MODE Mode;
00643 RVC::OBJECTNAME TableName;
00644 RVC::OBJECTNAME FieldName;
00645 UINT8 Unit;
00646 LINEPARMS Line;
00647 POINTPARMS Point;
00648 bool UseColorStack;
00649 COLOR BelowColor;
00650 COLOR AboveColor;
00651
00652 D3POINTPARMS ();
00653 D3POINTPARMS (const D3POINTPARMS& rhs);
00654 ~D3POINTPARMS ();
00655
00656 D3POINTPARMS& operator= (const D3POINTPARMS& rhs);
00657 };
00658
00659
00660 struct D3POLYPARMS {
00661 public:
00662
00663 enum MODE {
00664 MODE_None = 0,
00665 MODE_Height = 1,
00666 MODE_Elevation = 2
00667 };
00668 enum BASE {
00669 BASE_Minimum = 0,
00670 BASE_Maximum = 1
00671 };
00672
00673 MODE Mode;
00674 BASE Base;
00675 RVC::OBJECTNAME TableName;
00676 RVC::OBJECTNAME FieldName;
00677 UINT8 Unit;
00678 POLYPARMS Poly;
00679 bool UseColorStack;
00680 COLOR