//
#include <PlaneGCSSolver_PointArrayWrapper.h>
+#include <PlaneGCSSolver_Tools.h>
+
+#include <GeomDataAPI_Point2DArray.h>
+
+#include <GeomAPI_Pnt2d.h>
PlaneGCSSolver_PointArrayWrapper::PlaneGCSSolver_PointArrayWrapper(
const std::vector<PointWrapperPtr>& thePoints)
: myPoints(thePoints)
{
}
+
+bool PlaneGCSSolver_PointArrayWrapper::update(AttributePtr theAttribute)
+{
+ bool isUpdated = false;
+ std::shared_ptr<GeomDataAPI_Point2DArray> aPointArray =
+ std::dynamic_pointer_cast<GeomDataAPI_Point2DArray>(theAttribute);
+ if (aPointArray && aPointArray->size() == (int)myPoints.size()) {
+ std::vector<PointWrapperPtr>::iterator aPIt = myPoints.begin();
+ for (int anIndex = 0; aPIt != myPoints.end(); ++aPIt, ++anIndex) {
+ GeomPnt2dPtr aPnt = aPointArray->pnt(anIndex);
+
+ const GCSPointPtr& aGCSPoint = (*aPIt)->point();
+ isUpdated = PlaneGCSSolver_Tools::updateValue(aPnt->x(), *(aGCSPoint->x)) || isUpdated;
+ isUpdated = PlaneGCSSolver_Tools::updateValue(aPnt->y(), *(aGCSPoint->y)) || isUpdated;
+ }
+ }
+ return isUpdated;
+}