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