00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef ROUNDING_VERTEX_HH
00026 #define ROUNDING_VERTEX_HH
00027
00028 #include "rounding-generic.hh"
00029 #include "math-extension.hh"
00030
00031 namespace GMap3d
00032 {
00033 class CCoverage;
00034 class CGMapVertex;
00035 class CRoundingInterface;
00036
00037 class CRoundingVertex : public CRoundingGeneric
00038 {
00039 friend class CRoundingInterface;
00040
00041 public:
00043 CRoundingVertex(CGMapVertex* AMap);
00044
00046 ~CRoundingVertex();
00047
00055 int roundMarkedVertices(int AMarkNumber, bool ADig);
00056
00076 int roundMarkedEdges(int AMarkNumber, bool A3D, bool ADig, bool ASetBack);
00077
00078 protected:
00079
00084 TCoordinate getDartRoundingCoef(CDart* ADart, int ADimension) const;
00085
00090 void setDartRoundingCoef(CDart* ADart, int ADimension,
00091 TCoordinate AValue) const;
00092
00093
00094
00095 void doListExtension(int AMarkNumber, int AMarkInitial,
00096 int AMarkSelected, int AMarkTreated,
00097 int AMarkVertexToDestroy, CCoverage* ACov);
00098
00099 void doMinMaxCalcul(int ADirectCoef1, int AMarkSelected, int AMarkTreated,
00100 int AMarkInitial, int AMarkMax, bool A3D,
00101 CCoverage* ACov);
00102
00103 void doNewVerticesCalcul(int AMarkSelected, int AMarkTreated,
00104 int AMarkInitial, int AMarkMax,
00105 int ADirectIndexOld, int ADirectIndexNew,
00106 bool ASetback, bool A3D, CCoverage* ACov);
00107
00108 int doEdgeChamferingInRounding(int AMarkTreated, int AMarkInitial,
00109 bool ADig, bool A3D, CCoverage* ACov);
00110
00111 void doVerticesChamferingInRounding(int AMarkTreated, int AMarkInitial,
00112 bool ADig, bool A3D, CCoverage* ACov);
00113
00114
00115 private:
00116 CGMapVertex* FMap;
00117
00118 int FCoefs[2];
00119 };
00120 }
00121
00122 #endif // ROUNDING_VERTEX_HH
00123