00001
00085 #ifndef INC_RVC_COMBINE_H
00086 #define INC_RVC_COMBINE_H
00087
00088 #ifndef INC_RVC_VECTOR_H
00089 #include <rvc/vector.h>
00090 #endif
00091
00092 #ifndef INC_RVC_SHAPE_H
00093 #include <rvc/shape.h>
00094 #endif
00095
00096 namespace SPATREF {
00097 class COORDREFSYS;
00098 }
00099
00100 namespace RVC {
00101
00103 class COMBINE {
00104 public:
00105
00106 enum COMBINEFLAGS {
00107
00108 COMBINEFLAG_None = 0,
00109 COMBINEFLAG_Optimize = 0x00000001,
00110 COMBINEFLAG_RemExRecords = 0x00000002,
00111 COMBINEFLAG_RemStdAttTables = 0x00000004,
00112 COMBINEFLAG_TableJoinNameStruct = 0x00000010,
00113 COMBINEFLAG_TableJoinStruct = 0x00000020,
00114 COMBINEFLAG_TableRemoveDupRec = 0x00000040,
00115 COMBINEFLAG_IgnorePolygonTables = 0x00000080,
00116 COMBINEFLAG_RemoveTables = 0x00000100,
00117 COMBINEFLAG_CopyHyperIndexSub = 0x00000200,
00118 COMBINEFLAG_DensifyPoints = 0x00000400,
00119 COMBINEFLAG_CreateNewTables = 0x00000800,
00120
00121 COMBINEFLAG_MinimizeTableSize = 0x10000000,
00122 COMBINEFLAG_AddBorder = 0x20000000,
00123 COMBINEFLAG_RemoveDupRecs = 0x40000000,
00124 COMBINEFLAG_NoValidate = 0x80000000
00125 };
00126
00127 enum COMBINETYPE {
00128 COMBINETYPE_Intersect,
00129 COMBINETYPE_ExclusiveUnion,
00130 COMBINETYPE_Union,
00131 COMBINETYPE_Subtract,
00132 COMBINETYPE_ExtractCompInside,
00133 COMBINETYPE_ExtractPartInside,
00134 COMBINETYPE_ExtractInsideBorder,
00135 COMBINETYPE_ExtractInsideClip,
00136 COMBINETYPE_ExtractCompOutside,
00137 COMBINETYPE_ExtractPartOutside,
00138 COMBINETYPE_ExtractOutsideBorder,
00139 COMBINETYPE_Replace
00140 };
00141
00143 static ERRVALUE CombineToVector (
00144 const RVC::OBJITEM& SrcObjItem,
00145 const RVC::GEOMETRIC::ELEMSELECTPARMS& SrcSelectParms,
00146 const RVC::OBJITEM& OpObjItem,
00147 const RVC::GEOMETRIC::ELEMSELECTPARMS& OpSelectParms,
00148 RVC::OBJITEM& DestObjItem,
00149 COMBINETYPE CombineType,
00150 COMBINEFLAGS CombineFlags
00151 );
00152
00154 static ERRVALUE ExtractToCAD (
00155 const RVC::OBJITEM& SrcObjItem,
00156 const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00157 const TRANS2D_MAPGEN& SrcToDest,
00158 RVC::OBJITEM& DestObjItem,
00159 COMBINEFLAGS CombineFlags
00160 );
00161
00163 static ERRVALUE ExtractToRegion (
00164 const RVC::OBJITEM& SrcObjItem,
00165 const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00166 const TRANS2D_MAPGEN& SrcToDest,
00167 RVC::OBJITEM& DestObjItem,
00168 COMBINEFLAGS CombineFlags
00169 );
00170
00172 static ERRVALUE ExtractToShape (
00173 const OBJITEM& SrcObjItem,
00174 const GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00175 const TRANS2D_MAPGEN& SrcToDest,
00176 SHAPE::MAKEPARMS& MakeParms,
00177 const DESCRIPTOR& BaseTable,
00178 OBJITEM& DestObjItem,
00179 COMBINEFLAGS CombineFlags
00180 );
00181
00183 static ERRVALUE ExtractToVector (
00184 const RVC::OBJITEM& SrcObjItem,
00185 const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00186 const TRANS2D_MAPGEN& SrcToDest,
00187 RVC::OBJITEM& DestObjItem,
00188 COMBINEFLAGS CombineFlags,
00189 RVC::VECTOR::TOPOLOGYTYPE TopologyType = VECTOR::TOPOLOGYTYPE_Polygonal
00190 );
00191
00192 static int LineToLineIntersection (
00193 const RVC::OBJITEM& SrcObjItem,
00194 const RVC::GEOMETRIC::ELEMSELECTPARMS& SrcSelect,
00195 const RVC::OBJITEM& OpObjItem,
00196 const RVC::GEOMETRIC::ELEMSELECTPARMS& OpSelect,
00197 RVC::OBJITEM& DestObjItem,
00198 COMBINEFLAGS CombineFlags
00199 );
00200
00202 static ERRVALUE MergeToCAD (
00203 const RVC::OBJITEMLIST& SrcObjItems,
00204 MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS>& SelectList,
00205 RVC::OBJITEM& DestObjItem,
00206 COMBINEFLAGS CombineFlags,
00207 SPATREF::COORDREFSYS* CoordRefSys = 0
00208 );
00209
00211 static ERRVALUE MergeToVector (
00212 const RVC::OBJITEMLIST& SrcObjItems,
00213 MILIST<RVC::GEOMETRIC::ELEMSELECTPARMS>& SelectList,
00214 RVC::OBJITEM& DestObjItem,
00215 COMBINEFLAGS CombineFlags,
00216 SPATREF::COORDREFSYS* CoordRefSys = 0,
00217 RVC::VECTOR::TOPOLOGYTYPE TopologyType = VECTOR::TOPOLOGYTYPE_None
00218 );
00219
00220 private:
00221
00222 static ERRVALUE CombineNodes (
00223 const RVC::OBJITEM& OpObjItem,
00224 const RVC::OBJITEM& DestObjItem
00225 );
00226
00228 static ERRVALUE ExtractToVector (
00229 const RVC::OBJITEM& SrcObjItem,
00230 const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00231 const TRANS2D_MAPGEN& SrcToDest,
00232 RVC::OBJITEM& DestObjItem,
00233 COMBINEFLAGS CombineFlags,
00234 GEOMETRIC::ELEMTRANSLIST* ElementList,
00235 RVC::VECTOR::TOPOLOGYTYPE TopologyType = VECTOR::TOPOLOGYTYPE_Polygonal
00236 );
00237
00238 static ERRVALUE GenerateRegion (
00239 RVC::GEOMETRIC& GeoObj,
00240 const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms,
00241 REGION2D& Region
00242 );
00243
00244 };
00245
00246 #ifndef GENERATING_DOXYGEN_OUTPUT
00247 DEFINE_ENUM_OP_BITWISE(COMBINE::COMBINEFLAGS)
00248 #endif
00249
00250 }
00251
00252 #endif