mi32/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.428 2004/04/07 23:04:44 scowan Exp $
00007  *
00008  * $Log: rvcdefns.h_v $
00009  * Revision 4.428  2004/04/07 23:04:44  scowan
00010  * Added a copy flag.
00011  *
00012  * Revision 4.427  2004/04/07 23:02:27  scowan
00013  * Added new flag.
00014  *
00015  * Revision 4.426  2004/03/22 18:14:46  scowan
00016  * Added field to link item.
00017  *
00018  * Revision 4.425  2003/11/14 15:35:50  mju
00019  * REmove mdlgMaintProjectFile.
00020  *
00021  * Revision 4.424  2003/11/10 18:45:07  mju
00022  * Add objitem.setobjectinfo.
00023  *
00024  * Revision 4.423  2003/11/06 23:04:17  scowan
00025  * Removed prototype of removed function.
00026  *
00027  * Revision 4.422  2003/10/27 17:14:12  scowan
00028  * Changed not selectable filt flag to be the same as filt not usable.
00029  *
00030  * Revision 4.421  2003/10/22 17:46:03  scowan
00031  * Deprecated some filt flags.
00032  *
00033  * Revision 4.420  2003/10/15 17:39:12  mju
00034  * Deprecate groupkey.
00035  *
00036  * Revision 4.419  2003/10/08 22:27:49  scowan
00037  * Removed unused function call.
00038  *
00039  * Revision 4.418  2003/10/06 20:06:30  scowan
00040  * Pruned unused rfunctions.
00041  *
00042  * Revision 4.417  2003/10/03 21:30:29  scowan
00043  * nc.
00044  *
00045  * Revision 4.416  2003/10/02 19:15:27  scowan
00046  * Removed get localized name function.
00047  *
00048  * Revision 4.415  2003/09/26 19:56:07  scowan
00049  * Adjustment of include files.
00050  *
00051  * Revision 4.414  2003/09/26 15:57:04  scowan
00052  * Removed open link file function.
00053  *
00054  * Revision 4.413  2003/09/26 14:47:06  scowan
00055  * Do not export function that will soon be deprecated.
00056  *
00057  * Revision 4.412  2003/09/25 22:25:13  scowan
00058  * Removed unused functions and methods.
00059  *
00060  * Revision 4.411  2003/09/22 19:56:27  scowan
00061  * Removed call to copy file raw, it has been replaced.
00062  *
00063  * Revision 4.410  2003/09/15 23:00:14  scowan
00064  * Added callback reason.
00065  *
00066  * Revision 4.409  2003/09/15 13:49:56  fileserver!dwilliss
00067  * Doxygen
00068  *
00069  * Revision 4.408  2003/09/02 17:10:44  scowan
00070  * Moved some prototypes.
00071  *
00072  * Revision 4.407  2003/09/02 16:56:36  dwilliss
00073  * Added COPYRVC flag to freeze computed fields
00074  *
00075  * Revision 4.406  2003/08/29 23:02:57  scowan
00076  * Removed unused functions.
00077  *
00078  * Revision 4.405  2003/08/29 21:45:27  scowan
00079  * Cleanup unused functions.
00080  *
00081  * Revision 4.404  2003/08/28 19:34:01  scowan
00082  * nc.
00083  *
00084  * Revision 4.403  2003/08/28 15:24:59  scowan
00085  * Removed use of fname obj list struct and functions.
00086  *
00087  * Revision 4.402  2003/08/27 21:31:26  scowan
00088  * Added structures and removed functions and other stuff.
00089  *
00090  * Revision 4.401  2003/08/15 16:42:05  scowan
00091  * Removed unused copy rvc flags.
00092  *
00093  * Revision 4.400  2003/08/13 21:43:24  scowan
00094  * Removed copy object "T" function prototypes.
00095  *
00096  * Revision 4.399  2003/08/11 19:05:29  scowan
00097  * Added another copy function.
00098  *
00099  * Revision 4.398  2003/07/21 19:04:34  mju
00100  * Add MAKELINKFLAG values for ColorComposite and ColorSeparate.
00101  *
00102  * Revision 4.397  2003/05/13 17:23:59  scowan
00103  * Added new object type.
00104  *
00105  * Revision 4.396  2003/05/12 19:22:13  mju
00106  * Make mfwritegen take const ptr.
00107  *
00108  * Revision 4.395  2003/05/07 14:50:31  scowan
00109  * Added new object types.
00110  *
00111  * Revision 4.394  2003/04/29 20:55:40  scowan
00112  * Added shape object type and function prototypes.
00113  *
00114  * Revision 4.393  2003/04/15 13:23:13  mju
00115  * Include rect.h
00116  *
00117  * Revision 4.392  2003/04/09 19:18:13  scowan
00118  * Added shape object type.
00119  *
00120  * Revision 4.391  2003/03/07 18:43:41  scowan
00121  * *** empty log message ***
00122  *
00123  * Revision 4.390  2003/03/07 18:43:22  scowan
00124  * *** empty log message ***
00125  *
00126  * Revision 4.389  2003/03/07 18:41:58  scowan
00127  * Added point type change callback struct.
00128  *
00129  * Revision 4.388  2003/03/04 21:01:18  scowan
00130  * nc.
00131  *
00132  * Revision 4.387  2003/01/28 19:03:00  mju
00133  * nc.
00134  *
00135  * Revision 4.386  2003/01/10 21:49:18  scowan
00136  * Comment out table and metadata otype's to remove a conflict with oracle include file.
00137  * Use rvc object enum values instead.
00138  *
00139  * Revision 4.385  2003/01/06 15:06:31  mju
00140  * Use void* for dlgparent in usernamepassword.
00141  *
00142  * Revision 4.384  2002/12/04 16:08:12  scowan
00143  * Changed parent dlg pointer, hope it works.
00144  *
00145  * Revision 4.383  2002/11/20 15:56:46  mju
00146  * Add initialization ctor to fnameinodeuc.
00147  *
00148  * Revision 4.382  2002/10/02 16:15:17  mju
00149  * Tweak comments to hopefully help surveyor do docs.
00150  *
00151  * Revision 4.381  2002/09/19 15:05:04  mju
00152  * Add OBJITEM ctor from filepath/inode.
00153  *
00154  * Revision 4.380  2002/09/16 17:02:24  mju
00155  * Add objitem::setitem() using filepath/inode.
00156  *
00157  * Revision 4.379  2002/09/11 18:00:06  mju
00158  * Add objitem::setobjectpath.
00159  *
00160  * Revision 4.378  2002/09/11 17:34:38  mju
00161  * Add objitem::isexisting.
00162  *
00163  * Revision 4.377  2002/09/10 21:50:05  mju
00164  * Add objitem::IsAssigned.
00165  *
00166  * Revision 4.376  2002/09/10 17:51:35  mju
00167  * Change objitem getobjectname/desc to return const fixedstr ref.
00168  *
00169  * Revision 4.375  2002/09/09 14:05:35  mju
00170  * Remove deprecated stuff.
00171  * Always prevent_memfunc.
00172  *
00173  * Revision 4.374  2002/09/06 16:10:54  mju
00174  * Add GETOBJFLAG_IniShared.
00175  *
00176  * Revision 4.373  2002/09/03 21:01:53  mju
00177  * Add OBJITEM ctor using name, desc, source.
00178  *
00179  * Revision 4.372  2002/08/30 14:06:00  mju
00180  * Remove obsolete flag.
00181  * Move seltabfield flags to <rvc/dialogs.h>
00182  *
00183  * Revision 4.371  2002/08/28 17:54:09  mju
00184  * Add MAKELINKFLAG_NoContrastTables.
00185  *
00186  * Revision 4.370  2002/08/23 13:24:41  mju
00187  * Remove objitem::setobjectname/desc using const UNICODE* as OBJECTNAME/DESC
00188  * has implicit ctor from const UNICODE* and thus will be used anyway.  Having
00189  * overloads causes ambiguity when using MISTRING.
00190  *
00191  * Revision 4.369  2002/08/21 20:39:22  scowan
00192  * Deprecate old object name define.
00193  *
00194  * Revision 4.368  2002/08/20 15:12:11  mju
00195  * Remove obsolete dialog defines.
00196  * Use prevent_memfunc macro, still deprecated.
00197  *
00198  * Revision 4.367  2002/08/13 14:55:20  scowan
00199  * Added comment.
00200  *
00201  * Revision 4.366  2002/08/13 14:14:45  scowan
00202  * Added new filter reason.
00203  *
00204  * Revision 4.365  2002/08/07 22:20:37  dwilliss
00205  * Prototype for a new private function
00206  *
00207  * Revision 4.364  2002/06/10 19:50:02  mju
00208  * Add SELTABFIELD_AllowNone.
00209  *
00210  * Revision 4.363  2002/05/31 15:34:19  mju
00211  * Restore mfinitapplevel prototype.
00212  *
00213  * Revision 4.362  2002/05/30 15:21:30  mju
00214  * Remove obsolete mfinitapplevel prototype.
00215  *
00216  * Revision 4.361  2002/05/30 15:05:44  mju
00217  * Change rvcappfuncs.OpenFont to use const.
00218  *
00219  * Revision 4.360  2002/05/24 20:19:30  scowan
00220  * Added is equal to basic info.
00221  *
00222  * Revision 4.359  2002/05/23 15:07:39  scowan
00223  * Deprecate close all function.
00224  *
00225  * Revision 4.358  2002/05/15 19:47:39  mju
00226  * Remove unimplemented GETOBJFLAG_nochglvl/file.
00227  *
00228  * Revision 4.357  2002/05/03 21:58:07  scowan
00229  * Fixed is copyable.
00230  *
00231  * Revision 4.356  2002/05/03 21:31:45  scowan
00232  * Added is copyable function.
00233  *
00234  * Revision 4.355  2002/05/02 21:18:52  scowan
00235  * Added change object link.
00236  *
00237  * Revision 4.354  2002/05/01 21:41:08  mju
00238  * Add MfCloseFile overload using RVCFILEHANDLE reference.
00239  *
00240  * Revision 4.353  2002/03/20 15:57:39  mju
00241  * Unimplement Mfgetuniquename/mfmakevalidname as has RVC:: equivalents already.
00242  *
00243  * Revision 4.351  2002/03/08 18:16:05  scowan
00244  * Added methods and deprecated mem... of rvc..info structures.
00245  *
00246  * Revision 4.350  2002/02/19 18:03:42  scowan
00247  * Changed basic info object name and desc to use fixedstring<>.
00248  *
00249  * Revision 4.349  2002/02/15 16:36:53  mju
00250  * Make SELTABFIELD enum.
00251  *
00252  * Revision 4.348  2002/02/14 21:43:46  mju
00253  * Add OBJITEM::SetNew.
00254  *
00255  * Revision 4.347  2001/12/27 18:32:02  scowan
00256  * Added method to obj item.
00257  * Removed retired functions.
00258  *
00259  * Revision 4.346  2001/12/10 20:44:09  scowan
00260  * Retired some unused rvc functions.
00261  *
00262  * Revision 4.345  2001/11/01 17:53:03  mju
00263  * Add OBJITEM::SetObjectName/Description using Unicode.
00264  *
00265  * Revision 4.344  2001/11/01 16:57:35  scowan
00266  * Added object type.
00267  *
00268  * Revision 4.343  2001/10/18 14:27:28  scowan
00269  * Added methods to set OBJITEM name and description.
00270  *
00271  * Revision 4.342  2001/09/28 17:56:50  mju
00272  * Add default parm for MfFindFilePath
00273  *
00274  * Revision 4.341  2001/09/20 15:37:04  mju
00275  * Need MfGenerateLockName/Ex prototypes for TNTatlas on Unix.
00276  *
00277  * Revision 4.340  2001/09/19 14:46:29  mju
00278  * Add functions and class to allow disabling of prompt for missing linked file.
00279  *
00280  * Revision 4.339  2001/09/13 20:50:41  mju
00281  * Unify X and MFC versions of object selection dialog prototypes.
00282  *
00283  * Revision 4.338  2001/07/25 15:33:32  scowan
00284  * Flag in wrong place.
00285  *
00286  * Revision 4.337  2001/07/25 15:17:01  scowan
00287  * Added new rvcmode flag.
00288  *
00289  * Revision 4.336  2001/07/19 16:37:48  scowan
00290  * Added clear method to objitem.
00291  * Prevent genitor from adding functions to objitem docs.
00292  *
00293  * Revision 4.335  2001/07/17 20:20:38  scowan
00294  * *** empty log message ***
00295  *
00296  * Revision 4.334  2001/07/17 15:44:21  mju
00297  * Add #undef MIMFCDLLEXPORT at end.
00298  *
00299  * Revision 4.333  2001/07/16 15:24:39  mju
00300  * Use const in MfEditNameDesc.
00301  *
00302  * Revision 4.332  2001/07/16 14:08:28  mju
00303  * Add defaults for filtfunc/data for MfFindObject.
00304  *
00305  * Revision 4.331  2001/07/10 13:38:20  mju
00306  * Add SELTABFIELD_NoInternal.
00307  *
00308  * Revision 4.330  2001/07/06 20:43:07  mju
00309  * Add MfGenerateLockNames() and retire old lock name gernation functions.
00310  *
00311  * Revision 4.329  2001/07/05 15:59:23  mju
00312  * Add OBJITEM::IsResolved().
00313  *
00314  * Revision 4.328  2001/07/05 13:06:12  mju
00315  * Remove unwanted ;
00316  *
00317  * Revision 4.327  2001/06/29 14:57:45  mju
00318  * Add functions for general lite usability testing.
00319  *
00320  * Revision 4.326  2001/06/25 15:11:58  mju
00321  * Add MfGetAutoLinkPatternList prototype.
00322  *
00323  * Revision 4.325  2001/06/22 22:22:43  mju
00324  * Add MAKELINKFLAGS.
00325  *
00326  * Revision 4.324  2001/06/15 19:19:13  mju
00327  * Use const in MfCompareDateTime.
00328  * Add OBJITEM::GetObjectName/Description.
00329  * Change OBJITEM::GetObjectType() to return OBJTYPE.
00330  *
00331  * Revision 4.323  2001/06/15 15:55:17  scowan
00332  * Changed file open widget poarent type to void*, cannot have changing
00333  * type in a shared library.
00334  *
00335  * Revision 4.322  2001/06/14 17:15:48  mju
00336  * Add RVCFILE_NoDialog defn.
00337  * Make MfFileOpen() using FILEPATH a function instead of inline.
00338  *
00339  * Revision 4.321  2001/06/14 15:58:17  scowan
00340  * Nothing.
00341  *
00342  * Revision 4.320  2001/06/13 16:54:51  scowan
00343  * Adeed objitem, objectname, objectdesc, obectsource to the RVC namespqace.
00344  * Added typedefs for original names.
00345  *
00346  * Revision 4.319  2001/06/07 15:39:19  scowan
00347  * More const.
00348  *
00349  * Revision 4.318  2001/06/01 16:00:08  scowan
00350  * Export YAFF.
00351  *
00352  * Revision 4.317  2001/05/15 17:30:53  scowan
00353  * Added extra read list function.
00354  *
00355  * Revision 4.316  2001/04/09 20:09:30  scowan
00356  * *** empty log message ***
00357  *
00358  * Revision 4.315  2001/01/18 22:04:30  scowan
00359  * Added redo chagnes function.
00360  *
00361  * Revision 4.314  2000/12/29 22:50:54  msmith
00362  * Genitor documentation.
00363  *
00364  * Revision 4.313  2000/12/27 17:37:58  scowan
00365  * Added get filepath function.
00366  *
00367  * Revision 4.312  2000/12/20 15:41:40  mju
00368  * Use ValidMultiProto instead of ValidListProto for older MdlgGetObjectSet function.
00369  *
00370  * Revision 4.311  2000/12/19 17:54:30  msmith
00371  * Fixed GetObjects - broken in documentation.
00372  *
00373  * Revision 4.310  2000/12/19 17:04:54  mju
00374  * Remove obsolete #defines.
00375  *
00376  * Revision 4.309  2000/12/19 16:41:59  msmith
00377  * Genitor documentation.
00378  *
00379  * Revision 4.308  2000/12/01 22:55:43  mju
00380  * Add rvcfilehandle::IsOpen().
00381  *
00382  * Revision 4.307  2000/11/21 16:38:56  scowan
00383  * Fixed TNTserver build define.
00384  *
00385  * Revision 4.306  2000/11/06 18:15:17  scowan
00386  * *** empty log message ***
00387  *
00388  * Revision 4.305  2000/11/06 17:51:45  scowan
00389  * *** empty log message ***
00390  *
00391  * Revision 4.304  2000/11/06 17:46:35  scowan
00392  * Do not export Mdlg object selection if building for TNTserver.
00393  *
00394  * Revision 4.303  2000/11/02 22:52:48  dwilliss
00395  * Export all the Mdlg functions from mimfc.dll for WIN32_NATIVE
00396  *
00397  * \endif
00398 **/
00399 
00400 #ifndef INC_MI32_RVCDEFNS_H
00401 #define INC_MI32_RVCDEFNS_H
00402 
00403 #if defined (__cplusplus)
00404 
00405 #ifndef INC_MI32_STDDEFNS_H
00406    #include <mi32/stddefns.h>
00407 #endif
00408 
00409 #ifndef INC_MI32_FIXEDSTR_H
00410    #include <mi32/fixedstr.h>
00411 #endif
00412 
00413 #ifndef INC_MI32_FILEPATH_H
00414    #include <mi32/filepath.h>
00415 #endif
00416 
00417 #ifndef INC_MI32_RECT_H
00418    #include <mi32/rect.h>
00419 #endif
00420 
00421 #ifndef INC_MI32_MCB_H
00422    #include <mi32/mcb.h>
00423 #endif
00424 
00425 #ifndef INC_RVC_OBJTYPE_H
00426    #include <rvc/objtype.h>
00427 #endif
00428 
00429 #ifdef RVCLOWDLL
00430    #define RVCLOWLIBEXPORT MI_DLLEXPORT
00431 #else
00432    #define RVCLOWLIBEXPORT MI_DLLIMPORT
00433 #endif
00434 
00435 #ifdef RVCAPPDLL
00436    #define RVCAPPLIBEXPORT MI_DLLEXPORT
00437    #define RVCAPPCLASSEXPORT MI_DLLCLASSEXPORT
00438 #else
00439    #define RVCAPPLIBEXPORT MI_DLLIMPORT
00440    #define RVCAPPCLASSEXPORT MI_DLLCLASSIMPORT
00441 #endif
00442 
00443 #include <mi32/hdrtypes.h>
00444 
00445 #ifndef  INC_MI32_CRYPTO_H
00446    #include <mi32/crypto.h>
00447 #endif
00448 
00449 //! Forward declarations
00450 struct DREGION;
00451 struct RVCCADINFO;
00452 struct RVCRASTINFO;
00453 struct RVCTININFO;
00454 struct RVCVECTINFO;
00455 struct TEXTSTYLE;
00456 struct TRANSPARM;
00457 
00458 namespace RVC {
00459    class OBJTYPESET;
00460    class OBJECT;
00461    }
00462 
00463 
00464 #define  MfValidNameChar(c)   ((c)=='_'||(c)>='A'&&(c)<='Z'||(c)>='a'&&(c)<='z'||(c)>='0'&&(c)<='9'||(c)>=160)
00465 #define  FOLDERSEPARATOR      ' '
00466 #define  OBJTYPESEPARATOR     '.'
00467 
00468 /*--------------------------------------------------------------------------*/
00469 /*    Definitions of basic object types supported by RVC                    */
00470 /*--------------------------------------------------------------------------*/
00471 /* mode for opening rvc objects of all kinds */
00472 #define RVCMODE_Mask          0x7F000000
00473 #define RVCMODE_WriteAttempt  0x10000000           //!<  Attempt to open for write, else open for read 
00474 #define RVCMODE_Read          0x40000000
00475 #define RVCMODE_Write         0x20000000
00476 #define RVCMODE_RW            0x60000000
00477 #define RVCMODE_RWAttempt     0x70000000
00478 #define RVCMODE_ReadAhead     0x08000000
00479 #define RVCMODE_Bogus         0x04000000
00480 
00481 /* mode for opening rvc files */
00482 #define RVCFILE_OpenMask            0x000000FF
00483 #define RVCFILE_ReadLock            0x00000001
00484 #define RVCFILE_WriteLock           0x00000002
00485 #define RVCFILE_WriteLockAttempt    0x00000004
00486 #define RVCFILE_SharedLock          0x00000008     //!<  Not Implemented Yet 
00487 #define RVCFILE_NoLock              0x00000010     //!<  Not to be used unless file is system file (i.e. icons.ref) 
00488 #define RVCFILE_ReadAbsolute        0x00000020     //!<  File is to be opened read-only, no lock file and no possibility of change 
00489 #define RVCFILE_NoDialog            0x00000040     //!< Don't display dialog if file is locked, just return error
00490 #define RVCFILE_WriteAbsolute       0x00000080     //!< Override ReadAbsolute system flag for a specific file
00491 
00492 #define RVCFILE_TempFileMask        0x0000FF00
00493 #define RVCFILE_DeleteOnClose       0x00000100
00494 #define RVCFILE_DeleteOnExit        0x00000200
00495 #define RVCFILE_NoDelete            0x00000800
00496 
00497 #define RVCFILE_ForceUnlockBtn      0x00040000     //!<  Force 'unlock' button in mxopenfl.c 
00498 
00499 /**************************************************************************
00500 *  Listing of RVC object types
00501 **************************************************************************/
00502 
00503 //! ----- Top level RVC objects -----
00504 #define OTYPE_ALL             0        //!< Used by Mf??? functions to allow all objects
00505 #define OTYPE_FILE            1
00506 #define OTYPE_FOLDER          2        //!< An object to contain other objects
00507 #define OTYPE_RASTER          3        //!< Raster object
00508 #define OTYPE_VECTOR          4        //!< Vector object
00509 #define OTYPE_CAD             5        //!< CAD object
00510 #define OTYPE_DBASE           6        //!< General database object
00511 #define OTYPE_STYLE           7        //!< Drawing style object
00512 #define OTYPE_DBQUERY         8        //!< Generic database query string
00513 #define OTYPE_FILTER          9        //!< Spatial filter description
00514 #define OTYPE_VIDEOSEQ        10       //!< Ref for sequence of frames on video disk
00515 #define OTYPE_PRTCOLORBAL     30       //!< Printer color balance
00516 #define OTYPE_DISP_GROUP      37       //!< Display group layout information
00517 #define OTYPE_DISP2DWINDOW    38       //!< Display window layout information
00518 #define OTYPE_TIN             39       //!< TIN object
00519 #define OTYPE_LEGEND          41       //!< Legend object
00520 #define OTYPE_REGION          45       //!< Region object
00521 #define OTYPE_DISP_LAYOUT     54       //!< Display layout information
00522 #define OTYPE_SML             55       //!< Stand-alone SML Script
00523 #define OTYPE_SPECTRAL        56       //!< Spectral object
00524 #define OTYPE_RASTERSET       57       //!< Raster Set object
00525 #define OTYPE_DISP_SIM3D      59       //!< Display 3D simulation parameters object
00526 #define OTYPE_HYPERSPECTRAL   60       //!< HyperSpectral object
00527 #define OTYPE_LAYOUTTEMPLATE  65       //!< Layout Template object
00528 #define OTYPE_THUMBNAIL       66       //!< Tumbnail object
00529 #define OTYPE_HOUGHPARMS      71       //!< Hough transformation parameters object
00530 //!#define OTYPE_SHAPE        72       // Geometric "Shape" object (Shapefile, Oracle Spatial, ...) [ USE RVC::OBJECT_Shape ]
00531 
00532 //! ----- RVC subobjects common to multiple objects -----
00533 #define OTYPE_GEOREF          11       //!< Georeference information
00534 #define OTYPE_PAGELAYOUT      12       //!< Information for page layouts
00535 #define OTYPE_HYPER           13       //!< Hyper-index information
00536 #define OTYPE_DBFORM          14       //!< Database display layout
00537 #define OTYPE_TIEPOINT        15       //!< Tie point list
00538 #define OTYPE_DISPPARM        40       //!< Display parameter structure
00539 #define OTYPE_TEXT            42       //!< Generic Text Object
00540 #define OTYPE_ASSOCIATION     46       //!< External file association object
00541 #define OTYPE_QTREE           47       //!< Search Quad Tree object
00542 #define OTYPE_DBPARM          48       //!< Database parameters object
00543 #define OTYPE_THEME           49       //!< Theme Mapping parameters object
00544 //!#define OTYPE_METADATA     50       // Metadata object - text [ CONFLICTS WITH ORACLE INCLUDE FILE, USE RVC::OBJECT_Metadata ]
00545 #define OTYPE_EDITPARM        53       //!< Object Editor parameter structure
00546 #define OTYPE_SPATIALTREEOLD  67       //!< DEPRECATED
00547 #define OTYPE_SPATIALTREEOLD2 69       //!< DEPRECATED
00548 #define OTYPE_SPATIALTREE     70       //!< Vector element sort tree
00549 //!#define OTYPE_ICMPROFILE      74       // ICM Profile object [ USE RVC::OBJTYPE_ICMProfile ]
00550 
00551 //! ----- RVC subobjects common to raster objects -----
00552 #define OTYPE_HISTO           16       //!< Raster histogram
00553 #define OTYPE_CONTAB          17       //!< Contrasting table
00554 #define OTYPE_2DHISTINFO      18       //!< Information about 2-D histogram
00555 #define OTYPE_COLMAP          19       //!< Color table for rasters
00556 #define OTYPE_RASTDBASE       20       //!< Database for raster cells
00557 #define OTYPE_FREQPROCINFO    21       //!< Information to match frequency-domain rasters
00558 #define OTYPE_RASTERTREND     22       //!< Trend Information
00559 #define OTYPE_SPOTHEADER      23       //!< Header (leader) file from SPOT tape
00560 #define OTYPE_CAMERACALIB     24       //!< Camera calibration information
00561 #define OTYPE_SENSORINFOOLD   58       //!< Sensor calibration information for spectral bands (OLD)
00562 #define OTYPE_HYPERHIST       62       //!< Hyperspectral histogram sub-object
00563 #define OTYPE_HYPERSENSOR     63       //!< Hyperspectral sensor sub-object
00564 #define OTYPE_SENSORINFO      64       //!< Sensor calibration information for spectral bands
00565 
00566 //! ----- RVC subobjects common to vector objects -----
00567 #define OTYPE_POINTDBASE      25       //!< Database for point elements
00568 #define OTYPE_LINEDBASE       26       //!< Database for line elements
00569 #define OTYPE_POLYDBASE       27       //!< Database for polygon elements
00570 #define OTYPE_NODEDBASE       28       //!< Database for node elements
00571 #define OTYPE_VECTDBASE       44       //!< Database for vector objects
00572 
00573 //! ----- RVC subobjects common to CAD objects -----
00574 #define OTYPE_CADDBASE        29       //!< Database for CAD objects
00575 
00576 //! ----- RVC subobjects common to SHAPE objects -----
00577 //!#define OTYPE_SHAPEDBASE      73       // Database for CAD objects
00578 
00579 //! ----- RVC subobjects common to TIN objects -----
00580 #define OTYPE_TINDBASE        43       //!< Database for TIN objects
00581 
00582 //! ----- RVC subobjects common to database objects -----
00583 //!#define OTYPE_TABLE        51       // Table OTYPE tag for databases [ CONFLICTS WITH ORACLE INCLUDE FILE, USE RVC::OBJECT_Table ]
00584 #define OTYPE_INVDBLIST       52       //!< Database table to element lists
00585 #define OTYPE_DBCONSTRAINT    61       //!< Database table constraint information
00586 #define OTYPE_DBINDEX         68       //!< Database table constraint information
00587 
00588 //! ----- RVC objects used in .REF files -----
00589 #define OTYPE_PRINTDEF        31       //!< Description for raster printer devices
00590 #define OTYPE_PLOTDEF         32       //!< Description for pen plotter devices
00591 #define OTYPE_OFONT           33       //!< Outline(stroke) font
00592 #define OTYPE_GENERICREF      34       //!< Generic reference object, not user-viewable object
00593 #define OTYPE_SCANDEF         35       //!< Description for scanners
00594 #define OTYPE_XYDIGDEF        36       //!< Description for XY digitizer devices
00595 
00596 #define OTYPE_LAST            75       //!< Update rvcmain.c and messages.txt [rvc] section when change
00597 
00598 #define  RVCCONV_RASTER          RVCCONV_RastInfo
00599 #define  RVCCONV_CAD             RVCCONV_CADInfo
00600 #define  RVCCONV_HISTO           RVCCONV_HistInfo
00601 #define  RVCCONV_CONTAB          RVCCONV_ConTab
00602 #define  RVCCONV_COLMAP          RVCCONV_CMapInfo
00603 #define  RVCCONV_DBASE           RVCCONV_DbaseInfo
00604 #define  RVCCONV_GEOREF          RVCCONV_GeoRefInfo
00605 #define  RVCCONV_VECTOR          RVCCONV_VectInfo
00606 #define  RVCCONV_TIEPOINT        RVCCONV_TiePointInfo
00607 #define  RVCCONV_TIN             RVCCONV_TINInfo
00608 #define  RVCCONV_CAMERACALIB     RVCCONV_CameraInfo
00609 #define  RVCCONV_FILTER          RVCCONV_FiltInfo
00610 #define  RVCCONV_STYLE           RVCCONV_StyleInfo
00611 #define  RVCCONV_REGION          RVCCONV_RegionInfo
00612 #define  RVCCONV_DISP2DWINDOW    0
00613 #define  RVCCONV_DISP2DGROUP     0
00614 
00615 /*----------------------------------------------------------------------------*/
00616 /*    Definitions for general object headers                                  */
00617 /*----------------------------------------------------------------------------*/
00618 
00619 struct RVCDATETIME {
00620    UINT8 year;                         //!<  Add 1900 to get actual year 
00621    UINT8 month;                        //!<  1-12 
00622    UINT8 day;                          //!<  1-31 
00623    UINT8 hour;                         //!<  0-23 
00624    UINT8 minute;                       //!<  0-59 
00625    UINT8 second;                       //!<  0-59 
00626    UINT16 count;                       //!<  count; if more than one object created with this time 
00627    };
00628 
00629 namespace RVC {
00630 
00631 typedef FIXEDSTRING<16> OBJECTNAME, OBJECTSOURCE;
00632 typedef FIXEDSTRING<64> OBJECTDESC;
00633 
00634 }     //! End of RVC namespace
00635 
00636 typedef RVC::OBJECTNAME RVCOBJECTNAME;
00637 typedef RVC::OBJECTSOURCE RVCOBJECTSOURCE;
00638 typedef RVC::OBJECTDESC RVCOBJECTDESC;
00639 
00640 //! Basic rvc info structure.
00641 struct RVCBASICINFO {
00642    RVC::OBJECTNAME name;               //!< Object name
00643    RVC::OBJECTDESC desc;               //!< Description
00644    RVCDATETIME create;                 //!< Create date
00645    RVCDATETIME lastmod;                //!< Modification date
00646    RVCDATETIME lastused;               //!< Used date
00647    RVC::OBJECTSOURCE source;           //!< Source
00648 
00649    RVCBASICINFO (
00650       ) {Clear();}
00651       
00652    void Clear (
00653       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00654       
00655    bool IsEqual (
00656       const RVCBASICINFO& rhs
00657       ) const {return (memcmp(static_cast<const void*>(this), static_cast<const void*>(&rhs), sizeof(*this)) == 0);}
00658       
00659    };
00660    
00661 inline bool operator== (
00662    const RVCBASICINFO& lhs,
00663    const RVCBASICINFO& rhs
00664    ) {return (lhs.IsEqual(rhs));}
00665    
00666 inline bool operator!= (
00667    const RVCBASICINFO& lhs,
00668    const RVCBASICINFO& rhs
00669    ) {return (!lhs.IsEqual(rhs));}
00670    
00671 
00672 //! General rvc info structure.
00673 struct RVCGENINFO : public RVCBASICINFO {
00674    UINT32 objtype;                     //!< Object type
00675    RVCINODENUM objectinode;            //!< Object inode
00676    RVCINODENUM parentinode;            //!< Parent inode
00677    INT32 Size;                         //!< Object size
00678    
00679    RVCGENINFO (
00680       ) {Clear();}
00681    
00682    void Clear (
00683       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00684       
00685    RVC::OBJTYPE GetObjectType (
00686       ) const { return (static_cast<RVC::OBJTYPE>(this->objtype)); }
00687    };
00688 
00689 //! Array info structure.
00690 struct RVCARRAYINFO : public RVCGENINFO {
00691    INT32 NumItems;                     //!< Number of items
00692    INT32 ItemSize;                     //!< Item size
00693    
00694    RVCARRAYINFO (
00695       ) {Clear();}
00696    
00697    RVCARRAYINFO (
00698       const RVCGENINFO& ginfo
00699       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00700    
00701    RVCARRAYINFO& operator= (
00702       const RVCGENINFO& ginfo
00703       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00704 
00705    void Clear (
00706       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00707    
00708    };
00709 
00710 //! General list info structure.
00711 struct RVCGENLISTINFO : public RVCGENINFO {
00712    INT32 NumItems;                     //!< Number of items
00713    INT32 MaxItemSize;                  //!< Maximum item size
00714 
00715    RVCGENLISTINFO (
00716       ) {Clear();}
00717    
00718    RVCGENLISTINFO (
00719       const RVCGENINFO& ginfo
00720       ) {Clear();*static_cast<RVCGENINFO*>(this) = ginfo;}
00721    
00722    RVCGENLISTINFO& operator= (
00723       const RVCGENINFO& ginfo
00724       ) {*static_cast<RVCGENINFO*>(this) = ginfo; return (*this);}
00725 
00726    void Clear (
00727       ) {memset(static_cast<void*>(this), 0, sizeof(*this));}
00728    
00729    };
00730 
00731 //! Disallow memset/memcpy.
00732 PREVENT_MEMFUNC(RVCBASICINFO)
00733 PREVENT_MEMFUNC(RVCGENINFO)
00734 PREVENT_MEMFUNC(RVCARRAYINFO)
00735 PREVENT_MEMFUNC(RVCGENLISTINFO)
00736 
00737 
00738 //! Structure to hold RVC link information.
00739 struct RVCLINKDATAEX {
00740    FILEPATH m_FilePath;                //!< Path name
00741    MISTRING m_ObjName;                 //!< Holds full name returned by MfGetObjectName()
00742    
00743    bool IsEqual (
00744       const RVCLINKDATAEX& rhs
00745       ) const {return (m_FilePath == rhs.m_FilePath && m_ObjName == rhs.m_ObjName);}
00746       
00747    };
00748    
00749 inline bool operator== (
00750    const RVCLINKDATAEX& lhs,
00751    const RVCLINKDATAEX& rhs
00752    ) {return (lhs.IsEqual(rhs));}   
00753    
00754 inline bool operator!= (
00755    const RVCLINKDATAEX& lhs,
00756    const RVCLINKDATAEX& rhs
00757    ) {return (!lhs.IsEqual(rhs));}
00758    
00759 
00760 namespace RVC {
00761 
00762 struct LINKITEM {
00763    FILEPATH m_Filename;
00764    MISTRING m_ObjName;
00765    OBJTYPE m_ObjType;
00766    RVCINODENUM m_SrcInode;          //!< The source object that contains the link
00767    
00768    LINKITEM (
00769       ) : 
00770       m_ObjType(OBJTYPE_All),
00771       m_SrcInode(-1)
00772       {}
00773       
00774    };
00775    
00776 }     //! End of RVC namespace
00777       
00778 
00779 //! GUI functions structure.
00780 struct RVCGUIFUNCS {
00781    INT32 size;                         //!< Size
00782    int (*GetFile)(void*, UNICODE*, const UNICODE*, void*, int (*)(UNICODE*, char*, void*), void*, UINT32);  //! Get a file
00783    int (*OpenFile)(void*, const UNICODE*, UINT32); //! Open a file
00784    int (*ChangeFileLock)(void*, int, UINT32);   //! Change the lock on a file
00785    void (*AddCallback)(McbCallbackFunc, void*, UINT32);  //! Add a callback
00786    int (*UsernamePasswordDialog)(void *dlgparent, UNICODE*, int, int*, int*, UINT32);  //! Username / password dialog
00787    void (*DisplayErrorCode)(void*, int);  //! Display an error code
00788    int (*OpenFileEx)(void*, const FILEPATH&, UINT32); //! Open a file
00789    };
00790 
00791 //! App functions structure.
00792 struct RVCAPPFUNCS {
00793    INT32 size;                         //!< Size
00794    int (*GetStringExtents)(TEXTSTYLE*, DPOINT2D*, INT32, UINT32, const UNICODE*, DRECT2D*);  //! Get the extents of a string
00795    int (*GetFontName)(int, UNICODE*);  //! Get a font name
00796    int (*OpenFont)(const UNICODE*);    //! Open a font
00797    int (*GetStringExtentsJustify)(TEXTSTYLE*, DPOINT2D*, INT32, UINT32, const UNICODE*, DRECT2D*); //! Get the extents of a justified string
00798    };
00799 
00800 /*----------------------------------------------------------------------------*/
00801 /* Flags for linking to external objects                                      */
00802 /*----------------------------------------------------------------------------*/
00803 
00804 #define  RVCLINKFLAG_LoHi        (0x00000001)      /* Linked object stored LoHi */
00805 #define  RVCLINKFLAG_HiLo        (0x00000002)      /* Linked object stored HiLo */
00806 #define  RVCLINKFLAG_RO          (0x00000004)      /* Linked object is on read only media (internal) */
00807 #define  RVCLINKFLAG_Modified    (0x00000008)      /* Linked object may have been modified */
00808 
00809 /*----------------------------------------------------------------------------*/
00810 /* Point conversion modes for vector and CAD                                  */
00811 /*----------------------------------------------------------------------------*/
00812 
00813 #define  VECTMODE_ConvTo3D       0x0001   //!<  convert 2D->3D 
00814 #define  VECTMODE_ConvTo2D       0x0002   //!<  convert 3D->2D 
00815 #define  VECTMODE_Mask           0x0003   //!<  Mask for currently valid bits 
00816 
00817 /*----------------------------------------------------------------------------*/
00818 /* Values for PointType fields in headers                                     */
00819 /*----------------------------------------------------------------------------*/
00820 
00821 #define  VPOINT_2DXY    1              //!<  2-D coordinates, X and Y given (default) 
00822 #define  VPOINT_2DXZ    2              //!<  2-D coordinates, X and Z given 
00823 #define  VPOINT_2DYZ    3              //!<  2-D coordinates, Y and Z given 
00824 #define  VPOINT_3DXY    4              //!<  3-D coordinates, X, Y given, Z constant 
00825 #define  VPOINT_3DXZ    5              //!<  3-D coordinates, X, Z given, Y constant 
00826 #define  VPOINT_3DYZ    6              //!<  3-D coordinates, Y, Z given, X constant 
00827 #define  VPOINT_3DXYZ   7              //!<  3-D coordinates, X, Y and Z given 
00828 
00829 /*----------------------------------------------------------------------------*/
00830 /*    FNAMEINODE/FNAMEINODEUC structures                                      */
00831 /*----------------------------------------------------------------------------*/
00832 
00833 //! Filename / inode structure.
00834 struct FNAMEINODEUC {
00835    UNICODE *filename;                  //!< Filename
00836    RVCINODENUM inode;                  //!< Inode
00837    FNAMEINODEUC *next;                 //!< Next inode
00838    RVCGENINFO *objinfo;                //!< Object information
00839    void *userdata;                     //!< Reference data attached to the entry, useful for Motif list widgets 
00840    FNAMEINODEUC (
00841       ) { memset(this,0,sizeof(*this)); }
00842    };
00843 
00844 /*----------------------------------------------------------------------------*/
00845 /*    RVCFILELOCK structure      Used in MfGetFileLockInfo()                  */
00846 /*----------------------------------------------------------------------------*/
00847 
00848 //! File lock structure.
00849 struct RVCFILELOCK {
00850    int serialnum;                      //!< TNTmips key serial number
00851    int processid;                      //!< Process ID
00852    int userid;                         //!< User ID if OS uses one
00853    int parentid;                       //!< Parent process ID if OS uses one
00854    UNICODE username[64];               //!< Owner of the lock
00855    UNICODE stationname[64];            //!< Station lock was generated from
00856    RVCDATETIME locktime;               //!< Time that the lock was created
00857    int IsReadOnly;                     //!< File requested is read only
00858    };
00859 
00860 /*----------------------------------------------------------------------------*/
00861 /*    Definitions (flags) for MfGet[File|Object]Status()                      */
00862 /*----------------------------------------------------------------------------*/
00863 
00864 #define RVCFS_ReadOnly        0x00000001
00865 #define RVCFS_ReadLocked      0x00000002
00866 #define RVCFS_Writable        0x00000004
00867 #define RVCFS_WriteLocked     0x00000008
00868 #define RVCFS_Modified        0x00000010
00869 #define RVCFS_Tempfile        0x00000020
00870 #define RVCFS_TNTlite         0x00000040        //!<  File was created by TNTlite 
00871 #define RVCFS_Open            0x00000080        //!<  File is currently opened 
00872 
00873 #define RVCOS_Composite       0x00000001 
00874 #define RVCOS_Free            0x00000002 
00875 #define RVCOS_Opened          0x00000004 
00876 #define RVCOS_ReadOnly        0x00000008 
00877 #define RVCOS_Writable        0x00000010 
00878 #define RVCOS_Link            0x00000020 
00879 #define RVCOS_ViewProtected   0x00000040
00880 #define RVCOS_EditProtected   0x00000080
00881 #define RVCOS_Bogus           0x00000100
00882 #define RVCOS_TNTlite         0x00000200        //!<  Object was created by TNTlite 
00883 #define RVCOS_BadInode        0x00000400
00884 
00885 /*----------------------------------------------------------------------------*/
00886 /*    Definitions (flags) for MfCopyObject()                               */
00887 /*----------------------------------------------------------------------------*/
00888 
00889 #define  COPYRVC_SubObjects         0x00000001  //!<  Copy subobjects under object 
00890 #define  COPYRVC_RasterLinks        0x00000002  //!<  Transfer raster links instead of copying the raster 
00891 #define  COPYRVC_DBaseLinks         0x00000004  //!<  Transfer dbase links instead of copying the dbase 
00892 #define  COPYRVC_DemoteIdentityTables 0x00000008 //!< Demote identity tables in MfDatabaseJoin() because they can no longer exist
00893 #define  COPYRVC_PointDBase         0x00000010  //!<  MfCopyDatabase(): Convert OTYPE_DBASE to OTYPE_POINTDBASE 
00894 #define  COPYRVC_DontRemoveRecords  0x00000200  //!<  MfDatabaseJoin(): Do not remove records while copying 
00895 #define  COPYRVC_RVCLinks           0x00000400  //!<  Copy RVC object links instead of the objects themselves 
00896 #define  COPYRVC_RemoveStdAttTables 0x00000800  //!<  Remove standard attribute tables in MfCopyDatabaseP() 
00897 #define  COPYRVC_NoDBLists          0x00004000  //!<  MfCopyDatabase(): Don't copy DBList of database 
00898 #define  COPYRVC_IgnoreStdAttTables 0x00040000  //!<  MfDatabaseJoin(): Ignore source standard attribute tables 
00899 #define  COPYRVC_FreezeComputedFields 0x00080000 //!< MfCopyTable(): Computed fields in source become regular fields in dest.
00900 
00901 #define  COPYRVC_AllLinks           (COPYRVC_RasterLinks | COPYRVC_DBaseLinks | COPYRVC_RVCLinks)
00902 
00903 namespace RVC {
00904 
00905 //! Flags for creating links.
00906 enum MAKELINKFLAGS {
00907    MAKELINKFLAG_NoGeoreference =    0x0001,  //!< Don't create georeference subobjects
00908    MAKELINKFLAG_NoPyramidLinks =    0x0002,  //!< Don't create raster pyramid tier links
00909    MAKELINKFLAG_BuildHistograms =   0x0004,  //!< Build raster histogram subobjects when make link
00910    MAKELINKFLAG_BuildPyramids =     0x0008,  //!< Build raster pyramid tiers when make link
00911    MAKELINKFLAG_NoContrastTables =  0x0010,  //!< Don't create raster contrast tables
00912    MAKELINKFLAG_ColorComposite =    0x0020,  //!< Create raster links as color-composite (RGB) where appropriate
00913    MAKELINKFLAG_ColorSeparate =     0x0040,  //!< Create raster links as color separates where appropriate
00914    MAKELINKFLAG_None =              0x0000
00915    };
00916 DEFINE_ENUM_OPERATORS(MAKELINKFLAGS);
00917 
00918 
00919 //! TNTlite usability status.
00920 enum LITEUSABILITY {
00921    LITEUSABILITY_OK =            0,    //!< Object and all subobjects are usable
00922    LITEUSABILITY_ObjectNo =      1,    //!< Object is not usable
00923    LITEUSABILITY_SubObjectNo =   2     //!< Object usable, but at least one subobject is not
00924    // Do not change these enum values as they are used as array indices!
00925    };
00926 
00927 }  //! End of RVC namespace
00928 
00929 /*-------------------------------------------------------------------------*/
00930 /*    Flags for MfConvertCADTOVector and MfConvertVectorToCAD              */
00931 /*-------------------------------------------------------------------------*/
00932 
00933 #define RVCCTOV_PolyClassFromLabels    0x00000001
00934 #define RVCCTOV_ExternalPolygonAttrib  0x00000002
00935 
00936 #define RVCVTOC_ConvLines              0x00000001
00937 #define RVCVTOC_ConvPolys              0x00000002
00938 #define RVCVTOC_ConvIslands            0x00000004
00939 #define RVCVTOC_ConvLabels             0x00000008
00940 #define RVCVTOC_ConvPoints             0x00000010
00941 
00942 /*-------------------------------------------------------------------------*/
00943 /*    Define data types for .datatype fields                               */
00944 /*-------------------------------------------------------------------------*/
00945 
00946 #define  RVCTYPE_Unsigned     1        //!<  UINT8, UINT16, UINT32 and < 8 bit 
00947 #define  RVCTYPE_Signed       2        //!<  INT8, INT16, INT32 
00948 #define  RVCTYPE_Float        3        //!<  FLOAT, DOUBLE 
00949 #define  RVCTYPE_RGB          8        //!<  RED, GREEN, BLUE packed (red high bits) 
00950 #define  RVCTYPE_BGR          9        //!<  RED, GREEN, BLUE packed (blue high bits) 
00951 #define  RVCTYPE_ComplexRI    16       //!<  Real, Imaginary 
00952 #define  RVCTYPE_ComplexMP    17       //!<  Magnitude, Phase 
00953 
00954 /* Due to an obsure but historical bug, 24 bit rasters are actually stored */
00955 /* in the opposite order of what they say they are.  These #defines will */
00956 /* allow you to account for that in a way that avoids the confusion */
00957 #define  RVCTYPE_RGB24_Really 9        //!<  RED, GREEN, BLUE really 
00958 #define  RVCTYPE_BGR24_Really 8        //!<  BLUE, GREEN, RED really 
00959 
00960 /*----------------------------------------------------------------------------*/
00961 /*    Definitions for object selection tools                                  */
00962 /*----------------------------------------------------------------------------*/
00963 
00964 #define  FILTMSGLEN  100
00965 
00966 #define  FILT_NotVisible            0  //!<  Don't show object on list 
00967 #define  FILT_NotUsable             0  //!<  Not usable (for GetLastUsed, CopySubObjects) 
00968 #define  FILT_Notusable             0  //!<  Not usable (for GetLastUsed, CopySubObjects) 
00969 #define  FILT_Selectable            1  //!<  Let user select 
00970 #define  FILT_Usable                1  //!<  Usable (for GetLastUsed, CopySubObjects) 
00971 #define  FILT_NotSelectable         FILT_NotUsable //!<  Show on list but don't let user select 
00972 
00973 #if !defined(DEPRECATE_GROUPKEY)
00974 #define  FILT_UsableSubobjects      4  //!<  Object not usable, but has usable subobjects 
00975 #define  FILT_FolderUsable          5  //!< Folder is usable
00976 #endif
00977 
00978 /*-----------------------------------------------------------------------*/
00979 /*    Defines for MfFindLinkFile...()                                    */
00980 /*-----------------------------------------------------------------------*/
00981 
00982 #define FINDFILE_Stored                0x1
00983 #define FINDFILE_RefDrive              0x2
00984 #define FINDFILE_RefPath               0x3
00985 #define FINDFILE_Subtree               0x4
00986 #define FINDFILE_DontAsk               0x80000000  //!<  Don't prompt if not found 
00987 
00988 #define FINDFILE2(a,b) ((a) | (b<<4))
00989 #define FINDFILE3(a,b,c) ((a) | (b<<4) | (c<<8))
00990 #define FINDFILE4(a,b,c,d) ((a) | (b<<4) | (c<<8) | (d<<12))
00991 
00992 #define FINDFILE_Default         FINDFILE4(FINDFILE_RefPath,FINDFILE_Stored,FINDFILE_RefDrive,FINDFILE_Subtree)
00993 #define FINDFILE_StoredFirst     FINDFILE4(FINDFILE_Stored,FINDFILE_RefDrive,FINDFILE_RefPath,FINDFILE_Subtree)
00994 #define FINDFILE_RefDriveFirst   FINDFILE4(FINDFILE_RefDrive,FINDFILE_RefPath,FINDFILE_Stored,FINDFILE_Subtree)
00995 
00996 /* For backwards compatabilty, 1 implies FINDFILE_StoredFirst */
00997 
00998 /*----------------------------------------------------------------------------*/
00999 /*    Element number special values, used for database lookup and elsewhere   */
01000 /*----------------------------------------------------------------------------*/
01001 
01002 #define  ELEMENTNUM_DefaultList  -1
01003 #define  ELEMENTNUM_None         -2
01004 
01005 /*-------------------------------------------------------------------------*/
01006 /*    Definitions for MfConvert... functions                               */
01007 /*-------------------------------------------------------------------------*/
01008 
01009 #define  CONVRASTCOMP_NoReserveStd64   0x00000001  //!<  Don't reserve 64 standard colors in output 
01010 
01011 #define  CONVRASTLINE_Trace0Cells   0x0001
01012 #define  CONVRASTLINE_Trace1Cells   0x0000
01013 
01014 #define  CONVRASTBOUND_NoCreateTable   0x0001
01015 #define  CONVRASTBOUND_DoImpliedGeoref 0x0002   //!<  Output vector in implied map coordinates if possible 
01016 
01017 #define  TINTORASTER_Linear         0
01018 #define  TINTORASTER_Quintic        1
01019 #define  TINTORASTER_CopyGeoref     0x0001
01020 #define  TINTORASTER_AutoScale      0x0002
01021 #define  TIN_ComputeStatistics      0x0001
01022 #define  TIN_Optimize               0x0002
01023 
01024 /*----------------------------------------------------------------------------*/
01025 /*    Interpolation types for surface fitting conversions                     */
01026 /*----------------------------------------------------------------------------*/
01027 
01028 #define INTERPOLATE_Linear          1
01029 #define INTERPOLATE_SplineCubic     2
01030 #define INTERPOLATE_SplineQuad      3
01031 #define INTERPOLATE_SplineBezier    4
01032 
01033 #define SURFACEFIT_AutoRescale      0x0001
01034 #define SURFACEFIT_MatchReference   0x0002
01035 #define SURFACEFIT_UseDirection     0x0004
01036 
01037 /*----------------------------------------------------------------------------*/
01038 /*    Callback Structure and reasons for Mf(RVC) callbacks */
01039 /*----------------------------------------------------------------------------*/
01040 
01041 //! Callback structure
01042 struct MfAnyCallbackStruct : public McbAnyCallbackStruct {
01043    int m_FileHandle;                   //!< File handle
01044    
01045    MfAnyCallbackStruct () {}           //! Default constructor, performs no initialization.
01046    MfAnyCallbackStruct (               //! Construct with specified reason value.
01047       int FileHandle,
01048       UINT32 ireason
01049       ):
01050       McbAnyCallbackStruct(ireason),
01051       m_FileHandle(FileHandle)
01052       { }
01053    };
01054 
01055 
01056 typedef void (*MfCallbackFunc)(MfAnyCallbackStruct*,void*);
01057 
01058 //! Callback structure
01059 struct MfExtentsCallbackStruct : public MfAnyCallbackStruct {
01060    DRECT3D m_Extents;
01061    
01062    MfExtentsCallbackStruct () {}          //! Default constructor, performs no initialization.
01063    MfExtentsCallbackStruct (              //! Construct with specified reason value.
01064       const DRECT3D& Extents,
01065       int FileHandle,
01066       UINT32 ireason
01067       ):
01068       MfAnyCallbackStruct(FileHandle, ireason),
01069       m_Extents(Extents)
01070       { }
01071    };
01072 
01073 
01074 struct MfPointTypeCallbackStruct : public MfAnyCallbackStruct {
01075    int m_PointType;
01076    
01077    MfPointTypeCallbackStruct () {}           //! Default constructor, performs no initialization.
01078    MfPointTypeCallbackStruct (               //! Construct with specified reason value.
01079       int PointType,
01080       int FileHandle,
01081       UINT32 ireason
01082       ):
01083       MfAnyCallbackStruct(FileHandle, ireason),
01084       m_PointType(PointType)
01085       {}
01086    };
01087 
01088 
01089 typedef void (*MfCallbackFunc)(MfAnyCallbackStruct*,void*);
01090 
01091 #define MFCR_UndoBegin           0x00000101
01092 #define MFCR_UndoEnd             0x00000102
01093 #define MFCR_UndoPossible        0x00000104        //!< MfUndoMark() has been called, set buttons if needed
01094 #define MFCR_ExtentsChanged      0x00000108
01095 #define MFCR_PointTypeChanged    0x00000110
01096 #define MFCR_NullValueChanged    0x00000111
01097 #define MFCR_FileClosing         0x00000112
01098 
01099 //---------------------------------------------------------------------------
01100 
01101 namespace RVC {
01102 
01103 //! OBJITEM class for specifying a particular file and object.
01104 class OBJITEM {
01105    public:
01106 
01107       //! Setup output object item list corresponding to specified input object item list.
01108       static void SetupOutputList (
01109          MILIST<OBJITEM>& oobjlist,       //!< Output list
01110          const MILIST<OBJITEM>& iobjlist, //!< Input list
01111          const char *source = 0              //!< Value to use for "source" in object header, will use application name if null.
01112          );
01113 
01114       //! Default constructor.
01115       OBJITEM (
01116          ) {
01117          m_ginfo.objectinode = -1;     //!< Set to nothing
01118          }
01119 
01120       //! Copy constructor.
01121       OBJITEM (
01122          const OBJITEM& rhs            //!< Object to copy from
01123          ) : m_filename(rhs.m_filename), m_ginfo(rhs.m_ginfo), m_ObjectPath(rhs.m_ObjectPath) {}
01124 
01125       //! Construct from FILEPATH and RVCGENINFO.
01126       OBJITEM (
01127          const FILEPATH& filename,        //!< Filename
01128          const RVCGENINFO& ginfo          //!< General info
01129 <