00001 /** 00002 * \file rvcvect.h <mi32/rvcvect.h> 00003 * \brief RVC Definitions Header File for Vectors 00004 * 00005 * \if NODOC 00006 * $Id: rvcvect.h_v 1.143 2004/09/23 21:52:22 scowan Exp $ 00007 * 00008 * $Log: rvcvect.h_v $ 00009 * Revision 1.143 2004/09/23 21:52:22 scowan 00010 * Added ctors for node and point structures. 00011 * 00012 * Revision 1.142 2004/09/15 21:15:00 scowan 00013 * Added ctor's to vect line and poly. 00014 * 00015 * Revision 1.141 2004/08/24 22:08:48 scowan 00016 * Added total line length field to header. 00017 * 00018 * Revision 1.140 2004/07/20 15:16:12 scowan 00019 * Removed to hide unused functions. 00020 * 00021 * Revision 1.139 2004/07/19 20:24:19 scowan 00022 * Removed unused inline prototypes. 00023 * 00024 * Revision 1.138 2004/07/02 21:08:42 scowan 00025 * Removed unused prototypes. 00026 * 00027 * Revision 1.137 2004/06/03 21:36:46 scowan 00028 * Removed unused prototypes. 00029 * 00030 * Revision 1.136 2004/05/20 19:19:12 scowan 00031 * Removed unused forward declarations. 00032 * 00033 * Revision 1.135 2004/03/12 15:25:06 mju 00034 * Remove unused legacy objectset selection dialog inlines. 00035 * 00036 * Revision 1.134 2004/03/11 16:58:55 mju 00037 * Warn legacy object selection dialogs deprecated. 00038 * 00039 * Revision 1.133 2004/02/16 21:07:03 mju 00040 * Warn on deprecated usage. 00041 * 00042 * Revision 1.132 2004/01/09 21:03:15 scowan 00043 * Removed unused functions. 00044 * 00045 * Revision 1.131 2004/01/02 18:44:04 scowan 00046 * Changed cad tov ector prototype. 00047 * 00048 * Revision 1.130 2003/11/17 17:00:34 scowan 00049 * nc. 00050 * 00051 * Revision 1.129 2003/10/15 17:39:47 mju 00052 * Deprecate groupkey. 00053 * 00054 * Revision 1.128 2003/09/26 19:56:04 scowan 00055 * Adjustment of include files. 00056 * 00057 * Revision 1.127 2003/09/26 19:44:15 scowan 00058 * Removed use on unnecessary include file. 00059 * 00060 * Revision 1.126 2003/09/26 15:33:13 scowan 00061 * Removed more unused functions. 00062 * 00063 * Revision 1.125 2003/09/26 15:29:58 scowan 00064 * Removed "removed" function prototypes. 00065 * 00066 * Revision 1.124 2003/09/26 15:23:47 scowan 00067 * Removed generate isle shell list ex prototype. 00068 * 00069 * Revision 1.123 2003/09/26 14:47:23 scowan 00070 * Removed many function calls that are not used. 00071 * 00072 * Revision 1.122 2003/09/15 13:49:56 fileserver!dwilliss 00073 * Doxygen 00074 * 00075 * Revision 1.121 2003/03/04 21:04:34 scowan 00076 * Changed to default to no elemnent ID tables. 00077 * 00078 * Revision 1.120 2002/12/26 16:24:09 scowan 00079 * Fixed invalid extents handling. 00080 * 00081 * Revision 1.119 2002/09/09 14:00:24 mju 00082 * Always prevent_memfunc. 00083 * 00084 * Revision 1.118 2002/08/21 20:39:59 scowan 00085 * Deprecate old object name define. 00086 * 00087 * Revision 1.117 2002/05/01 17:43:35 scowan 00088 * Removed prototype. 00089 * 00090 * Revision 1.116 2002/03/08 21:19:31 scowan 00091 * Added more to vect label struct. 00092 * 00093 * Revision 1.115 2002/03/08 18:36:37 scowan 00094 * Added clear method. 00095 * delrecated mem.. for info structs. 00096 * 00097 * Revision 1.114 2002/01/03 22:47:13 scowan 00098 * Added buffer friendly version of generate isle shell list. 00099 * Added functions to set and get vector object extents. 00100 * 00101 * Revision 1.113 2001/09/27 21:39:35 scowan 00102 * Added new flags for extents management. 00103 * 00104 * Revision 1.112 2001/09/14 14:58:50 mju 00105 * No mdlg in win32native. 00106 * 00107 * Revision 1.111 2001/06/18 17:03:18 mju 00108 * Add VectorOptimize using OBJITEMs. 00109 * 00110 * Revision 1.110 2001/06/18 15:41:29 mju 00111 * ConvertRasterToVectorBoundary now takes geninfo reference. 00112 * 00113 * Revision 1.109 2001/05/30 14:59:33 scowan 00114 * Export more functions, forgot earlier. 00115 * 00116 * Revision 1.108 2001/05/16 22:05:21 scowan 00117 * Added functions for adding elements, reading element lists with adjustable buffers. 00118 * And adding IsValid methods on elements. 00119 * 00120 * Revision 1.107 2001/04/24 14:08:44 mju 00121 * REMOVE old FindClosestVect... functions. 00122 * 00123 * Revision 1.106 2001/02/13 21:52:50 scowan 00124 * Added flag for spline text baseline. 00125 * 00126 * Revision 1.105 2001/02/12 17:27:18 scowan 00127 * Added label desc flag for following label along curve. 00128 * 00129 * Revision 1.104 2001/01/26 22:37:01 scowan 00130 * *** empty log message *** 00131 * 00132 * Revision 1.103 2001/01/26 20:56:45 scowan 00133 * More methods for point structure. 00134 * 00135 * Revision 1.102 2001/01/18 17:05:49 scowan 00136 * Added helpers for vector node structore. 00137 * 00138 * Revision 1.101 2001/01/17 18:38:38 scowan 00139 * Added vector flags field to header. 00140 * 00141 * Revision 1.100 2000/12/04 16:37:08 mju 00142 * Fix genitor. 00143 * 00144 * Revision 1.99 2000/10/30 18:18:17 msmith 00145 * Genitor documentation. 00146 * 00147 * Revision 1.98 2000/09/19 20:08:21 scowan 00148 * Added write open header function. 00149 * 00150 * Revision 1.97 2000/09/11 19:47:49 scowan 00151 * Added get num element type functions. 00152 * 00153 * Revision 1.96 2000/08/31 15:44:48 mju 00154 * Chg parms for ConvertRasterToVectorContouring. 00155 * 00156 * Revision 1.95 2000/06/27 15:21:29 mju 00157 * Add MfVectorOptimize prototype. 00158 * 00159 * Revision 1.94 2000/06/22 21:50:03 mju 00160 * Use inlines instead of macros for some Mf...Vect fns. 00161 * Don't doc internal fns. 00162 * 00163 * Revision 1.93 2000/06/20 15:23:31 scowan 00164 * const some methods. 00165 * 00166 * Revision 1.92 2000/06/20 15:18:35 scowan 00167 * Inherit from dpoint 3d and create GetExtents for all vector element types. 00168 * 00169 * Revision 1.91 2000/06/07 14:56:01 mju 00170 * Allow node/point casts to DPOINT3D references. 00171 * 00172 * Revision 1.90 2000/05/04 16:16:27 mju 00173 * Add ConvertCADToVector fn. 00174 * 00175 * Revision 1.89 2000/04/26 23:10:59 scowan 00176 * More cosnt. 00177 * 00178 * Revision 1.88 2000/03/17 22:26:55 scowan 00179 * operator for vect info. 00180 * 00181 * Revision 1.87 2000/03/07 16:52:31 scowan 00182 * Moved merge functions to its own include file. 00183 * 00184 * Revision 1.86 1999/11/19 14:21:31 mju 00185 * MdlgGet... prompt const. 00186 * 00187 * Revision 1.85 1999/10/20 20:29:41 mju 00188 * GenPolyPK... const filename. 00189 * 00190 * Revision 1.84 1999/10/20 20:14:20 mju 00191 * Const filenames. 00192 * 00193 * Revision 1.83 1999/10/20 20:02:23 mju 00194 * const filename in RemoveExcessNodes. 00195 * 00196 * Revision 1.82 1999/10/05 22:49:05 scowan 00197 * Changed headere to use inheritance. 00198 * 00199 * Revision 1.81 1999/08/04 20:33:38 scowan 00200 * Added functions to validate element ID tables. 00201 * 00202 * Revision 1.80 1999/06/11 16:22:30 scowan 00203 * *** empty log message *** 00204 * 00205 * Revision 1.79 1999/06/11 16:21:24 scowan 00206 * *** empty log message *** 00207 * 00208 * Revision 1.78 1999/06/11 16:10:15 mju 00209 * In obj sel dlg set defaults for filter+filtdata. 00210 * 00211 * Revision 1.77 1999/06/11 14:46:34 mju 00212 * Obj sel dlg. 00213 * 00214 * Revision 1.76 1999/06/10 22:11:32 mju 00215 * Object selection dialog update. 00216 * 00217 * Revision 1.75 1999/05/27 16:00:34 mju 00218 * Move VPOINT defns to rvcdefns as used for CAD too. 00219 * 00220 * Revision 1.74 1999/05/26 14:06:07 mju 00221 * Header compiles. 00222 * 00223 * Revision 1.73 1999/05/07 21:24:09 mju 00224 * Hdr restruct. 00225 * 00226 * Revision 1.71 1999/01/05 19:13:00 scowan 00227 * Swapped multiple keywords 00228 * 00229 * Revision 1.68 1998/09/30 21:54:36 scowan 00230 * Setup DLL. 00231 * 00232 * Revision 1.64 1998/07/26 21:31:14 dfrolov 00233 * add MfComputeLevelingEqualMedian() 00234 * 00235 * Revision 1.61 1998/06/11 23:06:42 dfrolov 00236 * add MfComputeLevelingFMD() function 00237 * 00238 * Revision 1.60 1998/02/11 17:08:29 scowan 00239 * Added VertexLimit field. 00240 * 00241 * Revision 1.59 1998/02/10 18:26:22 scowan 00242 * Added prototypes. 00243 * 00244 * Revision 1.58 1998/02/02 15:48:25 mju 00245 * Remove obsolete prototypes. 00246 * 00247 * Revision 1.56 1998/01/27 23:14:16 scowan 00248 * Added eelement ID's. 00249 * 00250 * Revision 1.55 1998/01/26 20:05:29 scowan 00251 * Added prototypes. 00252 * 00253 * Revision 1.54 1997/12/16 18:31:09 dfrolov 00254 * add flag CONTOURING_SMOOTHING_GAUSSIAN 00255 * 00256 * Revision 1.53 1997/11/05 18:42:05 scowan 00257 * Change MergeV functions. 00258 * 00259 * Revision 1.52 1997/11/05 00:00:16 dfrolov 00260 * change query strings to be UNICODE in MfConvertTINtoVectorContouringExt 00261 * 00262 * Revision 1.51 1997/10/31 15:59:39 dfrolov 00263 * changed parameters for MfConvertRaster/TINtoVector Contouring 00264 * 00265 * Revision 1.50 1997/10/30 23:05:29 dfrolov 00266 * remove parameters from MfConvertRaster/TIN to vector contouring 00267 * 00268 * Revision 1.49 1997/10/30 22:29:06 dfrolov 00269 * change parameters to UNICODE for MfConvertTINtoVectorContouring and 00270 * MfConvertRasterToVectorContouring 00271 * 00272 * Revision 1.48 1997/10/13 21:32:36 VDRONOV 00273 * change parameter of MfComputeVoronoiPolygons from char* to UNICODE*. 00274 * 00275 * Revision 1.47 1997/08/15 17:01:10 scowan 00276 * Added SplitLinesAtMaxPoints. 00277 * 00278 * Revision 1.44 1997/08/14 20:20:16 scowan 00279 * Changed depth sort function. 00280 * 00281 * Revision 1.43 1997/08/14 20:04:53 scowan 00282 * Added RemoveExcess Nodes prototype. 00283 * 00284 * Revision 1.42 1997/06/26 21:56:49 mju 00285 * Add labelsize parameter to Mf GenerateVectLabelPosn(). 00286 * 00287 * Revision 1.41 1997/06/26 20:50:23 mju 00288 * Add Mf GenerateVectLabelPosn() prototype. 00289 * 00290 * Revision 1.40 1997/06/05 22:12:46 dfrolov 00291 * CONTOURING_ELEVATIONRANGE flag added 00292 * 00293 * Revision 1.39 1997/05/22 22:13:46 scowan 00294 * Added a swap islands function. 00295 * 00296 * Revision 1.38 1997/05/08 18:36:28 scowan 00297 * Changed ReadPolyTrans. 00298 * 00299 * Revision 1.37 1997/02/25 17:51:57 dfrolov 00300 * filter size parameter is added to MfConvertRasterToVectorContouring 00301 * 00302 * Revision 1.36 1997/01/13 22:24:23 dfrolov 00303 * add MfComputeVoronoiPolygons 00304 * 00305 * Revision 1.1 1994/02/08 16:33:28 scowan 00306 * Initial revision 00307 * 00308 * \endif 00309 **/ 00310 00311 #ifndef INC_MI32_RVCVECT_H 00312 #define INC_MI32_RVCVECT_H 00313 00314 #ifndef INC_MI32_RVCDEFNS_H 00315 #include <mi32/rvcdefns.h> 00316 #endif 00317 00318 #ifndef INC_MI32_POINT_H 00319 #include <mi32/point.h> 00320 #endif 00321 00322 #ifndef INC_MI32_RECT_H 00323 #include <mi32/rect.h> 00324 #endif 00325 00326 #ifndef INC_MI32_IEEEFP_H 00327 #include <mi32/ieeefp.h> 00328 #endif 00329 00330 #ifndef INC_MI32_SIMPLEAR_H 00331 #include <mi32/simplear.h> 00332 #endif 00333 00334 #ifndef INC_MI32_TRANSGEN_H // For TRANSFUNC definition 00335 #include <mi32/transgen.h> 00336 #endif 00337 00338 #define VECTORFLAG_NoStdAttribTables 0x0001 00339 #define VECTORFLAG_NoElementIDTables 0x0002 00340 #define VECTORFLAG_CannotReduceExtents 0x0004 00341 #define VECTORFLAG_CannotExpandExtents 0x0008 00342 00343 //! Definition for overall vector header. 00344 struct RVCVECTINFO : public RVCGENINFO { 00345 DPOINT3D_OLD minval; //!< Minimum value for entire vector object 00346 DPOINT3D_OLD maxval; //!< Maximum value for entire vector object 00347 DOUBLE xscale; //!< X scale between vector and ground distances 00348 DOUBLE yscale; //!< Y scale between vector and ground distances 00349 DOUBLE zscale; //!< Z scale between vector and ground distances 00350 INT32 NumNodes; //!< Number of nodes in the entire object 00351 INT32 NumLines; //!< Number of lines in the entire object 00352 INT32 NumPolys; //!< Number of polygons in the vector plane 00353 INT32 NumPoints; //!< Number of point features in the vector object 00354 INT32 maxpoints; //!< Maximum number of points in any line 00355 INT32 maxlines; //!< Maximum number of lines in any polygon or node line list 00356 INT32 maxislands; //!< Maximum number of islands in any polygon 00357 UINT16 PointType; //!< Type of coordinate VPOINT_... 00358 UINT16 vectstat; //!< Obsolete field 00359 INT32 NumLabels; //!< Number of vector labels in the entire object 00360 UINT16 VectorType; //!< Vector type 00361 UINT16 VectorFlags; //!< Vector flags, see below 00362 INT32 NextLineID; //!< ID of next line 00363 INT32 NextPolyID; //!< ID of next polygon 00364 INT32 NextPointID; //!< ID of next point 00365 INT32 VertexLimit; //!< Maximum number of vertices allowed in the vector object 00366 DOUBLE m_TotalLineLength; 00367 00368 RVCVECTINFO ( 00369 ) { 00370 Clear(); 00371 this->VectorFlags = VECTORFLAG_NoElementIDTables; 00372 } 00373 00374 RVCVECTINFO ( 00375 const RVCGENINFO& ginfo 00376 ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;} 00377 00378 RVCVECTINFO& operator= ( 00379 const RVCGENINFO& ginfo //!< RVCVECTINFO to copy 00380 ) { 00381 *static_cast<RVCGENINFO*>(this) = ginfo; 00382 return (*this); 00383 } 00384 00385 void Clear ( 00386 ) {memset(static_cast<void*>(this), 0, sizeof(*this));} 00387 00388 //! Get extents of vector object. 00389 //! @return extents of vector object 00390 DRECT3D GetExtents ( 00391 ) const { 00392 DRECT3D rect; 00393 rect.xinit = minval.x; 00394 rect.yinit = minval.y; 00395 rect.zinit = minval.z; 00396 rect.xlast = maxval.x; 00397 rect.ylast = maxval.y; 00398 rect.zlast = maxval.z; 00399 return (rect); 00400 } 00401 00402 //! Set extents of vector object. 00403 void SetExtents ( 00404 const DRECT3D& rect 00405 ) { 00406 minval.x = rect.xinit; 00407 minval.y = rect.yinit; 00408 minval.z = rect.zinit; 00409 maxval.x = rect.xlast; 00410 maxval.y = rect.ylast; 00411 maxval.z = rect.zlast; 00412 return; 00413 } 00414 00415 }; 00416 00417 //! Vector Node record definition. 00418 struct RVCVECTNODE : public DPOINT3D { 00419 00420 // CONSTRUCTORS 00421 00422 RVCVECTNODE ( 00423 ) : DPOINT3D(0.0,0.0,0.0) {} 00424 00425 RVCVECTNODE ( 00426 const DPOINT2D& rhs 00427 ) : DPOINT3D(rhs) {} 00428 00429 RVCVECTNODE ( 00430 const DPOINT3D& rhs 00431 ) : DPOINT3D(rhs) {} 00432 00433 // OPERATORS 00434 00435 //! Assignment from DPOINT3D 00436 RVCVECTNODE& operator= ( 00437 const DPOINT3D& rhs 00438 ) { 00439 *static_cast<DPOINT3D*>(this) = rhs; 00440 return (*this); 00441 } 00442 00443 //! Assignment from DPOINT2D 00444 RVCVECTNODE& operator= ( 00445 const DPOINT2D& rhs 00446 ) { 00447 *static_cast<DPOINT3D*>(this) = rhs; 00448 return (*this); 00449 } 00450 00451 // METHODS 00452 00453 //! Get extents of vector node. 00454 //! 00455 //! @return extents of vector node 00456 DRECT3D GetExtents ( 00457 ) const { 00458 return (DRECT3D(*this)); 00459 } 00460 00461 bool IsValid ( 00462 ) const { 00463 return (!IsNaN(x)); 00464 } 00465 00466 }; 00467 00468 //! Vector Polygon record definition. 00469 struct RVCVECTPOLY { 00470 DPOINT3D minval; //!< Polygon minimum extents 00471 DPOINT3D maxval; //!< Polygon maximum extents 00472 INT32 polyinside; //!< Polygon we're inside of, or -1 if not contained in another polygon 00473 #ifndef GENERATING_DOXYGEN_OUTPUT 00474 UINT8 space[4]; 00475 #endif //!< GENERATING_DOXYGEN_OUTPUT 00476 00477 RVCVECTPOLY ( 00478 ) { 00479 memset(this, 0, sizeof(*this)); 00480 polyinside = -1; 00481 } 00482 00483 //! Get extents of vector polygon. 00484 //! @return extents of vector polygon 00485 DRECT3D GetExtents ( 00486 ) const { 00487 DRECT3D retval(minval); 00488 retval.Extend(maxval); 00489 return (retval); 00490 } 00491 00492 bool IsValid ( 00493 ) const { 00494 return (!IsNaN(minval.x)); 00495 } 00496 00497 void SetExtents ( 00498 const DRECT3D& rect 00499 ) { 00500 minval.x = rect.xinit; 00501 minval.y = rect.yinit; 00502 minval.z = rect.zinit; 00503 maxval.x = rect.xlast; 00504 maxval.y = rect.ylast; 00505 maxval.z = rect.zlast; 00506 return; 00507 } 00508 00509 }; 00510 00511 //! Vector point record definition. 00512 struct RVCVECTPOINT : public DPOINT3D { 00513 00514 // CONSTRUCTORS 00515 00516 RVCVECTPOINT ( 00517 ) : DPOINT3D(0.0,0.0,0.0) {} 00518 00519 RVCVECTPOINT ( 00520 const DPOINT2D& rhs 00521 ) : DPOINT3D(rhs) {} 00522 00523 RVCVECTPOINT ( 00524 const DPOINT3D& rhs 00525 ) : DPOINT3D(rhs) {} 00526 00527 // OPERATORS 00528 00529 //! Assignment from DPOINT3D 00530 RVCVECTPOINT& operator= ( 00531 const DPOINT3D& rhs 00532 ) { 00533 *static_cast<DPOINT3D*>(this) = rhs; 00534 return (*this); 00535 } 00536 00537 //! Assignment from DPOINT2D 00538 RVCVECTPOINT& operator= ( 00539 const DPOINT2D& rhs 00540 ) { 00541 *static_cast<DPOINT3D*>(this) = rhs; 00542 return (*this); 00543 } 00544 00545 // METHODS 00546 00547 //! Get extents of vector point. 00548 //! 00549 //! @return extents of vector point 00550 DRECT3D GetExtents ( 00551 ) const { 00552 return (DRECT3D(*this)); 00553 } 00554 00555 bool IsValid ( 00556 ) const { 00557 return (!IsNaN(x)); 00558 } 00559 00560 }; 00561 00562 //! Vector Line record definition. 00563 struct RVCVECTLINE { 00564 DPOINT3D minval; //!< Line minimum extents 00565 DPOINT3D maxval; //!< Line maximum extents 00566 INT32 left, right; //!< Polygons on left and right side of line, -1 if none 00567 INT32 start, end; //!< Nodes at start and end of line, may be equal 00568 00569 RVCVECTLINE ( 00570 ) { 00571 memset(this, 0, sizeof(*this)); 00572 left = right = start = end = -1; 00573 } 00574 00575 //! Get extents of vector line. 00576 //! 00577 //! @return extents of vector line 00578 DRECT3D GetExtents ( 00579 ) const { 00580 DRECT3D retval(minval); 00581 retval.Extend(maxval); 00582 return (retval); 00583 } 00584 00585 bool IsValid ( 00586 ) const { 00587 return (!IsNaN(minval.x)); 00588 } 00589 00590 void SetExtents ( 00591 const DRECT3D& rect 00592 ) { 00593 minval.x = rect.xinit; 00594 minval.y = rect.yinit; 00595 minval.z = rect.zinit; 00596 maxval.x = rect.xlast; 00597 maxval.y = rect.ylast; 00598 maxval.z = rect.zlast; 00599 return; 00600 } 00601 00602 }; 00603 00604 //! Values for vectinfo.VectorType field 00605 #define VECTORTYPE_Polygonal 0 //!< Vector object has polygons and full polygon-line-node topology 00606 #define VECTORTYPE_Planar 1 //!< Vector object has no polygons and full line-node topology 00607 #define VECTORTYPE_Network 2 //!< Vector object has no polygons and connected line-node topology 00608 #define VECTORTYPE_NoTopology 3 //!< Vector object has no topology, lines only 00609 00610 //! Contouring 00611 #define CONTOURING_LogScale 0x0001 //!< use natural logarithmic scale 00612 #define CONTOURING_BiCubic 0x0002 //!< use bicubic interpolation 00613 #define CONTOURING_SMOOTHING_AVERAGE 0x0004 //!< use average smoothing 00614 #define CONTOURING_SMOOTHING_QUADRATIC 0x0008 //!< use quadratic smoothing 00615 #define CONTOURING_SMOOTHING_CUBIC 0x0010 //!< use cubic smoothing 00616 #define CONTOURING_SMOOTHING_QUARTIC 0x0020 //!< use quartic smoothing 00617 #define CONTOURING_SMOOTHING_GAUSSIAN 0x0040 //!< use gaussian smoothing 00618 #define CONTOURING_ELEVATIONRANGE 0x0080 //!< create table with elevation ranges for each polygon 00619 #define CONTOURING_Threshold 0x0100 //!< Use "iterative thesholding" method 00620 00621 //! Disallow memset/memcpy. 00622 PREVENT_MEMFUNC(RVCVECTINFO) 00623 00624 //! Vector label structures and flags 00625 00626 #ifdef index 00627 #undef index 00628 #endif 00629 00630 //! Label description structure. 00631 struct RVCLABELDESC { 00632 INT32 type; //!< Type of label 00633 INT32 index; //!< Index of label 00634 RVC::OBJECTNAME name; //!< Label name 00635 INT32 StyleIndex; //!< Label style index 00636 FLOAT height; //!< Height of text to use if style not assigned or exists 00637 }; 00638 00639 #define LABELDESC_Fixed 0x0000 00640 #define LABELDESC_Query 0x0001 00641 #define LABELDESC_UNICODE 0x0002 00642 #define LABELDESC_CurveFit 0x0004 //!< Fit label along baseline curve 00643 #define LABELDESC_SplineFit 0x0008 //!< Fit label along baseline curve with spline 00644 #define LABELDESC_ClipUnder 0x0010 //!< Clip out vector features from under the label 00645 00646 //! Style access structure for leader lines. 00647 struct RVCLABELSTYLE { 00648 RVC::OBJECTNAME name; //!< Style name 00649 INT32 StyleIndex; //!< Style index 00650 #ifndef GENERATING_DOXYGEN_OUTPUT 00651 UINT8 space[4]; 00652 #endif //!< GENERATING_DOXYGEN_OUTPUT 00653 }; 00654 00655 //! Leader line structure. 00656 struct RVCLEADERLINE { 00657 DPOINT3D TiePoint; //!< Leader line tie point 00658 INT32 ElemNum; //!< Element number 00659 INT16 ElemType; //!< ELEMTYPE_... (Point, Line, Poly, Node, or Empty for no attachment) 00660 #ifndef GENERATING_DOXYGEN_OUTPUT 00661 INT16 space; 00662 #endif //!< GENERATING_DOXYGEN_OUTPUT 00663 INT32 PointIndex; //!< Point index 00664 INT32 LabelStyleIndex; //!< Label style index 00665 }; 00666 00667 //! Leader info structure. 00668 struct VECTLEADERINFO { 00669 RVCLEADERLINE LeaderLine; //!< Leader line 00670 RVCLABELSTYLE LStyleIndex; //!< Label style index 00671 void *LeaderPts; //!< Point list 00672 INT32 NumLeaderPts; //!< Number of points 00673 }; 00674 00675 //! Label structure 00676 struct RVCVECTLABEL { 00677 RVCLABELDESC desc; //!< Label description 00678 void *LabelStr; //!< String or query 00679 INT32 LabelStrSize; //!< Size of string or query 00680 void *BasePts; //!< Point list 00681 INT32 NumBasePts; //!< Number of points 00682 VECTLEADERINFO *LLines; //!< Leader Line Data buffer 00683 INT32 NumLLines; //!< Number of leader lines allocated 00684 int PointSize; //!< Size of the points in bytes 00685 }; 00686 00687 /*-------------------------------------------------------------------------*/ 00688 /* Object Selection Dialogs */ 00689 /*-------------------------------------------------------------------------*/ 00690 00691 #if (defined(X_NATIVE) || defined(WIN32_MFC)) && !defined(DEPRECATE_GROUPKEY) 00692 00693 //! Pop-up dialog allowing user to select a vector object. 00694 DEPRECATED inline int MdlgGetVectorObject ( 00695 MDLGPARENT dlgparent, //!< Parent widget 00696 FILEPATH& filename, //!< Default filename 00697 INT32 *inode, //!< Vector object inode passed/returned 00698 const void *prompt, //!< Prompt label 00699 RVCVECTINFO *objinfo, //!< Object header passed/returned 00700 MfFiltFuncProto filter=0, //!< Filter function 00701 void *filtuserdata=0, //!< Filter function data 00702 GETOBJFLAGS flags=GETOBJFLAG_None //!< Get object flags (See rvcdefns.h) 00703 ) { 00704 return (MdlgGetObject(dlgparent,filename,inode,prompt,OTYPE_VECTOR,RVCCONV_VECTOR,objinfo,sizeof(RVCVECTINFO),filter,filtuserdata,flags)); 00705 } 00706 00707 //! Pop-up dialog allowing user to select a vector object. 00708 DEPRECATED inline int MdlgGetVectorObject ( 00709 MDLGPARENT dlgparent, //!< Parent widget 00710 UNICODE *filename, //!< Default filename 00711 INT32 *inode, //!< Vector object inode passed/returned 00712 const void *prompt, //!< Prompt label 00713 RVCVECTINFO *objinfo, //!< Object header passed/returned 00714 MfFiltFuncProto filter=0, //!< Filter function 00715 void *filtdata=0, //!< Filter function data 00716 GETOBJFLAGS flags=GETOBJFLAG_None //!< Get object flags (See rvcdefns.h) 00717 ) { 00718 return (MdlgGetObject(dlgparent,filename,inode,prompt,OTYPE_VECTOR,RVCCONV_VectInfo,objinfo,sizeof(RVCVECTINFO),filter,filtdata,flags)); 00719 } 00720 00721 #endif //!< X_NATIVE || WIN32_MFC 00722 00723 //! Read vector header. 00724 inline int MfReadVectHeader ( 00725 int fhandle, //!< Open file handle 00726 RVCINODENUM inode, //!< Vector object inode 00727 RVCVECTINFO* info //!< Vector header passed / returned 00728 ) { 00729 return (_MfReadHeader(fhandle,inode,info,sizeof(RVCVECTINFO),RVCCONV_VECTOR)); 00730 } 00731 00732 //! Write vector header. 00733 inline int MfWriteVectHeader ( 00734 int fhandle, //!< Open file handle 00735 RVCINODENUM inode, //!< Vector object inode 00736 RVCVECTINFO* info //!< Vector header to write 00737 ) { 00738 return (_MfWriteHeader(fhandle,inode,info,sizeof(RVCVECTINFO),RVCCONV_VECTOR)); 00739 } 00740 00741 /*-----------------------------------------------------------------------*/ 00742 /* Prototypes for RVC Vector functions */ 00743 /*-----------------------------------------------------------------------*/ 00744 00745 #if defined(__cplusplus) 00746 extern "C" { 00747 #endif 00748 00749 #ifndef GENERATING_DOXYGEN_OUTPUT 00750 00751 RVCAPPLIBEXPORT int _MfVectorClose ( 00752 int id, 00753 RVCVECTINFO *info, 00754 int HeaderSize 00755 ); 00756 00757 RVCAPPLIBEXPORT int _MfVectorHeaderReadOpen ( 00758 int id, 00759 RVCVECTINFO *newvinfo, 00760 int HeaderSize 00761 ); 00762 00763 RVCAPPLIBEXPORT int _MfVectorMake ( 00764 int findex, 00765 RVCVECTINFO *newinfo, 00766 int HeaderSize, 00767 UINT32 flags 00768 ); 00769 00770 RVCAPPLIBEXPORT int _MfVectorOpen ( 00771 int findex, 00772 INT32 inode, 00773 RVCVECTINFO *newinfo, 00774 int HeaderSize, 00775 UINT32 flags 00776 ); 00777 00778 #endif //!< GENERATING_DOXYGEN_OUTPUT 00779 00780 //! Return current vector data conversion mode. 00781 //! 00782 //! @ return current vector data conversion mode 00783 RVCAPPLIBEXPORT UINT32 MfGetVectMode ( 00784 int id //!< Open vector object handle 00785 ); 00786 00787 //! Return size of point elements in vector object. 00788 //! 00789 //! @return size of point elements 00790 RVCAPPLIBEXPORT int MfGetVPointSize ( 00791 int id //!< Open vector object handle 00792 ); 00793 00794 //! Read a vector line element header. 00795 RVCAPPLIBEXPORT int MfReadVLine ( 00796 int id, //!< Open vector handle 00797 INT32 num, //!< Line number to read 00798 RVCVECTLINE *hdr, //!< Line header data returned 00799 INT32 *numpts //!< Number of points in line returned 00800 ); 00801 00802 //! Read line list for a vector node element. 00803 RVCAPPLIBEXPORT int MfReadVNode ( 00804 int id, //!< Open vector handle 00805 INT32 num, //!< Node number to read 00806 RVCVECTNODE *hdr, //!< Node header data returned 00807 INT32 *numlines //!< Number of lines in node line list returned 00808 ); 00809 00810 //! Read line list for a vector node element. 00811 RVCAPPLIBEXPORT INT32 MfReadVNodeLines ( 00812 int id, //!< Open vector handle 00813 INT32 node, //!< Node number to read 00814 INT32 start, //!< Starting index in node line list 00815 INT32 num, //!< Number of line numbers to read 00816 INT32 *lines //!< List of line numbers returned 00817 ); 00818 00819 //! Read a vector point element. 00820 RVCAPPLIBEXPORT int MfReadVPoint ( 00821 int id, //!< Open vector handle 00822 INT32 num, //!< Point number to read 00823 RVCVECTPOINT *hdr //!< Point header data returned 00824 ); 00825 00826 //! Read points for a vector line element. 00827 RVCAPPLIBEXPORT INT32 MfReadVPoints ( 00828 int id, //!< Open vector handle 00829 INT32 line, //!< Line number to read 00830 INT32 start, //!< Starting point number to read 00831 INT32 num, //!< Number of points to read 00832 void *pts //!< Pointer to a point buffer 00833 ); 00834 00835 //! Read configurable points for a vector line element. 00836 //! 00837 //! The variable 'type' can be one of these values: 00838 //! 0 Do not convert, read as stored 00839 //! VPOINT_2DXY Convert to X,Y coordinates 00840 //! VPOINT_2DXZ Convert to X,Z coordinates 00841 //! VPOINT_2DYZ Convert to Y,Z coordinates 00842 //! VPOINT_3DXYZ Convert to X,Y,Z coordinates 00843 RVCAPPLIBEXPORT INT32 MfReadVPointsGen ( 00844 int id, //!< Open vector handle 00845 INT32 line, //!< Line number to read 00846 INT32 start, //!< Starting point number to read 00847 INT32 num, //!< Number of points to read 00848 int type, //!< Type of buffer to read into 00849 void *pts //!< Pointer to a point buffer 00850 ); 00851 00852 //! Read a vector polygon element header. 00853 RVCAPPLIBEXPORT int MfReadVPoly ( 00854 int id, //!< Open vector handle 00855 INT32 num, //!< Polygon number to read 00856 RVCVECTPOLY *hdr, //!< Polygon header data returned 00857 INT32 *numlines, //!< Number of lines in polygon line list returned 00858 INT32 *numisles //!< Number of islands in polygon island list returned 00859 ); 00860 00861 //! Read island list for a vector polygon element. 00862 RVCAPPLIBEXPORT INT32 MfReadVPolyIslands ( 00863 int id, //!< Open vector handle 00864 INT32 poly, //!< Polygon number to read 00865 INT32 start, //!< Starting island number to read 00866 INT32 num, //!< Number of islands to read 00867 INT32 *islands //!< Pointer to buffer to read into 00868 ); 00869 00870 //! Read line list for a vector polygon element. 00871 RVCAPPLIBEXPORT INT32 MfReadVPolyLines ( 00872 int id, //!< Open vector handle 00873 INT32 poly, //!< Polygon number to read 00874 INT32 start, //!< Starting line number to read 00875 INT32 num, //!< Number of lines to read 00876 INT32 *lines //!< Pointer to buffer to read into 00877 ); 00878 00879 //! Resize a vector object, deleting elements from the end. 00880 RVCAPPLIBEXPORT int MfResizeVect ( 00881 int id, //!< Open vector handle 00882 INT32 lines, //!< New number of lines must be <= current number of lines 00883 INT32 nodes, //!< New number of nodes 00884 INT32 polys, //!< New number of polygons 00885 INT32 points //!< New number of point features 00886 ); 00887 00888 //! Set data conversion mode for a vector object. 00889 //! 00890 //! Vector modes: 00891 //! VECTMODE_ConvTo2D 00892 //! VECTMODE_Convto3D 00893 RVCAPPLIBEXPORT UINT32 MfSetVectMode ( 00894 int id, //!< Open vector handle 00895 UINT32 mode //!< Data conversion mode 00896 ); 00897 00898 //! Get number of lines. 00899 //! 00900 //! @return number of lines 00901 RVCAPPLIBEXPORT INT32 MfVectorGetNumLines ( 00902 int id //!< Open vector handle 00903 ); 00904 00905 //! Get number of polygons. 00906 //! 00907 //! @return number of polygons 00908 RVCAPPLIBEXPORT INT32 MfVectorGetNumPolygons ( 00909 int id //!< Open vector handle 00910 ); 00911 00912 #ifndef GENERATING_DOXYGEN_OUTPUT 00913 RVCAPPLIBEXPORT int _MfVectorSetPointType ( 00914 int id, 00915 int PointType 00916 ); 00917 00918 #endif //!< GENERATING_DOXYGEN_OUTPUT 00919 00920 //! Write a vector line element header. 00921 RVCAPPLIBEXPORT int MfWriteVLine ( 00922 int id, //!< Open vector handle 00923 INT32 num, //!< Line number to write 00924 const RVCVECTLINE *hdr //!< Line header data to write 00925 ); 00926 00927 //! Write a vector node element header. 00928 RVCAPPLIBEXPORT int MfWriteVNode ( 00929 int id, //!< Open vector handle 00930 INT32 num, //!< Node number to write 00931 const RVCVECTNODE *hdr //!< Node header data to write 00932 ); 00933 00934 //! Write line list for a vector node element. 00935 RVCAPPLIBEXPORT INT32 MfWriteVNodeLines ( 00936 int id, //!< Open vector handle 00937 INT32 node, //!< Node number to write 00938 INT32 total, //!< Total number of lines in this line 00939 INT32 start, //!< Starting line number to write 00940 INT32 num, //!< Number of lines to write 00941 const INT32 *lines //!< Pointer to list of line numbers 00942 ); 00943 00944 //! Write point for a vector line element. 00945 RVCAPPLIBEXPORT int MfWriteVPoint ( 00946 int id, //!< Open vector handle 00947 INT32 num, //!< Point number to write 00948 const RVCVECTPOINT *hdr //!< Point header data to write 00949 ); 00950 00951 //! Write points for a vector line element. 00952 RVCAPPLIBEXPORT INT32 MfWriteVPoints ( 00953 int id, //!< Open vector handle 00954 INT32 line, //!< Line number to write 00955 INT32 total, //!< Total number of points in this line 00956 INT32 start, //!< Starting point number to write 00957 INT32 num, //!< Number of points to write 00958 const void *pts //!< Pointer to point buffer of appropriate type 00959 ); 00960 00961 //! Write a vector polygon element header. 00962 RVCAPPLIBEXPORT int MfWriteVPoly ( 00963 int id, //!< Open vector handle 00964 INT32 num, //!< Polygon number to write 00965 const RVCVECTPOLY *hdr //!< Polygon header data to write 00966 ); 00967 00968 //! Write island list for a vector polygon element. 00969 //! 00970 //! @return number of islands written >= 0 error code < 0 00971 RVCAPPLIBEXPORT INT32 MfWriteVPolyIslands ( 00972 int id, //!< Open vector handle 00973 INT32 poly, //!< Polygon number to write 00974 INT32 total, //!< Total number of islands in this polygon 00975 INT32 start, //!< Starting island number to write 00976 INT32 num, //!< Number of island to write 00977 const INT32 *islands //!< Pointer to list of islands 00978 ); 00979 00980 //! Write line list for a vector polygon element 00981 //! 00982 //! @returns number of lines written >= 0 error code < 0 00983 RVCAPPLIBEXPORT INT32 MfWriteVPolyLines ( 00984 int id, //!< Open vector handle 00985 INT32 poly, //!< Polygon number to write 00986 INT32 total, //!< Total number of lines in this line 00987 INT32 start, //!< Starting line number to write 00988 INT32 num, //!< Number of lines to write 00989 const INT32 *lines //!< Pointer to list of lines 00990 ); 00991 00992 #ifndef GENERATING_DOXYGEN_OUTPUT 00993 INT32 MfLabelStringSize (int id, INT32 type, INT32 index); 00994 #endif //!< GENERATING_DOXYGEN_OUTPUT 00995 00996 //! Return number of baseline points for a label. 00997 //! 00998 //! @return number of label baseline points or < 0 if error 00999 RVCAPPLIBEXPORT INT32 MfNumBaselinePoints ( 01000 int id, //!< Handle for open vector object 01001 INT32 labelnum //!< Index into label entry 01002 ); 01003 01004 //! Return number of strings/queries that exist in object. 01005 //! 01006 //! @return number of label string entries or < 0 if error 01007 RVCAPPLIBEXPORT INT32 MfNumLabelStrings ( 01008 int id, //!< Handle for open vector object 01009 INT32 type //!< Label type (fixed/query) 01010 ); 01011 01012 //! Return number of style references that exist in object. 01013 //! 01014 //! @return number of label style entries or < 0 if error 01015 RVCAPPLIBEXPORT INT32 MfNumLabelStyles ( 01016 int id //!< Handle for open vector object 01017 ); 01018 01019 //! Return number of leader lines for a label. 01020 //! 01021 //! @return number of leader lines attached to this label 01022 RVCAPPLIBEXPORT INT32 MfNumLeaderLines ( 01023 int id, //!< Handle for open vector object 01024 INT32 labelnum //!< Label number to check 01025 ); 01026 01027 //! Return number of leader line point arrays. 01028 //! 01029 //! @return number of leader line point arrays 01030 RVCAPPLIBEXPORT INT32 MfNumLeaderPointItems ( 01031 int id //!< Handle for open vector object 01032 ); 01033 01034 //! Return number of leader line points for this leader line. 01035 //! 01036 //! @return number of points for this leader line 01037 RVCAPPLIBEXPORT INT32 MfNumLeaderPoints ( 01038 int id, //!< Handle for open vector object 01039 INT32 num //!< Index into point array for leader lines. (Use RVCLEADERLINE.PointIndex) 01040 ); 01041 01042 //! Read points for a label baseline. 01043 //! 01044 //! @return number of points read >= 0 or error < 0 01045 RVCAPPLIBEXPORT INT32 MfReadBaselinePoints ( 01046 int id, //!< Handle to open vector object 01047 INT32 labelnum, //!< Label to read baseline points from 01048 INT32 start, //!< Starting point to read from 01049 INT32 num, //!< Number of points to read 01050 void *buf //!< Buffer to hold baseline points 01051 ); 01052 01053 //! Read label description structure for a label. 01054 RVCAPPLIBEXPORT int MfReadLabelDesc ( 01055 int id, //!< Handle to open vector object 01056 INT32 labelnum, //!< Label reference to read 01057 RVCLABELDESC *desc //!< Label structure to read into 01058 ); 01059 01060 //! Read a string/query. 01061 //! 01062 //! NOTE: The type and index fields are from the RVCLABELDESC structure. 01063 RVCAPPLIBEXPORT INT32 MfReadLabelString ( 01064 int id, //!< Handle to open vector object 01065 INT32 type, //!< Type of label to read 01066 INT32 index, //!< Index into string list 01067 void **string //!< Pointer to buffer to hold the label 01068 ); 01069 01070 //! Read a style reference for a label. 01071 RVCAPPLIBEXPORT int MfReadLabelStyle ( 01072 int id, //!< Handle to open vector object 01073 INT32 stylenum, //!< Label style reference to read 01074 RVCLABELSTYLE *style //!< Label style structure to read into. 01075 ); 01076 01077 //! Read a label leader line structure. 01078 //! 01079 //! @return number of leader lines read >= 0 or error < 0 01080 RVCAPPLIBEXPORT INT32 MfReadLeaderLines ( 01081 int id, //!< Handle to open vector object 01082 INT32 labelnum, //!< Label number to read attached leader lines 01083 INT32 start, //!< Starting index to read leader lines 01084 INT32 num, //!< Number of leader lines to read 01085 RVCLEADERLINE *buf //!< Buffer to hold leader lines 01086 ); 01087 01088 //! Read points for a leader line. 01089 //! 01090 //! @return number of leader line points read >= 0 or error < 0 01091 RVCAPPLIBEXPORT INT32 MfReadLeaderPoints ( 01092 int id, //!< Handle to open vector object 01093 INT32 leadernum, //!< Leader line number to read attached points from 01094 INT32 start, //!< Starting index to read leader line points 01095 INT32 num, //!< Number of leader line points to read 01096 void *buf //!< Buffer to hold leader line points 01097 ); 01098 01099 //! Write points for a label baseline. 01100 //! 01101 //! @return number of points written >= 0 or error < 0 01102 RVCAPPLIBEXPORT INT32 MfWriteBaselinePoints ( 01103 int id, //!< Handle to open vector object 01104 INT32 labelnum, //!< Label to write baseline points to 01105 INT32 total, //!< Total number of baseline points to be written 01106 INT32 start, //!< Starting point to write to 01107 INT32 num, //!< Number of points to write 01108 const void *buf //!< Buffer to hold baseline points 01109 ); 01110 01111 //! Write label description structure for a label. 01112 RVCAPPLIBEXPORT int MfWriteLabelDesc ( 01113 int id, //!< Handle to open vector object 01114 INT32 labelnum, //!< Label reference to write 01115 const RVCLABELDESC *desc //!< Label structure to write from 01116 ); 01117 01118 //! Write a string/query. 01119 //! 01120 //! @return number of characters written >= 0 or error < 0 01121 RVCAPPLIBEXPORT INT32 MfWriteLabelString ( 01122 int id, //!< Handle to open vector object 01123 INT32 type, //!< Type of label to write 01124 INT32 index, //!< Index into string list 01125 const void *string, //!< String buffer to write from 01126 INT32 len //!< Length of string to write in bytes 01127 ); 01128 01129 //! Write a style reference for a label. 01130 RVCAPPLIBEXPORT int MfWriteLabelStyle ( 01131 int id, //!< Handle to open vector object 01132 INT32 stylenum, //!< Label style reference to write 01133 const RVCLABELSTYLE *style //!< Label style structure to write from 01134 ); 01135 01136 //! Write a label leader line structure. 01137 //! 01138 //! @return number of leader lines written >= 0 or error < 0 01139 RVCAPPLIBEXPORT INT32 MfWriteLeaderLines ( 01140 int id, //!< Handle to open vector object 01141 INT32 labelnum, //!< Label number to write attached leader lines 01142 INT32 total, //!< Total number of leader lines to write 01143 INT32 start, //!< Starting index to write leader lines 01144 INT32 num, //!< Number of leader lines to write 01145 RVCLEADERLINE *buf //!< Buffer to write leader lines from 01146 ); 01147 01148 //! Write points for a leader line. 01149 //! 01150 //! @return number of leader line points written >= 0 or error < 0 01151 RVCAPPLIBEXPORT INT32 MfWriteLeaderPoints ( 01152 int id, //!< Handle to open vector object 01153 INT32 leadernum, //!< Leader line number to write attached points from 01154 INT32 total, //!< Total number of leader lines to write 01155 INT32 start, //!< Starting index to write leader line points 01156 INT32 num, //!< Number of leader line points to write 01157 const void *buf //!< Buffer to hold leader line points 01158 ); 01159 01160 //! High level vector label functions 01161 #ifndef GENERATING_DOXYGEN_OUTPUT 01162 01163 RVCAPPLIBEXPORT void _MfVectorLabelFree ( 01164 RVCVECTLABEL *vlabel, 01165 int LabelSize 01166 ); 01167 01168 RVCAPPLIBEXPORT int _MfVectorLabelRead ( 01169 int vid, 01170 INT32 labelnum, 01171 RVCVECTLABEL *vlabel, 01172 int LabelSize 01173 ); 01174 01175 RVCAPPLIBEXPORT int _MfVectorLabelTrans ( 01176 RVCVECTLABEL *vlabel, 01177 int LabelSize, 01178 TRANSFUNC Trans, 01179 void *udata 01180 ); 01181 01182 RVCAPPLIBEXPORT int _MfVectorLabelWrite ( 01183 int vid, 01184 INT32 labelnum, 01185 RVCVECTLABEL *vlabel, 01186 int LabelSize 01187 ); 01188 01189 #endif //!< GENERATING_DOXYGEN_OUTPUT 01190 01191 //! Perform geophysical leveling using "Floating Mean Distance" method. 01192 int MfComputeLevelingFMD ( 01193 UNICODE *ifilename, //!< Input filename 01194 INT32 inode, //!< Object inode 01195 UNICODE *ofilename, //!< Output filename 01196 RVCVECTINFO *OutInfo, //!< Output vector info 01197 DOUBLE rpar, //!< In meters 01198 DOUBLE rtr //!< In meters 01199 ); 01200 01201 //! Computes median of the whole object and then sets the median of each line to this value. 01202 int MfComputeLevelingEqualMedian ( 01203 UNICODE *ifilename, //!< Input filename 01204 INT32 inode, //!< Object inode 01205 UNICODE *ofilename, //!< Output filename 01206 RVCVECTINFO *OutInfo //!< RVC info returned 01207 ); 01208 01209 //! Compute Voronoi polygons from set of points. 01210 int MfComputeVoronoiPolygons ( 01211 int Vectid, //!< Input vector object handle 01212 RVCVECTINFO *VectInfo, //!< Vector header for input object 01213 UINT8 *PointSel, //!< Bit-array for selecting points for processing (may be NULL to select all) 01214 UINT8 *OutputSel, //!< Bit-array for selecting points to merge together (may be NULL if just want simple Voronoi) 01215 int fhandle, //!< Open file handle for output object 01216 UNICODE *Filename, //!< Output file name 01217 RVCVECTINFO *VorInfo, //!< Vector header for output object passed/returned 01218 DOUBLE ExtFactor //!< Boundary extension factor between 0.0....1.0 01219 ); 01220 01221 //! Convert a raster object to a vector object by tracing boundaries. 01222 ERRVALUE MfConvertRasterToVectorBound ( 01223 int ifhandle, //!< Source file handle 01224 INT32 irastinode, //!< Source raster inode 01225 int ofhandle,