#pragma once #include #include #include #include "./Curve.hpp" #include "Bezier.hpp" #include "NURBS.hpp" class CurvesLoader { static string currentCurveType; static vector* pointsBuffer; static vector NURBSes; static vector beziers; static unsigned int NURBSOrder; static NURBSType NURBS_TYPE; static vector* NURBSWeights; static char lineHeader[128]; static char* res; static FILE* file; static std::smatch pieces; static void beginCurve(string str, std::smatch pieces, std::regex regex); static NURBS* BasicNURBS(); static NURBS* ClampedNURBS(); static NURBS* CyclicNURBS(); static void closeNURBS(); static void closeBezier(); static void closePendingCurve(); static void parseVertexData(string str); public: static bool loadCurves(std::string path, vector& curves); };