mdisp.h

Go to the documentation of this file.
00001 /**
00002  * \file mdisp.h <mi32/mdisp.h>
00003  * \brief Include file for Mdisp library
00004  *
00005  * \if NODOC
00006  * $Id: mdisp.h_v 1.405 2004/10/01 17:19:19 mju Exp $
00007  *
00008  * $Log: mdisp.h_v $
00009  * Revision 1.405  2004/10/01 17:19:19  mju
00010  * Add dlgparent to assignObject.
00011  *
00012  * Revision 1.404  2004/09/03 22:50:40  dwilliss
00013  * *** empty log message ***
00014  *
00015  * Revision 1.403  2004/09/01 17:48:04  mju
00016  * Change regionGenerateFromTool to use trans2d_mapgen.
00017  *
00018  * Revision 1.402  2004/08/04 20:22:44  scowan
00019  * Removed unused include files.
00020  * More should be removed!!
00021  *
00022  * Revision 1.401  2004/07/22 22:17:08  dwilliss
00023  * Added label placement methods to pinmap layer
00024  *
00025  * Revision 1.400  2004/07/21 22:51:04  dwilliss
00026  * added some virtual methods to pinmap layer
00027  *
00028  * Revision 1.399  2004/07/20 13:09:16  mju
00029  * Remove region hdr.
00030  *
00031  * Revision 1.398  2004/07/15 20:14:14  dwilliss
00032  * Added a mdispdraw flag
00033  *
00034  * Revision 1.397  2004/07/12 23:14:30  mju
00035  * No georegion.
00036  *
00037  * Revision 1.396  2004/06/28 17:55:32  mju
00038  * Convert to spatref system.
00039  *
00040  * Revision 1.395  2004/06/16 21:54:45  scowan
00041  * Replaced script call using legacy cad element class with current class.
00042  *
00043  * Revision 1.394  2004/06/16 13:11:14  vdronov
00044  * delete Raycasing methods
00045  *
00046  * Revision 1.393  2004/06/15 14:37:28  vdronov
00047  * remove DenseTriangulation enum item
00048  *
00049  * Revision 1.392  2004/06/11 17:44:33  vdronov
00050  * removed RayCasting rendering mode
00051  *
00052  * Revision 1.391  2004/06/11 17:40:58  scowan
00053  * Added an evaluate method to gre script class.
00054  *
00055  * Revision 1.390  2004/06/04 20:50:31  scowan
00056  * Moved cad and sketch definitions to own include file.
00057  *
00058  * Revision 1.389  2004/04/30 14:05:31  mju
00059  * Remove unneeded hdr for mfc.
00060  *
00061  * Revision 1.388  2004/04/08 12:41:24  mju
00062  * Exclude previous change from non-X builds.
00063  *
00064  * Revision 1.387  2004/04/07 21:12:53  mju
00065  * Add toolhyperindexGetToolBarIconItems.
00066  *
00067  * Revision 1.386  2004/03/05 15:12:35  mju
00068  * Add virtual dtor for all classes with virtual functions.
00069  *
00070  * Revision 1.385  2004/03/04 18:57:47  mju
00071  * Move more common stuff to gre/base.h
00072  * Move raster layer to gre/lrraster.h
00073  *
00074  * Revision 1.384  2004/02/19 23:10:16  scowan
00075  * Added entry to pinmap layer.
00076  *
00077  * Revision 1.383  2004/02/18 21:16:33  mju
00078  * Add raster dispparm PreferredZoom1X member.
00079  *
00080  * Revision 1.382  2004/02/12 22:43:39  dwilliss
00081  * Deprecate old mgd
00082  *
00083  * Revision 1.381  2004/02/06 16:01:00  mju
00084  * Use GRE_FIND_FLAGS enum.
00085  *
00086  * Revision 1.380  2004/02/05 22:07:34  mju
00087  * Rework DataTip support to integrate with view/layer.
00088  *
00089  * Revision 1.379  2004/02/04 20:32:51  mju
00090  * Add datatipparms.setdefaultsuffix, remove legacy version.
00091  *
00092  * Revision 1.378  2003/12/12 17:09:50  vdronov
00093  * added RENDERING_MODE_PiecewiseTIN
00094  *
00095  * Revision 1.377  2003/11/26 20:06:04  mju
00096  * Add datatip fn to get menu.
00097  *
00098  * Revision 1.376  2003/11/20 13:26:45  mju
00099  * Add DesignScale to scriptcontext_draw.drawsyms.
00100  *
00101  * Revision 1.375  2003/11/04 20:56:48  mju
00102  * Fix prototype.
00103  *
00104  * Revision 1.374  2003/11/04 18:43:08  mju
00105  * Add MdispxdLayoutManager prototypes.
00106  *
00107  * Revision 1.373  2003/10/24 17:44:13  mju
00108  * Add autolabelparms members for scale control.
00109  *
00110  * Revision 1.372  2003/09/23 13:14:43  mju
00111  * In dispparm copy ctors explicitly init base class.
00112  *
00113  * Revision 1.371  2003/09/15 17:06:13  dwilliss
00114  * Fixed mismatched ifdef
00115  *
00116  * Revision 1.370  2003/09/15 13:49:56  fileserver!dwilliss
00117  * Doxygen
00118  *
00119  * Revision 1.369  2003/09/08 21:04:59  dwilliss
00120  * Added doxygen start/end tags for functions groups
00121  *
00122  * Revision 1.368  2003/08/26 16:11:12  vdronov
00123  * added RENDERING_MODE_VariableTriangulation
00124  *
00125  * Revision 1.367  2003/08/21 21:07:53  dwilliss
00126  * Added v_ComputeMargins method to script layer
00127  *
00128  * Revision 1.366  2003/08/19 21:38:42  dwilliss
00129  * Added a margin member to script layer's dispparm and add a parameter to
00130  * a private method.
00131  *
00132  * Revision 1.365  2003/07/30 16:04:06  mju
00133  * Ignore private sections.
00134  *
00135  * Revision 1.364  2003/06/24 17:52:49  dwilliss
00136  * Added some methods to SCRIPTCONTEXT_LABEL to let you get/set script variables
00137  *
00138  * Revision 1.363  2003/06/24 16:49:45  mju
00139  * Move most 3D stuff to own headers.
00140  *
00141  * Revision 1.362  2003/06/24 16:25:49  mju
00142  * Move VIEW and LAYER_VECTOR classes to own headers.
00143  *
00144  * Revision 1.361  2003/06/24 14:59:33  dwilliss
00145  * Started implementing frames around labels, but not ready yet.  Mike needs
00146  * to modify this file, so I just commented out my changes for now
00147  *
00148  * Revision 1.360  2003/06/17 13:39:19  mju
00149  * Add MFC_TREEVIEW decl.
00150  *
00151  * Revision 1.359  2003/06/16 20:07:05  mju
00152  * Move stuff to own headers.
00153  *
00154  * Revision 1.358  2003/06/16 16:04:06  mju
00155  * More viewscript stuff for attaching to viewable.
00156  *
00157  * Revision 1.357  2003/06/14 02:09:43  scowan
00158  * Changed some method prototypes to not use dregion.
00159  * Moved gre layer region to its own include file.
00160  *
00161  * Revision 1.356  2003/06/13 13:14:05  mju
00162  * Don't define scriptlists in viewable except for X.
00163  *
00164  * Revision 1.355  2003/06/12 21:47:52  mju
00165  * ViewScript redesign to allow attachment to viewable.
00166  *
00167  * Revision 1.354  2003/05/28 22:43:01  scowan
00168  * Moved dispparm validate virtual metho to private.
00169  *
00170  * Revision 1.353  2003/05/28 22:19:57  vdronov
00171  * added DenseRayCasting method
00172  *
00173  * Revision 1.352  2003/05/28 22:17:06  mju
00174  * Add viewscript FromViewable members.
00175  *
00176  * Revision 1.351  2003/05/28 16:38:19  scowan
00177  * Removed vector getobjfilter declaration, it has been replaced.
00178  *
00179  * Revision 1.350  2003/05/28 15:08:38  scowan
00180  * Changed some fields in type defn layer's sub class.
00181  *
00182  * Revision 1.349  2003/05/23 20:36:16  scowan
00183  * Changed prompt object parms.
00184  *
00185  * Revision 1.348  2003/05/21 22:13:25  dwilliss
00186  * Added an optional parameter to RenderToRaster
00187  *
00188  * Revision 1.347  2003/05/21 17:00:08  mju
00189  * Add ScalePosGetCoordString.
00190  *
00191  * Revision 1.346  2003/05/12 20:47:01  mju
00192  * Add tooltip handles to STATUSINFO.
00193  *
00194  * Revision 1.345  2003/05/12 17:45:23  mju
00195  * Remove TransPointToString fn as replaced by statusinfo.GetCoordString.
00196  *
00197  * Revision 1.344  2003/05/12 14:53:53  mju
00198  * Add view scaleposgetlatlonformat and getneedsredraw.
00199  *
00200  * Revision 1.343  2003/05/09 21:44:53  mju
00201  * MFC fixes.
00202  *
00203  * Revision 1.342  2003/05/09 21:33:53  mju
00204  * Fix MFC private member problem.
00205  *
00206  * Revision 1.341  2003/05/09 20:12:40  mju
00207  * Add dual position report.
00208  * Add view::SAVESETTINGS container.
00209  * Make most view members private.
00210  * Add view::create and createx methods.
00211  *
00212  * Revision 1.340  2003/05/01 21:49:33  scowan
00213  * Added shape enum type.
00214  *
00215  * Revision 1.338  2003/04/30 21:40:34  mju
00216  * Move HyperIndex stuff to gre/hypermgr hdr.
00217  *
00218  * Revision 1.337  2003/04/30 20:17:21  mju
00219  * Add fields for 'Macros' menubar entry.
00220  *
00221  * Revision 1.336  2003/04/30 14:58:59  mju
00222  * Make viewscript/macroscript classes non-nested in GRE namespace.
00223  * Add viewscript setting for showing icon.
00224  *
00225  * Revision 1.335  2003/04/28 19:32:03  mju
00226  * Add vector:;setupdrape3d.
00227  *
00228  * Revision 1.334  2003/04/28 15:29:15  mju
00229  * Add autolabelparms::checktable.
00230  *
00231  * Revision 1.333  2003/04/14 17:14:55  vdronov
00232  * added CheckTerrain method for surface layer
00233  *
00234  * Revision 1.332  2003/04/11 16:35:49  vdronov
00235  * added more rendering modes
00236  *
00237  * Revision 1.331  2003/04/10 16:47:10  vdronov
00238  * added MipMapSharpness to raster dispparm
00239  *
00240  * Revision 1.330  2003/04/08 20:32:26  scowan
00241  * Changed color map ionode to a color palette name.
00242  *
00243  * Revision 1.329  2003/04/02 19:33:25  vdronov
00244  * added RENDERING_MODE_None
00245  *
00246  * Revision 1.328  2003/04/01 18:38:44  mju
00247  * Make layer objmgrgetcontainer non-inline.
00248  *
00249  * Revision 1.326  2003/03/25 23:28:48  vdronov
00250  * multiple 3d changes
00251  *
00252  * Revision 1.325  2003/03/24 21:25:47  vdronov
00253  * added GetTerrain method for surface layer
00254  *
00255  * Revision 1.323  2003/03/24 19:13:00  vdronov
00256  * added texture filter and rendering mode
00257  *
00258  * Revision 1.322  2003/03/20 23:15:19  vdronov
00259  * new trans
00260  *
00261  * Revision 1.321  2003/03/04 17:42:09  mju
00262  * Add accessor methods for globaloptions.
00263  *
00264  * Revision 1.320  2003/03/04 16:58:00  mju
00265  * Add nested FORM classes to GLOBALOPTIONS.
00266  *
00267  * Revision 1.319  2003/02/14 21:59:10  mju
00268  * Add docs for all view::trans methods.
00269  *
00270  * Revision 1.318  2003/02/14 21:12:51  mju
00271  * Add validate methods for point/line/polyparms and related.
00272  *
00273  * Revision 1.317  2003/02/05 16:30:02  mju
00274  * Make group name private and define GRE_GROUP_NAMELEN and make longer.
00275  *
00276  * Revision 1.316  2003/02/03 15:31:38  mju
00277  * Add v_usestransparency for region.
00278  *
00279  * Revision 1.315  2003/01/30 22:36:47  mju
00280  * nc.
00281  *
00282  * Revision 1.314  2003/01/24 15:23:37  mju
00283  * Add raster m_TempObjItem so can return in v_GetObjItem.
00284  *
00285  * Revision 1.313  2003/01/22 23:14:30  dwilliss
00286  * Added methods to view to get/set wireframe drawing mode
00287  *
00288  * Revision 1.312  2003/01/14 23:27:30  dwilliss
00289  * Added a timerid to view to let us defer resize events
00290  * Added a static timer method to view.
00291  * Made view's CB_ViewResize a static method of the view so it could access
00292  *    private members
00293  *
00294  * Revision 1.311  2003/01/09 16:57:28  dwilliss
00295  * Added several methods to layouts to control the GroupControls dialog
00296  *
00297  * Revision 1.310  2002/12/16 15:05:59  mju
00298  * Move geolocksettings to own header.
00299  *
00300  * Revision 1.309  2002/12/11 15:20:05  mju
00301  * No more contrib w stuff.
00302  *
00303  * Revision 1.308  2002/12/10 15:16:33  scowan
00304  * Fixed some g++ warnings.
00305  *
00306  * Revision 1.307  2002/12/03 17:04:29  scowan
00307  * Added link to data source stuff.
00308  *
00309  * Revision 1.306  2002/11/07 17:32:30  mju
00310  * Add viewable::rendertoraster.
00311  *
00312  * Revision 1.305  2002/11/05 23:04:37  mju
00313  * Add Get/SetDesignScale for VIEWABLE, GROUP, LAYOUT.
00314  * Make group relscale private and add method to set.
00315  *
00316  * Revision 1.304  2002/11/05 19:03:21  mju
00317  * Add sketch v_serialGetTagName.
00318  *
00319  * Revision 1.303  2002/10/24 20:58:19  mju
00320  * Add geolocksettings.SerialGetItemDef.
00321  * Add viewflag_NoShowInLocator.
00322  *
00323  * Revision 1.302  2002/10/23 22:04:24  mju
00324  * Make highlightelementsbyregion virtual and add v_GetElemSetByExtent.
00325  *
00326  * Revision 1.301  2002/10/23 15:36:36  mju
00327  * Add serial read log for group instead of simple bool.
00328  * Add GetSerialReadLog for group/layout.
00329  *
00330  * Revision 1.300  2002/10/22 15:56:37  mju
00331  * Use geolocksettings in view.
00332  *
00333  * Revision 1.299  2002/10/22 13:35:02  mju
00334  * Change GEOLOCKSETTINGS class to have fewer modes and range for zoomscale.
00335  *
00336  * Revision 1.298  2002/10/16 14:58:43  mju
00337  * Make cad v_assignobject protected so can call from sketch.
00338  *
00339  * Revision 1.297  2002/09/30 20:53:38  scowan
00340  * Added new surface method.
00341  *
00342  * Revision 1.296  2002/09/27 14:00:05  mju
00343  * Fix GetObjItem as was always passing 0 for component to virtual.
00344  *
00345  * Revision 1.295  2002/09/23 17:19:27  mju
00346  * Add GRE_LAYER::FILTER and parm to group::GetExtentsInProj.
00347  *
00348  * Revision 1.294  2002/09/23 15:23:21  mju
00349  * Add vector::openprivateobject.
00350  *
00351  * Revision 1.293  2002/09/20 17:48:00  mju
00352  * Move text layer to own header.
00353  *
00354  * Revision 1.292  2002/09/20 17:37:01  mju
00355  * Move scalebar, legend, legend2 classes to own headers.
00356  *
00357  * Revision 1.291  2002/09/20 17:02:50  mju
00358  * Only declare v_ControlPanel if X or MFC.
00359  *
00360  * Revision 1.290  2002/09/19 22:06:43  mju
00361  * Forgot to make v_GetToolMenu virtual.
00362  *
00363  * Revision 1.289  2002/09/19 17:07:35  mju
00364  * Restructure to require use of GetObjItem() for layer and eliminate fhandle/ohandle for vector and TIN.
00365  *
00366  * Revision 1.288  2002/09/10 14:24:32  mju
00367  * Move mapgrid layer to own header.
00368  *
00369  * Revision 1.287  2002/09/09 21:01:44  mju
00370  * Removed deprecated getfile/objhandle methods.
00371  * Move TIN layer to gre/lrtin.h
00372  *
00373  * Revision 1.286  2002/09/06 22:07:19  mju
00374  * Minor TIN dispparm reorg.
00375  *
00376  * Revision 1.285  2002/09/06 20:42:44  mju
00377  * Add tin::dispparm::m_IsEditable and SetObject.
00378  *
00379  * Revision 1.284  2002/09/03 21:56:48  mju
00380  * Don't declare DlgGetClipSettings unless X or MFC.
00381  *
00382  * Revision 1.283  2002/08/29 21:11:52  mju
00383  * Add parm to layer::setflags for notify.
00384  *
00385  * Revision 1.282  2002/08/26 15:14:21  mju
00386  * Eliminate shadow warnings.
00387  *
00388  * Revision 1.281  2002/08/21 21:04:41  mju
00389  * Add DISPPARM::v_SetObjItem.
00390  *
00391  * Revision 1.280  2002/08/19 20:27:26  mju
00392  * Add raster ioparm SetCacheRect.
00393  *
00394  * Revision 1.279  2002/08/14 20:42:20  mju
00395  * Make view::getscaleposproj return group proj if not fixed.
00396  *
00397  * Revision 1.277  2002/08/13 20:55:04  mju
00398  * Include from mi32, not miwin.
00399  *
00400  * Revision 1.276  2002/08/12 13:25:01  mju
00401  * Add geolocksettings and related.
00402  *
00403  * Revision 1.275  2002/07/12 15:45:40  scowan
00404  * Added ctor for label style parms.
00405  *
00406  * Revision 1.274  2002/07/09 14:55:53  mju
00407  * Add group::getlast static method.
00408  *
00409  * Revision 1.273  2002/06/20 19:52:10  mju
00410  * Add ctor for gre_viewtrans3d.
00411  *
00412  * Revision 1.272  2002/06/05 14:27:24  mju
00413  * Change AppendPopupMenuItems to non-const.
00414  *
00415  * Revision 1.271  2002/05/24 21:46:15  mju
00416  * Add legend sampleflags.
00417  * Add vector label option for scale range.
00418  * Add vector label baseline style and flag to draw.
00419  *
00420  * Revision 1.270  2002/05/23 14:44:42  mju
00421  * Make SetClipRect not inline.
00422  *
00423  * Revision 1.269  2002/05/14 15:57:15  dwilliss
00424  * Had to add a rect for SampleRect member to point to, too.
00425  *
00426  * Revision 1.268  2002/05/14 15:26:42  dwilliss
00427  * Added a SampleRect member to GRE_SCRIPTCONTEXT_STYLE
00428  *
00429  * Revision 1.267  2002/05/13 22:50:34  dwilliss
00430  * UsesTransparency method now takes optional GC.
00431  *
00432  * Revision 1.264  2002/05/03 20:45:12  scowan
00433  * Removed commented save georef inode numbers.
00434  *
00435  * Revision 1.262  2002/04/30 23:03:12  dwilliss
00436  * Various changes needed for style samples from cartoscripts
00437  *
00438  * Revision 1.261  2002/04/26 22:42:48  scowan
00439  * Removed use of georef inode and replaced with georef name.
00440  *
00441  * Revision 1.260  2002/04/22 20:51:53  mju
00442  * Make layer::usestransparency virtual.
00443  *
00444  * Revision 1.259  2002/04/19 22:03:58  mju
00445  * Add layer::datatipsetdefaultprefix().
00446  *
00447  * Revision 1.258  2002/04/19 16:43:12  mju
00448  * Add GetActiveElem returning ELEMENT.
00449  *
00450  * Revision 1.257  2002/04/19 14:27:16  mju
00451  * Add STYLE object to sketch layer.
00452  *
00453  * Revision 1.256  2002/04/18 20:45:49  mju
00454  * Add SCRIPTCONTEXT classes.
00455  * Remove SMLCONTEXT* and Segments from dispparms.
00456  *
00457  * Revision 1.255  2002/04/12 14:14:31  scowan
00458  * Moved select mode and style mode to own include file.
00459  *
00460  * Revision 1.254  2002/04/11 22:06:43  mju
00461  * Legend redesigned to allow element table.
00462  *
00463  * Revision 1.253  2002/04/05 14:39:48  mju
00464  * Add const for SetTitle fn.
00465  *
00466  * Revision 1.252  2002/04/04 22:35:42  mju
00467  * Legend elem now uses table.
00468  *
00469  * Revision 1.251  2002/04/03 23:00:21  mju
00470  * Add parm to AppendPopupMenuItems.
00471  *
00472  * Revision 1.250  2002/04/02 23:07:23  mju
00473  * Add layer::AppendPopupMenuItems.
00474  * Move some nested layer class defns outside of layer so easier to read.
00475  *
00476  * Revision 1.249  2002/04/02 16:23:16  mju
00477  * Add system::Get/SetReturnSerialReadErr.
00478  *
00479  * Revision 1.248  2002/04/01 22:01:16  mju
00480  * Add Setup() methods for some legend types.
00481  *
00482  * Revision 1.247  2002/03/28 22:29:38  mju
00483  * Add UpdateMessage using TEXTID.
00484  * Change SCALEBAR dispparm to to use MISTRING for label.
00485  *
00486  * Revision 1.246  2002/03/28 17:28:28  mju
00487  * Remove UpdateMessageF.
00488  *
00489  * Revision 1.245  2002/03/27 22:54:41  dwilliss
00490  * Added some bools to allow controling of interior/exterior toggles
00491  *
00492  * Revision 1.244  2002/03/27 22:46:46  dwilliss
00493  * Polygon Legend Items can now have labels inside the sample
00494  *
00495  * Revision 1.242  2002/03/26 21:17:41  dwilliss
00496  * Oops.  Now that LAYERREF.name isn't an MISTRING, we can't just use a
00497  * copy constructor on it.
00498  *
00499  * Revision 1.241  2002/03/26 21:11:15  dwilliss
00500  * Changed legend2 layreref to have fixed size string instead of MISTRING.
00501  * We malloc an array of these and no constructors get called.
00502  *
00503  * Revision 1.240  2002/03/22 16:40:05  mju
00504  * Use RVC::OBJECTNAME for all table/field names.
00505  *
00506  * Revision 1.238  2002/03/05 16:10:16  mju
00507  * Add raster::dispparm::serializercb_colorpalette.
00508  *
00509  * Revision 1.237  2002/02/26 17:26:14  dwilliss
00510  * Needed to add a parameter to one of LEGNED2's private methods
00511  *
00512  * Revision 1.236  2002/02/26 16:50:34  dwilliss
00513  * Added Layer ID member to GRE_LAYER_LEGEND2::LAYERREF
00514  *
00515  * Revision 1.235  2002/02/25 21:47:37  mju
00516  * Add LayerID stuff.
00517  *
00518  * Revision 1.234  2002/02/19 23:00:27  mju
00519  * Add TableName to SELECT/STYLEPARMS.
00520  *
00521  * Revision 1.233  2002/02/15 21:23:16  scowan
00522  * Added version to get draw and hightlight set that use a bitset unowned.
00523  *
00524  * Revision 1.232  2002/02/14 22:52:20  mju
00525  * Eliminate unimplemented SELECTMODE_bytheme and rename ByKeyAttrib as ByAttribute.
00526  *
00527  * Revision 1.231  2002/02/08 23:02:51  scowan
00528  * More cleanup of vector drawing methods.
00529  *
00530  * Revision 1.230  2002/02/06 23:46:02  scowan
00531  * Removed Draw....() methods from the dispparms, not being used!
00532  * Moved vector drawing methods to internal class.
00533  *
00534  * Revision 1.229  2002/01/28 21:35:07  scowan
00535  * Added parameters to the vector label drawing methods.
00536  *
00537  * Revision 1.228  2002/01/23 22:34:01  scowan
00538  * Added default parameters to draw label.
00539  *
00540  * Revision 1.227  2002/01/09 15:05:49  mju
00541  * Add layer;:SetName using objitem.
00542  *
00543  * Revision 1.226  2002/01/04 18:22:18  mju
00544  * Add VIEWFLAG_NoFillBackground.
00545  * Change RASTER::SetColorMap to use simple-array.
00546  *
00547  * Revision 1.225  2002/01/02 17:14:03  mju
00548  * Add AssignObject overrides using OBJITEM for all appropriate layers.
00549  *
00550  * Revision 1.223  2001/12/31 17:31:36  mju
00551  * Fix to compile for win32-native.
00552  *
00553  * Revision 1.222  2001/12/28 22:33:49  mju
00554  * Add LAYER::SetToolMenuItem() method.
00555  *
00556  * Revision 1.221  2001/12/28 21:34:21  mju
00557  * Make all LAYER members protected/private.
00558  * Retire all previously deprecated functions/typedefs.
00559  *
00560  * Revision 1.220  2001/11/21 17:18:15  mju
00561  * Add vector::drawraised... methods.
00562  *
00563  * Revision 1.219  2001/11/15 16:13:31  mju
00564  * Make group::setcliprect non-inline and add 'notify' parm.
00565  *
00566  * Revision 1.218  2001/11/14 16:46:31  mju
00567  * Add SerialRead override for pinmap.
00568  *
00569  * Revision 1.217  2001/11/05 16:55:27  mju
00570  * MFC_VIEW::DlgEditPref stuff.
00571  *
00572  * Revision 1.216  2001/11/05 15:15:20  mju
00573  * Add AutoRedrawDelay to view GLOBALOPTIONS.
00574  *
00575  * Revision 1.215  2001/10/31 18:46:51  mju
00576  * Use COLOR ColorRef methods to get/set.
00577  *
00578  * Revision 1.214  2001/10/29 17:28:51  mju
00579  * Add TREEVIEW::GetDlgParent().
00580  *
00581  * Revision 1.213  2001/10/25 15:13:57  mju
00582  * Simplify MFC TreeView popup menus to not need command routing mechanism.
00583  *
00584  * Revision 1.212  2001/10/23 16:04:32  vdronov
00585  * Changed argument's list for WireReadVector
00586  *
00587  * Revision 1.211  2001/10/22 23:58:18  vdronov
00588  * removed Selected from wireframes structures,
00589  * added Init field
00590  *
00591  * Revision 1.210  2001/10/22 20:31:18  mju
00592  * Make UpdateMessage() and related 'const' again.
00593  *
00594  * Revision 1.209  2001/10/22 20:18:40  mju
00595  * Add StatusBar support for MFC.
00596  *
00597  * Revision 1.208  2001/10/22 17:17:29  vdronov
00598  * added WireReadD3Poly and WireReadD3Point as private methods
00599  * of GRE_LAYER_VECTOR
00600  *
00601  * Revision 1.207  2001/10/19 20:48:00  vdronov
00602  * added Selected bit array to MDISPWIREFRAME
00603  *
00604  * Revision 1.206  2001/10/19 16:16:45  mju
00605  * Add MFC_VIEW::PopupScaleMenu.
00606  *
00607  * Revision 1.205  2001/10/18 20:07:02  mju
00608  * Rework MFC TreeView popup menus for layers and add for components.
00609  *
00610  * Revision 1.204  2001/10/16 16:58:14  mju
00611  * Consolidate COMPINFO form/dialog destruction into Destroy() method.
00612  *
00613  * Revision 1.203  2001/10/15 14:26:46  mju
00614  * Retire MdispLayerMgr functions as no longer used.
00615  *
00616  * Revision 1.202  2001/10/09 21:50:21  mju
00617  * Add MFC_VIEW::OnUpdateIndicatorScale().
00618  *
00619  * Revision 1.198  2001/10/01 21:16:03  dwilliss
00620  * Added a matte to the layout
00621  *
00622  * Revision 1.197  2001/09/21 21:09:52  mju
00623  * Change GetDbEdit() to non-const so can create DbEdit if necessary.
00624  *
00625  * Revision 1.196  2001/09/19 21:22:55  dwilliss
00626  * Added OnPrint() method to GRE_MFC_VIEW
00627  *
00628  * Revision 1.195  2001/09/14 16:25:27  mju
00629  * Don't define subclass promptobject for win32native.
00630  *
00631  * Revision 1.194  2001/09/13 15:15:44  dwilliss
00632  * Added a method to return a reference to the group's MATTE
00633  *
00634  * Revision 1.193  2001/09/12 22:59:17  dwilliss
00635  * Added a MATTE member to GRE_GROUP.
00636  *
00637  * Revision 1.192  2001/09/11 20:29:29  mju
00638  * Mark obsolete members for deletion.
00639  *
00640  * Revision 1.191  2001/09/11 16:06:21  mju
00641  * Don't include addl sketch stuff for WIN32-native only.
00642  *
00643  * Revision 1.190  2001/09/10 16:16:57  mju
00644  * Add colorscale::item::ValueToPosition method.
00645  * Add layer::DbListIsIndexElemNum.
00646  *
00647  * Revision 1.189  2001/09/07 21:50:52  mju
00648  * Add sketch layer methods for use by geotoolbox.
00649  * Add layer methods to convert between dblist index and element number.
00650  *
00651  * Revision 1.188  2001/09/06 15:38:12  mju
00652  * Add layer::GetStyleObjItem()
00653  * Add sketch::SetupStyleObject().
00654  *
00655  * Revision 1.187  2001/08/22 17:03:25  mju
00656  * Add dispparm::setmayusetransparency.
00657  *
00658  * Revision 1.186  2001/08/17 21:46:03  mju
00659  * Use MGUI namespace for MFC classes.
00660  *
00661  * Revision 1.185  2001/08/14 19:06:41  mju
00662  * In ShowSelectedRecords don't set in DBEDIT unless from selection or have highlightd.
00663  *
00664  * Revision 1.184  2001/08/14 17:05:00  mju
00665  * TreeView methods only implemented if WIN32_MFC.
00666  *
00667  * Revision 1.183  2001/08/14 15:37:25  mju
00668  * Merge MFC version as was inclusion order dependent.
00669  *
00670  * Revision 1.182  2001/08/13 20:56:43  mju
00671  * Add TreeView members to COMPINFO and TABLEINFO.
00672  *
00673  * Revision 1.181  2001/08/06 17:19:37  mju
00674  * Add layer::HasNullCells.
00675  *
00676  * Revision 1.180  2001/08/03 17:03:00  mju
00677  * Remove COMPINFO methods not wanted for non-X/MFC.
00678  *
00679  * Revision 1.179  2001/08/02 21:48:56  mju
00680  * Redesign object/layer manager to integrate with GRE classes.
00681  *
00682  * Revision 1.178  2001/07/25 15:00:04  mju
00683  * Add layer::seteditintntserver.
00684  *
00685  * Revision 1.177  2001/07/24 17:23:19  mju
00686  * GPS name changes.
00687  *
00688  * Revision 1.176  2001/07/12 17:35:10  dwilliss
00689  * Text layer encoding is now an MISTRING
00690  *
00691  * Revision 1.174  2001/07/05 21:32:47  dwilliss
00692  * Text layers now store text in an MISTRING.  Old char* still hangs around
00693  * but only temporarly during serial read to read old non-unicode layouts
00694  *
00695  * Revision 1.173  2001/06/19 22:02:58  mju
00696  * Add layer::GetObjItem().
00697  *
00698  * Revision 1.172  2001/06/19 19:06:37  mju
00699  * Add layer::CanEditInTNTserver().
00700  *
00701  * Revision 1.171  2001/06/18 17:40:17  mju
00702  * Add datatip showmode for AllVisible.
00703  *
00704  * Revision 1.170  2001/06/08 15:18:15  mju
00705  * Add dispparm::UpdateSaveInfo for raster, vector, cad, tin.
00706  *
00707  * Revision 1.169  2001/06/07 17:28:52  mju
00708  * Make layer::savedispparmsubobject public again.
00709  *
00710  * Revision 1.168  2001/06/07 16:09:02  mju
00711  * Make serialization of layers/dispparms simpler and more consistent.
00712  * DISPPARM now inherits from SERIALIZABLE.
00713  * Add LAYERDRAWFLAG_EditInTNTserver.
00714  *
00715  * Revision 1.167  2001/05/21 17:30:37  mju
00716  * Add CreateLink method.
00717  *
00718  * Revision 1.166  2001/05/09 20:59:53  mju
00719  * Add GetVisibleScaleRange method for LAYER.
00720  *
00721  * Revision 1.165  2001/04/17 19:41:34  vdronov
00722  * added more sml methods for VIEWPOINT3D
00723  *
00724  * Revision 1.164  2001/04/11 20:15:42  vdronov
00725  * added DBCallbacks for extruded polygons and points
00726  *
00727  * Revision 1.163  2001/04/05 16:32:01  mju
00728  * Add pvt vector layer methods for dealing with zscale.
00729  *
00730  * Revision 1.162  2001/04/04 14:12:52  mju
00731  * Add view::AutoResizeDialog.
00732  *
00733  * Revision 1.161  2001/03/15 15:25:26  mju
00734  * Add view::ClearPreviousViewList().
00735  *
00736  * Revision 1.160  2001/03/08 17:01:11  vdronov
00737  * completed implementation of raised points.
00738  *
00739  * Revision 1.158  2001/03/08 14:17:47  mju
00740  * Add view::setscaleposunits().
00741  *
00742  * Revision 1.157  2001/03/05 18:12:17  mju
00743  * Add view::GetBackgroundColorIniName.
00744  *
00745  * Revision 1.156  2001/03/01 22:58:46  mju
00746  * Add view method to zoom any raster layer to 1X.
00747  *
00748  * Revision 1.155  2001/03/01 14:58:21  vdronov
00749  * added D3POINTPARMS, changed D3PARMS to D3POLYPARMS
00750  *
00751  * Revision 1.154  2001/03/01 14:52:12  mju
00752  * Add view::getscale which returns scale.
00753  *
00754  * Revision 1.153  2001/02/28 22:52:37  mju
00755  * Add 'mode' to view::HighlightElementsByPoint.
00756  *
00757  * Revision 1.152  2001/02/27 18:39:20  mju
00758  * Add highlighting methods for view/group.
00759  * Add TreeCtrl stuff for region layer.
00760  *
00761  * Revision 1.151  2001/02/23 21:35:30  mju
00762  * Add LAYER::TYPEDEFN::FLAG_NonRotatable.
00763  *
00764  * Revision 1.150  2001/02/23 14:30:48  dwilliss
00765  * Added places setting for scale legend
00766  *
00767  * Revision 1.149  2001/02/22 21:11:07  vdronov
00768  * added useColorStack to D3PARMS struct.
00769  *
00770  * Revision 1.148  2001/02/22 21:01:11  mju
00771  * Add ELEMSAMPLE_DC ctor that doesn't use gc.
00772  *
00773  * Revision 1.147  2001/02/21 23:00:02  mju
00774  * Add style file/object path/inode to ELEMSAMPLE_DC.
00775  * Add TreeView legend stuff.
00776  *
00777  * Revision 1.146  2001/02/21 16:24:55  vdronov
00778  * added MinElevation and MaxElevation to MDISPWIREFRAME.RaisedPoly.
00779  *
00780  * Revision 1.145  2001/02/16 16:29:17  mju
00781  * Add raster::SetShadeAngles.
00782  *
00783  * Revision 1.144  2001/02/15 17:31:26  vdronov
00784  * added POLYPARMS struct to D#PARMS struct.
00785  *
00786  * Revision 1.143  2001/02/15 17:28:26  mju
00787  * Add TreeView stuff for vector, cad, tin, raster layers.
00788  *
00789  * Revision 1.142  2001/02/13 18:06:11  mju
00790  * Add view::TransPointToString.
00791  *
00792  * Revision 1.141  2001/02/12 22:09:13  mju
00793  * Add layer::is/setcomponentselectable.
00794  *
00795  * Revision 1.140  2001/02/12 17:22:39  vdronov
00796  * ADDED sun location
00797  *
00798  * Revision 1.139  2001/02/12 17:01:29  mju
00799  * Add virtual methods for TreeView support for WIN32_NATIVE & WIN32_MFC.
00800  *
00801  * Revision 1.138  2001/02/09 00:20:41  vdronov
00802  * added _mdisp3dFillFlatPolygon
00803  *
00804  * Revision 1.137  2001/02/07 23:45:33  dwilliss
00805  * Added more legend settings to raster layers
00806  *
00807  * Revision 1.136  2001/02/01 23:30:52  vdronov
00808  * added RaisedPoly struct to MDISPWIREWRAME
00809  *
00810  * Revision 1.135  2001/01/31 20:54:12  vdronov
00811  * move enums inside structure d3parms
00812  *
00813  * Revision 1.134  2001/01/31 19:59:28  vdronov
00814  * added D3PARMS structure to VECTOR dispparm
00815  *
00816  * Revision 1.133  2001/01/25 22:56:53  mju
00817  * Add MDISPDRAW_NoCheckVisible and gre_layerdc.m_CheckVisible.
00818  *
00819  * Revision 1.131  2001/01/23 16:43:03  mju
00820  * Make some GRE_SYSTEM members non-static.
00821  *
00822  * Revision 1.130  2001/01/23 14:41:07  mju
00823  * Add margin settings for view.
00824  *
00825  * Revision 1.129  2001/01/23 14:23:02  mju
00826  * win32 don't have inlines for X-specific system stuff.
00827  *
00828  * Revision 1.128  2001/01/22 22:02:23  mju
00829  * Rework GRE_SYSTEM init/stop stuff.
00830  * Define GRE_CALLBACK_MSG_EXTRACTED and remove system kludge for same.
00831  *
00832  * Revision 1.127  2001/01/22 15:35:24  mju
00833  * Add raster::dispparm::ioparm::onserialread/write.
00834  *
00835  * Revision 1.126  2001/01/19 22:58:41  mju
00836  * Add stuff for "saved" file/object for use in sdedit.
00837  *
00838  * Revision 1.125  2001/01/12 18:34:42  mju
00839  * Fix SetScaleOneToOne to set NeedsRedraw.
00840  *
00841  * Revision 1.124  2001/01/04 21:14:53  mju
00842  * Add surflayer.getpointsz using TRANS2D_MAPGEN.
00843  *
00844  * Revision 1.123  2001/01/03 22:30:50  mju
00845  * Use cast in MdispLayerGetType to avoid warning.
00846  *
00847  * Revision 1.122  2001/01/02 18:28:24  mju
00848  * Use const in MdispSelectFromPoint.
00849  *
00850  * Revision 1.121  2000/12/27 22:43:08  mju
00851  * Add pinmap SymbolOffsetX/Y.
00852  *
00853  * Revision 1.120  2000/12/21 17:05:25  mju
00854  * Add raster color scale range support.
00855  *
00856  * Revision 1.119  2000/12/06 16:27:02  scowan
00857  * Fixed conversion warning.
00858  *
00859  * Revision 1.118  2000/12/05 23:09:32  mju
00860  * Add group::MutualExclusiveGroupSet stuff.
00861  *
00862  * Revision 1.117  2000/12/01 18:38:29  mju
00863  * Make ElemSet const in DrawLayerElements.
00864  *
00865  * Revision 1.116  2000/11/29 23:03:57  mju
00866  * Add "mutually exclusive layers" stuff.
00867  *
00868  * Revision 1.115  2000/11/29 17:33:14  mju
00869  * Add raster::dispparm:;ioparm::serializercb.
00870  *
00871  * Revision 1.114  2000/11/16 18:48:06  mju
00872  * Add StatusInfo field for MGRS string.
00873  *
00874  * Revision 1.113  2000/11/13 15:00:44  mju
00875  * Change formula layer to use geoformula class.
00876  *
00877  * Revision 1.112  2000/11/01 14:55:53  mju
00878  * Add option to view;;addtoolicons to control whether scripts added or not.
00879  *
00880  * Revision 1.111  2000/10/20 21:26:54  mju
00881  * Add view::getdrawingareaform().
00882  *
00883  * Revision 1.110  2000/10/19 14:25:40  mju
00884  * Add layer;:datatipgetstring.
00885  *
00886  * Revision 1.109  2000/10/17 21:41:09  mju
00887  * Rename old MDISP constants as GRE constants.
00888  *
00889  * Revision 1.108  2000/10/17 21:18:10  mju
00890  * Add layer::findelementsbyqueryext.
00891  *
00892  * Revision 1.107  2000/10/17 16:35:28  mju
00893  * Rename group clipregion member to force to access through methods.
00894  * Add group::getcliptrans.
00895  *
00896  * Revision 1.106  2000/10/13 15:58:47  dwilliss
00897  * Must use "friend class NAME", not "friend NAME"
00898  *
00899  * Revision 1.105  2000/10/09 21:10:06  mju
00900  * Add group::ClipToAutoMatched stuff.
00901  *
00902  * Revision 1.104  2000/10/05 16:57:33  mju
00903  * Add layer::GetElemSetExtents.
00904  *
00905  * Revision 1.103  2000/09/22 14:43:42  mju
00906  * Fix typo.
00907  *
00908  * Revision 1.102  2000/09/22 14:23:45  mju
00909  * Change ToolScript to take VIEWSCRIPT& in ctor.
00910  * Do SetScriptFilename() before parse viewscript.
00911  *
00912  * Revision 1.101  2000/09/20 17:48:28  mju
00913  * Add group::geocatdlg fns.
00914  *
00915  * Revision 1.100  2000/09/13 17:09:26  mju
00916  * Add view::stopdrawonerror stuff.
00917  *
00918  * Revision 1.99  2000/09/08 20:51:31  mju
00919  * Add tool::setname().
00920  *
00921  * Revision 1.98  2000/09/08 20:34:51  mju
00922  * Add gre_tool::m_toolnamestr so can have unicode names.
00923  *
00924  * Revision 1.97  2000/09/01 14:49:19  dwilliss
00925  * Gave old LEGENDs a SampleOffset
00926  *
00927  * Revision 1.96  2000/08/31 22:06:04  mju
00928  * Add DISPFLAG_MayUseTransparency.
00929  *
00930  * Revision 1.95  2000/08/22 22:17:13  dwilliss
00931  * Added GRE_LAYER_LEGEND2
00932  *
00933  * Revision 1.94  2000/08/17 22:11:48  mju
00934  * Add view::m_lvswform.
00935  *
00936  * Revision 1.93  2000/08/16 17:35:07  mju
00937  * Add GetIcon, GetComponentName, GetComponentIcon virtual methods.
00938  *
00939  * Revision 1.92  2000/08/15 21:15:08  mju
00940  * Add vector::setup3d() private method.
00941  *
00942  * Revision 1.91  2000/08/15 20:49:38  dwilliss
00943  * Prototypes for MdispLayerSelect()
00944  * Define layer TYPE_Legend2
00945  *
00946  * Revision 1.90  2000/08/14 17:08:05  mju
00947  * Make tool_sml::callfunction noninline.
00948  *
00949  * Revision 1.88  2000/08/11 20:19:52  mju
00950  * Redesign viewscript stuff so works with toolscript.
00951  * Move GRE_TOOL_SML here as need public interface.
00952  *
00953  * Revision 1.86  2000/08/09 22:05:23  mju
00954  * Use MILIST for view tools.
00955  * Change GetMenu/IconItem methods to use SIMPLE_ARRAY.
00956  *
00957  * Revision 1.85  2000/08/08 16:49:27  mju
00958  * Add GRE_LEGEND::DRAWCONTEXT::SetDrawLabels().
00959  *
00960  * Revision 1.84  2000/08/04 17:53:11  mju
00961  * Remove raster::m_LegendValid member as is in layer.
00962  *
00963  * Revision 1.82  2000/07/31 20:11:16  mju
00964  * Add raster::getcolorsamplelegend.
00965  *
00966  * Revision 1.81  2000/07/28 21:46:01  mju
00967  * Legend redesign.
00968  *
00969  * Revision 1.80  2000/07/26 21:40:07  mju
00970  * Add initial GRE_LEGEND defns.
00971  * Make layer;ReportRawElemInfo use MISTRING&.
00972  *
00973  * Revision 1.79  2000/07/24 21:03:42  mju
00974  * Add layer;:constructfromgeocat.
00975  *
00976  * Revision 1.78  2000/07/11 16:09:33  mju
00977  * Add parm to view::updategrouplegend.
00978  *
00979  * Revision 1.77  2000/07/07 17:11:25  mju
00980  * Mark view::ViewWireframe for deletion.
00981  *
00982  * Revision 1.1  1997/05/23  21:06:34  mju
00983  * Initial revision
00984  * \endif
00985 **/
00986 
00987 #ifndef INC_MI32_MDISP_H
00988 #define INC_MI32_MDISP_H
00989 
00990 #if !defined(INC_MI32_STDAFX_H) && defined(WIN32_MFC)
00991 #include <mi32/stdafx.h>
00992 #endif
00993 
00994 #ifdef WIN32_MFC
00995    #include <mgui/oxttctrl.h>
00996    #include <mgui/sizingcb.h>
00997 #endif
00998 
00999 #ifndef  INC_MI32_RVCDEFNS_H
01000    #include <mi32/rvcdefns.h>
01001 #endif
01002 
01003 #ifndef  INC_MI32_RVCRAST_H
01004    #include <mi32/rvcrast.h>
01005 #endif
01006 
01007 #ifndef  INC_MI32_RVCDBASE_H
01008    #include <mi32/rvcdbase.h>
01009 #endif
01010 
01011 #ifndef  INC_MI32_RVCLEGND_H
01012    #include <mi32/rvclegnd.h>
01013 #endif
01014 
01015 #ifndef INC_MI32_MGUI_H
01016    #include <mi32/mgui.h>
01017 #endif
01018 
01019 #ifndef  INC_MI32_MATTE_H
01020    #include <mi32/matte.h>
01021 #endif
01022 
01023 #ifndef  INC_MI32_CONTPARM_H
01024    #include <mi32/contparm.h>
01025 #endif
01026 
01027 #ifndef INC_MI32_TRANSGEN_H
01028    #include <mi32/transgen.h>
01029 #endif
01030 
01031 #ifndef INC_MI32_GEOFRMLA_H
01032    #include <mi32/geofrmla.h>
01033 #endif
01034 
01035 #ifndef INC_MI32_MGD2_H
01036    #include <mi32/mgd2.h>
01037 #endif
01038 
01039 #ifndef INC_MI32_DRAWGEN_H
01040    #include <mi32/drawgen.h>
01041 #endif
01042 
01043 #ifndef INC_MI32_CONTRAST_H
01044    #include <mi32/contrast.h>
01045 #endif
01046 
01047 #ifndef INC_MI32_COLORBAL_H
01048    #include <mi32/colorbal.h>    //! for defn of CBPARMS
01049 #endif
01050 
01051 #ifndef INC_MI32_COLRCONV_H
01052    #include <mi32/colrconv.h>
01053 #endif
01054 
01055 #ifndef INC_MI32_TRANS2D_H
01056    #include <mi32/trans2d.h>
01057 #endif
01058 
01059 #ifndef INC_MI32_TRANS3D_H
01060    #include <mi32/trans3d.h>
01061 #endif
01062 
01063 #if !defined(INC_MI32_MXTOOLS_H) && defined(X_NATIVE)
01064    #include <mi32/mxtools.h>
01065 #endif
01066 
01067 #ifndef INC_MI32_GRTREE_H
01068    #include <mi32/grtree.h>
01069 #endif
01070 
01071 #ifndef INC_MI32_UCSTRING_H
01072    #include <mi32/ucstring.h>
01073 #endif
01074 
01075 #ifndef INC_STRING_H
01076    #include <string.h>
01077    #define INC_STRING_H
01078 #endif
01079 
01080 #ifndef INC_MI32_SERIALIZ_H
01081    #include <mi32/serializ.h>
01082 #endif
01083 
01084 #ifndef INC_MI32_SML_H
01085    #include <mi32/sml.h>
01086 #endif
01087 
01088 #ifndef INC_MI32_MPLAYOUT_H
01089    #include <mi32/mplayout.h>
01090 #endif
01091 
01092 #ifndef  INC_MI32_LATLONFM_H
01093    #include <mi32/latlonfm.h>
01094 #endif
01095 
01096 #ifndef  INC_MI32_GRLAYOUT_H
01097    #include <mi32/grlayout.h>
01098 #endif
01099 
01100 #ifndef  INC_MI32_DBEDIT_H
01101    #include <mi32/dbedit.h>
01102 #endif
01103 
01104 #ifndef  INC_MI32_RANGE_H
01105    #include <mi32/range.h>
01106 #endif
01107 
01108 #ifndef  INC_RVC_DBTABLE_H
01109    #include <rvc/dbtable.h>
01110 #endif
01111 
01112 #ifndef  INC_RVC_CAD_H
01113    #include <rvc/cad.h>
01114 #endif
01115 
01116 #ifndef  INC_GRE_BASE_H
01117    #include <gre/base.h>
01118 #endif
01119 
01120 #ifndef  INC_MI32_SIMPLEAR_H
01121    #include <mi32/simplear.h>
01122 #endif
01123 
01124 #ifndef  INC_GRE_OBJECTBASE_H
01125    #include <gre/objectbase.h>
01126 #endif
01127 
01128 #ifndef  INC_GRE_VIEWSCRIPT_H
01129    #include <gre/viewscript.h>
01130 #endif
01131 
01132 #ifndef  INC_GRE_SYSTEM_H
01133    #include <gre/system.h>
01134 #endif
01135 
01136 #ifndef  INC_GRE_VIEWABLE_H
01137    #include <gre/viewable.h>
01138 #endif
01139 
01140 #ifndef  INC_GRE_LAYER_H
01141    #include <gre/layer.h>
01142 #endif
01143 
01144 #ifndef  INC_GRE_GROUP_H
01145    #include <gre/group.h>
01146 #endif
01147 
01148 #ifndef  INC_GRE_LAYOUT_H
01149    #include <gre/layout.h>
01150 #endif
01151 
01152 #ifndef  INC_GRE_VIEW_H
01153    #include <gre/view.h>
01154 #endif
01155 
01156 #ifndef  INC_GRE_GEOLOCK_H
01157    #include <gre/geolock.h>
01158 #endif
01159 
01160 #ifndef  INC_GRE_3DSCENE_H
01161    #include <gre/3dscene.h>
01162 #endif
01163 
01164 #ifndef  INC_GRE_3DTERRA_H
01165    #include <gre/3dterra.h>
01166 #endif
01167 
01168 #ifndef  INC_GRE_VIEWPOINT3D_H
01169    #include <gre/viewpoint3d.h>
01170 #endif
01171 
01172 /*----------------------------------------------------------------------------*/
01173 
01174 #ifndef GENERATING_DOXYGEN_OUTPUT
01175 
01176 //! Forward class/structure definitions
01177 class BITSET_UNOWNED;
01178 struct POINTPARMS;
01179 struct LINEPARMS;
01180 struct POLYPARMS;
01181 class GEOCAT_DIALOG;
01182 class QUADTREE;
01183 
01184 namespace MGPS {
01185    class SOURCE;
01186    }
01187 
01188 namespace RVC {
01189    class GEOMETRIC;
01190    class VECTOR;
01191    class TIN;
01192    class CAD;
01193    class GETOBJFILTER;
01194    }
01195 
01196 #ifdef WIN32_MFC
01197 class CRect;
01198 #endif
01199 
01200 #endif // GENERATING_DOXYGEN_OUTPUT
01201 
01202 /*----------------------------------------------------------------------------*/
01203 /*    Flags used in various Mdisp... functions                                */
01204 /*----------------------------------------------------------------------------*/
01205 
01206 #define  MDISP_View3dNoViewPointIcon   0x0001   //!< Don't include "viewpoint" icon on toolbar in 3D view
01207 #define  MDISP_View3dNoStereoIcon      0x0002   //!< Don't include "stereo" icon on toolbar in 3D view
01208 
01209 #define  MDISP_LocatorDftOpen       0x00000001  //!< Default to having locator open
01210 #define  MDISP_LocatorViewParent    0x00000002  //!< Use reference view as parent to locator window
01211 
01212 #define  MDISPEXTENTS_LayoutCoords  0x0001      //!< Return extents in layout coordinates
01213 #define  MDISPEXTENTS_ViewCoords    0x0002      //!< Return extents in "view" coordinates
01214 
01215          //! Flags for MdispGroupControlPanelOpen()
01216 #define  MDISP_GCP_OrientOnly    0x00000001     //!< Only put "orientation" controls on dialog
01217 
01218          //! Flags for Mdisp...Draw... and MdispLayerHighlight...
01219 #define  MDISPDRAW_Unselected          0x00000001  //!< Draw only "unselected" elements
01220 #define  MDISPDRAW_Selected            0x00000002  //!< Draw only "selected" elements
01221 #define  MDISPDRAW_NoLabels            0x00000004  //!< Don't draw label elements
01222 #define  MDISPDRAW_LabelsOnly          0x00000008  //!< Only draw label elements
01223 #define  MDISPDRAW_AllBackground       0x00000010  //!< Draw everything in background pixel
01224 #define  MDISPDRAW_ForceDraw           0x00000020  //!< Force all specified elements to draw even if not "selected"
01225 #define  MDISPDRAW_UpdateSearchTree    0x00000040  //!< Update search tree when drawing even if in tree already
01226 #define  MDISPDRAW_UpdateScreen        0x00000080  //!< Refresh screen after drawing
01227 #define  MDISPDRAW_IfNeeded            0x00000100  //!< Only draw if needed
01228 #define  MDISPDRAW_NoLocator           0x00000200  //!< Don't draw locator views
01229 #define  MDISPDRAW_OnlyLocator         0x00000400  //!< Only draw locator views
01230 #define  MDISPDRAW_DirectScreen        0x00000800  //!< Draw directly to screen, bypassing pixmap/memory
01231 #define  MDISPDRAW_AllNonLocViews      0x00001000  //!< Draw all non-locator views
01232 #define  MDISPDRAW_SelectChanged       0x00002000  //!< Draw elements changed by HighlightElement...
01233 #define  MDISPDRAW_NoMessage           0x00004000  //!< Don't display messages while drawing
01234 #define  MDISPDRAW_Wireframe           0x00008000  //!< Only draw wireframes
01235 #define  MDISPDRAW_NoResumeTool        0x00010000  //!< Don't "resume" tool after drawing view
01236 #define  MDISPDRAW_DirectPixmap        0x00020000  //!< Draw directly to pixmap, bypassing Mem24
01237 #define  MDISPDRAW_NoBlankScreen       0x00040000  //!< Don't "blank" screen when start drawing view
01238 #define  MDISPDRAW_IfAutoUpdate        0x00080000  //!< Draw if auto-update option on and if needed
01239 #define  MDISPDRAW_SetDrawnBit         0x00100000  //!< Set bit in DrawnSet if element drawn
01240 #define  MDISPDRAW_MemAndPixmap        0x00200000  //!< Draw both to Mem24 and Pixmap
01241 #define  MDISPDRAW_NoCallbacks         0x00400000  //!< Don't invoke callback lists while drawing
01242 #define  MDISPDRAW_CheckDrawnSet       0x00800000  //!< Check "drawn" set for highlighting (by region)
01243 #define  MDISPDRAW_ReduceSpeckle3D     0x01000000  //!< Perform 3D background speckle reduction
01244 #define  MDISPDRAW_NoScanColorUse      0x02000000  //!< Don't scan for color usage
01245 #define  MDISPDRAW_UseHighlightColor   0x04000000  //!< Draw elements in "highlight" color
01246 #define  MDISPDRAW_UseActiveColor      0x08000000  //!< Draw element in "active" color
01247 #define  MDISPDRAW_NoCheckVisible      0x10000000  //!< Don't check visiblity of layer/group in view
01248 #define  MDISPDRAW_LabelPlacementPass  0x20000000  //!< Internal use: 2nd pass to render just labels
01249 
01250          //! Flags for MdispSelect... functions
01251 #define  MDISPSELECT_ViewCoords           0x0000   //!< Point(s) in "view" coordinates
01252 #define  MDISPSELECT_DisplayCoords        0x0001   //!< Point(s) in "display" coordinates
01253 #define  MDISPSELECT_AutoOpenDefaultLayer 0x0002   //!< Automatically make "default" layer elements selectable
01254 #define  MDISPSELECT_AutoOpenActiveLayer  0x0004   //!< Automatically make "active" layer elements selectable
01255 #define  MDISPSELECT_AutoOpenTable        0x0008   //!< Automatically open table(s) for selectable element types
01256 
01257 #define  MDISPELEMSELECT_NotSet     0     //!< Not set, use parent's selection mode
01258 #define  MDISPELEMSELECT_Replace    1     //!< Replace selected set with elements provided
01259 #define  MDISPELEMSELECT_Add        2     //!< Add elements provided to selected set
01260 #define  MDISPELEMSELECT_Subtract   3     //!< Subtract elements from selected set
01261 #define  MDISPELEMSELECT_Toggle     4     //!< Toggle selection status of elements
01262 #define  MDISPELEMSELECT_Last       4
01263 
01264 #define  MDISPELEMACTIVE_First         0x0001
01265 #define  MDISPELEMACTIVE_Previous      0x0002
01266 #define  MDISPELEMACTIVE_Next          0x0004
01267 #define  MDISPELEMACTIVE_Last          0x0008
01268 #define  MDISPELEMACTIVE_KeepCurrent   0x0010   //!< Keep current active element if highlighted
01269 #define  MDISPELEMACTIVE_NoWrap        0x0020   //!< Don't wrap around end/beginning if reached
01270 
01271 #define  MDISPTOOLGENERIC_NoSetTrans      0x0001   //!< Don't set tool-view transformation
01272 #define  MDISPTOOLGENERIC_SetTransToGroup 0x0002   //!< Set transformation to be from tool<-->group
01273 
01274 #define  MDISPGROUPGETEXT_IgnoreMargins   0x00000001  //!< Ignore margins when computing group extents
01275 
01276 
01277 //! Macros for definition of sml functions and class members.
01278 #define SMLMEMBER_LAYERDISPFLAG(name,invert,flag,desc) {name, STYPE_Num, GRE_LAYER::SMLGET_LayerDispFlag, GRE_LAYER::SMLSET_LayerDispFlag, 0, 0, invert, flag, 0,0,0,0, desc}
01279 
01280 
01281 //===================================================================================================================
01282 //!      Constants used in Mdisp... functions
01283 
01284 #define  GRE_WorldRange    1000000        //!< Range of "world" coordinates
01285 #define  GRE_WorldRangeFP  1000000.0      //!< Range in floating-point
01286 
01287 
01288 
01289 #define  MDISPVISIBLE_AllViews         0xFFFFFFFF
01290 #define  MDISPVISIBLE_Locator          0x00000001
01291 #define  MDISPVISIBLE_Hardcopy         0x80000000
01292 
01293 #define  LEGENDVIEW_SHOW_NotSet  0
01294 #define  LEGENDVIEW_SHOW_None    1
01295 #define  LEGENDVIEW_SHOW_Left    2
01296 #define  LEGENDVIEW_SHOW_Right   3
01297 
01298 #define  LEGENDVIEW_VISIND_Checkbox 0
01299 #define  LEGENDVIEW_VISIND_Glasses  1
01300 
01301 
01302 #define  ROTBASE_Projection      0
01303 #define  ROTBASE_North           1
01304 
01305 #define  ATTACHMENT_None         0
01306 #define  ATTACHMENT_Left         1
01307 #define  ATTACHMENT_Bottom       1
01308 #define  ATTACHMENT_Center       2
01309 #define  ATTACHMENT_Right        3
01310 #define  ATTACHMENT_Top          3
01311 #define  ATTACHMENT_Geographic   4
01312 
01313 #define  ATTACHREF_None          0
01314 #define  ATTACHREF_Group         1
01315 #define  ATTACHREF_Page          2
01316 #define  ATTACHREF_Margin        3
01317 
01318 #define  OFFSETTYPE_AtScale      0
01319 #define  OFFSETTYPE_AtOutput     1        //!< Group positioning offsets are in absolute values for hardcopy output
01320 
01321 //===================================================================================================================
01322 
01323 
01324 #define  LABELPOSN_Default             0
01325 
01326 #define  LABELPOSN_PointAboveLeft      1
01327 #define  LABELPOSN_PointAboveCenter    2
01328 #define  LABELPOSN_PointAboveRight     3
01329 #define  LABELPOSN_PointCenterLeft     4
01330 #define  LABELPOSN_PointCenter         5
01331 #define  LABELPOSN_PointCenterRight    6
01332 #define  LABELPOSN_PointBelowLeft      7
01333 #define  LABELPOSN_PointBelowCenter    8
01334 #define  LABELPOSN_PointBelowRight     9
01335 
01336 #define  AUTOLABELOPTM_None            0x00
01337 #define  AUTOLABELOPTM_Fast            0x01
01338 #define  AUTOLABELOPTM_Full            0x02
01339 #define  AUTOLABELOPTM_HideOverlap     0x04
01340 
01341 #define  AUTOLABELPRIORITY_AllSame     0
01342 #define  AUTOLABELPRIORITY_ByField     1
01343 #define  AUTOLABELPRIORITY_ByScript    2
01344 
01345 
01346 //===================================================================================================================
01347 
01348 #ifndef GENERATING_DOXYGEN_OUTPUT
01349 #ifdef WIN32_MFC
01350 
01351 class GRE_MFC_STATUSBAR : public CStatusBar {
01352    public:
01353 
01354       //! Constructor.
01355       GRE_MFC_STATUSBAR (
01356          );
01357 
01358       //! Create the actual control.
01359       BOOL Create (
01360          CWnd *pParentWnd
01361          );
01362 
01363       //! Set view to associate with status bar.
01364       //! The view is used by the message handler.
01365       void SetView (
01366          GRE_MFC_VIEW *mfcview
01367          ) { m_LastView = mfcview; return; }
01368 
01369    protected:
01370       //! Message map.
01371       afx_msg void OnRButtonDown (UINT nFlags, CPoint point);
01372       DECLARE_MESSAGE_MAP()
01373 
01374    private:
01375       #ifndef GENERATING_DOXYGEN_OUTPUT
01376       GRE_MFC_VIEW *m_LastView;
01377 
01378       GRE_MFC_STATUSBAR (const GRE_MFC_STATUSBAR&);
01379       GRE_MFC_STATUSBAR& operator= (const GRE_MFC_STATUSBAR&);
01380       #endif // GENERATING_DOXYGEN_OUTPUT
01381    };
01382 
01383 #endif
01384 #endif // GENERATING_DOXYGEN_OUTPUT
01385 
01386 //===================================================================================================================
01387 
01388 class GRE_SCRIPTCONTEXT_DRAW {
01389    public:
01390 
01391       //! Constructor.
01392       GRE_SCRIPTCONTEXT_DRAW (
01393          );
01394 
01395       //! Destructor.
01396       virtual ~GRE_SCRIPTCONTEXT_DRAW (
01397          );
01398 
01399       //! Attach SML context.
01400       //! After attachment the SCRIPTCONTEXT_DRAW 'owns' the context and will destroy it when
01401       //! necessary.  The context pointer is passed by reference and set to NULL on return to
01402       //! prevent external use of the context.
01403       void AttachContext (
01404          SMLCONTEXT *& context               //!< Context to attach, will set to NULL on return
01405          );
01406 
01407       //! Create SML context using RVC::GEOMETRIC object.
01408       ERRVALUE CreateContext (
01409          RVC::GEOMETRIC& GeoObj              //!< Geometric object (VECTOR, TIN, CAD, etc)
01410          );
01411 
01412       //! Destroy attached SML context if any.
01413       void DestroyContext (
01414          ) { if (m_context != 0) { m_context->Destroy(); m_context = 0; } }
01415 
01416       //! Get attached SMLCONTEXT pointer.
01417       //! Do not free or Destroy() the returned pointer.
01418       SMLCONTEXT * GetContext (
01419          ) const { return (m_context); }
01420 
01421       //! Determine if have SMLCONTEXT attached.
01422       bool HasContext (
01423          ) const { return (m_context != 0); }
01424 
01425       //! Initialize context variables for drawing.
01426       ERRVALUE InitDraw (
01427          GRE_LAYER *layer,                   //!< Layer
01428          MGD::CONTEXT *gc,                   //!< Drawing device context
01429          const TRANS2D_MAPGEN& trans,
01430          bool Is3D = false                   //!< 3D setting for CartoScript
01431          );
01432 
01433       //! Initialize using layer drawing context.
01434       ERRVALUE InitDraw (
01435          GRE_LAYERDC& layerdc
01436          );
01437 
01438    protected:
01439 
01440       virtual void CreateSymbols (
01441          );
01442 
01443    private:
01444       #ifndef GENERATING_DOXYGEN_OUTPUT
01445 
01446       //! SML symbol pointers for standard symbols.
01447       struct DRAWSYMS {
01448          SMLSYMBOL *CurMapScale;       //!< Current Mapscale at time of drawing
01449          SMLSYMBOL *LayoutMapScale;    //!< Layout Mapscale at time of drawing
01450          SMLSYMBOL *DesignScale;       //!< Design scale at time of drawing
01451          };
01452 
01453       SMLCONTEXT *m_context;
01454       DRAWSYMS m_drawsym;
01455 
01456       GRE_SCRIPTCONTEXT_DRAW (const GRE_SCRIPTCONTEXT_DRAW&);
01457       GRE_SCRIPTCONTEXT_DRAW& operator= (const GRE_SCRIPTCONTEXT_DRAW&);
01458 
01459       #endif // GENERATING_DOXYGEN_OUTPUT
01460    };
01461 
01462 
01463 class GRE_SCRIPTCONTEXT_STYLE : public GRE_SCRIPTCONTEXT_DRAW {
01464    public:
01465 
01466       //! Constructor.
01467       GRE_SCRIPTCONTEXT_STYLE (
01468          );
01469 
01470       //! Destructor.
01471       virtual ~GRE_SCRIPTCONTEXT_STYLE (
01472          );
01473 
01474       //! Create script segment for element and parse specified script.
01475       //! @return SML 'Segment' for parsed script or error < 0.
01476       int CreateSegment (
01477          ELEMTYPE elemtype,                  //!< Element type
01478          const UNICODE *scriptstr            //!< Script string
01479          );
01480 
01481       ERRVALUE Evaluate (
01482          int segment,                        //!< SML segment
01483          INT32 ElemNum,                      //!< Element number, type determined from 'segment'
01484          const RVC::STYLE& StyleObj,         //!< RVC Style object
01485          POINTSTYLE& style,                  //!< Style passed/returned
01486          const DPOINT2D* pt = 0,             //!< Sample point for style sample
01487          bool bDrawingLegendView = false     //!< true if drawing sample for legend view
01488          ) const;
01489 
01490       ERRVALUE Evaluate (
01491          int segment,                        //!< SML segment
01492          INT32 ElemNum,                      //!< Element number, type determined from 'segment'
01493          const RVC::STYLE& StyleObj,         //!< RVC Style object
01494          LINESTYLE& style,                   //!< Style passed/returned
01495          const SIMPLE_ARRAY<DPOINT2D>* pt = 0,     //!< Sample points for style sample
01496          bool bDrawingLegendView = false     //!< true if drawing sample for legend view
01497          ) const;
01498 
01499       ERRVALUE Evaluate (
01500          int segment,                        //!< SML segment
01501          INT32 ElemNum,                      //!< Element number, type determined from 'segment'
01502          const RVC::STYLE& StyleObj,         //!< RVC Style object
01503          POLYSTYLE& style,                   //!< Style passed/returned
01504          const SIMPLE_ARRAY<DPOINT2D>* pt = 0,     //!< Sample points for style sample
01505          bool bDrawingLegendView = false     //!< true if drawing sample for legend view
01506          ) const;
01507 
01508       ERRVALUE Evaluate (
01509          int segment,                        //!< SML segment
01510          RVC::CAD::ELEMENT& Element,         //!< CAD element
01511          const RVC::STYLE& StyleObj,         //!< RVC Style object
01512          const SIMPLE_ARRAY<DPOINT2D>* pt = 0,     //!< Sample points for style sample
01513          bool bDrawingLegendView = false     //!< true if drawing sample for legend view
01514          ) const;
01515 
01516       //! Sets the value of the sample rectangle
01517       void SetSampleRect (
01518          const DRECT2D& rect
01519          ) { m_stylesym.rect = rect; }
01520 
01521    protected:
01522 
01523       virtual void CreateSymbols (
01524          );
01525 
01526    private:
01527       #ifndef GENERATING_DOXYGEN_OUTPUT
01528 
01529       //! SML symbol pointers for standard symbols.
01530       struct STYLESYMS {
01531          SMLSYMBOL *Style;             //!< Style name (string)
01532          SMLSYMBOL *Symbol;            //!< Point symbol name (string)
01533          SMLSYMBOL *DrawPatt;          //!< Pattern for line drawing (string)
01534          SMLSYMBOL *FillPatt;          //!< Pattern for filling (string)
01535          SMLSYMBOL *DrawColor;         //!< Line or Point color (string)
01536          SMLSYMBOL *FillColor;         //!< Fill color (string)
01537          SMLSYMBOL *LineScale;         //!< Line Scaling (number)
01538          SMLSYMBOL *XScale;            //!< X scaling (number)
01539          SMLSYMBOL *YScale;            //!< Y scaling (number)
01540          SMLSYMBOL *Angle;             //!< Rotation angle (number)
01541          SMLSYMBOL *UseStyle;          //!< Flag to use specified style (number)
01542          SMLSYMBOL *DrawSymbol;        //!< Flag to use point symbol (number)
01543          SMLSYMBOL *DrawLinePatt;      //!< Flag to use line pattern for drawing (number)
01544          SMLSYMBOL *DrawBitmapPatt;    //!< Flag to use bitmap pattern for drawing (line or symbol) (number)
01545          SMLSYMBOL *FillBitmapPatt;    //!< Flag to use bitmap pattern for filling (number)
01546          SMLSYMBOL *FillHatchPatt;     //!< Flag to use hatch pattern for filling (number)
01547          SMLSYMBOL *FillInside;        //!< Flag set to fill inside (number)
01548          SMLSYMBOL *DrawBorder;        //!< Flag set to draw border (number)
01549          SMLSYMBOL *MapScale;          //!< Mapscale for relative sizes
01550          SMLSYMBOL *DrawDone;          //!< Flag shows that drawing was already done by query
01551          SMLSYMBOL *DrawTransPct;      //!< Transparency percentage for "DrawColor"
01552          SMLSYMBOL *FillTransPct;      //!< Transparency percentage for "FillColor"
01553          SMLSYMBOL *DrawingSample;     //!< Drawing Sample
01554          SMLSYMBOL *DrawingLegendView;    //!< Drawing Sample
01555          SMLSYMBOL *SampleRect;        //!< Symbol when drawing a style sample
01556          DRECT2D rect;                 //!< The rectangle that SampleRect points to
01557          };
01558 
01559       STYLESYMS m_stylesym;
01560 
01561       void GetColor (
01562          SMLSYMBOL*,
01563          SMLSYMBOL*,
01564          COLOR& color
01565          ) const;
01566 
01567       GRE_SCRIPTCONTEXT_STYLE (const GRE_SCRIPTCONTEXT_STYLE&);
01568       GRE_SCRIPTCONTEXT_STYLE& operator= (const GRE_SCRIPTCONTEXT_STYLE&);
01569 
01570       #endif // GENERATING_DOXYGEN_OUTPUT
01571    };
01572 
01573 
01574 class GRE_SCRIPTCONTEXT_LABEL : public GRE_SCRIPTCONTEXT_DRAW {
01575    public:
01576 
01577       //! Constructor.
01578       GRE_SCRIPTCONTEXT_LABEL (
01579          );
01580 
01581       //! Destructor.
01582       virtual ~GRE_SCRIPTCONTEXT_LABEL (
01583          );
01584 
01585