#include "MoveTo.h" #include "LineTo.h" std::vector> MoveTo::absolute(SvgState& state, std::vector& args) { return parseMoveTo(state, args, true); } std::vector> MoveTo::relative(SvgState& state, std::vector& args) { return parseMoveTo(state, args, false); } std::vector> MoveTo::parseMoveTo(SvgState& state, std::vector& args, bool isAbsolute) { if (args.size() % 2 != 0 || args.size() < 2) { return {}; } Vector2 vec(args[0], args[1]); if (isAbsolute) { state.currPoint = vec; state.initialPoint = state.currPoint; if (args.size() > 2) { std::vector newArgs = std::vector(args.begin() + 2, args.end()); return LineTo::absolute(state, newArgs); } } else { state.currPoint.translate(vec.x, vec.y); state.initialPoint = state.currPoint; if (args.size() > 2) { std::vector newArgs = std::vector(args.begin() + 2, args.end()); return LineTo::relative(state, newArgs); } } return {}; }