00001
00050 #ifndef INC_RVC_AUTOLINK_H
00051 #define INC_RVC_AUTOLINK_H
00052
00053 #ifndef INC_RVC_OBJECT_H
00054 #include <rvc/object.h>
00055 #endif
00056
00057 #ifndef GENERATING_DOXYGEN_OUTPUT
00058 class DATETIME;
00059 class FILEPATH;
00060
00061 namespace SPATREF {
00062 class COORDREFSYS;
00063 };
00064 #endif
00065
00066
00067 namespace RVC {
00068
00069 class AUTOLINK {
00070 public:
00071
00072 enum ISSUES {
00073 ISSUE_None = 0x0000,
00074 ISSUE_NoCRS = 0x0001,
00075 ISSUE_NoPyramid = 0x0002,
00076 ISSUE_NoSearchTree = 0x0004,
00077 ISSUE_NoRegion = 0x0008,
00078 ISSUE_NeedScan = 0x0010,
00079 ISSUES_All = 0x001F
00080 };
00081
00082 enum RESOLUTION {
00083 RESOLUTION_Ignore,
00084 RESOLUTION_FixThisFile,
00085 RESOLUTION_FixAllFiles
00086 };
00087
00088 enum WARNINGS {
00089 WARNING_None = 0x0000,
00090 WARNING_NoStyles = 0x0001,
00091 };
00092
00094 static void Reset ();
00095
00096 static void ResetPriorIssueResolution ();
00097
00098 static ERRVALUE ResolveCRS (
00099 const RVC::OBJITEM& ObjItem,
00100 const SPATREF::COORDREFSYS& CoordRefSys,
00101 bool IgnoreErrs = false
00102 );
00103
00104 static ERRVALUE ResolveScan (
00105 const RVC::OBJITEM& ObjItem,
00106 bool IgnoreErrs = false
00107 );
00108
00109 static ERRVALUE ResolvePyramid (
00110 const RVC::OBJITEM& ObjItem,
00111 bool IgnoreErrs = false
00112 );
00113
00114 static ERRVALUE ResolveRegion (
00115 const RVC::OBJITEM& ObjItem,
00116 bool IgnoreErrs = false
00117 );
00118
00119 static ERRVALUE ResolveSearchTree (
00120 const RVC::OBJITEM& ObjItem,
00121 bool IgnoreErrs = false
00122 );
00123
00124 static ERRVALUE ScanAndResolve (
00125 MDLGPARENT dlgparent,
00126 RVC::OBJECT& ObjFile
00127 );
00128
00129 static ERRVALUE ScanAndResolve (
00130 MDLGPARENT dlgparent,
00131 const DATETIME& testtime,
00132 const FILEPATH& filepath
00133 );
00134
00137 static void SetAutoIssueResolution (
00138 ISSUES issue,
00139 RESOLUTION resolution
00140 );
00141
00143 static void SetDftCRS (
00144 const SPATREF::COORDREFSYS& DftCRS
00145 );
00146
00149 static void SetShowDlgStatus (
00150 bool ShowDlgStatus
00151 );
00152
00153 private:
00154 #ifndef GENERATING_DOXYGEN_OUTPUT
00155
00156 class ISSUEITEM;
00157 class DLG;
00158
00159 typedef MILIST<ISSUEITEM> ISSUEITEMLIST;
00160
00161 static ISSUES GetPriorIssuesResolved ();
00162
00163 static RESOLUTION GetPriorIssueResolution (ISSUES issue);
00164
00165 static ERRVALUE ResolveCRS (
00166 const ISSUEITEMLIST& IssueItemList,
00167 const SPATREF::COORDREFSYS& CoordRefSys,
00168 bool IgnoreErrs
00169 );
00170
00171 static ERRVALUE ResolvePyramid (
00172 const ISSUEITEMLIST& IssueItemList,
00173 bool IgnoreErrs
00174 );
00175
00176 static ERRVALUE ResolveScan (
00177 const ISSUEITEMLIST& IssueItemList,
00178 bool IgnoreErrs
00179 );
00180
00181 static ERRVALUE ResolveRegion (
00182 const ISSUEITEMLIST& IssueItemList,
00183 bool IgnoreErrs
00184 );
00185
00186 static ERRVALUE ResolveSearchTree (
00187 const ISSUEITEMLIST& IssueItemList,
00188 bool IgnoreErrs
00189 );
00190
00191 static void ScanChildren (
00192 const RVC::OBJECT& ObjParent,
00193 ISSUEITEMLIST& IssueItemList,
00194 WARNINGS& warnings
00195 );
00196
00197 static void ScanFolderFiles (
00198 const FILEPATH& filepath,
00199 ISSUEITEMLIST& IssueItemList
00200 );
00201
00202 static void SetPriorIssueResolution (ISSUES issue, RESOLUTION resolution);
00203
00204 #endif // GENERATING_DOXYGEN_OUTPUT
00205 };
00206
00207 #ifndef GENERATING_DOXYGEN_OUTPUT
00208 DEFINE_ENUM_OP_BITWISE(RVC::AUTOLINK::ISSUES)
00209 DEFINE_ENUM_OP_BITWISE(RVC::AUTOLINK::WARNINGS)
00210 #endif
00211
00212 }
00213
00214 #endif // INC_RVC_AUTOLINK_H