rvcdefns.h

Go to the documentation of this file.
00001 /**
00002  * \file mi32/rvcdefns.h
00003  * \brief RVC Definitions Header File
00004  *
00005  * \if NODOC
00006  * $Id: rvcdefns.h_v 4.469 2005/06/28 14:46:38 mju Exp $
00007  *
00008  * $Log: rvcdefns.h_v $
00009  * Revision 4.469  2005/06/28 14:46:38  mju
00010  * Add mfLinkFileClearMissingList.
00011  *
00012  * Revision 4.468  2005/05/25 21:01:03  scowan
00013  * Add ability to mark an object as being deleted.
00014  *
00015  * Revision 4.467  2005/04/01 18:46:11  dwilliss
00016  * new prototype
00017  *
00018  * Revision 4.466  2005/03/31 16:57:20  fileserver!dwilliss
00019  * Rename one of our types to MIUNICODE because it conflicted with a Microsoft #define
00020  *
00021  * Revision 4.465  2005/03/18 17:20:17  scowan
00022  * Changed parms of function.
00023  *
00024  * Revision 4.464  2005/03/03 23:37:33  scowan
00025  * Added another open file function.
00026  *
00027  * Revision 4.463  2005/03/03 18:47:25  scowan
00028  * Moved legacy georef functions to main library.
00029  *
00030  * Revision 4.462  2005/02/25 16:11:32  scowan
00031  * Removd unused functions from dll.
00032  *
00033  * Revision 4.461  2005/02/24 21:58:42  scowan
00034  * Moved remaining list legacy functions to prlist.
00035  *
00036  * Revision 4.460  2005/02/24 21:23:15  scowan
00037  * Moved most legacy list functions to private, non exported include file.
00038  *
00039  * Revision 4.459  2005/02/24 20:54:41  scowan
00040  * Moved and / or erased prototypes that no longer need to be seen.
00041  *
00042  * Revision 4.458  2005/02/14 23:44:49  scowan
00043  * Removed unused prototypes.
00044  *
00045  * Revision 4.457  2005/02/08 00:25:26  scowan
00046  * Removed unused function prototype.
00047  *
00048  * Revision 4.456  2005/02/04 21:43:29  dwilliss
00049  * Added a getobjflag
00050  *
00051  * Revision 4.455  2005/01/07 15:22:27  mju
00052  * Move crypto prototypes to own hdr.
00053  *
00054  * Revision 4.454  2005/01/03 21:55:32  mju
00055  * Show replacement for deprecated mdlgGetObject... fns.
00056  *
00057  * Revision 4.453  2005/01/03 16:46:29  mju
00058  * Deprecate rvcfilehandle.makeTemp.
00059  *
00060  * Revision 4.452  2005/01/03 16:18:32  mju
00061  * Use pragma to avoid deprecation warning on inlines/
00062  *
00063  * Revision 4.451  2005/01/03 15:56:21  mju
00064  * Deprecate legacy object selection dialogs.
00065  *
00066  * Revision 4.450  2004/12/29 16:04:20  dwilliss
00067  * Undid previous change.  Steve suggedted a better solution
00068  *
00069  * Revision 4.449  2004/12/29 15:29:16  dwilliss
00070  * Added a member to MfChildCallbackStruct
00071  *
00072  * Revision 4.448  2004/11/17 21:34:03  mju
00073  * Add flag for tracing raster boundary to control std attributes.
00074  *
00075  * Revision 4.447  2004/10/13 19:32:28  scowan
00076  * Added copy rvc flag.
00077  *
00078  * Revision 4.446  2004/09/14 20:20:14  scowan
00079  * Removed function prototype.
00080  *
00081  * Revision 4.445  2004/07/29 21:55:36  scowan
00082  * Removed unused prototypes.
00083  *
00084  * Revision 4.444  2004/07/27 22:13:04  scowan
00085  * Removed another unused prototype.
00086  *
00087  * Revision 4.443  2004/07/27 21:12:49  scowan
00088  * Removed 2d version of get object extents.
00089  *
00090  * Revision 4.442  2004/07/27 21:08:52  scowan
00091  * Removed use of mf get num object elements.
00092  *
00093  * Revision 4.441  2004/07/22 14:30:50  mju
00094  * Move objitem defns to own header.
00095  *
00096  * Revision 4.440  2004/07/20 15:51:13  scowan
00097  * Fixed annoying mac warning about comments.
00098  *
00099  * Revision 4.439  2004/07/19 23:18:58  scowan
00100  * Removed unused forward declaration.
00101  *
00102  * Revision 4.438  2004/07/19 13:53:02  mju
00103  * Add objitem.setnew variants using objectname/objectdesc.
00104  *
00105  * Revision 4.437  2004/06/16 19:53:27  scowan
00106  * Added flag to not generate the georeference for cross sections.
00107  *
00108  * Revision 4.436  2004/06/03 22:11:03  scowan
00109  * Removed unused defines.
00110  *
00111  * Revision 4.435  2004/06/03 21:36:40  scowan
00112  * Removed unused defines.
00113  *
00114  * Revision 4.434  2004/04/07 23:04:35  scowan
00115  * Added a copy flag.
00116  *
00117  * Revision 4.433  2004/03/31 22:38:56  mju
00118  * Remove unused getobjflag values.
00119  * Mark obsolete getobjflag_dftnew and _usefilter as deprecated.
00120  *
00121  * Revision 4.432  2004/03/30 15:43:16  scowan
00122  * Undeprecated folder usable flag.
00123  *
00124  * Revision 4.431  2004/03/22 18:14:50  scowan
00125  * Added field to link item.
00126  *
00127  * Revision 4.430  2004/03/19 18:41:29  scowan
00128  * Added callbacks for child operations.
00129  *
00130  * Revision 4.429  2004/03/11 16:29:21  mju
00131  * Change prototypes for mdlggetobject to not have extra form stuff.
00132  *
00133  * Revision 4.428  2004/03/10 23:15:02  scowan
00134  * Marked many functions as deprecated.
00135  *
00136  * Revision 4.427  2004/03/10 21:33:51  mju
00137  * Remove mdlgGetSubobject as no longer used.
00138  *
00139  * Revision 4.426  2004/01/28 23:14:27  scowan
00140  * Changed cross section prototype.
00141  *
00142  * Revision 4.425  2003/11/14 15:35:50  mju
00143  * REmove mdlgMaintProjectFile.
00144  *
00145  * Revision 4.424  2003/11/10 18:45:07  mju
00146  * Add objitem.setobjectinfo.
00147  *
00148  * Revision 4.423  2003/11/06 23:04:17  scowan
00149  * Removed prototype of removed function.
00150  *
00151  * Revision 4.422  2003/10/27 17:14:12  scowan
00152  * Changed not selectable filt flag to be the same as filt not usable.
00153  *
00154  * Revision 4.421  2003/10/22 17:46:03  scowan
00155  * Deprecated some filt flags.
00156  *
00157  * Revision 4.420  2003/10/15 17:39:12  mju
00158  * Deprecate groupkey.
00159  *
00160  * Revision 4.419  2003/10/08 22:27:49  scowan
00161  * Removed unused function call.
00162  *
00163  * Revision 4.418  2003/10/06 20:06:30  scowan
00164  * Pruned unused rfunctions.
00165  *
00166  * Revision 4.417  2003/10/03 21:30:29  scowan
00167  * nc.
00168  *
00169  * Revision 4.416  2003/10/02 19:15:27  scowan
00170  * Removed get localized name function.
00171  *
00172  * Revision 4.415  2003/09/26 19:56:07  scowan
00173  * Adjustment of include files.
00174  *
00175  * Revision 4.414  2003/09/26 15:57:04  scowan
00176  * Removed open link file function.
00177  *
00178  * Revision 4.413  2003/09/26 14:47:06  scowan
00179  * Do not export function that will soon be deprecated.
00180  *
00181  * Revision 4.412  2003/09/25 22:25:13  scowan
00182  * Removed unused functions and methods.
00183  *
00184  * Revision 4.411  2003/09/22 19:56:27  scowan
00185  * Removed call to copy file raw, it has been replaced.
00186  *
00187  * Revision 4.410  2003/09/15 23:00:14  scowan
00188  * Added callback reason.
00189  *
00190  * Revision 4.409  2003/09/15 13:49:56  fileserver!dwilliss
00191  * Doxygen
00192  *
00193  * Revision 4.408  2003/09/02 17:10:44  scowan
00194  * Moved some prototypes.
00195  *
00196  * Revision 4.407  2003/09/02 16:56:36  dwilliss
00197  * Added COPYRVC flag to freeze computed fields
00198  *
00199  * Revision 4.406  2003/08/29 23:02:57  scowan
00200  * Removed unused functions.
00201  *
00202  * Revision 4.405  2003/08/29 21:45:27  scowan
00203  * Cleanup unused functions.
00204  *
00205  * Revision 4.404  2003/08/28 19:34:01  scowan
00206  * nc.
00207  *
00208  * Revision 4.403  2003/08/28 15:24:59  scowan
00209  * Removed use of fname obj list struct and functions.
00210  *
00211  * Revision 4.402  2003/08/27 21:31:26  scowan
00212  * Added structures and removed functions and other stuff.
00213  *
00214  * Revision 4.401  2003/08/15 16:42:05  scowan
00215  * Removed unused copy rvc flags.
00216  *
00217  * Revision 4.400  2003/08/13 21:43:24  scowan
00218  * Removed copy object "T" function prototypes.
00219  *
00220  * \endif
00221 **/
00222 
00223 #ifndef INC_MI32_RVCDEFNS_H
00224 #define INC_MI32_RVCDEFNS_H
00225 
00226 #if defined (__cplusplus)
00227 
00228 #ifndef INC_MI32_STDDEFNS_H
00229    #include <mi32/stddefns.h>
00230 #endif
00231 
00232 #ifndef INC_MI32_FIXEDSTR_H
00233    #include <mi32/fixedstr.h>
00234 #endif
00235 
00236 #ifndef INC_MI32_FILEPATH_H
00237    #include <mi32/filepath.h>
00238 #endif
00239 
00240 #ifndef INC_MI32_RECT_H
00241    #include <mi32/rect.h>
00242 #endif
00243 
00244 #ifndef INC_MI32_MCB_H
00245    #include <mi32/mcb.h>
00246 #endif
00247 
00248 #ifndef INC_RVC_OBJTYPE_H
00249    #include <rvc/objtype.h>
00250 #endif
00251 
00252 
00253 #ifdef RVCLOWDLL
00254    #define RVCLOWLIBEXPORT MI_DLLEXPORT
00255 #else
00256    #define RVCLOWLIBEXPORT MI_DLLIMPORT
00257 #endif
00258 
00259 #ifdef RVCAPPDLL
00260    #define RVCAPPLIBEXPORT MI_DLLEXPORT
00261    #define RVCAPPCLASSEXPORT MI_DLLCLASSEXPORT
00262 #else
00263    #define RVCAPPLIBEXPORT MI_DLLIMPORT
00264    #define RVCAPPCLASSEXPORT MI_DLLCLASSIMPORT
00265 #endif
00266 
00267 #include <mi32/hdrtypes.h>
00268 
00269 //! Forward declarations
00270 struct RVCCADINFO;
00271 struct RVCRASTINFO;
00272 struct RVCTININFO;
00273 struct RVCVECTINFO;
00274 struct TEXTSTYLE;
00275 struct TRANSPARM;
00276 class POLYLINE;
00277 
00278 namespace RVC {
00279    class OBJTYPESET;
00280    class OBJECT;
00281    class OBJITEM;
00282    class OPENOBJECT;
00283    typedef MILIST<OBJITEM> OBJITEMLIST;
00284    }
00285 
00286 
00287 #define  MfValidNameChar(c)   ((c)=='_'||(c)>='A'&&(c)<='Z'||(c)>='a'&&(c)<='z'||(c)>='0'&&(c)<='9'||(c)>=160)
00288 #define  FOLDERSEPARATOR      ' '
00289 #define  OBJTYPESEPARATOR     '.'
00290 
00291 /*--------------------------------------------------------------------------*/
00292 /*    Definitions of basic object types supported by RVC                    */
00293 /*--------------------------------------------------------------------------*/
00294 /* mode for opening rvc objects of all kinds */
00295 #define RVCMODE_Mask          0x7F000000
00296 #define RVCMODE_WriteAttempt  0x10000000           //!<  Attempt to open for write, else open for read 
00297 #define RVCMODE_Read          0x40000000
00298 #define RVCMODE_Write         0x20000000
00299 #define RVCMODE_RW            0x60000000
00300 #define RVCMODE_RWAttempt     0x70000000
00301 #define RVCMODE_ReadAhead     0x08000000
00302 #define RVCMODE_Bogus         0x04000000
00303 
00304 /* mode for opening rvc files */
00305 #define RVCFILE_OpenMask            0x000000FF
00306 #define RVCFILE_ReadLock            0x00000001
00307 #define RVCFILE_WriteLock           0x00000002
00308 #define RVCFILE_WriteLockAttempt    0x00000004
00309 #define RVCFILE_SharedLock          0x00000008     //!<  Not Implemented Yet 
00310 #define RVCFILE_NoLock              0x00000010     //!<  Not to be used unless file is system file (i.e. icons.ref) 
00311 #define RVCFILE_ReadAbsolute        0x00000020     //!<  File is to be opened read-only, no lock file and no possibility of change 
00312 #define RVCFILE_NoDialog            0x00000040     //!< Don't display dialog if file is locked, just return error
00313 #define RVCFILE_WriteAbsolute       0x00000080     //!< Override ReadAbsolute system flag for a specific file
00314 
00315 #define RVCFILE_TempFileMask        0x0000FF00
00316 #define RVCFILE_DeleteOnClose       0x00000100
00317 #define RVCFILE_DeleteOnExit        0x00000200
00318 #define RVCFILE_NoDelete            0x00000800
00319 
00320 #define RVCFILE_ForceUnlockBtn      0x00040000     //!<  Force 'unlock' button in mxopenfl.c 
00321 
00322 /**************************************************************************
00323 *  Listing of RVC object types
00324 **************************************************************************/
00325 
00326 //! ----- Top level RVC objects -----
00327 #define OTYPE_ALL             0        //!< Used by Mf??? functions to allow all objects
00328 #define OTYPE_FILE            1
00329 #define OTYPE_FOLDER          2        //!< An object to contain other objects
00330 #define OTYPE_RASTER          3        //!< Raster object
00331 #define OTYPE_VECTOR          4        //!< Vector object
00332 #define OTYPE_CAD             5        //!< CAD object
00333 #define OTYPE_DBASE           6        //!< General database object
00334 #define OTYPE_STYLE           7        //!< Drawing style object
00335 #define OTYPE_DBQUERY         8        //!< Generic database query string
00336 #define OTYPE_FILTER          9        //!< Spatial filter description
00337 #define OTYPE_VIDEOSEQ        10       //!< Ref for sequence of frames on video disk
00338 #define OTYPE_PRTCOLORBAL     30       //!< Printer color balance
00339 #define OTYPE_DISP_GROUP      37       //!< Display group layout information
00340 #define OTYPE_DISP2DWINDOW    38       //!< Display window layout information
00341 #define OTYPE_TIN             39       //!< TIN object
00342 #define OTYPE_LEGEND          41       //!< Legend object
00343 #define OTYPE_REGION          45       //!< Region object
00344 #define OTYPE_DISP_LAYOUT     54       //!< Display layout information
00345 #define OTYPE_SML             55       //!< Stand-alone SML Script
00346 #define OTYPE_SPECTRAL        56       //!< Spectral object
00347 #define OTYPE_RASTERSET       57       //!< Raster Set object
00348 #define OTYPE_DISP_SIM3D      59       //!< Display 3D simulation parameters object
00349 #define OTYPE_HYPERSPECTRAL   60       //!< HyperSpectral object
00350 #define OTYPE_LAYOUTTEMPLATE  65       //!< Layout Template object
00351 #define OTYPE_THUMBNAIL       66       //!< Tumbnail object
00352 #define OTYPE_HOUGHPARMS      71       //!< Hough transformation parameters object
00353 //!#define OTYPE_SHAPE        72       // Geometric "Shape" object (Shapefile, Oracle Spatial, ...) [ USE RVC::OBJECT_Shape ]
00354 
00355 //! ----- RVC subobjects common to multiple objects -----
00356 #define OTYPE_GEOREF          11       //!< Georeference information
00357 #define OTYPE_PAGELAYOUT      12       //!< Information for page layouts
00358 #define OTYPE_HYPER           13       //!< Hyper-index information
00359 #define OTYPE_DBFORM          14       //!< Database display layout
00360 #define OTYPE_TIEPOINT        15       //!< Tie point list
00361 #define OTYPE_DISPPARM        40       //!< Display parameter structure
00362 #define OTYPE_TEXT            42       //!< Generic Text Object
00363 #define OTYPE_ASSOCIATION     46       //!< External file association object
00364 #define OTYPE_QTREE           47       //!< Search Quad Tree object
00365 #define OTYPE_DBPARM          48       //!< Database parameters object
00366 #define OTYPE_THEME           49       //!< Theme Mapping parameters object
00367 //!#define OTYPE_METADATA     50       // Metadata object - text [ CONFLICTS WITH ORACLE INCLUDE FILE, USE RVC::OBJECT_Metadata ]
00368 #define OTYPE_EDITPARM        53       //!< Object Editor parameter structure
00369 #define OTYPE_SPATIALTREEOLD  67       //!< DEPRECATED
00370 #define OTYPE_SPATIALTREEOLD2 69       //!< DEPRECATED
00371 #define OTYPE_SPATIALTREE     70       //!< Vector element sort tree
00372 //!#define OTYPE_ICMPROFILE      74       // ICM Profile object [ USE RVC::OBJTYPE_ICMProfile ]
00373 
00374 //! ----- RVC subobjects common to raster objects -----
00375 #define OTYPE_HISTO           16       //!< Raster histogram
00376 #define OTYPE_CONTAB          17       //!< Contrasting table
00377 #define OTYPE_2DHISTINFO      18       //!< Information about 2-D histogram
00378 #define OTYPE_COLMAP          19       //!< Color table for rasters
00379 #define OTYPE_RASTDBASE       20       //!< Database for raster cells
00380 #define OTYPE_FREQPROCINFO    21       //!< Information to match frequency-domain rasters
00381 #define OTYPE_RASTERTREND     22       //!< Trend Information
00382 #define OTYPE_SPOTHEADER      23       //!< Header (leader) file from SPOT tape
00383 #define OTYPE_CAMERACALIB     24       //!< Camera calibration information
00384 #define OTYPE_SENSORINFOOLD   58       //!< Sensor calibration information for spectral bands (OLD)
00385 #define OTYPE_HYPERHIST       62       //!< Hyperspectral histogram sub-object
00386 #define OTYPE_HYPERSENSOR     63       //!< Hyperspectral sensor sub-object
00387 #define OTYPE_SENSORINFO      64       //!< Sensor calibration information for spectral bands
00388 
00389 //! ----- RVC subobjects common to vector objects -----
00390 #define OTYPE_POINTDBASE      25       //!< Database for point elements
00391 #define OTYPE_LINEDBASE       26       //!< Database for line elements
00392 #define OTYPE_POLYDBASE       27       //!< Database for polygon elements
00393 #define OTYPE_NODEDBASE       28       //!< Database for node elements
00394 #define OTYPE_VECTDBASE       44       //!< Database for vector objects
00395 
00396 //! ----- RVC subobjects common to CAD objects -----
00397 #define OTYPE_CADDBASE        29       //!< Database for CAD objects
00398 
00399 //! ----- RVC subobjects common to SHAPE objects -----
00400 //!#define OTYPE_SHAPEDBASE      73       // Database for CAD objects
00401 
00402 //! ----- RVC subobjects common to TIN objects -----
00403 #define OTYPE_TINDBASE        43       //!< Database for TIN objects
00404 
00405 //! ----- RVC subobjects common to database objects -----
00406 //!#define OTYPE_TABLE        51       // Table OTYPE tag for databases [ CONFLICTS WITH ORACLE INCLUDE FILE, USE RVC::OBJECT_Table ]
00407 #define OTYPE_INVDBLIST       52       //!< Database table to element lists
00408 #define OTYPE_DBCONSTRAINT    61       //!< Database table constraint information
00409 #define OTYPE_DBINDEX         68       //!< Database table constraint information
00410 
00411 //! ----- RVC objects used in .REF files -----
00412 #define OTYPE_PRINTDEF        31       //!< Description for raster printer devices
00413 #define OTYPE_PLOTDEF         32       //!< Description for pen plotter devices
00414 #define OTYPE_OFONT           33       //!< Outline(stroke) font
00415 #define OTYPE_GENERICREF      34       //!< Generic reference object, not user-viewable object
00416 #define OTYPE_SCANDEF         35       //!< Description for scanners
00417 #define OTYPE_XYDIGDEF        36       //!< Description for XY digitizer devices
00418 
00419 #define OTYPE_LAST            75       //!< Update rvcmain.c and messages.txt [rvc] section when change
00420 
00421 #define  RVCCONV_RASTER          RVCCONV_RastInfo
00422 #define  RVCCONV_CAD             RVCCONV_CADInfo
00423 #define  RVCCONV_HISTO           RVCCONV_HistInfo
00424 #define  RVCCONV_CONTAB          RVCCONV_ConTab
00425 #define  RVCCONV_COLMAP          RVCCONV_CMapInfo
00426 #define  RVCCONV_DBASE           RVCCONV_DbaseInfo
00427 #define  RVCCONV_GEOREF          RVCCONV_GeoRefInfo
00428 #define  RVCCONV_VECTOR          RVCCONV_VectInfo
00429 #define  RVCCONV_TIEPOINT        RVCCONV_TiePointInfo
00430 #define  RVCCONV_TIN             RVCCONV_TINInfo
00431 #define  RVCCONV_CAMERACALIB     RVCCONV_CameraInfo
00432 #define  RVCCONV_FILTER          RVCCONV_FiltInfo
00433 #define  RVCCONV_STYLE           RVCCONV_StyleInfo
00434 #define  RVCCONV_REGION          RVCCONV_RegionInfo
00435 #define  RVCCONV_DISP2DWINDOW    0
00436 #define  RVCCONV_DISP2DGROUP     0
00437 
00438 /*----------------------------------------------------------------------------*/
00439 /*    Definitions for general object headers                                  */
00440 /*----------------------------------------------------------------------------*/
00441 
00442 struct RVCDATETIME {
00443    UINT8 year;                         //!<  Add 1900 to get actual year 
00444    UINT8 month;                        //!<  1-12 
00445    UINT8 day;                          //!<  1-31 
00446    UINT8 hour;                         //!<  0-23 
00447    UINT8 minute;                       //!<  0-59 
00448    UINT8 second;                       //!<  0-59 
00449    UINT16 count;                       //!<  count; if more than one object created with this time 
00450    };
00451 
00452 namespace RVC {
00453 
00454 typedef FIXEDSTRING<16> OBJECTNAME, OBJECTSOURCE;
00455 typedef FIXEDSTRING<64> OBJECTDESC;
00456 
00457 }     //! End of RVC namespace
00458 
00459 typedef RVC::OBJECTNAME RVCOBJECTNAME;
00460 typedef RVC::OBJECTSOURCE RVCOBJECTSOURCE;
00461 typedef RVC::OBJECTDESC RVCOBJECTDESC;
00462 
00463 //! Basic rvc info structure.
00464 struct RVCBASICINFO {
00465    RVC::OBJECTNAME name;               //!< Object name
00466    RVC::OBJECTDESC desc;               //!< Description
00467    RVCDATETIME create;                 //!< Create date
00468    RVCDATETIME lastmod;                //!< Modification date
00469    RVCDATETIME lastused;               //!< Used date
00470    RVC::OBJECTSOURCE source;           //!< Source
00471 
00472    RVCBASICINFO (
00473       ) {Clear();}
00474       
00475    void Clear (
00476       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00477       
00478    bool IsEqual (
00479       const RVCBASICINFO& rhs
00480       ) const {return (memcmp(static_cast<const void*>(this), static_cast<const void*>(&rhs), sizeof(*this)) == 0);}
00481       
00482    };
00483    
00484 inline bool operator== (
00485    const RVCBASICINFO& lhs,
00486    const RVCBASICINFO& rhs
00487    ) {return (lhs.IsEqual(rhs));}
00488    
00489 inline bool operator!= (
00490    const RVCBASICINFO& lhs,
00491    const RVCBASICINFO& rhs
00492    ) {return (!lhs.IsEqual(rhs));}
00493    
00494 
00495 //! General rvc info structure.
00496 struct RVCGENINFO : public RVCBASICINFO {
00497    UINT32 objtype;                     //!< Object type
00498    RVCINODENUM objectinode;            //!< Object inode
00499    RVCINODENUM parentinode;            //!< Parent inode
00500    INT32 Size;                         //!< Object size
00501    
00502    RVCGENINFO (
00503       ) {Clear();}
00504    
00505    void Clear (
00506       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00507       
00508    RVC::OBJTYPE GetObjectType (
00509       ) const { return (static_cast<RVC::OBJTYPE>(this->objtype)); }
00510    };
00511 
00512 //! Array info structure.
00513 struct RVCARRAYINFO : public RVCGENINFO {
00514    INT32 NumItems;                     //!< Number of items
00515    INT32 ItemSize;                     //!< Item size
00516    
00517    RVCARRAYINFO (
00518       ) {Clear();}
00519    
00520    RVCARRAYINFO (
00521       const RVCGENINFO& ginfo
00522       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00523    
00524    RVCARRAYINFO& operator= (
00525       const RVCGENINFO& ginfo
00526       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00527 
00528    void Clear (
00529       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00530    
00531    };
00532 
00533 //! General list info structure.
00534 struct RVCGENLISTINFO : public RVCGENINFO {
00535    INT32 NumItems;                     //!< Number of items
00536    INT32 MaxItemSize;                  //!< Maximum item size
00537 
00538    RVCGENLISTINFO (
00539       ) {Clear();}
00540    
00541    RVCGENLISTINFO (
00542       const RVCGENINFO& ginfo
00543       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00544    
00545    RVCGENLISTINFO& operator= (
00546       const RVCGENINFO& ginfo
00547       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00548 
00549    void Clear (
00550       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00551    
00552    };
00553 
00554 //! Disallow memset/memcpy.
00555 PREVENT_MEMFUNC(RVCBASICINFO)
00556 PREVENT_MEMFUNC(RVCGENINFO)
00557 PREVENT_MEMFUNC(RVCARRAYINFO)
00558 PREVENT_MEMFUNC(RVCGENLISTINFO)
00559 
00560 
00561 //! Structure to hold RVC link information.
00562 struct RVCLINKDATAEX {
00563    FILEPATH m_FilePath;                //!< Path name
00564    MISTRING m_ObjName;                 //!< Holds full name returned by MfGetObjectName()
00565    
00566    bool IsEqual (
00567       const RVCLINKDATAEX& rhs
00568       ) const {return (m_FilePath == rhs.m_FilePath && m_ObjName == rhs.m_ObjName);}
00569       
00570    };
00571    
00572 inline bool operator== (
00573    const RVCLINKDATAEX& lhs,
00574    const RVCLINKDATAEX& rhs
00575    ) {return (lhs.IsEqual(rhs));}   
00576    
00577 inline bool operator!= (
00578    const RVCLINKDATAEX& lhs,
00579    const RVCLINKDATAEX& rhs
00580    ) {return (!lhs.IsEqual(rhs));}
00581    
00582 
00583 namespace RVC {
00584 
00585 struct LINKITEM {
00586    FILEPATH m_Filename;
00587    MISTRING m_ObjName;
00588    OBJTYPE m_ObjType;
00589    RVCINODENUM m_SrcInode;          //!< The source object that contains the link
00590    
00591    LINKITEM (
00592       ) : 
00593       m_ObjType(OBJTYPE_All),
00594       m_SrcInode(-1)
00595       {}
00596       
00597    };
00598    
00599 class FILEHANDLE;
00600    
00601 }     //! End of RVC namespace
00602       
00603 
00604 //! GUI functions structure.
00605 struct RVCGUIFUNCS {
00606    INT32 size;                         //!< Size
00607    int (*GetFile)(void*, MIUNICODE*, const MIUNICODE*, void*, int (*)(MIUNICODE*, char*, void*), void*, UINT32);  //! Get a file
00608    int (*OpenFile)(void*, const MIUNICODE*, UINT32);  //! Open a file
00609    int (*ChangeFileLock)(void*, int, UINT32);   //! Change the lock on a file
00610    void (*AddCallback)(McbCallbackFunc, void*, UINT32);  //! Add a callback
00611    int (*UsernamePasswordDialog)(void *dlgparent, MIUNICODE*, int, int*, int*, UINT32);   //! Username / password dialog
00612    void (*DisplayErrorCode)(void*, int);  //! Display an error code
00613    int (*OpenFileEx)(void*, const FILEPATH&, UINT32); //! Open a file
00614    int (*OpenFile2)(void*, const FILEPATH&, UINT32, RVC::FILEHANDLE*&); //! Open a file
00615    };
00616 
00617 //! App functions structure.
00618 struct RVCAPPFUNCS {
00619    INT32 size;                         //!< Size
00620    int (*GetStringExtents)(TEXTSTYLE*, DPOINT2D*, INT32, UINT32, const MIUNICODE*, DRECT2D*);   //! Get the extents of a string
00621    int (*GetFontName)(int, MIUNICODE*);   //! Get a font name
00622    int (*OpenFont)(const MIUNICODE*);     //! Open a font
00623    int (*GetStringExtentsJustify)(TEXTSTYLE*, DPOINT2D*, INT32, UINT32, const MIUNICODE*, DRECT2D*);  //! Get the extents of a justified string
00624    };
00625 
00626 #ifndef INC_RVC_OBJITEM_H
00627    #include <rvc/objitem.h>
00628 #endif
00629 
00630 /*----------------------------------------------------------------------------*/
00631 /* Flags for linking to external objects                                      */
00632 /*----------------------------------------------------------------------------*/
00633 
00634 #define  RVCLINKFLAG_LoHi        (0x00000001)      /* Linked object stored LoHi */
00635 #define  RVCLINKFLAG_HiLo        (0x00000002)      /* Linked object stored HiLo */
00636 #define  RVCLINKFLAG_RO          (0x00000004)      /* Linked object is on read only media (internal) */
00637 #define  RVCLINKFLAG_Modified    (0x00000008)      /* Linked object may have been modified */
00638 
00639 /*----------------------------------------------------------------------------*/
00640 /* Point conversion modes for vector and CAD                                  */
00641 /*----------------------------------------------------------------------------*/
00642 
00643 #define  VECTMODE_ConvTo3D       0x0001   //!<  convert 2D->3D 
00644 #define  VECTMODE_ConvTo2D       0x0002   //!<  convert 3D->2D 
00645 #define  VECTMODE_Mask           0x0003   //!<  Mask for currently valid bits 
00646 
00647 /*----------------------------------------------------------------------------*/
00648 /* Values for PointType fields in headers                                     */
00649 /*----------------------------------------------------------------------------*/
00650 
00651 #define  VPOINT_2DXY    1              //!<  2-D coordinates, X and Y given (default) 
00652 #define  VPOINT_2DXZ    2              //!<  2-D coordinates, X and Z given 
00653 #define  VPOINT_2DYZ    3              //!<  2-D coordinates, Y and Z given 
00654 #define  VPOINT_3DXY    4              //!<  3-D coordinates, X, Y given, Z constant 
00655 #define  VPOINT_3DXZ    5              //!<  3-D coordinates, X, Z given, Y constant 
00656 #define  VPOINT_3DYZ    6              //!<  3-D coordinates, Y, Z given, X constant 
00657 #define  VPOINT_3DXYZ   7              //!<  3-D coordinates, X, Y and Z given 
00658 
00659 /*----------------------------------------------------------------------------*/
00660 /*    FNAMEINODE/FNAMEINODEUC structures                                      */
00661 /*----------------------------------------------------------------------------*/
00662 
00663 //! Filename / inode structure.
00664 struct FNAMEINODEUC {
00665    MIUNICODE *filename;                //!< Filename
00666    RVCINODENUM inode;                  //!< Inode
00667    FNAMEINODEUC *next;                 //!< Next inode
00668    RVCGENINFO *objinfo;                //!< Object information
00669    void *userdata;                     //!< Reference data attached to the entry, useful for Motif list widgets 
00670    FNAMEINODEUC (
00671       ) { memset(this,0,sizeof(*this)); }
00672    };
00673 
00674 /*----------------------------------------------------------------------------*/
00675 /*    RVCFILELOCK structure      Used in MfGetFileLockInfo()                  */
00676 /*----------------------------------------------------------------------------*/
00677 
00678 //! File lock structure.
00679 struct RVCFILELOCK {
00680    int serialnum;                      //!< TNTmips key serial number
00681    int processid;                      //!< Process ID
00682    int userid;                         //!< User ID if OS uses one
00683    int parentid;                       //!< Parent process ID if OS uses one
00684    MIUNICODE username[64];             //!< Owner of the lock
00685    MIUNICODE stationname[64];          //!< Station lock was generated from
00686    RVCDATETIME locktime;               //!< Time that the lock was created
00687    int IsReadOnly;                     //!< File requested is read only
00688    };
00689 
00690 /*----------------------------------------------------------------------------*/
00691 /*    Definitions (flags) for MfGet[File|Object]Status()                      */
00692 /*----------------------------------------------------------------------------*/
00693 
00694 #define RVCFS_ReadOnly        0x00000001
00695 #define RVCFS_ReadLocked      0x00000002
00696 #define RVCFS_Writable        0x00000004
00697 #define RVCFS_WriteLocked     0x00000008
00698 #define RVCFS_Modified        0x00000010
00699 #define RVCFS_Tempfile        0x00000020
00700 #define RVCFS_TNTlite         0x00000040        //!<  File was created by TNTlite 
00701 #define RVCFS_Open            0x00000080        //!<  File is currently opened 
00702 
00703 #define RVCOS_Composite       0x00000001 
00704 #define RVCOS_Free            0x00000002 
00705 #define RVCOS_Opened          0x00000004 
00706 #define RVCOS_ReadOnly        0x00000008 
00707 #define RVCOS_Writable        0x00000010 
00708 #define RVCOS_Link            0x00000020 
00709 #define RVCOS_ViewProtected   0x00000040
00710 #define RVCOS_EditProtected   0x00000080
00711 #define RVCOS_Bogus           0x00000100
00712 #define RVCOS_TNTlite         0x00000200        //!<  Object was created by TNTlite 
00713 #define RVCOS_BadInode        0x00000400
00714 #define RVCOS_Deleting        0x00000800
00715 
00716 /*----------------------------------------------------------------------------*/
00717 /*    Definitions (flags) for MfCopyObject()                               */
00718 /*----------------------------------------------------------------------------*/
00719 
00720 #define  COPYRVC_SubObjects            0x00000001  //!<  Copy subobjects under object 
00721 #define  COPYRVC_RasterLinks           0x00000002  //!<  Transfer raster links instead of copying the raster 
00722 #define  COPYRVC_DBaseLinks            0x00000004  //!<  Transfer dbase links instead of copying the dbase 
00723 #define  COPYRVC_DemoteIdentityTables  0x00000008 //!< Demote identity tables in MfDatabaseJoin() because they can no longer exist
00724 #define  COPYRVC_PointDBase            0x00000010  //!<  MfCopyDatabase(): Convert OTYPE_DBASE to OTYPE_POINTDBASE 
00725 #define  COPYRVC_MinimizeTableSize     0x00000020  //!<  MfDatabaseJoin(): Minimize table sizes (convert Identity and OneToOne to OneRecordPerElement)
00726 #define  COPYRVC_DontRemoveRecords     0x00000200  //!<  MfDatabaseJoin(): Do not remove records while copying 
00727 #define  COPYRVC_RVCLinks              0x00000400  //!<  Copy RVC object links instead of the objects themselves 
00728 #define  COPYRVC_RemoveStdAttTables    0x00000800  //!<  Remove standard attribute tables in MfCopyDatabaseP() 
00729 #define  COPYRVC_NoDBLists             0x00004000  //!<  MfCopyDatabase(): Don't copy DBList of database 
00730 #define  COPYRVC_IgnoreStdAttTables    0x00040000  //!<  MfDatabaseJoin(): Ignore source standard attribute tables 
00731 #define  COPYRVC_FreezeComputedFields  0x00080000 //!< MfCopyTable(): Computed fields in source become regular fields in dest.
00732 
00733 #define  COPYRVC_AllLinks           (COPYRVC_RasterLinks | COPYRVC_DBaseLinks | COPYRVC_RVCLinks)
00734 
00735 namespace RVC {
00736 
00737 //! Flags for creating links.
00738 enum MAKELINKFLAGS {
00739    MAKELINKFLAG_NoGeoreference =    0x0001,  //!< Don't create georeference subobjects
00740    MAKELINKFLAG_NoPyramidLinks =    0x0002,  //!< Don't create raster pyramid tier links
00741    MAKELINKFLAG_BuildHistograms =   0x0004,  //!< Build raster histogram subobjects when make link
00742    MAKELINKFLAG_BuildPyramids =     0x0008,  //!< Build raster pyramid tiers when make link
00743    MAKELINKFLAG_NoContrastTables =  0x0010,  //!< Don't create raster contrast tables
00744    MAKELINKFLAG_ColorComposite =    0x0020,  //!< Create raster links as color-composite (RGB) where appropriate
00745    MAKELINKFLAG_ColorSeparate =     0x0040,  //!< Create raster links as color separates where appropriate
00746    MAKELINKFLAG_None =              0x0000
00747    };
00748 DEFINE_ENUM_OPERATORS(MAKELINKFLAGS);
00749 
00750 
00751 //! TNTlite usability status.
00752 enum LITEUSABILITY {
00753    LITEUSABILITY_OK =            0,    //!< Object and all subobjects are usable
00754    LITEUSABILITY_ObjectNo =      1,    //!< Object is not usable
00755    LITEUSABILITY_SubObjectNo =   2     //!< Object usable, but at least one subobject is not
00756    // Do not change these enum values as they are used as array indices!
00757    };
00758 
00759 }  //! End of RVC namespace
00760 
00761 /*-------------------------------------------------------------------------*/
00762 /*    Define data types for .datatype fields                               */
00763 /*-------------------------------------------------------------------------*/
00764 
00765 #define  RVCTYPE_Unsigned     1        //!<  UINT8, UINT16, UINT32 and < 8 bit 
00766 #define  RVCTYPE_Signed       2        //!<  INT8, INT16, INT32 
00767 #define  RVCTYPE_Float        3        //!<  FLOAT, DOUBLE 
00768 #define  RVCTYPE_RGB          8        //!<  RED, GREEN, BLUE packed (red high bits) 
00769 #define  RVCTYPE_BGR          9        //!<  RED, GREEN, BLUE packed (blue high bits) 
00770 #define  RVCTYPE_ComplexRI    16       //!<  Real, Imaginary 
00771 #define  RVCTYPE_ComplexMP    17       //!<  Magnitude, Phase 
00772 
00773 /* Due to an obsure but historical bug, 24 bit rasters are actually stored */
00774 /* in the opposite order of what they say they are.  These #defines will */
00775 /* allow you to account for that in a way that avoids the confusion */
00776 #define  RVCTYPE_RGB24_Really 9        //!<  RED, GREEN, BLUE really 
00777 #define  RVCTYPE_BGR24_Really 8        //!<  BLUE, GREEN, RED really 
00778 
00779 /*----------------------------------------------------------------------------*/
00780 /*    Definitions for object selection tools                                  */
00781 /*----------------------------------------------------------------------------*/
00782 
00783 #define  FILTMSGLEN  100
00784 
00785 #define  FILT_NotVisible            0  //!<  Don't show object on list 
00786 #define  FILT_NotUsable             0  //!<  Not usable (for GetLastUsed, CopySubObjects) 
00787 #define  FILT_Selectable            1  //!<  Let user select 
00788 #define  FILT_Usable                1  //!<  Usable (for GetLastUsed, CopySubObjects) 
00789 #define  FILT_NotSelectable         FILT_NotUsable //!<  Show on list but don't let user select 
00790 #define  FILT_FolderUsable          5  //!< Folder is usable
00791 
00792 #if !defined(DEPRECATE_GROUPKEY)
00793 #define  FILT_UsableSubobjects      4  //!<  Object not usable, but has usable subobjects 
00794 #endif
00795 
00796 /*-----------------------------------------------------------------------*/
00797 /*    Defines for MfFindLinkFile...()                                    */
00798 /*-----------------------------------------------------------------------*/
00799 
00800 #define FINDFILE_Stored                0x1
00801 #define FINDFILE_RefDrive              0x2
00802 #define FINDFILE_RefPath               0x3
00803 #define FINDFILE_Subtree               0x4
00804 #define FINDFILE_DontAsk               0x80000000  //!<  Don't prompt if not found 
00805 
00806 #define FINDFILE2(a,b) ((a) | (b<<4))
00807 #define FINDFILE3(a,b,c) ((a) | (b<<4) | (c<<8))
00808 #define FINDFILE4(a,b,c,d) ((a) | (b<<4) | (c<<8) | (d<<12))
00809 
00810 #define FINDFILE_Default         FINDFILE4(FINDFILE_RefPath,FINDFILE_Stored,FINDFILE_RefDrive,FINDFILE_Subtree)
00811 #define FINDFILE_StoredFirst     FINDFILE4(FINDFILE_Stored,FINDFILE_RefDrive,FINDFILE_RefPath,FINDFILE_Subtree)
00812 #define FINDFILE_RefDriveFirst   FINDFILE4(FINDFILE_RefDrive,FINDFILE_RefPath,FINDFILE_Stored,FINDFILE_Subtree)
00813 
00814 /* For backwards compatabilty, 1 implies FINDFILE_StoredFirst */
00815 
00816 /*----------------------------------------------------------------------------*/
00817 /*    Element number special values, used for database lookup and elsewhere   */
00818 /*----------------------------------------------------------------------------*/
00819 
00820 #define  ELEMENTNUM_DefaultList  -1
00821 #define  ELEMENTNUM_None         -2
00822 
00823 /*-------------------------------------------------------------------------*/
00824 /*    Definitions for MfConvert... functions                               */
00825 /*-------------------------------------------------------------------------*/
00826 
00827 #define  CONVRASTCOMP_NoReserveStd64   0x00000001  //!<  Don't reserve 64 standard colors in output 
00828 
00829 #define  CONVRASTLINE_Trace0Cells   0x0001
00830 #define  CONVRASTLINE_Trace1Cells   0x0000
00831 
00832 #define  CONVRASTBOUND_NoCreateTable      0x0001
00833 #define  CONVRASTBOUND_DoImpliedGeoref    0x0002   //!< Output vector in implied map coordinates if possible 
00834 #define  CONVRASTBOUND_ComputeStdAttrib   0x0004   //!< Compute standard attributes for vector.
00835 
00836 #define  TINTORASTER_Linear         0
00837 #define  TINTORASTER_Quintic        1
00838 #define  TINTORASTER_CopyGeoref     0x0001
00839 #define  TINTORASTER_AutoScale      0x0002
00840 #define  TIN_ComputeStatistics      0x0001
00841 #define  TIN_Optimize               0x0002
00842 
00843 /*----------------------------------------------------------------------------*/
00844 /*    Interpolation types for surface fitting conversions                     */
00845 /*----------------------------------------------------------------------------*/
00846 
00847 #define INTERPOLATE_Linear          1
00848 #define INTERPOLATE_SplineCubic     2
00849 #define INTERPOLATE_SplineQuad      3
00850 #define INTERPOLATE_SplineBezier    4
00851 
00852 #define SURFACEFIT_AutoRescale      0x0001
00853 #define SURFACEFIT_MatchReference   0x0002
00854 #define SURFACEFIT_UseDirection     0x0004
00855 
00856 /*----------------------------------------------------------------------------*/
00857 /*    MfCrossSectionCreate() flags                                            */
00858 /*----------------------------------------------------------------------------*/
00859 
00860 #define  CROSSSECTION_NoGeoreference   0x00000001
00861 
00862 /*----------------------------------------------------------------------------*/
00863 /*    Callback Structure and reasons for Mf(RVC) callbacks                    */
00864 /*----------------------------------------------------------------------------*/
00865 
00866 //! Callback structure
00867 struct MfAnyCallbackStruct : public McbAnyCallbackStruct {
00868    int m_FileHandle;                   //!< File handle
00869    
00870    MfAnyCallbackStruct () {}           //! Default constructor, performs no initialization.
00871    MfAnyCallbackStruct (               //! Construct with specified reason value.
00872       int FileHandle,
00873       UINT32 ireason
00874       ):
00875       McbAnyCallbackStruct(ireason),
00876       m_FileHandle(FileHandle)
00877       { }
00878    };
00879 
00880 
00881 typedef void (*MfCallbackFunc)(MfAnyCallbackStruct*,void*);
00882 
00883 //! Callback structure
00884 struct MfChildCallbackStruct : public MfAnyCallbackStruct {
00885    RVCINODENUM m_ParentInode;
00886    RVCINODENUM m_ObjectInode;
00887    
00888    MfChildCallbackStruct () {}            //! Default constructor, performs no initialization.
00889    MfChildCallbackStruct (             //! Construct with specified reason value.
00890       int FileHandle,
00891       RVCINODENUM ParentInode,
00892       RVCINODENUM ObjectInode,
00893       UINT32 ireason
00894       ):
00895       MfAnyCallbackStruct(FileHandle, ireason),
00896       m_ParentInode(ParentInode),
00897       m_ObjectInode(ObjectInode)
00898       { }
00899    };
00900 
00901 
00902 //! Callback structure
00903 struct MfExtentsCallbackStruct : public MfAnyCallbackStruct {
00904    DRECT3D m_Extents;
00905    
00906    MfExtentsCallbackStruct () {}          //! Default constructor, performs no initialization.
00907    MfExtentsCallbackStruct (              //! Construct with specified reason value.
00908       const DRECT3D& Extents,
00909       int FileHandle,
00910       UINT32 ireason
00911       ):
00912       MfAnyCallbackStruct(FileHandle, ireason),
00913       m_Extents(Extents)
00914       { }
00915    };
00916 
00917 
00918 struct MfPointTypeCallbackStruct : public MfAnyCallbackStruct {
00919    int m_PointType;
00920    
00921    MfPointTypeCallbackStruct () {}           //! Default constructor, performs no initialization.
00922    MfPointTypeCallbackStruct (               //! Construct with specified reason value.
00923       int PointType,
00924       int FileHandle,
00925       UINT32 ireason
00926       ):
00927       MfAnyCallbackStruct(FileHandle, ireason),
00928       m_PointType(PointType)
00929       {}
00930    };
00931 
00932 
00933 typedef void (*MfCallbackFunc)(MfAnyCallbackStruct*,void*);
00934 
00935 #define MFCR_UndoBegin           0x00000101
00936 #define MFCR_UndoEnd             0x00000102
00937 #define MFCR_UndoPossible        0x00000104        //!< MfUndoMark() has been called, set buttons if needed
00938 #define MFCR_ExtentsChanged      0x00000108
00939 #define MFCR_PointTypeChanged    0x00000110
00940 #define MFCR_NullValueChanged    0x00000111
00941 #define MFCR_FileClosing         0x00000112
00942 #define MFCR_ChildCreate         0x00000120
00943 #define MFCR_ChildOpen           0x00000121
00944 #define MFCR_ChildClosing        0x00000122
00945 
00946 //---------------------------------------------------------------------------
00947 //    Object Selection Dialog definitions
00948 //---------------------------------------------------------------------------
00949 
00950 //! Enumeration for flags used in object selection dialogs.
00951 enum GETOBJFLAGS {
00952    GETOBJFLAG_None =             0x00000000, //!< No flags set
00953    GETOBJFLAG_NewOK =            0x00000001, //!< Let user create new objects
00954    GETOBJFLAG_DftNew =           0x00000002, //!< (OBSOLETE) Default to new object
00955    GETOBJFLAG_SkipOK =           0x00000004, //!< Allow user to skip this selection
00956    GETOBJFLAG_UseFilter =        0x00000020, //!< (OBSOLETE) Use the filter proc
00957    GETOBJFLAG_OnlyNew =          0x00000040, //!< Don't let user select existing objects
00958    GETOBJFLAG_Overwrite =        0x00000080, //!< Data in existing object will be overwritten
00959    GETOBJFLAG_AllowAll =         0x00000200, //!< Allow all object types in getrvcobjs()
00960    GETOBJFLAG_AllowFewer =       0x00008000, //!< Allow fewer than requested number of objects in RVC::DlgGetObjectSet()
00961    GETOBJFLAG_SkipNone =         0x00010000, //!< Change "Skip" button to "None", behavior same
00962    GETOBJFLAG_NoEditNameDesc =   0x00020000, //!< Don't allow user to edit Name/Description of existing object
00963    GETOBJFLAG_AllowAutoName =    0x00040000, //!< Allow "auto-name" for RVC::DlgGetObjectSet
00964    GETOBJFLAG_TablesAsSubObjs =  0x00100000, //!< Treat database tables as "subobjects" for selection purposes
00965    GETOBJFLAG_AllowDupObjs =     0x00200000, //!< Allow duplicate objects in DlgGetObjects()
00966    GETOBJFLAG_NoMetaData =       0x00400000, //!< Don't allow meta-data viewing/selection (used by meta-data editor)
00967    GETOBJFLAG_LabelsUnicode =    0x01000000, //!< Labels are MIUNICODE for MdlgGetObjectSet()
00968    GETOBJFLAG_NoChangeLevel =    0x02000000  //!< User can't navigate out from under initial object
00969    };
00970 DEFINE_ENUM_OPERATORS(GETOBJFLAGS);
00971 #define  GETOBJFLAG_NewOnly      GETOBJFLAG_OnlyNew
00972 #define  GETOBJFLAG_MakeNew      GETOBJFLAG_Overwrite
00973 #ifdef WIN32
00974 #pragma deprecated("GETOBJFLAG_DftNew")
00975 #pragma deprecated("GETOBJFLAG_UseFilter")
00976 #pragma deprecated("GETOBJFLAG_MakeNew")
00977 #endif
00978 
00979 
00980 typedef int (*MfValidListProto) (const RVC::OBJITEMLIST&, void*, char*);
00981 
00982 //!\addtogroup RVC RVC Object Funcions
00983 //!@{
00984 
00985 #if (defined(X_NATIVE) || defined(WIN32_MFC)) && !defined(NO_DEPRECATED)
00986 
00987 //! Dialog allowing user to select an object of a specified type.
00988 //! \deprecated Replaced by RVC::DlgGetObject().
00989 DEPRECATED int MdlgGetObject (
00990    MDLGPARENT dlgparent,               //!< Parent of dialog
00991    FILEPATH& filepath,                 //!< Default file name
00992    INT32 *inode,                       //!< Object inode
00993    const void *prompt,                 //!< Prompt label
00994    int objtype,                        //!< Object type
00995    int hdrconv,                        //!< Header conversion
00996    void *vinfo,                        //!< Object header passed/returned
00997    int hdrsize,                        //!< Header size
00998    MfFiltFuncProto filter=0,           //!< Filter function
00999    void *filtuserdata=0,               //!< Filter function data
01000    GETOBJFLAGS flags=GETOBJFLAG_None   //!< Get object flags
01001    );
01002 
01003 //! Dialog allowing user to select an object of a specified type.
01004 //! \deprecated Replaced by RVC::DlgGetObject().
01005 DEPRECATED int MdlgGetObject (
01006    MDLGPARENT dlgparent,               //!< Parent of dialog
01007    MIUNICODE *filename,                //!< Default file name
01008    INT32 *inode,                       //!< Object inode
01009    const void *prompt,                 //!< Prompt label
01010    int objtype,                        //!< Object type
01011    int hdrconv,                        //!< Header conversion
01012    void *vinfo,                        //!< Object header passed/returned
01013    int hdrsize,                        //!< Header size
01014    MfFiltFuncProto filter=0,           //!< Filter function
01015    void *filtuserdata=0,               //!< Filter function data
01016    GETOBJFLAGS flags=GETOBJFLAG_None   //!< Get object flags
01017    );
01018 
01019 //! Dialog allowing user to select multiple objects of a specified type.
01020 //! \deprecated Replaced by RVC::DlgGetObjects().
01021 DEPRECATED int MdlgGetObjects (
01022    MDLGPARENT dlgparent,               //!< Parent of dialog
01023    FILEPATH& filepath,                 //!< Default filename
01024    INT32 parentinode,                  //!< Parent inode
01025    const void *prompt,                 //!< Prompt label
01026    int objtype,                        //!< Object type
01027    int minobjs,                        //!< Minimum number of objects required
01028    int maxobjs,                        //!< Maximum allowed to be selected, 0 if no limit
01029    RVC::OBJITEMLIST& ItemList,            //!< Item list returned
01030    MfFiltFuncProto filter=0,           //!< Filter function
01031    void *filtuserdata=0,               //!< Filter function data
01032    MfValidListProto validfunc=0,       //!< Validate function
01033    GETOBJFLAGS flags=GETOBJFLAG_None   //!< Get object flags
01034    );
01035 
01036 //! Dialog allowing user to select multiple objects of a specified type.
01037 //! \deprecated Replaced by RVC::DlgGetObjects().
01038 DEPRECATED int MdlgGetObjects (
01039    MDLGPARENT dlgparent,               //!< Parent of dialog
01040    MIUNICODE *filename,                //!< Default filename
01041    INT32 parentinode,                  //!< Parent inode
01042    const void *prompt,                 //!< Prompt label
01043    int objtype,                        //!< Object type
01044    int minobjs,                        //!< Minimum number of objects required
01045    int maxobjs,                        //!< Maximum allowed to be selected, 0 if no limit
01046    FNAMEINODEUC **fnamein