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